Intuizione
A* utilizza l'euristica, informazioni sul dominio problematico che aiutano a guidare la sua ricerca. Queste euristiche sono spesso chiamate euristiche dell’ammissibilità o della distanza, perché non sovrastimano mai il costo effettivo per raggiungere l’obiettivo. In molti casi, A* trova soluzioni ottimali, anche se non è sempre garantito che lo faccia.
Come funziona A*?
A* mantiene due serie di nodi durante la sua ricerca:APERTO (Fringe) e CHIUSO
APERTO contiene tutti i nodi che sono stati generati, ma non ancora completamente valutati. È ordinato in base al punteggio F (discusso di seguito) dei suoi membri, con il punteggio F più basso in primo piano.
CHIUSO contiene tutti i nodi che sono stati completamente valutati.
L'algoritmo inizia ponendo il nodo iniziale in OPEN, mentre il nodo obiettivo risiede inizialmente in CLOSED. Ad ogni passo dell'algoritmo, A* rimuove il nodo in OPEN con il punteggio F più basso, lo espande e aggiunge tutti i suoi vicini ad OPEN. Se un vicino non è già in APERTO o CHIUSO, A* calcola un punteggio G (il costo effettivo per raggiungere il vicino dal nodo iniziale) e un punteggio H (una stima del costo per raggiungere l'obiettivo dal vicino) per esso e lo aggiunge a OPEN. Se un vicino è già in OPEN, il nuovo punteggio G viene confrontato con il punteggio G corrente e se il nuovo punteggio G è inferiore, il vicino viene aggiornato. Se un vicino è già in CHIUSO, il nuovo punteggio G viene confrontato con il punteggio G corrente e, se il nuovo punteggio G è inferiore, il vicino viene spostato da CHIUSO a APERTO e aggiornato.
Cessazione
L'algoritmo termina in due modi. Innanzitutto, se l'obiettivo è un vicino del nodo in fase di espansione, l'algoritmo restituisce il percorso verso l'obiettivo. In secondo luogo, se OPEN diventa vuoto, l'algoritmo termina senza successo, indicando che non esiste un percorso valido dal nodo di partenza all'obiettivo.
Complessità
La complessità temporale nel caso peggiore dell'algoritmo A* è esponenziale nella dimensione del grafico. Tuttavia, in pratica, A* si comporta bene su molti problemi e spesso trova soluzioni ottimali in un lasso di tempo ragionevole.
Domanda © www.354353.com