2014-11-09 25 views
5

Recentemente ho iniziato un corso introduttivo all'intelligenza artificiale e mi è stato assegnato un incarico per implementare una funzione euristica ammissibile in Python che risolva il 15-Puzzle con la ricerca A *.Distanza euristica ammissibile a Manhattan

Ho implementato la Manhattan Distance insieme ad altre euristiche. Il codice Python funzionava bene e l'algoritmo in realtà risolve il problema, ma ho qualche dubbio sul fatto che l'euristica a distanza di Manhattan sia ammissibile per questo particolare problema.

Secondo la teoria di un'euristica è ammissibile se maisovrastima il costo per raggiungere l'obiettivo. Ciò significa che l'euristica è ottimista e il costo che ritorna non è mai maggiore di quello attuale.

Quando lo stato iniziale è la seguente (0 significa slot vuoto):

1 2 3 4 
0 6 7 8 
5 9 10 12 
13 14 11 15 

mio programma risolve il problema con 5 movimenti, ma la somma del Manhattan distanze di ogni piastrella fuori luogo è pari a 10 che è il doppio del valore del costo effettivo. Quindi il costo reale è molto inferiore a quello stimato. Questo significa che l'euristica non è ammissibile o c'è qualcosa di sbagliato nella mia logica?

Ho pensato di contare solo la distanza di Manhattan del blocco vuoto, ma questo porterebbe a stati con costi stimati pari a zero quando il blocco vuoto si trova nella sua posizione corretta, ma le altre tessere non sono posizionate correttamente.

+0

Non ci hai mostrato la tua logica, così come dovremmo valutarlo? –

+0

Non ho alcun problema con il codice. La mia domanda è teorica. Il problema può essere risolto con cinque mosse. Ogni volta che il riquadro vuoto viene spostato su, giù, destra o sinistra. Le cinque mosse che risolvono il problema sono: Giù, Destra, Destra, Giù, Destra. Ma se si applica l'euristica allo stato iniziale, restituisce 10 che è il doppio del costo effettivo. Dovrebbe essere inferiore al costo effettivo secondo la teoria. Non hai bisogno del codice per calcolare la distanza di Manhattan. [Manhattan Distance] (http://en.wiktionary.org/wiki/Manhattan_distance) Grazie per la rapida risposta;) – dimlucas

+2

Mi sembra che la somma totale delle distanze di Manhattan sia effettivamente 5 nel tuo esempio. Come si ottiene 10? –

risposta

5

L'euristico Manhattan Distance è ammissibile in quanto considera ciascuna piastrella in modo indipendente (mentre in effetti le tessere interferiscono l'una con l'altra). Quindi è ottimista.

Nell'esempio la somma della distanza dalla posizione obiettivo di tutte le tessere è 5 (le tessere 5, 9, 10, 11, 15 ne richiedono una ciascuna).

enter image description here

+0

Grazie, stavo aggiungendo il costo di spostare anche la tessera vuota – dimlucas