روشهای جستجوی هوش مصنوعی
ما به عنوان یک موجود هوشمند، در مسائل روزمره، با استفاده از روشهای جستجو، اقدام به یافتن راه حلی برای مسئله میکنیم. به عنوان مثال، فرض کنید در خانهای به دنبال شی خاصی هستیم و هیچ اطلاعاتی در مورد خانه و محل قرارگیری اشیا در آن نداریم. در چنین مواردی برای یافتن شیء موردنظر، خانه را اتاق به اتاق و در هر اتاق، همهی بخشها را جستجو میکنیم. نتیجهی جستجو تنها در صورتی میتواند به هدف مورد نظر منجر شود، که جواب مسئله در فضایی که آن را جستجو میکنیم موجود باشد.به عنوان یک مثال دیگر، فرض کنید میخواهیم از تبریز به سمت شیراز حرکت کنیم و هدف ما رسیدن به شیراز در کمترین زمان ممکن است. در این حالت، با در دست داشتن نقشهی راه های کشور، میتوانیم به راحتی مسیر حرکت خود را مشخص کنیم. به طور یقین هنگام جستحو بر روی نقشه، از جستجوی مسیر حرکت تبریز-مشهد-شیراز صرفنظر میکنیم. نکتهای که در اینجا مهم میشود این است که به طور قطع، ما به جستجوی راه حل در مسیر تبریز-مشهد-شیراز نمی پردازیم.مهمترین تفاوت دو مثال ذکر شده ناآگاهانه بودن جستجو در مثال اول و آگاهانه بودن آن در مثال دوم میباشد. بدین معنی که در مثال اول، ما از ابتدا کل فضای جستجو را برای یافتن جواب مسئله جستجو میکنیم و در واقع برای حرکت سریعتر در فضای جستجو (حرکت بین اتاقها و بخشهای مختلف هر اتاق)، از آگاهی خاصی بهرهمند نیستیم. در نقطهی مقابل، در مثال دوم، برای حرکت در فضای جستجو به منظور یافتن کوتاهترین مسیر از تبریزبه شیراز، از روش خاصی برای انتخاب شهر بعدی استفاده میکنیم. به عبارت دیگر، در مثال دوم علاوه بر اینکه مسیری از مبدا به مقصد پیدا میکنیم، کوتاهی مسیر نیز برایمان از اهمیت ویژهای برخوردار است. در واقع، عملی که برای سنجش کوتاهی مسیر انجام میدهیم، موجب آگاهانه بودن جستجوی ما در فضای جستجو میشود. در مثال دوم، از تابعی استفاده میکنیم که فاصلهی شهر انتخابی تا مقصد را برایمان تخمین میزند، که به آن تابع مکاشفهای[1]خواهیم گفت.
حال ممکن است این تصور به وجود آید که جستجوی آگاهانه بهتر از جستجوی ناآگاهانه میباشد. اما چنین تصوری را نمیتوان قطعا درست تلقی کرد چراکه در صورت ناآگاهانه بودن ماهیت مسئله، چارهای جز جستجوی ناآگاهانه نخواهیم داشت. همچنین، سریعتر بودن جستجوی آگاهانه نسبت به جستجوی ناآگاهانه نیز بستگی به شرایط مسئله خواهد داشت و موارد بسیار زیادی میتوان یافت که در آن جستجوی ناآگاهانه سریعتر از جستجوی آگاهانه ما را به جواب مسئله میرساند.
مسائلی وجود دارند که فضای جستجوی آنها به اندازهای بزرگ میباشد که استفاده از روشهای جستجوی ناآگاهانه و اکتشافی را برایمان غیرممکن میسازد. در چنین مواردی، از روشهای فرامکاشفهای[2] استفاده خواهیم کرد.
در حالت کلی، روش های جستجو را می توان به سه دستهی زیر تقسیم کرد:
ناآگاهانه
مکاشفهای
الگوریتم ژنتیک، الگوریتم های ژنتیک، الگوریتم بهینه سازی اجتماع مورچگان، الگوریتم بهینه سازی کولونی مورچگان، الگوریتم بهینه سازی هجوم ذرات، الگوریتم بهینه سازی اجتماع ذرات، الگوریتم تبرید تدریجی، الگوریتم شبیه سازی تبرید فلزات، الگوریتم بهینه سازی زنبور عسل، بهینه سازی، پیچیدگی محاسباتی، هوش مصنوعی، جستجوی ناآگاهانه، جستجوی عمومی، جستجوی عمقی، جستجوی سطحی، جستجوی مکاشفه ای، جستجوی حریصانه، الگوریتم تپه نوردی، الگوریتم جستجوی تابو، جستجوی جامع، بهینه سازی تحلیلی، روش غیرمرکب سرازیری نلدر مید، ادغام، جهش، نسل، همگرایی، الگوریتم ژنتیک پیوسته، الگوریتم ژنتیک گسسته، بهینه سازی چندمنظوره، بهینه سازی پارتو، ژنتیک مرکب، مسائل جایگشت، غالب و مغلوب، نیچ، متاژنتیک، نژادمانه، رخ مانه، ژنتیک موازی، مسئله فروشنده دوره گرد، طراحی خط سیر روبات، طراحی حرکت رادارگریز، ساخت مدل های معکوس دینامیکی خطی و غیر خطی، مسائل زمان بندی، بهنیه سازی شبکه های عصبی مصنوعی، حل معادلات دیفرانسیل جزئی غیرخطی مرتبه بالا، تابع شایستگی، تابع آزمون، متلب، فرترن، ++C، C