我知道這個問題已被問到,但它沒有回答我的具體問題。 我明白Dijkstra算法和A *算法是如何工作的,而A *是Dijkstra的一般情況。爲什麼A *比Dijkstra更快
A *通常認爲A *會更快找到解決方案,因爲您使用啓發式方法可以加快過程/減少有效的分支因子。
但我記得,爲了使A *返回最優結果,您必須搜索所有成本低於目標成本的節點。這確保了最優性,並且據說不可能有更快的算法,因爲A *查看等節點< =每個算法至少需要的目標成本。
但是迪傑斯特拉呢?它也僅支付節點< =目標成本,因爲它在每一步都擴展了最小可能路徑。
如果您爲了確保最優性而擴展其他節點,A *啓發式優點是什麼? 另外兩種算法似乎有運行時的n log n個複雜
希望有人能清楚這件事:)
如果我沒有表達錯誤,我相信。英語不是我的母語。 A *是Dijkstra的推廣,這是一個更好的術語嗎? – Nocta
對不起,你似乎是對的。這個有點違反直覺的術語似乎很普遍。 –