💻
scala-graphの紹介
Scalaでグラフ探索する必要があって自分でやるのは面倒でなんかあるだろと探したら発見した。
libraryDependencies += "org.scala-graph" %% "graph-core" % "1.11.2"
として準備。
説明なしに単純な例。
package example.graph
import scalax.collection.Graph
import scalax.collection.GraphPredef._, scalax.collection.GraphEdge._
object GraphDemo1 {
def main(args: Array[String]): Unit = {
val g = Graph(1~2, 2~3, 4~5, 1~4, 4~3, 6~7)
println(g.get(1).pathTo(g.get(3))) //=> Some(Path(1, 1~4, 4, 4~3, 3))
println(g.get(1).pathTo(g.get(2))) //=> Some(Path(1, 1~2, 2))
println(g.get(1).pathTo(g.get(6))) //=> None
val path = g.get(1).pathTo(g.get(3)).get
println(path.size) //=? 5
println(path.weight) //=> 2
}
}
重み付きとか有向グラフなども扱えるが当面必要ないので略。
Discussion