770 likes | 1.04k Views
حل مسأله از طريق جستجو. تهيه کننده: عبدالرضا ميرزايي. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر. سرفصل مطالب. عامل هاي حل مسأله فرموله کردن مسأله مسائل نمونه الگوريتم هاي پايه جستجو انواع مسأله. عامل هاي حل مسأله. عامل هاي حل مسأله.
E N D
حل مسأله از طريق جستجو تهيه کننده: عبدالرضا ميرزايي دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
سرفصل مطالب • عامل هاي حل مسأله • فرموله کردن مسأله • مسائل نمونه • الگوريتم هاي پايه جستجو • انواع مسأله دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
عامل هاي حل مسأله دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
عامل هاي حل مسأله از طريق جستجو کارگزار مي تواند رشته اقداماتي را توليد کند که آن را به هدف برساند. از اين روش مي توان در محيط هاي ايستا، قابل مشاهده، گسسته و قطعي استفاده کرد. پيش از آنکه يک عامل جستجوي راه حل را آغاز کند بايد يک هدف را فرموله و آنگاه از اين هدف براي فرموله کردن مساله استفاده کند. عامل هنگام اجراي رشته اعمال، ادرکاتش را ناديده مي گيرد (در کنترل : حلقه باز). دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: روماني • يك روز تعطيل در روماني؛ مكان فعلي شهرآراد • پرواز فردا، بخارست را ترك مي كند. • فرموله کردن هدف: – بودن در بخارست • فرموله کردن مسأله: – حالت ها: شهرهاي مختلف – عمليات: رفتن از شهري به شهر ديگر • يافتن پاسخ: – دنباله اي از شهرها، مانند: Arad, Sibiu, Fagaras, Bucharest دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: روماني دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
فرموله کردن مسائل (تك – حالته) يك مسأله با چهار مولفه تعريف مي شود: • حالت اوليه مثلاً بودن در شهر Arad • عمل ها يا تابع حالت بعديsuccessor function مجموعه اي از زوج هاي عمل- حالت =S( x) S(Arad) = {<Arad Zerind, Zerind>, … } • تابع تست هدف صريح: مانند x = “at Bucharest” ضمني: مانند Checkmate(x) • تابع هزينه مسير : مثال: مجموع فواصل، تعداد عمل هاي انجام شده و ... هزينه گام c( x, a, y) :(Step cost) که فرض مي شود c( x, a, y) ≥ 0 • راه حل: دنباله اي از عمليات كه از حالت اوليه شروع و به حالت هدف ختم مي شود. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
فرموله کردن مسائل • دنياي واقعي به شدت پيچيده مي باشد • بنابراين، براي حل مسأله بايد فضاي حالت انتزاعي باشد. • حالت ( انتزاعي) = مجموعه اي از حالت هاي واقعي • عمل ( انتزاعي) = تركيبي پيچيده از عمل هاي واقعي مثلا "Arad Zerind" مي تواند شامل مجموعه اي پيچيده از اعمال مانند چرخش ها، توقف کردن ها براي استراحت و ... باشد. • راه حل ( انتزاعي) = مجموعه اي از مسيرهاي واقعي كه در دنياي واقعي راه حل مي باشند. • هر عمل انتزاعي بايد از مسأله اصلي ساده تر باشد! دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: گراف فضاي حالت براي دنياي جاروبرقي • حالات؟ • اعمال؟ • تست هدف؟ • هزينه مسير دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: گراف فضاي حالت براي دنياي جاروبرقي • حالات؟ وجود اشغال و مكان هاي عامل • اعمال؟ Left, Right, Suck • تست هدف؟ نبودن اشغال در تمامي خانه ها • هزينه مسير؟ هر گام 1 واحد هزينه دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: پازل 8 تايي • حالات؟ • اعمال؟ • تست هدف؟ • هزينه مسير؟ دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: پازل 8 تايي • حالات؟ محل كاشي ها • اعمال؟ حركت خانه خالي به چپ، بالا، راست و پايين • تست هدف؟ حالت هدف ( داده شده) • هزينه مسير؟ هر حرکت 1 واحد هزينه دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مسأله هشت وزير • قراردادن هشت وزير در صفحه شطرنج به طوريكه هيچ وزيري نتواند به وزير ديگري حمله كند. • حالات؟ ترتيب 8 وزير هر كدام در يك ستون • مثال : { 8, 6, 4, 2, 7, 5, 3، 1} • اعمال؟انتقال يك وزير داراي برخورد به مربع ديگري در همان ستون • تست هدف؟8 وزير روي صفحه شطرنج كه با هم برخورد ندارند. • هزينه مسير؟ صفر دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مسأله هشت وزير • فرموله کردن افزايشي 8 وزير • حالات: هر چيدماني از صفر تا 8 وزير روي صفحه يك حالت است. • حالت ابتدايي: هيچ وزيري روي صفحه نباشد. • اعمال (تابع پسين)؟ افزودن يك وزير به هر خانة خالي. • تست هدف؟ 8 وزير روي صفحه قرار دارند كه هيچ يك به ديگري حمله نمي كند. • تعداد توالي ممکن براي بررسي 57*...* 63*64 دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مسأله هشت وزير • فرموله کردن افزايشي 8 وزير به صورت مناسب تر • از قرار گرفتن وزير در خانه اي که تحت حمله است جلوگيري کنيم: • حالات: هر چيدماني nوزير (0<=n<=8)يکي در هر ستون در nستون سمت چپ. • حالت ابتدايي: هيچ وزيري روي صفحه نباشد. • اعمال (تابع پسين)؟ افزودن يك وزير به هر خانه اي در آخرين ستون خالي سمت چپ به نحوي که توسط هيچ وزير ديگري مورد حمله قرار نگيرد. • تست هدف؟ 8 وزير روي صفحه قرار دارند كه هيچ يك به ديگري حمله نمي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
الگوريتم هاي جستجوي درخت • ابتدا ريشه را بررسي مي كنيم ببينيم حالت هدف است يا نه .اگر حالت هدف بود،مسأله حل مي شود .در غير اين صورت حالت فعلي را بسط مي دهيم. • يعني تابع پسين را به حالت فعلي اعمال كرده مجموعه جديدي از حالت ها را توليد مي كنيم. • انتخاب كردن ، آزمون و بسط دادن را ادامه مي دهيم تا راه حلي پيدا شود يا حالتي براي بسط وجود نداشته باشد. • انتخاب حالت براي بسط توسط استراتژي جستجو تعيين مي شود. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
الگوريتم هاي جستجوي درخت ايده اصلي: كاوشoffline و شبيه سازي شده فضاي حالت بوسيله توليد حالات بعدي حالت هايي كه تا كنون توليد شده اند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال جستجوي درخت • حالت اوليه دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال جستجوي درخت • پس از گسترش Arad دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال جستجوي درخت • پس از گسترش Sibiu دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
پياده سازي: جستجوي عمومي درخت • گره هاي جديد ايجاد مي كند، فيلدهاي مختلف را مقدار مي دهد با استفاده از Successor-FNمسأله، حالت هاي مربوطه ايجاد مي شود. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
پياده سازي: حالت و گره • گره، ساختار داده اي با پنج جز زير: • حالت: حالتي از فضاي حالت كه گره با آن متناظر است. • گره والد: گره اي از درخت جستجو كه اين گره را توليد كرده است. • اقدام: اقدامي كه بر گره والد اعمال شده است تا اين گره توليد شود. • هزينة مسير: هزينة مسير از حالت اوليه تا اين گره كه توسط اشاره گرهاي والد نشان داده مي شود. به طور مرسوم با g(n)مشخص مي شود. • عمق: تعداد گامهاي مسير از حالت اوليه پيكانها از فرزند به والد اشاره مي كنند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
استراتژي هاي جستجو • يك استراتژي بوسيله ترتيب گسترش گره ها تعريف مي شود. • ارزيابي استراتژي هاي مختلف: – كامل بودن: آيا در صورت وجود راه حل، هميشه راه حلي پيدا مي كند؟ – پيچيدگي زماني : تعداد گره هاي توليد شده/گسترش يافته – پيچيدگي حافظه : حداكثر تعداد گره ها در حافظه – بهينگي :آيا هميشه كم هزينه ترين راه حل را پيدا مي كند؟ • پيچيدگي زمان و فضا برحسب پارامترهاي زير سنجيده مي شوند: • bحداكثر فاكتور انشعاب درخت جستجو • dعمق كم هزينه ترين راه حل • mحداكثر عمق فضاي حالت ( ممكن است ∞ باشد) دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
استراتژي هاي جستجوي ناآگاهانه • استراتژي هاي ناآگاهانه (كور)تنها از اطلاعات موجود در تعريف مسأله استفاده مي كنند. • آنها هيچ اطلاعات اضافه اي به جز آنچه درتعريف مسأله آمده است درباره حالت ندارند. • اين استراتژي هاي تنها قادر به توليد پسينها و تشخيص يك حالت هدف از يك حالت غيرهدف مي باشد. • جستجوي اول-سطح • جستجوي هزينه- يكنواخت • جستجوي اول-عمق ( عمقي) • جستجوي عمق محدود • جستجوي عميق كننده تكراري دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي سطحي • هربار سطحي ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • fringe يك صف FIFOمي باشد. يعني، فرزندان جديد به انتهاي صف اضافه مي شوند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي سطحي • هربار سطحي ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • fringe يك صف FIFOمي باشد. يعني، فرزندان جديد به انتهاي صف اضافه مي شوند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي سطحي • هربار سطحي ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • fringe يك صف FIFOمي باشد. يعني، فرزندان جديد به انتهاي صف اضافه مي شوند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي سطحي • هربار سطحي ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • fringe يك صف FIFOمي باشد. يعني، فرزندان جديد به انتهاي صف اضافه مي شوند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
خصوصيات جستجوي سطحي • كامل؟ • بله ( به شرط محدود بودنb) • پيچيدگي زماني؟ 1+b+b2+b3+… +bd + b(bd-1) = O(bd+1) • پيچيدگي حافظه؟ همه گره ها را در حافظه نگه مي دارد O(bd+1) • بهينه؟ بله (اگر بازاء هر عمل، هزينه = 1) • مشكل اصلي حافظه مي باشد. (نسبت به زمان) دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي هزينه-يكنواخت • هربار كم هزينه ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • fringe صفي كه براساس هزينه مسير مرتب شده باشد. • معادل جستجوي سطحي اگر هزينه گام ها مساوي باشند. • كامل؟ بله اگر هزينه گامها، step cost ≥ ε • پيچيدگي زماني؟ تعداد گره هايي كه هزينه مسير آنها كوچكتر يا مساوي هزينه راه حل بهينه باشد. O(bceiling(C*/ ε)) • پيچيدگي حافظه؟ مانند پيچيدگي زماني • بهينه؟ بله زيرا گره ها به ترتيب صعودي g(n) گسترش مي يابند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
مثال: جستجوي هزينه يكنواخت 0: [S(0)] 1: [A(1), B(5), C(15)] 2: [B(5), G(11), C(15)] 3: [G(10), G(11), C(15)] 4: [G(11), C(15)] دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. فرض شده گره ها در عمق 3 هيچ پسيني نداشته باشند و M تنها گره هدف باشد دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. مي توان گره هايي که گسترش يافته اند و هيچ فرزندي در لبه ندارند را از حافظه حذف کرد دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمقي • هربار عميق ترين گره گسترش نيافته را گسترش مي دهد. • پياده سازي: • =fringe پشته LIFOفرزندان جديد را در ابتدا درج مي كند. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
خصوصيات جستجوي عمقي • كامل؟ – خير (در فضاهاي حالت با عمق نامحدود، داراي حلقه) – براي اجتناب از حالات تكراي در طول مسير، نياز به اصلاح دارد. – بنابراين، در فضاي حالت محدود كامل است. • پيچيدگي زماني O(bm) – در بدترين حالت تمام گره هاي درخت جستجو توليد مي شوند – اگر mخيلي بيشتر از dباشد، بسيار زياد • پيچيدگي حافظه؟O(bm) به صورت خطي • بهينه؟ خير دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
backtracking search • نوع خاصي از جستجوي اول عمق به نام جستجوي عقب گرد backtracking searchاز حافظة كمتري استفاده مي كند. • در جستجوي عقب گرد، به جاي تمام پسينها، در هر لحظه فقط يك پسين توليد مي شود. • هر يك از گره هاي نيمه گسترش يافته، به خاطر مي سپارد كه كدام پسين را درمرحلة بعدي بايد توليد كند. • به جاي O(bm)به O(m)حافظه نياز داريم. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
backtracking search • ترفند ديگري نيز براي صرفه جويي در حافظه و زمان • توليد پسين با تغيير مستقيم توصيف حالت فعلي، به جاي اين كه ابتدا آن راكپي كنيم. از اين طريق، احتياجات حافظه به تنها يك توصيف حالت وO(m) اقدام كاهش مي يابد. • براي اين كه اين راهبرد به درستي عمل كند بايد اين توانايي را داشته باشيم كه هر كدام از تغييرات را به حالت اوليه برگردانيم تا بتوانيم براي توليد پسين بعدي به عقب برگرديم. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمق محدود depth limited search • مشکل حلقه بي پايان در جستجوي عمقي را مي توان با در نظر گرفتن يک محدوديت عمق از پيش تعيين شده، مانند l تا حدي کاهش داد. • اگر l<d عامل ديگري براي ناتمام ماندن روش • اگر l>d جستجوي عمق محدود غير بهينه • تعيين محدوديت عمق بر اساس دانش مساله • مثال نقشه روماني • حاوي 20 شهر است. اگر راه حلي وجود داشته باشد در طولاني ترين حالت داراي عمق 19 است پس l=19انتخاب مي شود. • هر شهر در حداکثر 9 مرحله از هر شهر ديگر قابل دسترس است پس l=9انتخاب بهتري است. دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عمق محدود • پياده سازي بازگشتي دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
خصوصيات جستجوي عمق محدود • كامل؟ – خير (فقط در صورتي که l ≥ d باشد کامل است) • پيچيدگي زماني؟ O(bl) – • پيچيدگي حافظه؟ O(bl) – • بهينه؟ – خير دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر
جستجوي عميق كننده تكراري iterative deepening search • همراه با جستجوي اول عمق استفاده مي شود و بهترين محدوديت عمق را مي يابد. • افزايش تدريجي عمق تا يک هدف پيدا شود. • مزيت هاي جستجوي اول عمق و جستجوي اول سطح را دارد. • همانند جستجوي اول عمق از حافظه کمي استفاده مي کند O(bd). • همانند جستجوي اول سطح کامل (البته وقتي bمحدود است) • همانند جستجوي اول سطح بهينه ( وقتي هزينه مسير تابعي غير کاهشي از عمق گره باشد) دانشگاه صنعتي اصفهان دانشکده برق و کامپيوتر