الگوریتم های جستجوی اولین عمق و اولین پهنا هر دو از الگوریتم های
جستجو در هوش مصنوعی (AI) هستند . که برای رسیدن به جواب (goal state) از
وضعیت های اولیه (initial state) مورد استفاده قرار میگیرند.
هر دو دارای مزایا و معایبی هستند . در این مقاله به بررسی این مزایا و معایب می پردازیم .
اینکه بخواهیم بگیم کدوم بهتره ، بستگی به شرایط مسئله شما داره و نمیشه از اول تعیین کرد که کدام بهتر از دیگری است.
حداقل
برای جستجوی درختی ، الگوریتم جستجوی اولین عمق ( Depth first search )
حافظه کمتری نیاز داره چون شما تنها نیاز دارید که گره های مسیر جاری را
در حافظه ذخیره کنید . اگر تعداد زیادی راه حل وجود داشته باشه ، با
الگوریتم اولین عمق شاید بتونید یه راه حل در یه قسمت کوچکی از درخت رو
پیدا کنید . از طرف دیگر اگر تعداد پاسخ ها کم باشه ، الگوریتم اولین عمق
ممکن هست به بن بست برسه و نتونه جواب رو پیدا کنه ، این در حالی است که
ما میتونستیم با 2 یا 3 مرحله به جواب برسیم . ( البته ما از بن بست با
گذاشتن Depth Limit جلوگیری می کنیم ، اما اون موقع دیگه الگوریتم ، اولین
عمق کامل نیست ) بنابراین الگوریتم جستجوی اولین عمق وقتی مناسب است که
تعداد پاسخ های زیادی وجود دارد و شما یکی از اونا رو می خواهید و براتون
هم مهم نیست کدوم جواب انتخاب شود . همچنین اولین عمق راه حل خوبی نخواهد
بود اگر تنها یک جواب داشته باشیم یا وقتی که ما کوتاه ترین پاسخ را می
خواهیم.

الگوریتم جستجوی اولین پهنا ( Breadth first search ) ممکن است حافظه
بیشتری را اشغال کند ، اما در عوض در بن بست قرار نمی گیرد ، و همچنین
همیشه کوتاه ترین مسیر رو پیدا می کند . این الگوریتم برای مواقعی که
تعداد جستجو ها خیلی زیاد است و تنها یک جواب یا تعداد جواب کمی وجود دارد
، مناسب است .

منابع :
http://www.macs.hw.ac.uk/~alison/ai3notes/paragraph2_6_2_1_0_1.html
http://www.combinatorica.com/
طبقه بندی: طراحی الگوریتم ها، Design and Analysis of Algorithms،
برچسب ها: BFS AND DFS،
تبلیغات 




