Кіріспе

Компьютерлік ғылым мен жасанды интеллектте комбинаторлық іздеу – жалпы алғанда қиын деп саналатын проблемалардың мысалдары үшін алгоритмдерді іздеуді зерттейді, осы мысалдардың әдетте үлкен шешім кеңістігін тиімді зерттеу арқылы. Комбинаторлық іздеу алгоритмдері іздеу кеңістігінің нақты көлемін азайту арқылы немесе эвристика қолдану арқылы осы тиімділікке қол жеткізеді. Кейбір алгоритмдер оңтайлы шешімді табуға кепілдік береді, ал басқалары күй кеңістігінің зерттелген бөлігінде табылған ең жақсы шешімді ғана қайтарады. Классикалық комбинаторлық іздеу мәселелеріне сегіз патшайымның жұмбағын шешу немесе үлкен ойын ағашы бар ойындардағы, мысалы, реверси немесе шахматтағы қимылдарды бағалау кіреді. Есептеу күрделілігі теориясын зерттеу комбинаторлық іздеуді дамытуға көмектеседі. Комбинаторлық іздеу алгоритмдері көбінесе NP-қиын проблемалармен айналысады. Мұндай проблемалардың жалпы жағдайда тиімді шешілуі мүмкін емес деп есептеледі. Дегенмен, күрделілік теориясының әртүрлі жуықтамалары осы проблемалардың кейбір мысалдарының (мысалы, "кішкентай" мысалдардың) тиімді шешілуі мүмкін екенін ұсынады. Бұл шындығында солай, және мұндай мысалдардың маңызды практикалық салдары бар.

Көруші

Көру алды – комбинаторлық іздеудің маңызды құралы, ол проблеманы көрсететін графтың қаншалықты терең зерттелетінін шамамен анықтайды. Көру алдының нақты шегіне қажеттілік, компьютерлік шахмат және компьютерлік Го сияқты көптеген қолданыстардағы үлкен проблемалық графтардан туындайды. Мұндай графтарды қарапайым ендік бойынша іздеу (breadth-first search) кез келген заманауи компьютердің жадын тез толықтырып жіберуі мүмкін. Көру алды шегін белгілеу арқылы алгоритмнің жұмыс уақытын бақылауға болады; көру алды шегі артқан сайын оның уақыты экспоненциалды түрде өседі. Альфа-бета қию сияқты жетілдірілген іздеу техникалары іздеу ағашының толық тармақтарын қарастырудан шығаруға мүмкіндік береді. Бұл техникалар қолданылғанда, көру алды нақты сан ретінде емес, ізделген ең терең деңгей немесе орташа мән ретінде қарастырылады.