Алгоритм пошуку — алгоритм, який вирішує , тобто, знаходить інформацію, яка зберігається в певній структурі даних. Структури даних можуть бути реалізовані за допомогою зв'язаних списків, масивів, дерев пошуку, хеш-таблиць чи інших методів зберігання інформації. Алгоритм пошуку на пряму залежить від структури даних, для якої він реалізований. Дуже часто алгоритм пошуку налічує особливі команди які задають структуру даних, наприклад SQL SELECT.[2]
Опис
Алгоритми пошуку класифікуються на основі їх механізму пошуку. Лінійний пошук працює достатньо повільно, відносно бінарного пошуку, але на практиці часто зустрічається. Алгоритм лінійного пошуку порівнює кожний елемент в структурі даних зі значенням котре потрібно знайти. Існує також бінарний пошук, або половинно-інтервальний пошук, однак він працює лише з відсортованими елементами, один з найшвидших алгоритмів, який повторно порівнює пошуковий елемент з центральним елементом заданої структури, якщо знайшов то кінець, якщо ні, то порівнює елементи та продовжує пошук в лівій чи правій частині структури даних поки не знайде потрібний. Реалізація алгоритму пошуку для хеш-таблиці — складне завдання, бо в такій структурі даних кожному елементу відповідає певний ключ (key), та данні відсортовані по цим ключам. Потрібно досить гарно реалізувати хеш-функцію для пошуку елементу по ключу, бо алгоритм пошуку буде шукати спочатку ключ, а потім отримуватиме значення по ключу.
Алгоритми пошуку оцінюються на основі їх складності чи максимального часу виконання. Бінарний пошук має максимальну складність , або логарифмічний час виконання. Це означає, що максимальна кількість операцій, необхідних для пошуку , де — кількість елементів.
Реалізація бінарного пошуку, псевдокод:
BinarySearch(A[0..N-1], value, low, high) { if (high < low) return -1; // не знайдено mid = (low + high) / 2; if (A[mid] > value) return BinarySearch(A, value, low, mid-1); рекурсивно обходимо праву частину масива else if (A[mid] < value) return BinarySearch(A, value, mid+1, high); рекурсивно обходимо ліву частину масива else return mid; // знайдено }
Класифікація
Віртуально — просторий пошук
Алгоритми пошуку віртуальних просторів використовуються в задачах, де мета полягає в тому, щоб знайти набір значень певних змінних, які будуть задовольняти конкретні математичні рівняння чи нерівності. Вони також використовуються, коли треба знайти призначення змінної, яка буде максимізувати або мінімізувати деяку функцію цих змінних. Алгоритми включають в себе основний пошук «грубою силою» («наївний» пошук), а також різні евристики, які намагаються використовувати часткове знання структур простору, таких як лінійна релаксація, обмежені генерації чи обмежені поширення.
Важливим підкласом є локальний пошуковий метод, який розглядає елементи простору пошуку як вершини графу з ребрами, визначені за допомогою набору евристик, сканує простір шляхом переходу від одного пункту до іншого. Ця категорія включає в себе велику різноманітність загальних метаевристичних методів, таких як алгоритм імітації відпалу, tabu пошук, A-teams, які поєднують в собі довільні евристики певним чином.
Цей клас також включає в себе різні алгоритми пошуку дерева, що задає елементи як вершини дерева та обходить дерево в особливому порядку. Такий алгоритм включає в себе вичерпні методи, такі як пошук у глибину, пошук у ширину, а також різні евристичні методи, засновані на деревах пошуку. Дерева пошуку гарантовано знайде точне чи оптимальне рішення за невеликий проміжок часу.
Інший важливий підклас це алгоритми для вивчення дерева ігор, таких як шахи або нарди, вузли дерева задають усіх можливі ситуації гри, які можуть виникнути. Мета такого алгоритму є знаходження ходу, котрий забезпечить перемогу, беручи до уваги всі можливі ходи під час гри. Аналогічні проблеми виникають, коли людина або машина повинна виконати послідовне рішення, наприклад, в роботі керівництва, фінансах або плануванні військової стратегії. Такий рід проблем як комбінаторний пошук широко вивчається в штучному інтелекті. Приклади алгоритмів для цього класу:
- Мінімакс алгоритм
- Відсічення альфа-бета
- Informational search
- Алгоритм пошуку A*
Підструктур даної структури
Назва «комбінаторний пошук», як правило, використовуються для алгоритмів, які реалізовані для конкретної підструктури заданої дискретної структури. Термін комбінаторна оптимізація, як правило, використовується, коли мета полягає в тому, щоб знайти підструктуру зі значенням максимального (мінімального) параметра. (Підструктура представлена в комп'ютері за допомогою набору цілочисельних змінних з обмеженнями. Ці проблеми можна розглядати як окремі випадки дискретної оптимізації, але вони формуються та вирішуються у більш абстрактній формі.)
Важливими підкласами є алгоритми графу, зокрема алгоритми , для знаходження конкретної структури в даному графі, наприклад підграф. Приклади алгоритмів графу:
Пошук максимуму функції
1953 року американський статистик [en] розробив метод пошуку Фібоначчі, який подібно до алгоритму Грувера, з теоретичної точки зору, є швидшим за лінійний пошук або Метод «грубої сили» навіть без використання знання структури даних або інших евристик. Також пошук Фібоначчі можна використовувати для пошуку максимуму унімодальної функції, і він має багато інших застосувань в області комп'ютерної науки.
Див. також
Примітки
- Beame та Fich, 2001, с. 39.
- Knuth, 1998, §6.5 ("Retrieval on Secondary Keys").
- Knuth, 1998, §6.2 («Searching by Comparison of Keys»).
- Knuth, 1998, §6.4, (Hashing).
- Kagan E. and Ben-Gal I. A Group-Testing Algorithm with Online Informational Learning. — IIE Transactions, 46:2, 164-184,, 2014. з джерела 5 листопада 2016. Процитовано 25 квітня 2017.
Посилання
- Алгоритм пошуку [ 25 лютого 2022 у Wayback Machine.] // ВУЕ
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Algoritm poshuku algoritm yakij virishuye tobto znahodit informaciyu yaka zberigayetsya v pevnij strukturi danih Strukturi danih mozhut buti realizovani za dopomogoyu zv yazanih spiskiv masiviv derev poshuku hesh tablic chi inshih metodiv zberigannya informaciyi Algoritm poshuku na pryamu zalezhit vid strukturi danih dlya yakoyi vin realizovanij Duzhe chasto algoritm poshuku nalichuye osoblivi komandi yaki zadayut strukturu danih napriklad SQL SELECT 2 Vizualne uyavlennya hesh tablici struktura danih yaka dozvolyaye shvidko znahoditi informaciyu OpisAlgoritmi poshuku klasifikuyutsya na osnovi yih mehanizmu poshuku Linijnij poshuk pracyuye dostatno povilno vidnosno binarnogo poshuku ale na praktici chasto zustrichayetsya Algoritm linijnogo poshuku porivnyuye kozhnij element v strukturi danih zi znachennyam kotre potribno znajti Isnuye takozh binarnij poshuk abo polovinno intervalnij poshuk odnak vin pracyuye lishe z vidsortovanimi elementami odin z najshvidshih algoritmiv yakij povtorno porivnyuye poshukovij element z centralnim elementom zadanoyi strukturi yaksho znajshov to kinec yaksho ni to porivnyuye elementi ta prodovzhuye poshuk v livij chi pravij chastini strukturi danih poki ne znajde potribnij Realizaciya algoritmu poshuku dlya hesh tablici skladne zavdannya bo v takij strukturi danih kozhnomu elementu vidpovidaye pevnij klyuch key ta danni vidsortovani po cim klyucham Potribno dosit garno realizuvati hesh funkciyu dlya poshuku elementu po klyuchu bo algoritm poshuku bude shukati spochatku klyuch a potim otrimuvatime znachennya po klyuchu Algoritmi poshuku ocinyuyutsya na osnovi yih skladnosti chi maksimalnogo chasu vikonannya Binarnij poshuk maye maksimalnu skladnist O log n displaystyle mathrm O log n abo logarifmichnij chas vikonannya Ce oznachaye sho maksimalna kilkist operacij neobhidnih dlya poshuku C m p max log 2 n displaystyle Cmp max log 2 n de n displaystyle n kilkist elementiv Realizaciya binarnogo poshuku psevdokod BinarySearch A 0 N 1 value low high if high lt low return 1 ne znajdeno mid low high 2 if A mid gt value return BinarySearch A value low mid 1 rekursivno obhodimo pravu chastinu masiva else if A mid lt value return BinarySearch A value mid 1 high rekursivno obhodimo livu chastinu masiva else return mid znajdeno KlasifikaciyaVirtualno prostorij poshuk Algoritmi poshuku virtualnih prostoriv vikoristovuyutsya v zadachah de meta polyagaye v tomu shob znajti nabir znachen pevnih zminnih yaki budut zadovolnyati konkretni matematichni rivnyannya chi nerivnosti Voni takozh vikoristovuyutsya koli treba znajti priznachennya zminnoyi yaka bude maksimizuvati abo minimizuvati deyaku funkciyu cih zminnih Algoritmi vklyuchayut v sebe osnovnij poshuk gruboyu siloyu nayivnij poshuk a takozh rizni evristiki yaki namagayutsya vikoristovuvati chastkove znannya struktur prostoru takih yak linijna relaksaciya obmezheni generaciyi chi obmezheni poshirennya Vazhlivim pidklasom ye lokalnij poshukovij metod yakij rozglyadaye elementi prostoru poshuku yak vershini grafu z rebrami viznacheni za dopomogoyu naboru evristik skanuye prostir shlyahom perehodu vid odnogo punktu do inshogo Cya kategoriya vklyuchaye v sebe veliku riznomanitnist zagalnih metaevristichnih metodiv takih yak algoritm imitaciyi vidpalu tabu poshuk A teams yaki poyednuyut v sobi dovilni evristiki pevnim chinom Cej klas takozh vklyuchaye v sebe rizni algoritmi poshuku dereva sho zadaye elementi yak vershini dereva ta obhodit derevo v osoblivomu poryadku Takij algoritm vklyuchaye v sebe vicherpni metodi taki yak poshuk u glibinu poshuk u shirinu a takozh rizni evristichni metodi zasnovani na derevah poshuku Dereva poshuku garantovano znajde tochne chi optimalne rishennya za nevelikij promizhok chasu Inshij vazhlivij pidklas ce algoritmi dlya vivchennya dereva igor takih yak shahi abo nardi vuzli dereva zadayut usih mozhlivi situaciyi gri yaki mozhut viniknuti Meta takogo algoritmu ye znahodzhennya hodu kotrij zabezpechit peremogu beruchi do uvagi vsi mozhlivi hodi pid chas gri Analogichni problemi vinikayut koli lyudina abo mashina povinna vikonati poslidovne rishennya napriklad v roboti kerivnictva finansah abo planuvanni vijskovoyi strategiyi Takij rid problem yak kombinatornij poshuk shiroko vivchayetsya v shtuchnomu intelekti Prikladi algoritmiv dlya cogo klasu Minimaks algoritm Vidsichennya alfa beta Informational search Algoritm poshuku A Pidstruktur danoyi strukturi Nazva kombinatornij poshuk yak pravilo vikoristovuyutsya dlya algoritmiv yaki realizovani dlya konkretnoyi pidstrukturi zadanoyi diskretnoyi strukturi Termin kombinatorna optimizaciya yak pravilo vikoristovuyetsya koli meta polyagaye v tomu shob znajti pidstrukturu zi znachennyam maksimalnogo minimalnogo parametra Pidstruktura predstavlena v komp yuteri za dopomogoyu naboru cilochiselnih zminnih z obmezhennyami Ci problemi mozhna rozglyadati yak okremi vipadki diskretnoyi optimizaciyi ale voni formuyutsya ta virishuyutsya u bilsh abstraktnij formi Vazhlivimi pidklasami ye algoritmi grafu zokrema algoritmi dlya znahodzhennya konkretnoyi strukturi v danomu grafi napriklad pidgraf Prikladi algoritmiv grafu Algoritm Dejkstri Algoritm Kruskala Algoritm najblizhchogo susida Algoritm Prima Poshuk maksimumu funkciyi 1953 roku amerikanskij statistik en rozrobiv metod poshuku Fibonachchi yakij podibno do algoritmu Gruvera z teoretichnoyi tochki zoru ye shvidshim za linijnij poshuk abo Metod gruboyi sili navit bez vikoristannya znannya strukturi danih abo inshih evristik Takozh poshuk Fibonachchi mozhna vikoristovuvati dlya poshuku maksimumu unimodalnoyi funkciyi i vin maye bagato inshih zastosuvan v oblasti komp yuternoyi nauki Div takozhZvorotnya indukciya en en Poshukova gra Poshukova mashina Rozv yazuvach Poshuk poryadkovoyi statistiki Zadacha pro najkorotshij shlyahPrimitkiBeame ta Fich 2001 s 39 Knuth 1998 6 5 Retrieval on Secondary Keys Knuth 1998 6 2 Searching by Comparison of Keys Knuth 1998 6 4 Hashing Kagan E and Ben Gal I A Group Testing Algorithm with Online Informational Learning IIE Transactions 46 2 164 184 2014 z dzherela 5 listopada 2016 Procitovano 25 kvitnya 2017 PosilannyaAlgoritm poshuku 25 lyutogo 2022 u Wayback Machine VUE