scala的图形库

时间:2010-03-14 21:40:35

标签: scala graph

scala中的图形和/或图形算法是否有一个好的库(或Java库的包装器)?

This one似乎已经死了。 This是scala中Dijkstra算法的一个示例,但我正在寻找一个库a-la JGraphT

4 个答案:

答案 0 :(得分:23)

有一个current call-for-comments可以在Scala库中内置scala.collection.Graph。

另外,如何为JGraphT开发Scala包装器?

<强>更新

Graph for Scala现已超出讨论阶段,正在进行中。

答案 1 :(得分:7)

我们为设备项目开发了一个小图库。你可以看一下here。它不是纯粹的功能而不是拉链图,但对我们来说做得很好。你也得到了可变和不可变的图形。

以下是图表创建的简单示例:

implicit val factory = DefaultEdge[String](_, _)
val G = Graph(
  "Entry" -> "A",
  "A" -> "B",
  "B" -> "C",
  "B" -> "D",
  "D" -> "F",
  "F" -> "E",
  "E" -> "F",
  "E" -> "C",
  "C" -> "A",
  "C" -> "Exit")
G.dotExport to Console.out

查找SCC和子组件

G.sccs foreach println
G.sccs map { _.entry } foreach println
G.sccs filter { _.canSearch } map { _.subcomponents } foreach { _ foreach println }

穿越

for(x <- G.topsort) println(x)
for(x <- G.dft(y)) println(x)

目前的缺点是该库仅支持不变类型,而不是整个图库的完整功能。

答案 2 :(得分:4)

为什么不Jung?还有Piccolo2D的图形? (均基于JVM)。

答案 3 :(得分:2)

Gremlin-Scala是Gremlin的瘦薄Scala包装器,用于遍历大量图形数据库的图形DSL,包括Neo4j,OrientDB,DEX,InfiniteGraph,Titan,Rexster图形服务器和符合Sesame 2.0标准的RDF存储。

https://github.com/mpollmeier/gremlin-scala

注意:我有偏见,因为我是作者;)