Кіріспе

Іздеу мәселесін шешетін кез келген алгоритм. Компьютер ғылымында іздеу алгоритмі – іздеу мәселесін шешуге арналған алгоритм. Іздеу алгоритмдері дискретті немесе үздіксіз мәндермен белгілі бір деректер құрылымында сақталған немесе проблемалық доменнің іздеу кеңістігінде есептелген ақпаратты алу үшін жұмыс істейді. Іздеу жүйелері іздеу алгоритмдерін қолданғанымен, олар алгоритмикаға емес, ақпаратты іздеу саласына жатады. Қолданылатын тиісті іздеу алгоритмі көбінесе ізделетін деректер құрылымына байланысты болады және дерек туралы алдыңғы білімді де қамтуы мүмкін. Іздеу алгоритмдерін іздеу ағаштары, хэш кестелері және деректер қоры индекстері сияқты арнайы құрылған деректер қоры құрылымдары арқылы жылдамдатуға немесе тиімді етуге болады. Іздеу алгоритмдерін іздеу механизміне қарай үш түрге бөлуге болады: сызықтық, екілік және хэштік. Сызықтық іздеу алгоритмдері мақсатты кілтпен байланысты әрбір жазбаны сызықтық түрде тексереді. Екілік немесе жартылай интервалдық іздеулер іздеу құрылымының ортасын қайта-қайта таңдап, іздеу кеңістігін екіге бөледі. Салыстыру арқылы іздеу алгоритмдері сызықтық іздеуге қарағанда жақсырақ, себебі мақсатты жазба табылғанға дейін кілттерді салыстыру арқылы жазбаларды біртіндеп жояды және анықталған тәртіпте деректер құрылымдарына қолданылады. Цифрлік іздеу алгоритмдері деректер құрылымындағы цифрлардың қасиеттерін пайдаланып, сандық кілттерге негізделген жұмыс істейді. Соңында, хэш функциясын қолданып, кілттерді тікелей жазбаларға бейімдейді. Алгоритмдер көбінесе есептеу күрделілігі немесе максималды теориялық орындалу уақыты бойынша бағаланады. Мысалы, екілік іздеу функцияларының максималды күрделілігі O(log n), яғни логарифмдік уақытты құрайды. Қарапайым тілмен айтқанда, іздеу нысанын табу үшін қажетті операциялардың максималды саны іздеу кеңістігінің өлшеміне логарифмдік функция болып табылады.

Виртуалды іздеу кеңістіктері үшін

Виртуалды кеңістіктерді іздеу алгоритмдері шектеулерді қанағаттандыру мәселесінде қолданылады, онда мақсат – белгілі бір математикалық теңдеулер мен теңсіздіктерді қанағаттандыратын айнымалыларға берілген мәндер жиынтығын табу. Олар сондай-ақ, мақсат осы айнымалылардың белгілі бір функциясын барынша ұлғайту немесе азайту үшін айнымалыны тағайындауды табу кезінде де қолданылады. Бұл мәселелер үшін алгоритмдерге қарапайым толық іздеу (кейде «наив» немесе «мәліметсіз» іздеу деп те аталады) және осы кеңістіктің құрылымы туралы ішінара білімді пайдалануға тырысатын әртүрлі эвристикалар жатады, мысалы, сызықтық релаксация, шектеулерді жасау және шектеулерді тарату. Маңызды кіші топ – жергілікті іздеу әдістері, олар іздеу кеңістігінің элементтерін графтың түйіндері ретінде қарастырады, ал қабырғалары осы жағдайға қолданылатын эвристикалар жиынтығымен анықталады; және кеңістікті қабырғалар бойымен элементтен элементке жылжу арқылы қарастырады, мысалы, ең тік төмен түсу немесе ең жақсы бірінші критерий бойынша немесе стохастикалық іздеу арқылы. Бұл санатқа жалпы метаэвристикалық әдістердің көптеген түрлері кіреді, мысалы, симуляцияланған қайнату, табу іздеу, A командалары және генетикалық бағдарламалау, олар кездейсоқ эвристикаларды белгілі бір жолдармен біріктіреді. Жергілікті іздеудің қарама-қарсысы – жаһандық іздеу әдістері. Бұл әдіс іздеу кеңістігі шектелмеген және іздеу алгоритмін іске асыратын тұлғаға берілген желінің барлық аспектілері қолжетімді болған кезде қолданылады. Бұл топқа әртүрлі ағаш іздеу алгоритмдері де кіреді, олар элементтерді ағаштың түйіндері ретінде қарастырады және сол ағашты белгілі бір тәртіппен шарлайды. Соңғыларының мысалдары – тереңдікке бірінші іздеу және ендікке бірінші іздеу сияқты толық әдістер, сондай-ақ кері іздеу және тармақталу және шектеу іздеу сияқты ағаш кесу әдістері. Жалпы метаэвристикадан айырмашылығы, бұл тек ықтималдық тұрғысынан жұмыс істейді, егер жеткілікті уақыт берілсе, бұл ағаш іздеу әдістерінің көптеген түрлері нақты немесе оңтайлы шешім табуға кепілдік береді. Бұл «толықтық» деп аталады. Тағы бір маңызды кіші топ – шахмат немесе басқосу сияқты көп ойыншылы ойындардың ойын ағашын зерттеуге арналған алгоритмдерден тұрады, олардың түйіндері ағымдағы жағдайдан туындайтын барлық мүмкін ойын жағдайларын қамтиды. Бұл мәселелердің мақсаты – қарсыластардың барлық мүмкін қимылдарын ескере отырып, жеңіске жетудің ең жақсы мүмкіндігін беретін қимылды табу. Адамдар немесе машиналар бірінен соң бірі шешім қабылдауы керек болған кезде, оның нәтижесі толығымен біреудің бақылауында болмайтын жағдайларда, мысалы, роботты басқаруда немесе маркетинг, қаржылық немесе әскери стратегияны жоспарлауда ұқсас мәселелер туындайды. Бұл мәселенің түрі – комбинаторлық іздеу – жасанды интеллект аясында кеңінен зерттелген. Бұл кластағы алгоритмдерге мысал ретінде минимакс алгоритмі, альфа-бета кесу және A* алгоритмі және оның нұсқалары жатады.

Берілген құрылымның кіші құрылымдары үшін

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

Функцияның максимумын іздеу

1953 жылы американдық статистик Джек Кифер Фибоначчи іздеуін құрастырды, оны бірқалыпты функцияның ең жоғарғы мәнін табу үшін пайдалануға болады және компьютер ғылымында көптеген басқа да қолданыс алады.

Кванттық компьютерлер үшін

Кванттық компьютерлер үшін арналған іздеу әдістері де бар, мысалы, Гровер алгоритмі. Бұл алгоритм теориялық тұрғыдан сызықтық немесе қарапайым іздеуден жылдам, тіпті дерек құрылымдарының немесе эвристикалық тәсілдердің көмегінсіз. Кванттық компьютерлердің негізгі идеялары мен қолданылу салалары әлі толыққанды теориялық деңгейде болғанымен, Гровер сияқты алгоритмдерді пайдалана отырып, кванттық есептеу жүйелерінің гипотетикалық физикалық үлгілерін дәл қайталайтын зерттеулер жүргізілді.