1

我正在尝试使用 Jung2(和 Scala)在图表上计算最大流量,但最终NoSuchElementException被抛出。我怀疑我的初始化不正确,但不知道怎么做。

My Graph 是一个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()

并通过调用权重转换器获取NoSuchElementException: key not found: 12000289源自算法最终确定步骤的内容。正如您在代码中看到的那样,我的边缘工厂生成了越来越多的索引,这些索引还没有被我自己的程序使用。因此,来自异常的边缘是算法生成的一些回流边缘。我的重量转换器应该如何知道它的重量?12000289

4

0 回答 0