Najlepsze pierwsze wyszukiwanie
Najlepsze pierwsze wyszukiwanie to klasa algorytmów wyszukiwania , które eksplorują graf , rozszerzając najbardziej obiecujący węzeł wybrany zgodnie z określoną regułą.
Judea Pearl opisał najlepsze pierwsze wyszukiwanie jako oszacowanie obietnicy węzła n za pomocą „heurystycznej funkcji oceny która ogólnie może zależeć od opisu n , opisu węzła fa celu, informacje zebrane podczas wyszukiwania do tego momentu, a co najważniejsze, na wszelkiej dodatkowej wiedzy na temat dziedziny problemu”.
Niektórzy autorzy używali „najlepszego pierwszego wyszukiwania”, aby odnieść się konkretnie do wyszukiwania za pomocą heurystyki, która próbuje przewidzieć, jak blisko jest koniec ścieżki do rozwiązania (lub celu), tak aby ścieżki, które są oceniane jako bliższe rozwiązanie (lub cel) są rozszerzane jako pierwsze. Ten specyficzny typ wyszukiwania nazywany jest zachłannym wyszukiwaniem najpierw najlepiej lub czystym wyszukiwaniem heurystycznym .
Efektywny wybór obecnie najlepszego kandydata do rozszerzenia jest zwykle realizowany przy użyciu kolejki priorytetowej .
Algorytm wyszukiwania A* jest przykładem algorytmu wyszukiwania najlepiej najpierw, podobnie jak algorytm B* . Algorytmy „najpierw najlepszy” są często używane do znajdowania ścieżki w wyszukiwaniu kombinatorycznym . Ani A*, ani B* nie są zachłannym wyszukiwaniem typu „najlepiej najpierw”, ponieważ uwzględniają odległość od początku oprócz szacowanej odległości do celu.
Chciwy BFS
Korzystając z algorytmu zachłannego , rozwiń pierwszego następcę rodzica. Po wygenerowaniu następcy:
- Jeśli heurystyka następnika jest lepsza niż jego rodzica, następnik jest ustawiany na początku kolejki (a rodzic jest ponownie wstawiany bezpośrednio za nim), a pętla uruchamia się ponownie.
- W przeciwnym razie następnik jest wstawiany do kolejki (w miejscu określonym przez jego wartość heurystyczną). Procedura oceni pozostałych spadkobierców (jeśli istnieją) rodzica.
Poniżej znajduje się pseudokodowy przykład tego algorytmu, gdzie kolejka reprezentuje kolejkę priorytetową, która porządkuje węzły na podstawie ich heurystycznych odległości od celu. Ta implementacja śledzi odwiedzane węzły i dlatego może być używana do grafów nieskierowanych . Można go zmodyfikować, aby pobrać ścieżkę.
procedura GBS(start, cel) to : zaznacz początek jako odwiedzony dodaj początek do kolejki dopóki kolejka nie jest pusta do : bieżący_węzeł ← wierzchołek kolejki z minimalną odległością do celu usuń bieżący_węzeł z kolejki dla każdego sąsiada n bieżącego_węzła wykonaj : jeśli n nie jest odwiedzane then : jeśli n jest celem: zwróć n else : zaznacz n jako odwiedzone dodaj n do kolejki powrót błąd
Zobacz też
- ^ Pearl, J. Heuristics: inteligentne strategie wyszukiwania do rozwiązywania problemów komputerowych . Addison-Wesley, 1984. s. 48.
- ^ ab J Russell, Stuart .; Norvig, Peter (2003), Sztuczna inteligencja: nowoczesne podejście (wyd. 2), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2 . s. 94 i 95 (przypis 3).
- ^ Korf, Richard E. (1999). „Algorytmy wyszukiwania sztucznej inteligencji”. W Atallah, Michaił J. (red.). Podręcznik algorytmów i teorii obliczeń . Prasa CRC. ISBN 0849326494 .
- ^ https://www.cs.cmu.edu/afs/cs/project/jair/pub/volume28/coles07a-html/node11.html#modifiedbestfs Chciwe najlepsze pierwsze wyszukiwanie, gdy EHC zawiedzie, Carnegie Mellon