جستجوی ساده هزینه یکنواخت را با نمونه های مسیرهای مسافرتی با کمترین هزینه درک کنید.

برای حل مشکلات مربوط به جستجوی مسیرها ، مانند پیدا کردن اقتصادی ترین مسیر از یک نقطه به نقطه دیگر ، بسیاری از افراد ممکن است عمدتاً به BFS (جستجوی اولی) یا DFS (جستجوی عمق اول) فکر کنند ، اما امروز ما با الگوریتم دیگری آشنا خواهیم شد که از محاسبه مسیر قدرتمندتر است. “کمترین هزینه” و در واقع در بسیاری از مواقع ، جستجوی هزینه یکنواخت (UCS) کار می کند !!
جستجوی هزینه یکنواخت چیست؟
جستجوی هزینه یکنواخت ، همچنین به عنوان UCS شناخته می شود ، یکی از تکنیک های اساسی برنامه نویسی AI است که برای “مسیرهای جستجو” بهترین ها از یک نقطه به نقطه دیگر استفاده می شود.بهترین“در اینجا ، این به معنای سریعترین یا کوتاهترین نیست ، بلکه به معنای مسیر است”با کمترین هزینه“یا راهی است که بهترین ارزش
تصور کنید که می خواهید از خانه به دانشگاه سفر کنید. و بسیاری از مسیرها برای انتخاب برخی از مسیرها ممکن است بسیار نزدیک به ترافیک باشد. یا هزینه ماشین گرانتر است برخی از مسیرها ممکن است کمی غیرمستقیم باشد. اما هم پول و هم صرفه جویی کنید. به طور کلی ، UCS به شما کمک می کند تا تصمیم بگیرید که کدام مسیر از نظر هزینه های کلی “مناسب” است.
مفهوم UCS این است که راهی را انتخاب می کند که در هر مرحله کمترین هزینه “انباشته” را داشته باشد. به عنوان مثال ، اگر مجبور شویم در بسیاری از شهرها قدم بزنیم ، این شهر را انتخاب می کند که شامل عوارض ، هزینه سفر یا مسافت ها باشد ، همیشه در درجه اول کمترین ارزش را دارد. برخلاف سایر الگوریتم ها مانند DFS یا BFS که به هیچ وجه به هزینه ها اهمیت نمی دهند
اصل کار UCS درک آسان
با “شروع با گره آغاز” ، سپس “از صف اولویت” استفاده کنید تا گره ای را که باید توسط “مرتب سازی بر اساس مجموعه” با “گره طولانی با کوچکترین” بازدید کنید و “هنگام رسیدن به هدف” متوقف شوید “بازدید کنید.
UCS از کجا می تواند استفاده کند؟
جستجوی هزینه یکنواخت فقط در کتابهای درسی یا مشکلات استفاده نمی شود. اما در واقع در بسیاری از سیستم های اطراف ما مورد استفاده قرار گرفت ، به عنوان مثال ، بسیاری از افراد ممکن است انتظار نداشته باشند.
این سیستم ناوبری است ، مانند Google Maps یا سایر برنامه های هواپیمایی که ما با UCS آشنا هستیم ، به یافتن راهی برای صرفه جویی در بیشترین زمان یا کمترین هزینه ، مانند مسیری که از بزرگراه جلوگیری می کند ، کمک می کند. یا کمترین مقدار روغن
به طور خلاصه ، UCS برای همه شرایط مناسب است که ما باید “مسیرها” یا “گزینه های جایگزین” را انتخاب کنیم که کمترین “هزینه کم” را داشته باشند ، چه زمان ، زمان ، پول ، انرژی یا حتی خطرات.
بعد ، بیایید کار جستجوی هزینه یکنواخت را به صورت کد مشاهده کنیم.
ما با ایجاد توابع شروع خواهیم کرد. Uniform_cost_search که ساختار نمودار را با نقطه شروع (شروع) و هدف (هدف) دریافت می کند و اجازه می دهد تا راهی پیدا کند “کمترین هزینه کل”
که در آن 7 مرحله در کد وجود دارد
مرحله 1 ، با شروع وارد.
وارد کردن ماژول لازم از کد Import Heapq برای استفاده در صف اولویت وارد می شود ، که اجازه می دهد تا کمترین مسیر کشیده شود.
- صف اولویت یک صف خاص است که ابتدا “مهمترین” را انتخاب می کند. “مهم” به معنای کمترین اولویت ، مانند کمترین هزینه در UCS ، همیشه ابتدا از بین می رود.
مرحله 2 ، عملکرد اصلی Uniform_Cost_Search ()
عملکرد Uniform_cost_search پارامترها خواهد بود
- نمودار نمودار است که ارتباط بین گره مختلف را به شکل فرهنگ لغت نشان می دهد.
- شروع گره اولیه است.
- هدف گره هدف است.
بعداً ، قرار دادن نقطه شروع [start] با هزینه اولیه در صف ، 0 برای جمع آوری گره ای که گذشت ، بازدید کرد. به منظور تکرار
مرحله 3 به حلقه بررسی
ما کمترین هزینه را انتخاب کردیم و دیدیم که گره مقصد اکنون چیست.
مرحله 4 ، بررسی کنید که آیا هنوز به این گره رفته اید؟
اگر بروید ، پس از آن پرش کنید ، اما اگر هنوز هم از قبل علامت گذاری کنید
مرحله 5 هنوز یک هدف پیدا کرده است؟
اگر بله ، نیازی به ادامه نیست. با دریافت هر دو مسیر (همه مسیرها) و هزینه (هزینه کل) پاسخ را ارسال کنید
مرحله 6. اگر یافت نشد ، پس از آن به همسایگان گسترش دهید.
همسایگان گره. اگر هرگز به یک مسیر جدید نرفته اید و هزینه های جدید را در صف اولویت محاسبه می کنید تا منتظر بمانید تا UCS در دور بعدی مورد توجه قرار گیرد
مرحله 7 ، اگر راهی پیدا نشد
اگر واقعاً نمی توانید آن را پیدا کنید ، پس تهی و هزینه را برگردانید (نمی توانید این را بگویید)
نمونه هایی از UCS و نمودارها
این نمودار است که با فرهنگ لغت نوشته شده است.
با استفاده از کلید به عنوان گره نام ، یعنی “A” ، “B” ، “C” ، “D” ، “E” ، “F” ، “G”
مقدار لیست Tuple است. هر Tuple نشان می دهد که این گره چه کسی به WHO و فاصله (فاصله) وصل شده است ، مانند
به معنای “اتصال به” B “با هزینه 1 و” C “با هزینه 4 است
بعد ، بیایید نتایج را ببینیم.
نتیجه
ارزان ترین مسیر یک → B → E → G است
هزینه کل 1 + 5 + 2 = 8
که از “A” شروع می شود. مقصد “G” است
پس از آن ، عملکرد Undiform_cost_search () () راهی برای به اشتراک گذاری کمترین پیدا می کند. سپس هر دو مسیر و هزینه را ارسال کنید
ما قبلاً نمودار را مطالعه کرده ایم. اما در حقیقت ، جستجوی هزینه یکنواخت (UCS) محدود به نمودار نیست! امروز ، ما دوست داریم یک مثال ساده را بگیریم که همه می توانند بدون اینکه به هیچ وجه نمودار بکشند درک کنند.
نمونه ای از جستجوی هزینه یکنواخت بدون نمودار
چیزی که ما می خواهیم این است که با اضافه کردن اعداد با هزینه های مختلف ، اعداد را از 0 به 15 تغییر دهیم. و راهی “بهترین ارزش” پیدا کنید
که در آن 7 مرحله در کد وجود دارد
مرحله 1 ، با شروع وارد.
از صف اولویت استفاده کنید تا بتوانیم مسیر را با کمترین هزینه برای محاسبه اول ، مشابه صف. “چه کسی ارزانترین قبل”
مرحله 2 توابع را ایجاد کنید. Uniform_cost_search_number ()
- ما صف را ایجاد کردیم و گره شروع (شماره 0) را با هزینه اولیه 0 قرار دادیم.
- بازدید شده مجموعه ای برای ذخیره شماره هایی است که ما در آن بوده ایم. به منظور تکرار حلقه (مانند عقب و جلو در همان تعداد)
ساختار داده در PQ در 3 مقدار جمع آوری می شود
- هزینه = کل هزینه ها تا الان
- فعلی = شماره فعلی ما هستیم
- مسیر = لیست اعدادی که ما گذشتیم
مرحله 3 ، حلقه ، مسیر را کاوش کنید
UCS اطلاعاتی را به دست می آورد که کمترین هزینه همیشه اول از آن بیرون می آید (این قلب آن است!)
اگر اعداد به عنوان شماره هدف (هدف) بیرون کشیده شوند ، ما بلافاصله متوقف می شویم و نتایج را ارسال می کنیم.
مرحله 4 مسیر را بررسی و گسترش دهید.
- اگر این تعداد قبلاً دیده نشده باشد (در بازدید) ، ما شروع به ایجاد خواهیم کرد. “انتخاب جدید”
- Moves پیاده روی است که ما داریم (اضافه کردن 1 ، 2 یا 5 با هزینه)
- ما مسیر جدیدی را برای قرار دادن در صف اولویت ، با هزینه و مسیر جدید جدید قرار خواهیم داد.
- این نکته برای گسترش گره ای است که UCS با آن نمودار انجام داده است ، اما به جای آن با اعداد عادی انجام می دهیم.
بعد ، بیایید به نتایج این کد نگاه کنیم.
چرا نتایج اینگونه است؟
اگرچه به نظر می رسد 1+ ارزان ترین است ، اما باید 15 بار = کل هزینه 15 انجام دهد
بنابراین UCS از +5 استفاده می کند ، که فقط از 3 در هر زمان و 5+5+5 = 15 استفاده می کند
بنابراین ، مسیر [0, 5, 10, 15] بنابراین مسیری است که “کمترین هزینه”
خلاصه کردن
از این مقاله ، در مورد جستجوی هزینه یکنواخت (UCS) صحبت می کند ، که یک تکنیک اساسی برای جستجوی مسیرهایی با کمترین هزینه است ، بر خلاف DFS یا BFS ، جایی که UCS در هر مسیر “هزینه های انباشته شده” را در نظر می گیرد. بسیار مناسب برای وضعیتی که می خواهد جایگزین “بهترین ارزش” ، چه مسیر در نقشه یا سایر فرآیند تصمیم گیری در تصمیم گیری ، پیدا کند ، مقاله به راحتی اصول کار را توصیف می کند. با وجود هر دو نمونه به صورت نمودارها و اعداد به منظور دیدن اینکه UCS واقعاً در خوانندگان مختلفی کار می کند ، خواننده هم مفهوم UCS را درک می کند و هم می تواند در مورد مشکلات مختلفی که می خواهند بهترین انتخاب را در هزینه انتخاب کنند ، اعمال شود. این که آیا این پول است یا منابع دیگر به طور مؤثر امیدوار است که خواننده دانش را دریافت کند و در زمینه های مختلف قابل گسترش باشد.
مرجع 1: https://www.geeksforgeeks.org/uniform-cost-search-ucs-in-ai/
مرجع 2: https://stackoverflow.com/questions/43354715/uniform-cost-search-in-python
مرجع 3: https://www.educative.io/answers/what-is-uniform-cost-search
مرجع 4: https://images.app.goo.gl/2eszyxyb1roy8ui99