در علوم کامپیوتر و ریاضیات، یک الگوریتم جستجو، الگوریتمی است که یک مسأله را به عنوان ورودی می‌گیرد و بعد از ارزیابی کردن راه‌حل‌های ممکن، یک راه‌حل برای آن مسأله برمی‌گرداند. هنگامی که مسأله‌ای را حل می‌کنیم معمولاً دنبال آن هستیم که بهترین راه‌حل و یا به بیان دیگر به یک حلّ بهینه از بین حل‌های ممکن برای مسأله برسیم.[9] به محدوده‌ای که جواب‌های مسأله قابل قبول می‌باشند به طوری که جواب بهینه هم یکی از زیرمجموعه‌های این محدوده است «فضای جستجو»[1] نامیده می‌شود. هر نقطه از محدودۀ فضای جستجو نشان دهندۀ یکی از روش‌های حلّ مسأله می‌باشد.[5] و یا به بیانی ساده‌تر می‌توان گفت: مجموعۀ راه‌حل‌های ممکن برای یک مسأله را فضای جستجو می‌نامند.

مهمترين عامل در حل هر مسأله، جستجو به دنبال پاسخ‌هاي احتمالي مسئله است. [15]به طور کلّی با دو دسته از الگوریتم‌ها مواجه هستیم؛ بعضی از الگوریتم‌ها که با عنوان الگوریتم‌های ناآگاهانه شناخته می‌شوند الگوریتم‌هایی هستند که از روش‌های ساده‌ای برای جستجوی فضای نمونه استفاده می‌کنند. در حالی که الگوریتم‌های آگاهانه با استفاده روش‌هایی مبتنی بر دانش در بارۀ ساختار فضای جستجو، می‌کوشند تا زمان جستجو را کاهش دهند.

در کتاب «راسل» این الگوریتم‌ها به شکل زیر رده‌بندی شده‌اند:

  • الگوریتم‌های ناآگاهانه
  • الگوریتم‌های آگاهانه

[1] Search Space