我想效率,如果效率(= 0.9 *速度+ 0.1 *其他)很高,我願意自己編寫代碼。如果我在LEDA圖或Boost圖之間進行選擇,我應該選擇哪一個?LEDA圖形v/s提升圖形庫
我的算法很耗時(有些甚至是非多項式),它適用於大型圖形。
我想效率,如果效率(= 0.9 *速度+ 0.1 *其他)很高,我願意自己編寫代碼。如果我在LEDA圖或Boost圖之間進行選擇,我應該選擇哪一個?LEDA圖形v/s提升圖形庫
我的算法很耗時(有些甚至是非多項式),它適用於大型圖形。
可以使Boost圖算法在LEDA上工作,甚至可以在斯坦福圖基礎圖上工作,但不能反過來。 http://www.boost.org/doc/libs/1_46_1/libs/graph/doc/leda_conversion.html
我會建議使用助推圖,這是最先進的。
邁克
升壓通常是一個很好的庫,但我不會建議加速圖形的一些原因。
BGL文檔是可執行的,不容易遵循用戶指南。我發現試圖定義具有與我自己的問題相關的屬性的圖很困難。
您經常會遇到巨大的編譯器錯誤,這些錯誤會在模板中的模板內顯示模板...幾乎不可能看到發生了什麼。
我發現的唯一解決方案就是從一個隨Boost Graph提供的簡單例子開始,並對其進行調整,直到它達到我想要的水平。
我知道很多聰明而有能力的人因爲這些原因而放棄了升壓圖。因爲在它下面有非常高效的算法,所以很難過。對我而言,BGL是模板過度使用的教科書示例。 Boost Graph是一個很好的想法,它完全忽略了這一點:如果代碼無法被讀取,維護,擴展或調試,代碼就毫無價值。
有LEDA/Boost實施的替代方案。 你可以做不如來調查這個發音相似的帖子: https://stackoverflow.com/questions/510758/can-you-suggest-a-good-book-on-graphs-and-graph-algorithms(鏈接不再有效)
升壓不斷重構,所以它的部分得到搬進標準,之後,供應商的不斷優化它爲他們所支持的目標系統。在罕見的使用情況下,使用繼承,開發人員可能會調整某些部分的特定情況。
如果工作僅限於C++,那麼由於Boost的各個部分旨在集成到標準中,所以它具有這些優點。可能有專門的理由使用專有的LEDA,例如通過測試保證無差錯,然後作爲決策者只有你必須遵守這些標準。
+1。沒有人提到過這一點 - Boost作爲一個非常活躍的項目繼續得到改進,併成爲未來標準組件的舞臺。 – 2013-07-14 16:12:36