【发布时间】:2015-07-30 15:18:28
【问题描述】:
我正在使用scala-graph 库来构建有向图并按拓扑顺序检索其节点。由于图的拓扑顺序可能有很多可能性,因此我需要对相等且以相同方式构建的图的拓扑顺序具有确定性结果。
这个小应用突出了问题
import scalax.collection.Graph
import scalax.collection.GraphEdge.DiEdge
import scalax.collection.GraphPredef._
object MainApp extends App {
// Creates new graph for every call
// val is not an option
def graph: Graph[String, DiEdge] = Graph(
"A" ~> "B",
"A" ~> "C",
"A" ~> "D",
"B" ~> "E",
"B" ~> "F",
"C" ~> "G",
"C" ~> "H",
"D" ~> "F",
"D" ~> "G"
)
val results = 1 to 20 map { _ =>
graph.topologicalSort.mkString("")
}
println(results.tail.forall(_ == results.head))
}
这个应用程序打印错误。
有没有办法使用 scala-graph 库的 api 构建确定性拓扑排序的图?从头开始编写算法将是我的最后选择。
【问题讨论】:
标签: scala sorting graph-algorithm