8
我使用Martin Erwig的函數圖庫(FGL)來表示以下簡單有向權重圖。使用FGL查找最短路徑
genLNodes :: [LNode String]
genLNodes = zip [1..5] ["A","B","C","D","E"]
genLEdges :: [LEdge Int]
genLEdges = [(1,2,4),(1,3,1),(2,4,2),(3,4,2),(2,5,1),(4,5,1),
(2,1,4),(3,1,1),(4,2,2),(4,3,2),(5,2,1),(5,4,1)]
mygraph :: Gr String Int
mygraph = mkGraph genLNodes genLEdges
現在我想找到一個節點到另一個節點如最短路徑使用dijkstra算法的A
至E
。似乎有這樣做的函數Data.Graph.Inductive.Query.SP
:
dijkstra :: (Graph gr, Real b) => Heap b (LPath b) -> gr a b -> LRTree b
但我無法弄清楚如何從提供的接口使用。任何幫助將非常感激。我還想聽聽其他建議,如果我是以正確的方式創建定向加權圖,或者是否有任何其他(更好的)包可以這樣做?
...它可能值得閱讀[論文](http://web.engr.oregonstate.edu/~erwig/papers/InductiveGraphs_JFP01.pdf)或至少瀏覽它。 – AndrewC
@vis'sp'無論如何都是個垃圾名字 - 難怪你沒有發現它! – AndrewC
哎呀,我完全錯過了這個功能!事實上,這就是我需要的一切。 @AndrewC感謝您指點我的論文。 – vis