Yön grafik oluşturmak ve düğümlerini topolojik olarak almak için scala-graph kütüphanesini kullanıyorum. Bir grafiğin topolojik düzeni için birçok olasılık olabileceğinden, aynı şekilde eşit ve aynı şekilde oluşturulmuş grafikler için topolojik sıraya göre deterministik bir sonuca ihtiyacım var.Scala grafiğinde deterministik topolojik düzen
Bu küçük uygulama sorunu yanlış
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))
}
Bu uygulama baskılar vurgular.
Scala-grafik kitaplığı api kullanarak bir grafiğin deterministik topolojik sıralamasını oluşturmanın bir yolu var mı? Bir algoritmanın yazımının sıfırdan yazılması benim son seçeneğim olurdu.
Soruyu göndermeden önce bu yaklaşımı denedim ve işe yaramıyor. Peter Empen tarafından burada belirtildiği gibi https://github.com/scala-graph/scala-graph/issues/41, benzer bir şey topolojik sıralama "kütüphaneye tamamen entegre" olduğu anda çalışmalıdır. –