2015-04-04 36 views
1

我試圖搜索谷歌和stackoverflow的類似問題,但我沒有找到任何成功。Java A *實現結果在兩個連接節點

我的A *實現工作,但是當收集從開始節點到結束節點的路徑時,它簡單地通過兩個相互連接的節點循環(我可以從節點A到節點B,也可以從節點B到節點A)。

我遵循維基百科的A *實現,但是當我創建Dijksta算法時,它使用了完美工作的相同方法 - 所以我很困惑,爲什麼這不是。

我的電流輸出是這樣的:

Node: 3093, 
Node: 3085, 
Node: 3093, 
Node: 3085, 
Node: 3093, 
Node: 3085, 
Node: 3093, 
... repeated 

有誰知道爲什麼它不會正確地儲存。從? 另外我想存儲程序遍歷的邊緣以獲得成功的路線 - 有誰知道我該怎麼做?我可以簡單地實現一個可以添加正確邊緣的存儲嗎?

回答

2

如果你有For循環的評論: 「//如果鄰居處於封閉集合中,移動到下一個鄰居」break語句將跳出for循環並繼續評估鄰居,即使它在封閉的集合中。

在這裏設置一個布爾值,然後繼續while而不是atleast將解決該問題。

+0

啊啊謝謝你,這是固定的!我沒有注意到我所做的休息沒有按照我的想法做! – Craig 2015-04-04 15:49:29

+0

太棒了!很高興我能幫上忙。 – jan 2015-04-04 15:56:10