我讀到過,當將A *應用於問題時,如果啓發式是一致的,那麼您可以進一步優化A *搜索。 Boost圖庫提供了兩種版本的A *算法:astar_search
和astar_search_tree
。關於兩者之間的區別,文件不是很清楚;它們中的一個是否執行假設一致啓發式的優化搜索?Boost Graph Library A *提供一致啓發式
1
A
回答
3
我通過諮詢Boost郵件列表得到了我正在尋找的答案。我將在這裏爲後代重現答案:
區別在於是否應該努力避免 多次訪問同一個頂點。對於經常通過多條路徑到達頂點的圖,您應該首選astar_search以避免重新訪問該頂點及其後繼者的額外工作。如果是 不太可能相同的頂點出現在多條路徑上,或者檢查頂點價格不夠便宜,以至於不值得避免重複的 工作,則使用astar_search_tree,它不記得它先前訪問過哪個頂點 。試圖找到重複頂點 的缺點是它需要越來越多的內存來存儲查找表 的頂點已經被查看過,並且花費時間搜索並更新此表。該算法的兩個版本都需要允許 啓發式才能正常工作。
0
的_tree
和非_tree
提升圖形算法版本之間的不同之處在於_tree
版本假設你的曲線真的是一棵樹,所以它沒有循環,只有一個箭頭節點。
相關問題
- 1. Boost Graph Library C++/Power Law
- 2. Boost Graph Library動態邊權重
- 3. Boost Graph Library,在iOS上穩定?
- 4. 請幫助我使用Boost Graph Library
- 5. 如何用Boost Graph Library創建一個named_graph?
- 6. Boost Graph Library:邊緣插入緩慢的大圖
- 7. Boost Graph Library - 使用remove_vertex在topological_sort中崩潰
- 8. Boost Graph Library轉向限制或轉向處罰
- 9. Boost Graph Library - 有向圖的最小生成樹
- 10. boost implicit graph and astar_search_no_init
- 11. 在A中使用可接受的和一致的啓發式A *
- 12. Boost Graph Library - 從外部矢量權重屬性
- 13. Boost Graph Library:捆綁屬性並遍歷邊緣
- 14. (Boost Library) - boost :: container :: flat_set with boost :: fast_pool_allocator
- 15. 如何使用Boost Graph Library來佈局頂點?
- 16. 使用Boost Graph Library顯示的某些屬性繪製圖形
- 17. 併發對象池提供boost :: shared_ptr
- 18. Boost庫提供了在Ubuntu
- 19. C++ Boost Graph Library:輸出自定義頂點屬性
- 20. A *算法的啓發式
- 21. 瞭解不一致的啓發式
- 22. boost grid_graph and graph cut on image
- 23. Boost :: graph undefined屬性
- 24. ZXing Library未提供意圖結果
- 25. boost :: graph astar算法無例外
- 26. 如何在A *(運行時啓發式)中模塊化啓發式
- 27. flot graph on a timer
- 28. A *啓發式創建Bresenham行
- 29. A *啓發式,高估/低估?
- 30. A-star:多目標的啓發式
我不認爲這是真的。我有一個循環的無向圖,astar_search_tree仍然工作得很好。 – giogadi 2013-04-24 20:16:22
玩火! 「如果一個虛擬值被用於距離圖並且該圖包含循環,則該算法可能會進入無限循環」(http://www.boost.org/doc/libs/1_53_0/libs/graph/doc/astar_search的.html)。如果你的圖形不是*你不應該使用_tree版本。 – Roberto 2013-04-24 20:19:19
@giogadi:這並不意味着它將適用於所有非樹形圖。 http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128776ff992970c-pi – 2013-04-24 20:19:34