Heuristic A keresés egy hatékony algoritmikus megközelítés, amellyel megoldásokat találhatunk összetett problématerekben, heurisztika vagy hüvelykujjszabályok alapján megalapozott döntések meghozatalával. Különösen akkor hasznos, ha a kimerítő keresés nem praktikus a nagy keresési terület miatt.
Hogyan működik
- Heuristic Kiértékelés: Az algoritmus egy függvény segítségével kiértékeli a problématér minden állapotát heuristic. Ez a függvény megbecsüli az egyes állapotok "ígéretességét" a célállapothoz való közelsége szempontjából.
- Keresési stratégia: Az algoritmus az értékelés alapján kiválasztja a legígéretesebb állapotot heuristic. Olyan keresési stratégiát használ, mint Best-First a Keresés, A* keresés vagy Greedy Keresés.
- Állapotkiterjesztés: A kiválasztott állapot a szomszédos állapotok generálásával bővül. Ezek potenciális jelöltek a következő lépésre.
- Ismétlés: A folyamat iteratív módon ismétlődik, kiválasztva és kibontva az állapotokat, amíg meg nem találjuk a célállapotot, vagy nem teljesül a befejezési feltétel.
Példa: Utazó értékesítői probléma(TSP)
Vegyük fontolóra az utazó értékesítő problémát, ahol az eladónak egy sor várost meg kell látogatnia, és vissza kell térnie a kiinduló városba, miközben minimálisra csökkenti a teljes megtett távolságot. Megközelítés heuristic lehet a Nearest Neighbor Algorithm:
- Kezdje egy véletlenszerű városban.
- Minden lépésnél válassza ki a legközelebbi nem látogatott várost következő úti célként.
- Ismételje addig, amíg az összes várost meg nem látogatja, majd térjen vissza a kiinduló városba.
Kódpélda C++ nyelven
Ebben a példában a legközelebbi szomszéd algoritmust használjuk az utazó értékesítő probléma megoldására. Ez egy olyan heuristic megközelítés, amely minden lépésnél kiválasztja a legközelebbi meg nem látogatott várost, ami gyakran az optimálishoz közeli megoldást eredményez.