代码之家  ›  专栏  ›  技术社区  ›  Elazar Leibovich

scala的图形库[关闭]

  •  28
  • Elazar Leibovich  · 技术社区  · 14 年前

    对于Scala中的图形和/或图算法,有好的库(或Java库的包装器)吗?

    This one 好像已经死了。 This 是scala中dijkstra算法的一个例子,但是我正在寻找一个库a-la JGraphT .

    4 回复  |  直到 10 年前
        1
  •  7
  •   opyate    13 年前

    我们为Apparat项目开发了一个小型图形库。你可以看看 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
  •  23
  •   opyate    10 年前

    有一个 current call-for-comments 创建scala库中内置的scala.collection.graph。

    另外,为jgrapht开发一个scala包装器怎么样?

    更新

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

        3
  •  4
  •   sw.    14 年前

    为什么不呢? Jung ?而且 Piccolo2D 为了图像?(都基于jvm)。

        4
  •  2
  •   Michael Pollmeier KadekM    11 年前

    Gremlin Scala是Gremlin的一个薄薄的Scala包装器,是一个用于遍历多个图形数据库(包括Neo4J、OrientDB、Dex、InfiniteGraph、Titan、Rexster Graph Server和Sesame 2.0兼容RDF存储)的图形DSL。

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

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