Jung2 (および Scala) を使用してグラフの最大フローを計算しようとしていますが、NoSuchElementException
スローされてしまいます。初期化が間違っていると思われますが、その方法がわかりません。
私のグラフは、DirectedSparseGraph[Long, Long]
ノードと頂点の両方が単に独自の一意の ID である場所です。頂点とエッジ (重みを含む) のメタデータを別の HashMap に保持します。
次のようにアルゴリズムを初期化して実行します。
val weightTransformer = new Transformer[Long, Number]() {
override def transform(edgeId: Long) = edges(edgeId).weight
}
var flows = Map[Long, Number]()
val edgeFactory = new Factory[Long] {
var current = 12000000
override def create() = {
current += 1
current
}
}
val algo = new EdmondsKarpMaxFlow(graph, sourceId, sinkId, weightTransformer, flows, edgeFactory)
algo.evaluate()
そして、 weight Transformer を呼び出してNoSuchElementException: key not found: 12000289
、アルゴリズムのファイナライズ手順に由来するものを取得します。コードでわかるように、私のエッジ ファクトリは、自分のプログラムでまだ使用されていない増加するインデックスを生成します。したがって、例外からのエッジは、アルゴリズムによって生成された逆流エッジです。私の重量変換器はどのようにしてその重量を知ることになっていますか?12000289