我正在尝试使用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
是由算法生成的一些回流边缘。我的体重变换器应该如何知道它的重量?