我正在實現一種算法,它必須快速確定2D網格中兩個單元格之間是否存在路徑(對於迷宮式遊戲)。它實際上並不需要提供路徑。該算法運行數千次,所以它必須快速。雙向搜索還是不是?速度考慮
奇怪的是,這兩個單元格非常接近(曼哈頓距離爲2),所以對於大多數合理的迷宮來說,路徑通常是微不足道的。現在我有純粹的廣度優先搜索,但我正在考慮實施雙向變體。當然,問題是,在路徑不存在的情況下,雙向搜索將會失敗較慢,因爲它搜索兩個連接的組件,而不是一個,但是如果存在路徑,它會更快地找到它(可能)。
所以我的問題是,有沒有人有任何雙向搜索的經驗,以及如何在上述情況下的行爲?速度差異實際上是相當邊際的嗎?
你是指雙向Dijkstra? – Kunal
爲什麼不將地圖拆分爲連接的組件,以便搜索可以快速失敗? –
速度的大部分問題最好通過與典型數據集進行基準比較來解決,除非您更擔心比典型數據更糟糕的情況。 –