Paras ensin -haku on hakualgoritmi , joka tutkii kaaviota laajentamalla tietyn säännön mukaisesti valittuja lupaavimpia solmuja.
Judea Pearl kuvasi parhaan ensimmäisen haun ottamalla solmupisteeksi jonkin "arvioinnin heuristisen funktion arvon, joka yleensä riippua luonteestavoi [1] [2]
Jotkut kirjoittajat ovat käyttäneet paras ensin -hakua erityisesti kuvaamaan hakuja heuristiikalla, joka mittaa läheisyyttä kohdetilaan, joten polut, joilla on paras heuristinen pistemäärä, otetaan huomioon ensin. Tätä hakutyyppiä kutsutaan ahneeksi paras ensin -hauksi . [2]
Nykyisen parhaan ehdokkaan tehokas valinta haun jatkamiseksi voidaan toteuttaa prioriteettijonon avulla .
A* (A-tähti) -hakualgoritmi on esimerkki optimaalisesta paras ensin -hausta. Paras ensin -algoritmia käytetään usein polunhakuun kombinatorisessa haussa.
Tässä versiossa algoritmi ei ole täydellinen , koska sen avulla ei aina ole mahdollista löytää polkua kahden solmun välillä, vaikka yksi olisikin. Esimerkiksi algoritmi "jumiutuu" silmukkaan, jos se osuu umpikujaan - solmuun, jonka lapsi on sen vanhempi. Algoritmi palaa ylätasoonsa, lisää lapsen tynkäsolmun luetteloon OPENja navigoi siihen uudelleen ja niin edelleen.
Seuraava versio laajentaa algoritmia käyttämällä lisäluetteloa CLOSE, joka sisältää kaikki arvioidut solmut, joita ei tarkisteta. Tämä välttää minkä tahansa solmun uudelleenarvioinnin eikä luo äärettömiä silmukoita.
AUKI = [alkutila] SULJE=[] kunnes OPEN on tyhjä toistaa: 1. Poista paras solmu OPENista, kutsutaan sitä N:ksi, lisää se CLOSE-kohtaan. 2. Jos N on kohdetila, jäljitä polku takaisin aloitussolmuun (N:n vanhempien merkintöjen kautta) ja palauta polku. 3. Luo luettelo solmun N jälkeläisistä. 4. Toista jokaiselle lapselle: a. Jos lapsi ei ole SULJE-luettelossa: Arvioi se, lisää se OPEN-kohtaan ja merkitse N sen yläpuolelle. b. Muussa tapauksessa: jos tämä uusi polku on parempi kuin edellinen, muuta merkintä ylätason tiedoksi. suorittaa loppuunTämän pseudokoodin kuvaama algoritmi molemmissa versioissa yksinkertaisesti päättyy, kun polkua ei löydy. Käytännön toteutukset voivat vaatia erityistä käsittelyä tässä tilanteessa.
Ahneen algoritmin käyttö laajentaa vanhempien ensimmäistä lasta. Lasten luomisen jälkeen [3] :
Kaavion hakualgoritmit | ||
---|---|---|
Tietämättömät menetelmät | ||
Tietoon perustuvat menetelmät | ||
Pikanäppäimet | ||
Vähintään ulottuva puu | ||
Muut |