我讀過A* Pathfinding for Beginners並查看了C++和其他語言中的幾個源代碼實現。我理解大部分發生的事情,除了我認爲我已經發現的一個可能的問題,並且我發現的教程/實現中沒有一個涵蓋了這一點。A *尋路 - 更新父
當你到達這一部分:
如果相鄰的廣場已經開行了[...],如果G值的新路徑 較低,改變的父相鄰的廣場以 選定的廣場。最後,重新計算那個正方形的F和G分數 。
更改正方形的G分數也會改變每個孩子的G分數,對嗎?也就是說,每個已經有這個方格作爲父母的方格,現在也應該得到一個新的G分數。那麼,您不應該在公開列表中找到每個孩子(和孩子的孩子)並重新計算G值嗎?這也會改變F值,所以如果使用排序列表/隊列,這也意味着一堆訴諸。
這是不是一個實際的問題,不值得爲額外的計算額外的CPU,這就是爲什麼我看到的實現只是忽略這個問題(不更新兒童)?
非常好的解釋,現在有很多意義。謝謝! – eselk