Informované vyhledávání (též heuristické vyhledávání , angl. informované vyhledávání , heuristické vyhledávání ) je strategie pro hledání řešení ve stavovém prostoru , která využívá znalosti související s konkrétním úkolem. Informované metody obecně poskytují efektivnější vyhledávání než neinformované metody .
Informace o konkrétní úloze jsou formulovány jako heuristická funkce . Heuristická funkce v každém kroku vyhledávání vyhodnocuje alternativy na základě doplňujících informací, aby se rozhodla, kterým směrem pokračovat v hledání [1] .
V kontextu prohledávání stavového prostoru je heuristická funkce h ( n ) definována na uzlech iteračního stromu takto:
h ( n ) = odhad nákladů na nejlevnější cestu z uzlu n do cílového uzlu.Pokud n je cílový uzel, pak h ( n ) = 0.
Uzel , který má být nasazen, je vybrán na základě vyhodnocovací funkce
f ( n ) = odhad nákladů na cestu nejlevnějšího řešení procházející uzlem n , f ( n ) = g ( n ) + h ( n ),kde funkce g ( n ) určuje cenu již projeté cesty z počátečního uzlu do uzlu n .
Pokud heuristická funkce h ( n ) nikdy nepřeceňuje skutečné minimální náklady na dosažení cíle (tedy jde o nižší odhad skutečných nákladů), pak se taková funkce nazývá přípustná .
Pokud heuristická funkce h ( n ) splňuje podmínku
h ( a ) ≤ náklady ( a , b ) + h ( b ) ,kde b je potomkem a , pak se taková funkce nazývá postupná ( anglicky konzistentní ).
Jestliže f ( n ) = g ( n ) + h ( n ) je vyhodnocovací funkce, h ( n ) je následnická funkce, pak je funkce f ( n ) monotónně neklesající podél jakékoli studované cesty. Postupné funkce se proto také nazývají monotónní ( angl. monotónní ).
Jakákoli následnická funkce je přípustná, ale ne každá přípustná funkce je následnicí.
Jestliže h 1 ( n ), h 2 ( n ) jsou platné heuristické funkce a pro jakýkoli uzel n platí nerovnost h 1 ( n ) ≥ h 2 ( n ), pak h 1 je informovanější heuristika nebo dominuje h 2 .
Pokud má problém přípustné heuristiky h 1 a h 2 , pak je heuristika h ( n ) = max ( h 1 , h 2 ) přípustná a dominuje nad každou z původních heuristik [1] [2] .
Při porovnávání přípustných heuristik záleží na stupni informovanosti a na prostorové a časové složitosti výpočtu každé z heuristiky. Informovanější heuristika může snížit počet nasazených uzlů, i když náklady na to může být čas, který zabere výpočet heuristiky pro každý uzel.
Faktor efektivního větvení je průměrný počet následníků uzlů ve výčtovém stromě po aplikaci heuristických metod ořezávání [1] [2] . Podle efektivního faktoru větvení lze posuzovat kvalitu použité heuristické funkce.
Ideální heuristická funkce (jako je vyhledávací tabulka ) vždy vrací přesné hodnoty pro délku nejkratšího řešení, takže výčtový strom obsahuje pouze optimální řešení. Efektivní faktor větvení ideální heuristické funkce se blíží 1 [1] .
Jako modely pro testování vyhledávacích algoritmů a heuristických funkcí se často používají permutační hádanky - Fifteen 3 × 3 [3] [4] , 4 × 4 [5] [6] [7] , 5 × 5 [8] [9] [ 10 ] , 6×6 [11] , Rubikova kostka [9] [12] , Hanojská věž se čtyřmi tyčemi [11] [13] .
V hádance "Patnáct" lze použít heuristiku h m založenou na vzdálenosti Manhattanu . Přesněji řečeno, pro každou destičku se vypočítá vzdálenost na Manhattanu mezi její aktuální a počáteční pozicí; získané hodnoty jsou shrnuty.
Lze ukázat, že tato heuristika je přípustná a postupná: její hodnota se nemůže během jednoho tahu změnit o více než ±1.
Heuristická funkce h m použitá k řešení hádanky "Patnáctka" je nižší odhad délky optimálního řešení. Navíc h m ( n ) je přesná délka optimálního řešení zjednodušené verze hádanky, ve které lze dlaždice posouvat na své pozice. V původní hádance je omezení "v jedné buňce by neměly být dvě nebo více dlaždic", které ve zjednodušené verzi není. Problém s menším počtem omezení možných akcí se nazývá uvolněný problém ; cena řešení uvolněného problému je platnou heuristikou pro původní problém [1] , protože jakékoli řešení původního problému je také řešením uvolněného problému.
Dílčí úkolPřípustná heuristika může být založena na nákladech na řešení dílčího problému původního problému . Jakékoli řešení hlavního problému je současně řešením každého jeho dílčího úkolu [1] .
Dílčím úkolem problému řešení hádanky "Patnáctka" může být úkol přesunout na svá místa dlaždice 1, 2, 3 a 4. Náklady na vyřešení tohoto dílčího problému jsou platnou heuristiky pro původní problém.
Databáze vzorů [ 1] jsou typem platné heuristiky založené na myšlence ukládat přesnou hodnotu nákladů na řešení pro každou možnou instanci dílčího problému [1] [6] [12] .
Příklad šablony pro hádanku "Patnáctka" je na obrázku vpravo: definice dílčího úkolu zahrnuje pozice sedmi žetonů umístěných v prvním sloupci a v prvním řádku. Počet konfigurací pro tuto šablonu je . Pro každou z konfigurací obsahuje databáze minimální počet pohybů potřebných k převedení této konfigurace do cílové konfigurace dílčího úkolu zobrazeného na obrázku. Databáze je sestavena pomocí metody obráceného vyhledávání do šířky [2] [6] .
Hledání typu Best -first je přístup, ve kterém se uzel k nasazení vybírá na základě vyhodnocovací funkce f ( n ) . K nasazení je vybrán uzel s nejnižším skóre.
Vyhledávání A* je nejznámějším typem vyhledávání první nejlepší shody. Používá odhad f ( n ) nákladů na cestu nejlevnějšího řešení přes uzel n :
f ( n ) = g ( n ) + h ( n ), kde g ( n ) je cena cesty od počátečního uzlu k uzlu n , h ( n ) je odhad nákladů na cestu od uzlu n k cíli.Pokud h ( n ) nikdy nepřeceňuje náklady na dosažení cíle (tedy je cenově dostupné), pak je hledání A* optimální.
Algoritmus A* s iterativním prohlubováním A* ( IDA* ) je aplikací myšlenky iterativního prohlubování v kontextu heuristického vyhledávání.
Neinformovaný iterativní prohlubovací algoritmus zastaví expanzi, když hloubka hledání d překročí aktuální hloubkový limit l . Informovaný algoritmus IDA* zastaví nasazení, když odhad f ( n ) nákladů na cestu přes aktuální uzel n překročí limit nákladů na aktuální cestu .
Algoritmus IDA* se vyznačuje minimální pamětí ve srovnání s A* a relativně malým (v případě úspěšné volby heuristiky) počtem nasazených uzlů ve srovnání s IDDFS.
Pseudokód uzel aktuální uzel g náklady na spuštění řešení kořen..uzel f odhad minimálních nákladů cesty prostřednictvím uzlu h ( uzel ) heuristický odhad nákladů pro zbytek cesty uzel.. náklady cíle ( uzel , succ ) funkce nákladů na cestu is_goal ( uzel ) cíl kontrola následníků funkce ( node ) funkce nasazení uzlu procedura ida_star ( root , cena (), is_goal (), h ()) bound := h ( root ) loop t := search ( root , 0, bound ) if t = FOUND pak return FOUND if t = ∞ then return NOT_FOUND bound := t end loop end procedura funkce hledání ( uzel , g , vázaná ) f := g + h ( uzel ) pokud f > vázaná tak vrať f if je_cíl ( uzel ) pak vrať FOUND min := ∞ pro succ v následnících ( uzel ) do t := hledat ( succ , g + cena ( node , succ ), bound ) if t = FOUND pak return FOUND if t < min then min := t end for return min end funkce
SMA *
Algoritmy pro vyhledávání grafů | ||
---|---|---|
Neinformované metody | ||
Informované metody | ||
Zkratky | ||
Minimální kostra | ||
jiný |