Non capisco come lo IDA*
risparmi spazio di memoria. Da come ho capito IDA*
è A*
con approfondimento iterativo.Qual è il punto dell'algoritmo IDA * vs A *
Qual è la differenza tra la quantità di memoria A*
utilizza vs IDA*
.
L'ultima iterazione di IDA*
non si comporta esattamente come A*
e utilizza la stessa quantità di memoria. Quando rintraccio IDA*
mi rendo conto che deve anche ricordare una coda di priorità dei nodi che si trovano sotto la soglia f(n)
.
Capisco che la prima ricerca dell'ID-depth aiuta la ricerca approfondita per prima, permettendole di fare una ricerca per ampiezza prima senza dover ricordare ogni nodo. Ma ho pensato che A*
si comporta già come la profondità prima, perché in esso ignora alcuni sotto-alberi lungo la strada. In che modo l'approfondimento progressivo fa sì che usi meno memoria?
Un'altra domanda è Profondità prima ricerca con approfondimento iterativo consente di trovare il percorso più breve facendolo comportarsi in larghezza prima come. Ma A*
restituisce già il percorso ottimale più breve (dato che l'euristica è ammissibile). In che modo l'approfondimento iterativo lo aiuta. Mi sembra che l'ultima iterazione di IDA * sia identica a A*
.
ma non IDA * ancora bisogno di memorizzare i nodi che intende visitare poiché marcia indietro ancora, e quando backtracking, vuole trovare il il miglior percorso per scendere dopo. A * ha bisogno di memorizzare i nodi, non è IDA * uguale a A * ma ti fermi dopo una certa f (n) e ricomincia di nuovo? Stai dicendo che IDA * è solo IDDFS tranne che con l'euristica.Come in tutti i nodi al di sotto di una soglia sono trattati allo stesso modo e che visitare i figli di un nodo non è in ordine particolare fintanto che tutti i bambini f (n) sono al di sotto della soglia? – tcui222
Ogni nodo le visite 'IDA * 'contiene già il suo riferimento ai nodi adiacenti, quindi quando si ha questo nodo nello stack di chiamate (giallo nella figura sopra), è possibile iterarle. –
Rileggere la mia modifica. –