Кіріспе
Іздеу мәселесін шешетін кез келген алгоритм. Компьютер ғылымында іздеу алгоритмі – іздеу мәселесін шешуге арналған алгоритм. Іздеу алгоритмдері дискретті немесе үздіксіз мәндермен белгілі бір деректер құрылымында сақталған немесе проблемалық доменнің іздеу кеңістігінде есептелген ақпаратты алу үшін жұмыс істейді. Іздеу жүйелері іздеу алгоритмдерін қолданғанымен, олар алгоритмикаға емес, ақпаратты іздеу саласына жатады. Қолданылатын тиісті іздеу алгоритмі көбінесе ізделетін деректер құрылымына байланысты болады және дерек туралы алдыңғы білімді де қамтуы мүмкін. Іздеу алгоритмдерін іздеу ағаштары, хэш кестелері және деректер қоры индекстері сияқты арнайы құрылған деректер қоры құрылымдары арқылы жылдамдатуға немесе тиімді етуге болады. Іздеу алгоритмдерін іздеу механизміне қарай үш түрге бөлуге болады: сызықтық, екілік және хэштік. Сызықтық іздеу алгоритмдері мақсатты кілтпен байланысты әрбір жазбаны сызықтық түрде тексереді. Екілік немесе жартылай интервалдық іздеулер іздеу құрылымының ортасын қайта-қайта таңдап, іздеу кеңістігін екіге бөледі. Салыстыру арқылы іздеу алгоритмдері сызықтық іздеуге қарағанда жақсырақ, себебі мақсатты жазба табылғанға дейін кілттерді салыстыру арқылы жазбаларды біртіндеп жояды және анықталған тәртіпте деректер құрылымдарына қолданылады. Цифрлік іздеу алгоритмдері деректер құрылымындағы цифрлардың қасиеттерін пайдаланып, сандық кілттерге негізделген жұмыс істейді. Соңында, хэш функциясын қолданып, кілттерді тікелей жазбаларға бейімдейді. Алгоритмдер көбінесе есептеу күрделілігі немесе максималды теориялық орындалу уақыты бойынша бағаланады. Мысалы, екілік іздеу функцияларының максималды күрделілігі O(log n), яғни логарифмдік уақытты құрайды. Қарапайым тілмен айтқанда, іздеу нысанын табу үшін қажетті операциялардың максималды саны іздеу кеңістігінің өлшеміне логарифмдік функция болып табылады.
In computer science, a search algorithm is an algorithm designed to solve a search problem. Search algorithms work to retrieve information stored within particular data structure, or calculated in the search space of a problem domain, with either discrete or continuous values. Although search engines use search algorithms, they belong to the study of information retrieval, not algorithmics. The appropriate search algorithm to use often depends on the data structure being searched, and may also include prior knowledge about the data. Search algorithms can be made faster or more efficient by specially constructed database structures, such as search trees, hash maps, and database indexes. Search algorithms can be classified based on their mechanism of searching into three types of algorithms: linear, binary, and hashing. Linear search algorithms check every record for the one associated with a target key in a linear fashion. Binary, or half interval, searches repeatedly target the center of the search structure and divide the search space in half. Comparison search algorithms improve on linear searching by successively eliminating records based on comparisons of the keys until the target record is found, and can be applied on data structures with a defined order. Digital search algorithms work based on the properties of digits in data structures by using numerical keys. Finally, hashing directly maps keys to records based on a hash function. Algorithms are often evaluated by their computational complexity, or maximum theoretical run time. Binary search functions, for example, have a maximum complexity of O(log n), or logarithmic time. In simple terms, the maximum number of operations needed to find the search target is a logarithmic function of the size of the search space.
Виртуалды іздеу кеңістіктері үшін
Виртуалды кеңістіктерді іздеу алгоритмдері шектеулерді қанағаттандыру мәселесінде қолданылады, онда мақсат – белгілі бір математикалық теңдеулер мен теңсіздіктерді қанағаттандыратын айнымалыларға берілген мәндер жиынтығын табу. Олар сондай-ақ, мақсат осы айнымалылардың белгілі бір функциясын барынша ұлғайту немесе азайту үшін айнымалыны тағайындауды табу кезінде де қолданылады. Бұл мәселелер үшін алгоритмдерге қарапайым толық іздеу (кейде «наив» немесе «мәліметсіз» іздеу деп те аталады) және осы кеңістіктің құрылымы туралы ішінара білімді пайдалануға тырысатын әртүрлі эвристикалар жатады, мысалы, сызықтық релаксация, шектеулерді жасау және шектеулерді тарату. Маңызды кіші топ – жергілікті іздеу әдістері, олар іздеу кеңістігінің элементтерін графтың түйіндері ретінде қарастырады, ал қабырғалары осы жағдайға қолданылатын эвристикалар жиынтығымен анықталады; және кеңістікті қабырғалар бойымен элементтен элементке жылжу арқылы қарастырады, мысалы, ең тік төмен түсу немесе ең жақсы бірінші критерий бойынша немесе стохастикалық іздеу арқылы. Бұл санатқа жалпы метаэвристикалық әдістердің көптеген түрлері кіреді, мысалы, симуляцияланған қайнату, табу іздеу, A командалары және генетикалық бағдарламалау, олар кездейсоқ эвристикаларды белгілі бір жолдармен біріктіреді. Жергілікті іздеудің қарама-қарсысы – жаһандық іздеу әдістері. Бұл әдіс іздеу кеңістігі шектелмеген және іздеу алгоритмін іске асыратын тұлғаға берілген желінің барлық аспектілері қолжетімді болған кезде қолданылады. Бұл топқа әртүрлі ағаш іздеу алгоритмдері де кіреді, олар элементтерді ағаштың түйіндері ретінде қарастырады және сол ағашты белгілі бір тәртіппен шарлайды. Соңғыларының мысалдары – тереңдікке бірінші іздеу және ендікке бірінші іздеу сияқты толық әдістер, сондай-ақ кері іздеу және тармақталу және шектеу іздеу сияқты ағаш кесу әдістері. Жалпы метаэвристикадан айырмашылығы, бұл тек ықтималдық тұрғысынан жұмыс істейді, егер жеткілікті уақыт берілсе, бұл ағаш іздеу әдістерінің көптеген түрлері нақты немесе оңтайлы шешім табуға кепілдік береді. Бұл «толықтық» деп аталады. Тағы бір маңызды кіші топ – шахмат немесе басқосу сияқты көп ойыншылы ойындардың ойын ағашын зерттеуге арналған алгоритмдерден тұрады, олардың түйіндері ағымдағы жағдайдан туындайтын барлық мүмкін ойын жағдайларын қамтиды. Бұл мәселелердің мақсаты – қарсыластардың барлық мүмкін қимылдарын ескере отырып, жеңіске жетудің ең жақсы мүмкіндігін беретін қимылды табу. Адамдар немесе машиналар бірінен соң бірі шешім қабылдауы керек болған кезде, оның нәтижесі толығымен біреудің бақылауында болмайтын жағдайларда, мысалы, роботты басқаруда немесе маркетинг, қаржылық немесе әскери стратегияны жоспарлауда ұқсас мәселелер туындайды. Бұл мәселенің түрі – комбинаторлық іздеу – жасанды интеллект аясында кеңінен зерттелген. Бұл кластағы алгоритмдерге мысал ретінде минимакс алгоритмі, альфа-бета кесу және A* алгоритмі және оның нұсқалары жатады.
Берілген құрылымның кіші құрылымдары үшін
"Комбинациялық іздеу" атауы, әдетте, граф, тізбек, шекті топ және т.б. сияқты берілген дискретті құрылымның нақты субқұрылымын іздейтін алгоритмдер үшін қолданылады. Комбинаторлық оңтайландыру термині, әдетте, мақсат – қандай да бір параметрдің максималды (немесе минималды) мәніне ие субқұрылымды табу болған кезде қолданылады. (Субқұрылым әдетте компьютерде шектеулермен бірге бүтін сандар жиынтығы арқылы бейнеленетіндіктен, бұл мәселелерді шектеулерді қанағаттандырудың немесе дискретті оптимизацияның арнайы жағдайлары ретінде қарастыруға болады; бірақ олар көбінесе ішкі бейнелеу нақты көрсетілмейтін, көбірек абстрактілі жағдайда формулировкаланып, шешіледі.) Маңызды және кеңінен зерттелген кіші топ – граф алгоритмдері, атап айтқанда, графты аралау алгоритмдері, берілген граф ішінде субграфтар, жолдар, циклдар және т.б. сияқты нақты субқұрылымдарды табу үшін. Мысалдарға Дикстра алгоритмі, Крускал алгоритмі, ең жақын көрші алгоритмі және Прим алгоритмі жатады. Бұл санаттың тағы бір маңызды кіші тобы – тізбектердегі үлгілерді іздейтін тізбектерді іздеу алгоритмдері. Екі танымал мысал – Бойер-Мур және Кнут-Моррис-Пратт алгоритмдері, сондай-ақ суффикс ағашы дерек құрылымына негізделген бірнеше алгоритмдер.
Функцияның максимумын іздеу
1953 жылы американдық статистик Джек Кифер Фибоначчи іздеуін құрастырды, оны бірқалыпты функцияның ең жоғарғы мәнін табу үшін пайдалануға болады және компьютер ғылымында көптеген басқа да қолданыс алады.
Кванттық компьютерлер үшін
Кванттық компьютерлер үшін арналған іздеу әдістері де бар, мысалы, Гровер алгоритмі. Бұл алгоритм теориялық тұрғыдан сызықтық немесе қарапайым іздеуден жылдам, тіпті дерек құрылымдарының немесе эвристикалық тәсілдердің көмегінсіз. Кванттық компьютерлердің негізгі идеялары мен қолданылу салалары әлі толыққанды теориялық деңгейде болғанымен, Гровер сияқты алгоритмдерді пайдалана отырып, кванттық есептеу жүйелерінің гипотетикалық физикалық үлгілерін дәл қайталайтын зерттеулер жүргізілді.