Jung2中的EdmondsKarpMaxFlow抛出NoSuchElementException

时间:2013-06-04 21:54:02

标签: jung

我正在尝试使用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()

并通过calling the weight transformer获取源自算法完成步骤的NoSuchElementException: key not found: 12000289。正如您在代码中看到的那样,我的边缘工厂会生成增加的索引,这些索引 not 已被我自己的程序使用。因此,Exception中的边12000289是由算法生成的一些回流边缘。我的体重变换器应该如何知道它的重量?

0 个答案:

没有答案