A tájékozott keresés (a heurisztikus keresés is , eng. informed search , heurisztikus keresés ) az állapottérben történő megoldáskeresés stratégiája , amely egy adott feladathoz kapcsolódó tudást használ fel. A tájékozott módszerek általában hatékonyabb keresést tesznek lehetővé, mint a tájékozatlan módszerek .
Az adott feladattal kapcsolatos információk heurisztikus függvényként vannak megfogalmazva . A heurisztikus függvény a keresés minden lépésében további információk alapján kiértékeli az alternatívákat, hogy eldöntse, milyen irányban folytassa a keresést [1] .
Az állapottér kereséssel összefüggésben a h ( n ) heurisztikus függvényt az iterációs fa csomópontjain a következőképpen definiáljuk :
h ( n ) = az n csomóponttól a célcsomópontig vezető legolcsóbb út költségbecslése .Ha n a célcsomópont, akkor h ( n ) = 0.
A telepítendő csomópont kiválasztása az értékelési függvény alapján történik
f ( n ) = az n csomóponton áthaladó legolcsóbb megoldási útvonal költségbecslése , f ( n ) = g ( n ) + h ( n ),ahol a g ( n ) függvény határozza meg a kezdő csomóponttól az n csomópontig már megtett út költségét .
Ha a h ( n ) heurisztikus függvény soha nem becsüli túl a cél elérésének tényleges minimális költségét (vagyis a tényleges költség alacsonyabb becslése), akkor egy ilyen függvényt megengedhetőnek nevezünk .
Ha a h ( n ) heurisztikus függvény kielégíti a feltételt
h ( a ) ≤ költség ( a , b ) + h ( b ),ahol b az a leszármazottja , akkor az ilyen függvényt szukcesszívnek nevezzük ( angol konzisztens ).
Ha f ( n ) = g ( n ) + h ( n ) a kiértékelő függvény, h ( n ) az utódfüggvény, akkor az f ( n ) függvény monoton nem csökkenő bármely vizsgált út mentén. Ezért az egymást követő függvényeket monotonnak is nevezik ( eng. monoton ).
Bármely utódfunkció elfogadható, de nem minden megengedett funkció utódja.
Ha h 1 ( n ), h 2 ( n ) érvényes heurisztikus függvények, és bármely n csomópontra igaz a h 1 ( n ) ≥ h 2 ( n ) egyenlőtlenség , akkor h 1 tájékozottabb heurisztika, vagy uralja h 2 .
Ha a probléma elfogadható h 1 és h 2 heurisztikával rendelkezik, akkor a h ( n ) = max( h 1 , h 2 ) heurisztika megengedett, és dominál az eredeti heurisztikák mindegyike felett [1] [2] .
A megengedett heurisztikák összehasonlításakor a tudatosság foka, valamint az egyes heurisztikák számításának térbeli és időbeli összetettsége számít. A tájékozottabb heurisztika csökkentheti a telepített csomópontok számát, bár ennek költsége lehet az az idő, amelybe az egyes csomópontokhoz szükséges heurisztika kiszámítása szükséges.
Az effektív elágazási tényező a csomópontutódok átlagos száma a felsorolásfában a heurisztikus metszésmódok alkalmazása után [1] [2] . Az effektív elágazási tényező alapján meg lehet ítélni a használt heurisztikus függvény minőségét.
Egy ideális heurisztikus függvény (például egy keresőtábla ) mindig pontos értékeket ad vissza a legrövidebb megoldás hosszához, így a felsorolási fa csak optimális megoldásokat tartalmaz. Egy ideális heurisztikus függvény effektív elágazási tényezője közel 1 [1] .
A keresési algoritmusok és heurisztikus függvények tesztelésének modelljeként gyakran használnak permutációs rejtvényeket - Tizenöt 3 × 3 [3] [4] , 4 × 4 [5] [6] [7] , 5 × 5 [8] [9] [ 10 ] , 6×6 [11] , Rubik-kocka [9] [12] , Hanoi tornya négy rúddal [11] [13] .
A „Tizenöt” feladványban a Manhattan távolságon alapuló h m heurisztika alkalmazható . Pontosabban, minden lapkára kiszámítják a Manhattan távolságot az aktuális pozíciója és a kezdeti pozíciója között; a kapott értékeket összegzik.
Megmutatható, hogy ez a heurisztika megengedhető és szukcessziós: értéke nem változhat ±1-nél nagyobb mértékben egy mozdulattal.
A "Tizenöt" rejtvény megoldásához használt h m heurisztikus függvény az optimális megoldás hosszának alacsonyabb becslése. Ezenkívül h m ( n ) a rejtvény egyszerűsített változatának optimális megoldásának pontos hossza, amelyben a lapkák a helyükre mozgathatók. Az eredeti rejtvényben van egy korlátozás: "egy cellában ne legyen két vagy több lapka", ami az egyszerűsített változatban nem szerepel. Az olyan problémát, amelynél kevesebb korlátozás van a lehetséges cselekvésekre vonatkozóan , laza problémának nevezzük ; a relaxált probléma megoldásának költsége érvényes heurisztika az eredeti feladatra [1] , mivel az eredeti probléma bármely megoldása a relaxált probléma megoldása is egyben.
RészfeladatAz elfogadható heurisztika alapulhat az eredeti probléma egy részprobléma megoldásának költségén . A főprobléma bármely megoldása egyben megoldást jelent minden részfeladatára [1] .
A „Tizenöt” rejtvény megoldási feladatának egy részfeladata lehet az 1., 2., 3. és 4. lapkák helyére való mozgatása, ennek a részprobléma megoldásának költsége az eredeti feladatra érvényes heurisztika.
A mintaadatbázisok [ 1] egyfajta érvényes heurisztika, amely azon az elgondoláson alapul, hogy egy részprobléma minden lehetséges példányához eltárolják a megoldási költség pontos értékét [1] [6] [12] .
A "Tizenöt" rejtvény sablonjára a jobb oldali ábra látható: a részfeladat definíciója tartalmazza az első oszlopban és az első sorban található hét zseton pozícióit. A sablon konfigurációinak száma . Mindegyik konfiguráció esetében az adatbázis tartalmazza a minimális számú lépést, amely szükséges ahhoz, hogy ezt a konfigurációt az ábrán látható részfeladat célkonfigurációjává lehessen fordítani. Az adatbázis a fordított szélesség keresési módszerrel [2] [6] épül fel .
A legjobb első keresés egy olyan megközelítés, amelyben a telepítendő csomópontot egy f ( n ) kiértékelő függvény alapján választják ki . A legalacsonyabb pontszámmal rendelkező csomópont kerül kiválasztásra a telepítéshez.
Az A* keresés az első legjobb találat keresésének legismertebb típusa. Az n csomóponton keresztül a legolcsóbb megoldási útvonal f ( n ) becslését használja :
f ( n ) = g ( n ) + h ( n ), ahol g ( n ) a kezdő csomóponttól az n csomópontig vezető út költsége , h ( n ) az n csomóponttól a célig vezető út költségének becslése .Ha h ( n ) soha nem becsüli túl a cél elérésének költségét (vagyis megfizethető), akkor az A* keresése optimális.
Az A* algoritmus iteratív elmélyítéssel A* ( IDA* ) az iteratív elmélyítés gondolatának alkalmazása a heurisztikus keresés kontextusában.
A tájékozatlan iteratív mélyítési algoritmus leállítja a bővítést, ha a d keresési mélység meghaladja az aktuális l mélységhatárt . A tájékozott IDA* algoritmus leállítja a telepítést, ha az aktuális n csomóponton keresztüli útköltség becsült f (n) értéke meghaladja az aktuális útköltség - korlátot .
Az IDA* algoritmust az A*-hoz képest minimális memória többletterhelés és az IDDFS-hez képest viszonylag kis számú telepített csomópont (a heurisztika sikeres megválasztása esetén) jellemzi.
Pszeudokód csomópont jelenlegi g csomópont költsége a megoldás elindításához gyökér..f csomópont minimális útköltség becslés a csomóponton keresztül h ( csomópont ) heurisztikus költségbecslés az útvonal csomópont fennmaradó részére..cél költség ( csomópont , succ ) útköltség függvény is_goal ( csomópont ) cél függvény utódainak ellenőrzése ( csomópont ) csomópont telepítési funkciója eljárás ida_star ( root , cost (), is_goal (), h ()) bound := h ( root ) ciklus t := search ( root , 0, bound ) if t = FOUND then return FOUND if t = ∞ then return NOT_FOUND kötött := t end ciklusvég eljárás függvény keresés ( csomópont , g , kötött ) f := g + h ( csomópont ) ha f > kötött then return f if is_goal ( node ) then return FOUND min := ∞ for succ in utódokban ( csomópont ) do t := search ( succ , g + költség ( csomópont , succ ), kötött ) ha t = TALÁLT , akkor visszatér TALÁLT ha t < min , akkor min := t vége a return min vége függvényhez
SMA *
Grafikon keresési algoritmusok | ||
---|---|---|
Tájékozatlan módszerek | ||
Tájékozott módszerek | ||
Parancsikonok | ||
Minimálisan átívelő fa | ||
Egyéb |