首先,我要处理的图形超过1000条边,并且遍历邻接表以及每秒超过100次的顶点。因此,我确实需要一个适合我目标的有效实施。
我的顶点是整数,而我的边缘是无向的,加权的。
我看过这段代码。
但是,它使用边缘对象对邻接表进行建模。这意味着我想花费O(|adj|)
时间来获取顶点的相邻点,相邻|adj|
点的基数在哪里。
另一方面,我正在考虑使用建立邻接表的模型Map<Integer, Double>[] adj
。
通过使用此方法,我将仅使用adj[v]
,v
作为顶点,并获得顶点的相邻部分进行迭代。
另一种方法要求类似:
public Set<Integer> adj(int v)
{
Set<Integer> adjacents = new HashSet<>();
for(Edge e: adj[v])
adjacents.add(e.other(v));
return adjacents;
}
我的目标是:
我已经将JGrapht用于库来存储各种我自己的图形表示形式。他们在这里有一个加权图实现:http : //jgrapht.org/javadoc/org/jgrapht/graph/SimpleWeightedGraph.html
这似乎可以满足您的需求,并且我用它来表示最多约2000个顶点的图形,并且可以很好地满足我的需求,尽管我不记得访问率。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句