În informatică , Beam Search este un algoritm de căutare euristică care explorează un grafic prin extinderea nodurilor promițătoare într-un set limitat. Căutarea fasciculului este o optimizare a căutării cu cea mai bună potrivire care reduce cerințele de memorie. Prima căutare a celei mai bune potriviri este o căutare grafică care ordonează toate soluțiile (stările) particulare în funcție de unele euristice. Dar în căutarea cu raze, doar un număr predeterminat de cele mai bune soluții parțiale sunt stocate ca candidați [1] . Astfel, este un algoritm lacom .
Termenul de căutare a fasciculului a fost introdus de Raj Reddy de la Universitatea Carnegie Mellon în 1977 [2] .
Căutarea fasciculului folosește căutarea pe lățime pentru a-și construi arborele de căutare . La fiecare nivel al arborelui generează toți succesorii de stare la nivelul curent, sortându-i în ordine crescătoare a costului euristic [3] . Cu toate acestea, stochează doar un număr predeterminat de cele mai bune stări la fiecare nivel (numit lățimea fasciculului). Mai mult, doar aceste stări sunt desfășurate. Cu cât lățimea fasciculului este mai mare, cu atât sunt eliminate mai puține stări. Cu o lățime infinită a fasciculului, nicio stare nu este anulată, iar căutarea fasciculului este identică cu căutarea pe lățimea întâi. Lățimea fasciculului limitează cantitatea de memorie necesară pentru a efectua o căutare. Deoarece starea țintă poate fi redusă, căutarea razelor sacrifică completitatea (garanția că algoritmul se va termina cu o soluție dacă există una). Căutarea fasciculului nu este optimă (adică nu există nicio garanție că va fi găsită cea mai bună soluție) [4] .
Căutarea fasciculului este cel mai adesea folosită pentru a oferi manevrabilitate în sisteme mari cu memorie insuficientă pentru a stoca întregul arbore de căutare [5] . De exemplu, a fost folosit în multe sisteme de traducere automată [6] . (În stadiul tehnicii, metodele bazate pe traducerea automată neuronală sunt acum utilizate în principal .) Pentru a alege cea mai bună traducere, fiecare parte este procesată și apar multe moduri diferite de traducere a cuvintelor. Cele mai bune traduceri conform structurii propoziției sunt păstrate, iar restul sunt aruncate. Apoi, traducătorul evaluează traducerile în funcție de un criteriu dat, selectând traducerea care se potrivește cel mai bine obiectivelor. Prima utilizare a căutării fasciculului a fost în Harpy's Speech Recognition System, CMU 1976 [7] .
Căutarea fasciculului a fost realizată în întregime prin combinarea acesteia cu căutarea depth-first , rezultând în căutarea în stiva de raze [8] , căutarea în adâncime a razei în primul rând [5] și cu căutarea cu disparitate limitată [9] , ceea ce duce la căutarea fasciculului folosind backtracking limitat inconsecvențe [5] (BULB [10] ). Algoritmii de căutare care rezultă sunt algoritmi de orice moment care găsesc rapid soluții bune, dar probabil suboptime, cum ar fi căutarea cu raze, apoi merg înapoi și continuă să caute soluții mai bune până când acestea converg către o soluție optimă.
În contextul căutării locale, numim căutare locală beam un anumit algoritm care începe prin selectarea stărilor generate aleatoriu și apoi, pentru fiecare, ia în considerare întotdeauna la nivelul arborelui de căutare stări noi dintre toți succesorii posibili ai stărilor curente până când atinge obiectivul . 11] [12] .
Deoarece căutarea fasciculului local se termină adesea la maxime locale, soluția obișnuită este de a selecta aleatoriu stările următoare cu o probabilitate în funcție de estimarea euristică a stărilor. Acest tip de căutare se numește căutare stocastică în fascicul [13] .
Alte opțiuni sunt căutarea fasciculului flexibil și căutarea fasciculului reconstructiv [12] .
Algoritmi de căutare grafică | ||
---|---|---|
Metode neinformate | ||
Metode informate | ||
Comenzi rapide | ||
Arborele de întindere minim | ||
Alte |