Nie rozumiem, jak oszczędza się pamięć w trybie IDA*
. Z tego, jak rozumiem, że IDA*
jest A*
z iteracyjnym pogłębianiem.Jaki jest sens algorytmu IDA * vs A *
Jaka jest różnica między ilością pamięci A*
używa vs IDA*
.
Czy ostatnia iteracja IDA*
zachowuje się dokładnie tak jak A*
i używa tej samej ilości pamięci. Kiedy śledzę IDA*
zdaję sobie sprawę, że musi również zapamiętać priorytetową kolejkę węzłów, które są poniżej progu f(n)
.
Rozumiem, że pierwsza funkcja wyszukiwania głębi pomaga w głębszym wyszukiwaniu, pozwalając mu na wykonanie pierwszej operacji, takiej jak wyszukiwanie, bez konieczności zapamiętywania każdego węzła. Ale myślałem, że A*
zachowuje się już jak głębia, ponieważ po drodze ignoruje niektóre pod-drzewa. W jaki sposób Iteracyjne pogłębianie powoduje, że zużywa on mniej pamięci?
Kolejne pytanie to Głębokie pierwsze wyszukiwanie z iteracyjnym pogłębieniem pozwala znaleźć najkrótszą ścieżkę, dzięki czemu zachowuje się jak pierwsza szerokość. Ale A*
zwraca już optymalną najkrótszą ścieżkę (biorąc pod uwagę, że heurystyka jest dopuszczalna). W jaki sposób pomaga to iteracyjne pogłębienie. Czuję, że ostatnia iteracja IDA * jest identyczna z A*
.
ale nie IDA * nadal trzeba przechowywać węzły, które zamierza odwiedzić, ponieważ nadal cofa się, a gdy backtracking, chce odnaleźć najlepsza ścieżka do następnego. A * musi przechowywać węzły, czy IDA * nie jest taki sam jak A *, ale zatrzymujesz się po określonym f (n) i ponownie uruchamiasz? Czy mówisz, że IDA * to tylko IDDFS z wyjątkiem heurystyki.Jak we wszystkich węzłach poniżej progu są traktowane jednakowo i że odwiedzanie dzieci węzła nie jest w szczególnej kolejności, o ile wszystkie dzieci f (n) są poniżej progu? – tcui222
Każdy węzeł odwiedzin 'IDA *' już zawiera odniesienie do węzłów sąsiada, więc kiedy masz ten węzeł w stosie wywołań (żółty na powyższym obrazku), możesz go powtórzyć. –
Ponownie wyświetl moją zmianę. –