You are on page 1of 103

‫دانشگاه شهیدبهشتی‬

‫دانشکده‬
‫مهندسی و علوم کامپیوتر‬ ‫توسط‪:‬‬
‫آرمین سلیمی بدر‬
‫‪a_salimibadr@sbu.ac.ir‬‬

‫‪1‬‬
‫‪ ‬عاملهای حلکننده مسائل‬

‫‪ ‬مسائل نمونه‬

‫‪ ‬جستجوی راه حل‬

‫روشهای جستجوی ناآگاهانه‬ ‫‪‬‬

‫روشهای جستجوی آگاهانه (مکاشفهای)‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪2‬‬
‫‪ ‬عامل حلکننده مسئله )‪:(Problem-Solving Agent‬‬

‫عامل مبتنی بر هدف‬ ‫‪‬‬

‫بهدنبال رسیدن به حالت هدف از طریق ردشدن از مسیری از حاالت با شروع از‬ ‫‪‬‬

‫حالت اولیه مشخصی هستیم‬

‫نمایش حاالت بهصورت اتمیک‬ ‫‪‬‬

‫‪ ‬عامل طرحریز )‪:(Planning Agent‬‬

‫استفاده از نمایش حاالت تقسیمشده یا ساختیافته‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪3‬‬
‫‪ ‬فرضیات در مورد محیط‬

‫‪ ‬قطعی‬

‫‪ ‬ایستا‬

‫‪ ‬شناختهشدگی‬

‫‪ ‬تکعامله‬

‫‪ ‬گسسته (حاالت‪ ،‬زمان‪ ،‬اعمال)‬

‫‪ ‬کامالً قابل مشاهده‬


‫‪ ‬با توجه به ایستایی محیط‪،‬قطعیت‪ ،‬شناختهشدگی محیط نیازی به دریافت ادراک‬
‫محیط وجود ندارد‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪3‬‬
‫تعریف اهداف‬ ‫‪‬‬

‫مشخصکردن حاالت هدف‬ ‫‪‬‬

‫نیازمند تابع آزمون هدف برای هر حالت‬ ‫‪‬‬

‫تعریف مسئله (فرمولهکردن مسئله)‬ ‫‪‬‬

‫تعیین حاالت‪ ،‬اعمال مجاز برای هر حالت و تأثیر اجرای هر عمل در هر حالت‬ ‫‪‬‬

‫تعیین میزان تجرید )‪ (Abstraction‬در تعریف مسئله‬ ‫‪‬‬

‫پیداکردن راهحل مبتنی بر استراتژیهای جستجو‬ ‫‪‬‬

‫اجرای راهحل‬ ‫‪‬‬


‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪4‬‬
‫راه حل مسئله‪ :‬دنبالهای از اعمال‬ ‫‪‬‬

‫‪a1 -> a2 -> a3 -> … -> an‬‬

‫الگوریتم جستجو )‪ :(Search‬از جنس بهینهسازی‬ ‫‪‬‬

‫ورودی‪ :‬مسئله بهینهسازی‬ ‫‪‬‬

‫یافتن جواب در وهله اول و سپس در نظر گرفتن معیارهای دیگر برای بهینهسازی‬ ‫‪‬‬

‫خروجی‪ :‬راهحل بهصورت دنباله اعمال‬ ‫‪‬‬

‫فاز اجرا )‪:(Execution‬‬ ‫‪‬‬

‫اجرای راهحل بدون دریافت ادراک از محیط (کنترل حلقهباز)‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪5‬‬
‫‪ ‬اجزای الزم برای تعریف مناسب یک مسئله‪:‬‬

‫حالت اولیه‬ ‫‪‬‬

‫مجموعه حالتهای مسئله‬ ‫‪‬‬

‫اقدامات قابل اجرا در هر حالت‪Actions(s) :‬‬ ‫‪‬‬

‫مجموعه اعمال مجاز در حالت ‪s‬‬ ‫‪‬‬

‫نتیجه عمل (تابع انتقال)‪St+1 = T(St,at) :‬‬ ‫‪‬‬

‫‪ ‬حالت بعدی پس از اِعمال هر عمل در هر حالت‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪6‬‬
‫آزمایش هدف‬ ‫‪‬‬

‫‪ ‬تابعی جهت بررسی هدف بودن هر حالت‬

‫بررسی عضویت هر حالت در مجموعه حاالت هدف‬ ‫‪‬‬

‫‪ ‬هزینه مسیر )‪(Path cost‬‬


‫‪ ‬تابعی که به هر مسیر یک عدد متناظر با هزینه کل آن تخصیص میدهد‬
‫) 𝒕𝒂 ‪𝒄(𝒔𝒕 ,‬‬
‫) 𝒕𝒂 ‪𝒄(𝒔𝒕 ,‬‬ ‫‪ ‬مجموع هزینه گامهای مختلف مسیر‬
‫𝒇𝒕‬
‫𝒇𝒕‬
‫=𝑱‬ ‫) 𝒕𝒂 ‪𝒄(𝒔𝒕 ,‬‬
‫=𝑱‬ ‫𝟏=𝒕‬ ‫) 𝒕𝒂 ‪𝒄(𝒔𝒕 ,‬‬
‫𝟏=𝒕‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪6‬‬
‫‪ ‬فضای حالت )‪ :(State-Space‬مجموعه همه حاالت موجود در‬
‫مسئله که با شروع از حالت اولیه و دنبالکردن کلیه اعمال‬
‫مجاز قابل دسترس هستند‬
‫قابل تعریف بر اساس حالت اولیه‪ ،‬حالتها و انتقالها‬ ‫‪‬‬
‫بهشکل یک گراف جهتدار‬ ‫‪‬‬

‫‪a‬‬ ‫‪S0‬‬ ‫‪a2‬‬


‫‪1‬‬

‫‪a5‬‬
‫‪S1‬‬ ‫‪a4‬‬ ‫‪S3‬‬
‫‪a3‬‬

‫‪S2‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪7‬‬
‫‪ ‬مسیر )‪ :(Path‬مجموعه حاالت متوالی مرتبط بر اساس اعمال‬
‫انتخابی در فضای حالت (حاصل از اعمال راهحل)‬
‫‪S0 -> S1 -> … -> Sn‬‬

‫‪a1‬‬ ‫‪a2‬‬ ‫‪an‬‬


‫‪S0‬‬ ‫‪S1‬‬ ‫…‬ ‫‪Sn-1‬‬ ‫‪Sn‬‬

‫یکی از حاالت هدف‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪7‬‬
‫‪ ‬راهحل )‪:(Solution‬‬
‫‪ ‬دنبالهای از اعمال که اجرای آنها با شروع از حالت اولیه‪ ،‬به حالت هدف‬
‫منتهی شود‪.‬‬

‫‪ ‬راهحل بهینه )‪:(Optimal Solution‬‬


‫‪ ‬راهحل موجود با کمترین میزان هزینه‬

‫‪ ‬مسیرهای اضافه )‪:(Redundant Pathways‬‬

‫‪ ‬مسیرهایی با هزینه بیشتر از مسیر بهینه‬

‫کاهش تعداد مسیرهای اضافه با تعریف مناسب مسئله‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪8‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪9‬‬
‫‪v‬‬ ‫‪v‬‬

‫‪v‬‬ ‫‪v‬‬
‫‪v‬‬ ‫‪v‬‬

‫‪v‬‬ ‫‪v‬‬ ‫‪10‬‬


‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪11‬‬
‫‪ ‬حاالت‪ :‬چگونگی قرارگرفتن شمارههای مختلف در محیط‬

‫‪ ‬حالت اولیه‪ :‬هر یک از چیدمانهای ممکن‬

‫‪ ‬مجموعه اعمال‪ :‬جابجایی مجاز برای خانه خالی (باال‪ ،‬پایین‪ ،‬چپ و راست)‬

‫‪ ‬تابع انتقال‪ :‬نتیجه جابجایی مورد نظر خانه خالی در خانه فعلی‬

‫‪ ‬تابع هزینه‪ :‬هر عمل متناظر با ‪ 1‬واحد هزینه‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪11‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪12‬‬
‫‪ ‬بستگی اندازه فضای حالت به تعریف اعمال مجاز‬
‫‪ ‬در هر حالت هر وزیر بتواند در هر یک از خانههای خالی قرار گیرد‬
‫‪ ‬تعداد حاالت غیرمجاز بسیاری دارد‬

‫𝟒𝟔‬ ‫𝟑𝟔‬ ‫𝟐𝟔‬ ‫𝟏𝟔‬ ‫𝟎𝟔‬ ‫𝟗𝟓‬ ‫𝟖𝟓‬ ‫𝟕𝟓‬


‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬
‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪12‬‬
‫‪ ‬در هر حالت با افزودن هر وزیر قرارگرفتن وزیر بعدی در خانههای‬
‫سطر و ستون مورد گارد توسط آن وزیر از مجموعه اعمال حذف‬
‫شود‬
‫𝟒𝟔‬ ‫𝟗𝟒‬ ‫𝟔𝟑‬ ‫𝟓𝟐‬ ‫𝟔𝟏‬ ‫𝟗‬ ‫𝟒‬ ‫𝟏‬
‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬
‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪12‬‬
‫‪ ‬هر وزیر به ناچار در یکی از ‪ 8‬ستون قرار میگیرد‬
‫‪ ‬در هر عمل تکلیف یک وزیر در ستون خودش مشخص شود‬
‫‪ ‬سطر قرار گیری این وزیر از مجموعه اعمال حذف شود‬

‫𝟖‬ ‫𝟕‬ ‫𝟔‬ ‫𝟓‬ ‫𝟒‬ ‫𝟑‬ ‫𝟐‬ ‫𝟏‬


‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫×‬ ‫!𝟖 =‬
‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪12‬‬
‫‪ ‬فضای حالت نامتناهی‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪13‬‬
‫‪ ‬مسیریابی در خطوط هواپیمایی‬

‫‪ ‬طراحی مدارهای ‪VLSI‬‬

‫‪ ‬مسیریابی ربات‬

‫‪ ‬طراحی پروتئین‬

‫‪ ‬سرهم کردن قطعات‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪14‬‬
‫هر گره معرف یک حالت از فضای حالت‬ ‫‪‬‬

‫هر انشعاب معرف یک عمل ممکن در هر حالت‬ ‫‪‬‬

‫ریشه درخت معرف حالت اولیه‬ ‫‪‬‬

‫گسترش )‪ :(Expanding‬بازکردن هر گره و تولید حاالت جدید بر اساس مجموعه‬ ‫‪‬‬

‫اعمال ممکن در آن حالت و تابع انتقال مسئله‬

‫‪ ‬افزوده شدن حاالت نتیجه بهعنوان فرزندان گره والد‬

‫‪ ‬تشکیل لیست باز )‪ (Open List‬یا خط مقدم )‪ (Frontier‬توسط گرههای گسترش نیافته‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪15‬‬
‫گراف معرف فضای حالت مسئله‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪15‬‬
‫گراف معرف فضای حالت مسئله‬

‫گسترش ‪S0‬‬ ‫درخت جستجو‬

‫‪S0‬‬ ‫‪S0‬‬ ‫‪S0‬‬ ‫‪S0‬‬


‫‪a1‬‬ ‫‪a2‬‬ ‫‪a1‬‬ ‫‪a2‬‬ ‫‪a1‬‬ ‫‪a2‬‬

‫‪S1‬‬ ‫‪S3‬‬ ‫‪S1‬‬ ‫‪S3‬‬ ‫‪S1‬‬ ‫‪S3‬‬


‫‪a3‬‬ ‫‪a5‬‬ ‫‪a3‬‬ ‫‪a5‬‬

‫‪S2‬‬ ‫‪S1‬‬ ‫‪S2‬‬ ‫‪S1‬‬


‫‪a4‬‬
‫‪S3‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪15‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪15‬‬
‫عملیات جستجو‪ :‬انتخاب یک گره از لیست باز و گسترش آن و اعمال آزمون هدف‬ ‫‪‬‬

‫استراتژی جستجو )‪:(Search Strategy‬‬ ‫‪‬‬

‫چگونگی انتخاب گره بعدی از لیست باز جهت گسترش‬ ‫‪.1‬‬

‫زمان بررسی آزمون هدف (زمان انتخاب یا زمان ایجاد)‬ ‫‪.2‬‬

‫امکان تکرار برخی گرهها در درخت و ایجاد حلقه‬ ‫‪‬‬

‫‪ ‬درصورت عدم نگهداری لیستی از حاالت مشاهدهشده (جستجوی درختی)‬

‫‪ ‬با داشتن لیست حاالت تکراری (لیست بسته) و اجتناب از تکرار (جستجوی گرافی)‬

‫نیازمند حافظه و پردازش جستجو است‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪16‬‬
‫‪ ‬کاملبودن )‪:(Completeness‬‬

‫‪ ‬تضمین یافتن حداقل یک جواب در صورت وجود‬

‫‪ ‬بهینگی )‪:(Optimality‬‬

‫‪ ‬تضمین یافتن جواب بهینه‬

‫پیچیدگی زمانی )‪:(Time Complexity‬‬ ‫‪‬‬

‫‪ ‬زمان الزم برای رسیدن به جواب‬

‫تخمین زدن با تعداد گرههای بررسیشده‬ ‫‪‬‬

‫پیچیدگی حافظهای )‪:(Space Complexity‬‬ ‫‪‬‬

‫حافظه و فضای مورد نیاز جهت اجرای الگوریتم‬ ‫‪‬‬

‫معموالً معادل حجم لیست باز (گرههایی که باید در حافظه باقی بمانند)‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪17‬‬
‫‪ ‬تعداد گرهها بههمراه یالها )|‪(|V| + |E‬‬

‫‪ ‬مناسب در صورت در اختیار داشتن ساختمانداده درخت بهصورت صریح‬

‫‪ ‬ضریب انشعاب ‪(Branching Factor) b‬‬

‫تعداد (متوسط) اعمال هر حالت‬ ‫‪‬‬

‫‪ ‬عمق کمعمقترین جواب ‪d‬‬

‫‪ ‬عمق طوالنیترین مسیر ‪( m‬عمق فضای مسئله)‬

‫‪ ‬نکته‪ :‬هزینه الگوریتم هم مبتنی بر فاز جستجو و هم فاز اجراست‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪18‬‬
‫جستجوی ناآگاهانه )‪:(Uninformed Search Strategies‬‬ ‫‪‬‬

‫‪ ‬جستجوی سطح اول (عرضی)‬

‫‪ ‬جستجوی هزینه یکنواخت‬

‫‪ ‬جستجوی عمق اول‬

‫‪ ‬جستجوی عمق محدود‬

‫‪ ‬جستجوی عمق اول با افزایش تکراری عمق‬

‫‪ ‬جستجوی دوطرفه‬

‫جستجوی آگاهانه )‪ (Informed Search Strategy‬یا مکاشفهای )‪:(Heuristic‬‬ ‫‪‬‬

‫‪ ‬جستجوی اول بهترین حریصانه‬

‫‪ ‬جستجوی *‪A‬‬ ‫‪19‬‬


‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬
‫‪ ‬مدیریت لیست باز با استفاده از صف ‪FIFO‬‬

‫‪ ‬گسترش همه گرههای عرض اول‬

‫‪ ‬آزمون هدف در زمان ایجاد‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪20‬‬
‫کامل‬ ‫‪‬‬

‫‪ ‬کل فضای مسئله را در بدترین حالت جستجو میکند‬

‫بهینه‬ ‫‪‬‬

‫‪ ‬مشروط به اینکه تابع هزینه تابعی افزایشی از طول مسیر باشد‬

‫‪ ‬پیچیدگی زمانی و حافظهای‪O(bd) :‬‬

‫مشکل شدید زمان اجرا و حافظه‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪21‬‬
‫عمق صفر‪ 20=1 :‬گره‬

‫عمق یک‪ 21=2 :‬گره‬

‫عمق دو‪ 22=4 :‬گره‬

‫عمق ‪ 2d :d‬گره‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪22‬‬
‫‪ ‬مناسب برای زمانی که هزینه با شمارش گام متفاوت باشد‬

‫‪ ‬اعمال آزمون هدف در زمان انتخاب گره برای گسترش‬

‫‪ ‬گسترش با اولویت برگی که دارای کمترین طول مسیر است‬

‫‪ ‬چنانچه هزینه تا گره ‪ n‬با )‪ g(n‬نمایش داده شود‪ ،‬گسترش گره با کمترین )‪g(n‬‬

‫ادامه الگوریتم تا زمانی که برگی دارای )‪ g(n‬کمتر از مسیر یافتشده نباشد‬ ‫‪‬‬

‫‪ ‬امکان یافتن مسیر بهتر و جایگزینی آن‬

‫‪ ‬امکان یافتن بهترین مسیر‬

‫امکان قرار گرفتن در حلقه بینهایت برای یالهای بدون هزینه نظیر ‪NoOp‬‬ ‫‪‬‬

‫‪ ‬راهکار‪ :‬افزودن ‪ ε‬به هر گام‬


‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪23‬‬
‫ریشه‬

‫)‪g(n‬‬

‫‪n‬‬

‫وقتی گرهای برای گسترش انتخاب میشود و دارای کمترین‬


‫مقدار هزینه از ریشه در بین گرههای لیست باز است‪،‬‬
‫کوتاهترین مسیر از ریشه به آن گره پیدا شده است‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪24‬‬
‫ریشه‬

‫)‪g(n’) > g(n‬‬ ‫)‪g(n‬‬

‫'‪n‬‬ ‫‪n‬‬
‫)‪c(n’,n‬‬

‫در غیر اینصورت باید گره دیگری مانند ’‪ n‬در لیست باز‬
‫وجود داشته باشد که کوتاهترین مسیر به گره ‪ n‬از آن عبور‬
‫کند که با توجه به افزایش صعودی هزینه غیر ممکن است‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪25‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪26‬‬
‫‪g(S) = 0‬‬ ‫‪S‬‬ ‫بررسی آزمون هدف‪:‬‬
‫هدف نیست‬

‫}‪Open List= {S‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪27‬‬
‫‪g(S) = 0‬‬ ‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬

‫‪g(R) = g(S) + c(S,R) = 80‬‬ ‫‪g(F) = g(S) + c(S,F) = 99‬‬

‫}‪Open List= {R,F‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪28‬‬
‫‪g(S) = 0‬‬ ‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬
‫انتخاب برای گسترش‬
‫‪R‬‬ ‫‪F‬‬

‫‪g(R) = g(S) + c(S,R) = 80‬‬ ‫‪g(F) = g(S) + c(S,F) = 99‬‬

‫انتخاب ‪ R‬برای گسترش مبتنی بر کمتر‬


‫بودن )‪ g(R‬از )‪g(F‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪29‬‬
‫‪g(S) = 0‬‬ ‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬
‫بررسی آزمون هدف‪:‬‬
‫هدف نیست‬ ‫‪F‬‬
‫‪R‬‬

‫‪g(R) = g(S) + c(S,R) = 80‬‬ ‫‪g(F) = g(S) + c(S,F) = 99‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪30‬‬
‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬ ‫‪g(F) = 99‬‬

‫‪97‬‬

‫‪P‬‬
‫}‪Open List= {P,F‬‬
‫= )‪g(P) = g(R) + c(R,P‬‬
‫‪177‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪31‬‬
‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬ ‫‪g(F) = 99‬‬

‫‪97‬‬

‫‪P‬‬
‫}‪Open List= {P,F‬‬
‫= )‪g(P) = g(R) + c(R,P‬‬
‫‪177‬‬ ‫انتخاب ‪ F‬برای گسترش مبتنی بر کمتر‬
‫بودن )‪ g(F‬از )‪g(P‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪32‬‬
‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬ ‫‪g(F) = 99‬‬

‫‪97‬‬

‫‪P‬‬
‫}‪Open List= {P,F‬‬
‫= )‪g(P) = g(R) + c(R,P‬‬
‫‪177‬‬ ‫بررسی آزمون هدف برای ‪ :F‬هدف نیست‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪33‬‬
‫‪g(S) = 0‬‬ ‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬

‫‪97‬‬ ‫‪211‬‬

‫‪g(P) = 177‬‬ ‫‪P‬‬ ‫‪g(B) = 310‬‬ ‫‪B‬‬

‫}‪Open List= {P,B‬‬


‫با وجود آنکه ‪ B‬هدف است‪ ،‬اما با توجه به بررسی آزمون هدف در زمان‬
‫گسترش و نه در زمان ایجاد‪ ،‬جستجو ادامه مییابد‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪34‬‬
‫‪g(S) = 0‬‬ ‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬

‫‪97‬‬ ‫‪211‬‬

‫‪g(P) = 177‬‬ ‫‪P‬‬ ‫‪g(B) = 310‬‬ ‫‪B‬‬

‫انتخاب ‪ P‬برای گسترش مبتنی بر کمتر‬


‫}‪Open List= {P,B‬‬
‫بودن )‪ g(F‬از )‪g(P‬‬
‫بررسی آزمون هدف برای ‪ :P‬هدف نیست‬ ‫‪35‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬
‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬

‫‪97‬‬ ‫‪211‬‬

‫‪P‬‬ ‫}‪Open List= {B,B‬‬ ‫‪B‬‬

‫‪101‬‬ ‫‪g(B) = 310‬‬

‫‪B‬‬
‫‪g(B) = 278‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪36‬‬
‫‪S‬‬
‫‪80‬‬ ‫‪99‬‬

‫‪R‬‬ ‫‪F‬‬

‫‪97‬‬ ‫‪211‬‬

‫‪P‬‬ ‫}‪Open List= {B,B‬‬ ‫‪B‬‬

‫‪101‬‬ ‫‪g(B) = 310‬‬


‫بررسی آزمون هدف برای ‪ :B‬هدف است‬
‫‪B‬‬
‫‪g(B) = 278‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪37‬‬
‫‪ ‬کامل‪ :‬در بدترین وضعیت کل درخت را میسازد‬

‫‪ ‬بهینه‪ :‬کوتاهترین مسیر را پیدا میکند‬

‫‪ ‬پیچیدگی زمانی و حافظهای‪O(b[C*/ε]+1) :‬‬

‫‪ ‬مشابه با الگوریتم عرضی درصورت یکسان بودن هزینهها‬

‫(بدتر چون همه گرهها را گسترش میدهد)‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪38‬‬
‫‪ ‬جستجوی عمقی‬
‫‪ ‬استفاده از پشته (صف ‪)LIFO‬‬
‫‪ ‬اعمال آزمون هدف در زمان ایجاد‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪39‬‬
‫‪ ‬جستجوی عمقی بازگشت به عقب درخت زیر‬

‫‪A‬‬

‫‪B‬‬ ‫‪C‬‬

‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬ ‫‪G‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪40‬‬
‫‪A‬‬

‫گام اول‪ :‬افزودن صرف ًا‬


‫‪B‬‬ ‫فرزندی که قرار است در‬
‫ادامه گسترش یابد‬

‫‪D‬‬ ‫گام دوم‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪41‬‬
‫‪A‬‬

‫‪B‬‬

‫‪E‬‬ ‫گام سوم‪ :‬بازگشت از‬


‫‪ D‬به ‪ B‬و اضافه کردن‬
‫فرزند بعدی ‪ B‬به‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫لیست باز‬ ‫‪42‬‬
‫‪A‬‬

‫گام چهارم‬ ‫‪C‬‬

‫گام پنجم‬ ‫‪F‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪43‬‬
‫‪A‬‬

‫‪C‬‬

‫گام ششم‬ ‫‪G‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪44‬‬
‫‪ ‬غیرکامل‪ :‬میتواند دارای عمق نامحدود در یک شاخه باشد‬

‫‪ ‬غیربهینه‪ :‬توقف پس از یافتن اولین مسیر و نه لزوماً مسیر بهینه‬

‫‪ ‬پیچیدگی زمانی‪O(bm) :‬‬

‫‪ ‬پیچیدگی حافظهای‪O(bm) :‬‬

‫‪ ‬خیلی کمتر از حالت سطح اول در حالت کلی‬

‫‪ ‬چنانچه از نسخه ‪ Backtracking‬استفاده شود‪O(m) :‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪45‬‬
‫‪ ‬مشابه الگوریتم ‪DFS‬‬
‫‪ ‬جستجوی عمق محدود ‪l‬‬
‫‪ ‬حل کردن مشکل عمق بینهایت‬
‫‪ ‬درصورت بزرگتر بودن ‪ d‬از ‪ l‬کامل نیست‬
‫‪ ‬دانش قبلی از مسئله میتواند در انتخاب ‪ l‬کمک کند‬
‫‪ ‬غیربهینه و غیرکامل در حالت کلی‬
‫‪ ‬پیچیدگی فضایی‪O(bl) :‬‬
‫‪ ‬پیچیدگی زمانی‪O(bl) :‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪46‬‬
‫اجرای الگوریتم عمق محدود با مقادیر مختلف ‪ l‬تا رسیدن به جواب‬ ‫‪‬‬

‫در صورت محدود بودن ضریب انشعاب‪ ،‬کامل است‬ ‫‪‬‬

‫در صورت افزایش صعودی تابع هزینه با تعداد گامها‪ ،‬بهینه است‬ ‫‪‬‬

‫پیچیدگی زمانی‪O(bd) :‬‬ ‫‪‬‬

‫پیچیدگی حافظهای‪O(bd) :‬‬ ‫‪‬‬

‫مزایای دو الگوریتم عرض اول و عمق اول بهطور همزمان‬ ‫‪‬‬

‫عیب‪ :‬تولید چندباره برخی گرهها‬ ‫‪‬‬

‫‪ ‬مشکلساز نبودن بهدلیل آنکه عموماً تعداد گرهها در عمق پایین افزایش مییابد‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪47‬‬
‫‪ ‬اثبات پیچیدگی زمانی‪:‬‬
‫∞‪+‬‬ ‫‪ ‬برای سری هندسی داریم‪:‬‬
‫𝒏‬
‫𝟏‬
‫⇒𝟏< 𝒙‬ ‫= 𝒙‬
‫𝒙‪𝟏−‬‬
‫𝟎=𝒏‬

‫‪ ‬با مشتقگیری از دو طرف داریم‪:‬‬

‫∞‪+‬‬ ‫∞‪+‬‬
‫𝒅‬ ‫𝒏‬
‫𝒅‬ ‫𝟏‬ ‫𝟏‪𝒏−‬‬
‫𝟏‬
‫𝒙‬ ‫=‬ ‫⇒‬ ‫𝒙𝒏‬ ‫=‬ ‫𝟐‬
‫𝒙𝒅‬ ‫𝒙 ‪𝒅𝒙 𝟏 −‬‬ ‫𝒙‪𝟏−‬‬
‫𝟎=𝒏‬ ‫𝟏=𝒏‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪47‬‬
‫‪ ‬اثبات پیچیدگی زمانی‪:‬‬
‫‪ ‬تعداد گرههای گسترشیافته روش ‪:IDS‬‬
‫𝒅𝒃 ‪𝑵 = 𝒃𝒅 + 𝒅 − 𝟏 𝒃𝟐 + ⋯ + 𝟑𝒃𝒅−𝟐 + 𝟐𝒃𝒅−𝟏 +‬‬
‫𝟐‬ ‫𝟐‪𝒅−‬‬ ‫𝟏‪𝒅−‬‬
‫𝟏‬ ‫𝟏‬ ‫𝟏‬ ‫𝟏‬
‫𝟐 ‪= 𝒃𝒅 𝟏 +‬‬ ‫𝟑‪+‬‬ ‫𝟏 ‪…+ 𝒅 −‬‬ ‫𝒅‪+‬‬
‫𝒃‬ ‫𝒃‬ ‫𝒃‬ ‫𝒃‬
‫𝒅‬ ‫𝟏‪𝒏−‬‬ ‫∞‪+‬‬ ‫𝟏‪𝒏−‬‬
‫𝟏‬ ‫𝟏‬
‫𝒅𝒃 =‬ ‫‪𝒏.‬‬ ‫𝒅𝒃 <‬ ‫‪𝒏.‬‬
‫𝒃‬ ‫𝒃‬
‫𝟏=𝒏‬ ‫𝟏=𝒏‬

‫𝟏‬ ‫𝒅‬ ‫∞‪+‬‬


‫‪𝒃 >𝟏,‬‬ ‫𝟏<‬ ‫𝟏‪𝒏−‬‬ ‫𝟏‪𝒏−‬‬
‫𝒃‬ ‫𝒅‬
‫𝟏‬ ‫𝒅‬
‫𝟏‬ ‫𝟏‬
‫𝒃=𝑵‬ ‫‪𝒏.‬‬ ‫𝒃<‬ ‫‪𝒏.‬‬ ‫𝒅𝒃 =‬ ‫𝟐‬ ‫‪= 𝜷. 𝒃𝒅 ,‬‬
‫𝒃‬ ‫𝒃‬ ‫𝟏‬
‫𝟏=𝒏‬ ‫𝟏=𝒏‬ ‫‪𝟏−‬‬
‫𝒃‬
‫𝟒≤𝜷<𝟏‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪47‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪48‬‬
‫‪ ‬اجرای دو الگوریتم جستجوی همزمان از حالت اولیه و حالت هدف‬

‫‪ ‬کاهش پیچیدگی زمانی از )‪ O(bd‬به )‪O(bd/2) + O(bd/2‬‬

‫‪ ‬وجود گره مشترک در مجموعه خطمقدم )‪ (f‬نشانه یافتن جواب است‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪49‬‬
‫عمق ‪0‬‬ ‫ریشه‬

‫‪.‬‬
‫‪.‬‬
‫‪.‬‬

‫عمق ‪d/2‬‬ ‫…‬


‫‪.‬‬
‫‪.‬‬
‫‪.‬‬

‫عمق ‪d‬‬ ‫هدف‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬


‫‪50‬‬
‫‪ ‬استفاده از دانش مسئله در بهبود زمان رسیدن به جواب‬

‫‪ ‬استفاده از یک تابع ارزیابی )‪ f(n‬که برای هر گره ‪ ،n‬تقریبی از هزینه‬


‫رسیدن به نقطه هدف را محاسبه میکند‬
‫‪ ‬این تابع عموماً دربرگیرنده یک تابع مکاشفهای )‪ h(n‬است‬
‫مثال‪ :‬در مسئله مسیریابی بین شهرها‪ ،‬فاصله خط مستقیم میتواند یک تابع ارزیابی‬ ‫‪‬‬

‫مکاشفهای شهودی باشد‬

‫‪ ‬مشابه با روش هزینه یکنواخت با تفاوت تابع ارزیابی ‪ f‬به جای ‪g‬‬
‫‪ ‬انتخاب تابع مکاشفهای ارزیابی تأثیر بسزایی در کارایی روش دارد‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪51‬‬
‫‪ ‬گسترش گرهای که کمترین )‪ h(n‬را دارد‬
‫‪ ‬کامل نیست‬
‫‪ ‬ممکن است مسیری را انتخاب کند که هرگز به مقصد نرسد‬

‫‪ ‬بهینه نیست‬
‫‪ ‬انتخاب تابع مکاشفهای میتواند در نزدیکشدن به جواب بهینه مؤثر باشد‬

‫‪ ‬پیچیدگی زمانی و حافظهای‪ :‬در حالت کلی )‪O(bm‬‬


‫انتخاب تابع مکاشفهای مناسب میتواند پیچیدگی زمانی و حافظهای را در عمل‬ ‫‪‬‬

‫کاهش دهد‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪52‬‬
‫‪A‬‬

‫‪h(B) = 10‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪h(C) = 20‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪53‬‬
‫‪A‬‬

‫‪h(B) = 10‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪h(C) = 20‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪54‬‬
‫‪A‬‬

‫‪h(B) = 10‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪h(C) = 20‬‬

‫‪h(B) = 10‬‬ ‫‪B‬‬ ‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬

‫‪h(D) = 15‬‬ ‫‪h(E) = 12‬‬ ‫‪h(F) = 11‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪55‬‬
‫‪A‬‬

‫‪h(B) = 10‬‬ ‫‪B‬‬ ‫‪C‬‬ ‫‪h(C) = 20‬‬

‫‪h(B) = 10‬‬ ‫‪B‬‬ ‫‪D‬‬ ‫‪E‬‬ ‫‪F‬‬

‫‪h(D) = 15‬‬ ‫‪h(E) = 12‬‬ ‫‪h(F) = 11‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪56‬‬
‫‪ ‬درنظرگرفتن تابع ارزیابی )‪ f(n‬بصورت مجموع )‪ h(n‬و )‪g(n‬‬
‫▪ مفهوم تابع )‪ :f(n‬تقریب هزینه مسیر گذرنده از ‪n‬‬
‫‪ ‬بررسی آزمون هدف در زمان انتخاب گره جهت گسترش‬

‫‪ ‬کامل و بهینه‬

‫‪ ‬الزم است تابع شهودی دو شرط زیر را ارضا کند‪:‬‬


‫‪ ‬قابل قبول بودن )‪ :(Admissible‬تابع شهودی از تابع واقعی کوچکتر یا مساوی باشد‬

‫‪ ‬سازگاری )‪ :(Consistency‬رعایت نامساوی مثلث‬


‫اگر ’‪ n‬فرزند ‪ n‬باشد داشته باشیم‪𝒉 𝒏 ≤ 𝒄 𝒏′ ,𝒂,𝒏 + 𝒉 𝒏′ :‬‬ ‫‪‬‬

‫هر تابع سازگار قابل قبول است‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪57‬‬
‫ریشه‬

‫)‪g(n‬‬

‫‪n‬‬

‫)‪h(n‬‬

‫هدف‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪58‬‬
‫ریشه‬

‫)‪g(n‬‬

‫)’‪c(n,n‬‬ ‫‪n‬‬
‫)‪g(n’) = g(n) + c(n’,n‬‬
‫'‪n‬‬

‫)‪h(n‬‬

‫)’‪h(n‬‬ ‫هدف‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪59‬‬
‫ریشه‬

‫)‪g(n‬‬

‫)’‪c(n,n‬‬ ‫‪n‬‬
‫)‪g(n’) = g(n) + c(n’,n‬‬
‫'‪n‬‬

‫)‪h(n‬‬

‫)’‪h(n‬‬ ‫هدف‬

‫‪ℎ 𝑛 ≤ 𝑐 𝑛, 𝑛′ + ℎ 𝑛′ ⇒ 𝑔 𝑛 + ℎ 𝑛 ≤ 𝑔 𝑛 + 𝑐 𝑛, 𝑛′ + ℎ 𝑛′‬‬
‫‪⇒ 𝑔 𝑛 + ℎ 𝑛 ≤ 𝑔 𝑛′ + ℎ 𝑛′ ⇒ 𝑓 𝑛 ≤ 𝑓 𝑛′‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪60‬‬
‫‪ ‬اثبات بهینگی‬

‫‪ ‬سازگاری تابع شهودی =< غیرنزولیبودن تابع ارزیابی در امتداد هر مسیر‬

‫‪ ‬انتخاب گره برای گسترش =< یافتن کوتاهترین مسیر تا آن گره‬

‫‪ ‬انتخاب گره هدف برای گسترش =< یافتن کوتاهترین مسیر تا آن‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪61‬‬
‫‪h(A) = 20‬‬ ‫‪A‬‬ ‫‪18‬‬ ‫‪h(C) = 30‬‬

‫‪5‬‬ ‫‪C‬‬ ‫‪10‬‬ ‫‪h(F) = 10‬‬


‫‪10‬‬
‫‪5‬‬
‫‪B‬‬ ‫‪F‬‬
‫‪h(B) = 10‬‬ ‫‪h(E) = 4‬‬ ‫‪5‬‬
‫‪8‬‬ ‫‪E‬‬
‫‪7‬‬
‫‪D‬‬
‫‪h(D) = 5‬‬ ‫‪12‬‬

‫‪G‬‬
‫‪h(G) = 0‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪62‬‬
‫‪f(A) = h(A) +g(A) = 20‬‬ ‫‪A‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪63‬‬
‫‪A‬‬

‫‪f(C) = h(C) +g(C) = 48‬‬

‫‪B‬‬ ‫‪C‬‬
‫‪f(B) = h(B) +g(B) = 15‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪64‬‬
‫گره تکراری‬
‫محسوب‬
‫نمیشود‬
‫‪A‬‬
‫چون در یک‬
‫مسیر‬
‫‪f(C) = 48‬‬
‫نیستند‬
‫‪B‬‬ ‫‪C‬‬

‫‪f(C) = 45‬‬
‫‪C‬‬ ‫‪D‬‬ ‫‪f(D) = 18‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪65‬‬
‫‪A‬‬

‫‪f(C) = 48‬‬

‫‪B‬‬ ‫‪C‬‬

‫‪f(C) = 45‬‬
‫‪C‬‬ ‫‪D‬‬

‫‪f(E) = 24‬‬ ‫‪E‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪66‬‬
‫‪A‬‬

‫‪f(C) = 48‬‬

‫‪B‬‬ ‫‪C‬‬

‫‪f(C) = 45‬‬
‫‪C‬‬ ‫‪D‬‬

‫‪E‬‬
‫‪f(F) = 35‬‬

‫‪F‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪67‬‬
‫‪A‬‬

‫‪f(C) = 48‬‬

‫‪B‬‬ ‫‪C‬‬

‫‪f(C) = 45‬‬
‫‪C‬‬ ‫‪D‬‬

‫‪E‬‬

‫‪F‬‬
‫‪f(G) = 37‬‬

‫‪G‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪68‬‬
‫‪A‬‬

‫‪f(C) = 48‬‬

‫‪B‬‬ ‫‪C‬‬

‫‪f(C) = 45‬‬
‫‪C‬‬ ‫‪D‬‬

‫‪E‬‬

‫‪F‬‬
‫‪f(G) = 37‬‬
‫بررسی آزمون هدف در زمان انتخاب‬
‫به دلیل کمترین مقدار ‪ f‬در لیست باز‬ ‫‪G‬‬
‫و اتمام الگوریتم‬ ‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬
‫‪69‬‬
‫کوتاهترین مسیر از ‪ Arad‬به ‪Bucharest‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪70‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪7161‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪7261‬‬
‫‪ ‬اگر *‪ C‬هزینه مسیر بهینه باشد‬

‫‪ ‬الگوریتم *‪ A‬همواره گرههای با )‪ f(n‬بزرگتر از *‪ C‬را گسترش نمیدهد‬

‫هرس )‪ (Pruning‬برخی از زیردرختهای مربوط به این گرهها‬ ‫‪‬‬

‫‪ ‬در میان تمامی الگوریتمهایی که از تابع شهودی )‪ h(n‬استفاده‬

‫میکنند‪ ،‬بهترین کارایی متعلق به *‪ A‬است‬

‫‪ ‬بررسی کمترین تعداد گره‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪73‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪74‬‬
‫پیچیدگی الگوریتم *‪ A‬به خطای بین تابع شهودی منتخب و تابع هزینه واقعی یعنی‬ ‫‪‬‬

‫‪ h*-h‬مرتبط است‬

‫‪ ‬افزایش خطا‪ :‬افزایش تعداد گرههای داخل کانتور *‪C‬‬

‫‪ ‬پیچدگی حافظهای مشکل اصلی است‬

‫‪ ‬راهحلها‪:‬‬

‫)*‪IDA* (Iterative Deepening A‬‬ ‫‪‬‬


‫‪RBFS (Recursive Best-First Search) ‬‬

‫‪MA* (Memory bounded A*) ‬‬

‫‪SMA* (Simple Memory bounded A*) ‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪75‬‬
‫‪ ‬الگوریتم *‪ :IDA‬اعمال ایده الگوریتم ‪IDS‬‬
‫‪ ‬استفاده از )‪ f(n‬محدود در هر تکرار بهجای عمق‬
‫‪ ‬مشکل در زمان حقیقی بودن هزینه‬

‫‪‬الگوریتم ‪RBFS‬‬

‫‪ ‬حافظه خطی‬

‫‪ ‬حذف زیردرخت بازشده در زمان بازگشت از یک مسیر (پیداشدن مسیر‬


‫جایگزین بهتر) و ثبت بهترین مقدار )‪ f(n‬در آن زیردرخت بهجای هزینه گره‬
‫سرشاخه زیردرخت تا در صورت نیاز مجدداً باز شود‬

‫‪ ‬بنابراین گرهها در حافظه بصورت نمایی رشد نمیکنند‬

‫‪ ‬یکی از اشکاالت روش بازتولید مجدد بسیاری از گرههاست‬


‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪76‬‬
‫هزینه بهترین مسیری که از این گره نمیگذرد‬
‫∞‬

‫‪f(A) = 366‬‬ ‫‪A‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪77‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪78‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬

‫گره ‪ S‬دارای کمترین مقدار ‪ f‬در لیست باز بوده و برای گسترش انتخاب میشود‬

‫بین ‪ Z ،T‬بهترین جایگزین ‪ T‬با ‪ f(T) = 447‬است‬

‫این مقدار بهعنوان حداکثر مقدار ‪ f‬در زیرشاخه ایجادشده برای ادامه جستجو انتخب میشود‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪79‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬ ‫‪RV‬‬

‫‪646‬‬ ‫‪415‬‬ ‫‪671‬‬ ‫‪413‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪80‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬
‫‪415‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬ ‫‪RV‬‬

‫‪646‬‬ ‫‪415‬‬ ‫‪671‬‬ ‫‪413‬‬

‫بین هزینه سایر فرزندان ‪ S‬و مقدار جایگزین خود (‪ )447‬کمینه متعلق به گره ‪ F‬و برابر ‪ 415‬است‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪81‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬
‫‪415‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬ ‫‪RV‬‬ ‫‪413‬‬

‫‪646‬‬ ‫‪415‬‬ ‫‪671‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬

‫‪526‬‬ ‫‪417‬‬ ‫‪553‬‬


‫کمترین مقدار هزینه در بین فرزندان جدید از حد گسترش ‪ 413‬بیشتر است‬
‫پس انتخاب گره بعدی برای گسترش از شاخه دیگر است‬ ‫‪82‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬

‫‪417‬‬
‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬ ‫‪RV‬‬ ‫‪413‬‬

‫‪646‬‬ ‫‪415‬‬ ‫‪671‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬

‫‪526‬‬ ‫‪417‬‬ ‫‪553‬‬


‫کمترین هزینه قابل انتظار گره ‪ RV‬اصالح شده و کمترین مقدار هزینه فرزندان جایگزین آن میشود‬
‫حال میتوانیم زیردرخت اضافه که فعالً مسیر از آن عبور نمیکند را ببندیم‬ ‫‪83‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬

‫‪41‬‬
‫‪7‬‬
‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬ ‫‪RV‬‬
‫‪417‬‬
‫‪646‬‬ ‫‪415‬‬ ‫‪671‬‬

‫‪S‬‬ ‫‪B‬‬
‫‪591‬‬ ‫‪450‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪84‬‬
‫∞‬

‫‪366‬‬ ‫‪A‬‬
‫‪44‬‬
‫‪7‬‬

‫‪S‬‬ ‫‪T‬‬ ‫‪Z‬‬ ‫‪449‬‬


‫‪393‬‬ ‫‪447‬‬
‫‪44‬‬
‫‪7‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬ ‫‪RV‬‬ ‫‪417‬‬

‫‪646‬‬ ‫‪450‬‬ ‫‪671‬‬

‫‪A‬‬ ‫‪F‬‬ ‫‪O‬‬

‫‪526‬‬ ‫‪417‬‬ ‫‪553‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪85‬‬

366 A
44
7

S T Z 449
393 447
44
7

A F O RV 417

646 450 671


44
7
A F O

526 417 553

418 B C RV 605
615
86
‫‪ ‬استفاده الگوریتمهای *‪ IDA‬و ‪ RBFS‬از حجم محدود حافظه‬

‫‪ ‬تولید مجدد گرهها‬

‫‪ ‬ایده الگوریتمهای حافظه محدود‪ :‬استفاده از حافظه تا جای ممکن‬

‫‪ ‬حذف بدترین گره در زمان پرشدن حافظه‬

‫‪ ‬مشابه با ‪ RBFS‬مقدار بهترین تابع هزینه برای گرههای محذوف جایگزین‬

‫هزینه گره والد میشود تا درصورت نیاز گسترش مجدد انجام شود )*‪(SMA‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪87‬‬
‫‪ ‬امکان تعریف توابع شهودی مختلف برای یک مسئله‬
‫‪ ‬تعریف غلبه‪:‬‬
‫چنانچه برای یک مسئله دو تابع ‪ h1‬و ‪ h2‬قابل تعریف باشند و‬ ‫‪‬‬

‫همواره )‪ ،h1(n) < h2(n‬در اینصورت ‪ h2‬بر ‪ h1‬غلبه دارد‬


‫الگوریتم *‪ A‬با ‪ h2‬از حالت با ‪ h1‬کاراتر است‬ ‫‪‬‬

‫تفاوتی در جوابشان وجود ندارد‬ ‫‪‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪88‬‬
‫‪ ‬سادهسازی مسئله )‪(Relaxed problem‬‬

‫‪ ‬استفاده از زیرمسئله )‪(Sub-problem‬‬

‫‪ ‬یادگیری )‪(Learning‬‬

‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪89‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪90‬‬
‫آرمین سلیمی بدر ‪ -‬دانشکده مهندسی و علوم کامپیوتر ‪ -‬دانشگاه شهیدبهشتی‬ ‫‪91‬‬

You might also like