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