图表(节点和边缘)

时间:2009-07-19 20:49:55

标签: haskell graph-theory

我正在使用HASKELL进行图形游戏。除了使用bfs或树等之外,我愿意从图中的节点到特定节点获得适当的到达能力方法。


当我要求haskell中的代码从一个节点到特定节点的覆盖能力时,有必要告诉你我对haskell是全新的。我一直在阅读教程和简单的例子,但是当它实现时,我就迷失了。我的图是一个有向图,并说我想检查是否可以从图中的节点v到达节点w。

4 个答案:

答案 0 :(得分:8)

来自Data.Graph

reachable :: Graph -> Vertex -> [Vertex]

要搜索Haskell API和库:

答案 1 :(得分:2)

手中有几种All pair shortest path算法。对于小图,维基百科说:

  

Floyd-Warshall algorithm是一个   优雅,快速实现O(n3)   算法(假设没有   负称重周期。)

编辑:您在寻找现成的Haskell代码吗?

答案 2 :(得分:2)

尝试将图表表示为矩阵,其中1表示边缘。

E.g:

 Node/Node  A  B  C  D
          A  0  0  1  1
          B  0  0  1  1
          C  0  0  1  0
          D  1  0  1  0 

对于有向图,矩阵指数的顺序很重要,对于无向图,它们不重要。以上是有向图,其中存在来自D-> C但不来自C-> D的边缘。

答案 3 :(得分:2)

在Haskell的背景下,不完全确定你的问题是什么。

  • 您是否要求现成的所需算法+数据结构实现?
  • 在Haskell中寻找图表库?

无论哪种方式,请检查http://hackage.haskell.org与图表相关的包:

  1. http://hackage.haskell.org/package/fgl
  2. http://hackage.haskell.org/package/graphviz
  3. http://hackage.haskell.org/package/Graphalyze
  4. http://hackage.haskell.org/package/GraphSCC
  5. http://hackage.haskell.org/package/hgal