Eccentricity
是最短协作距离中的最大值。
图表由Adjacent List
组成。
这是我在Java
中实施的方式:
public int eccentricity(String start) {
Queue<String> queue = new ArrayDeque<String>();
queue.add(start);
HashMap<String, Boolean> visitedChecker = new HashMap<String, Boolean>();
visitedChecker.put(start, true);
// Init distanceHistory
HashMap<String, Integer> distanceHistory = new HashMap<String, Integer>();
distanceHistory.put(start, 0);
int eccen = 0;
while(!queue.isEmpty()) {
String vertex = queue.poll();
HashSet<String> neighbors = Graph.get(vertex);
for (String neighbor: neighbors) {
if (visitedChecker.get(neighbor) == null) {
visitedChecker.put(neighbor, true);
eccen = distanceHistory.get(vertex) + 1;
distanceHistory.put(neighbor, eccen);
queue.add(neighbor);
}
}
}
return eccen;
}
但是这段代码的问题很慢!......(比最快的一个慢约3倍)
但我认为没有什么可以使我的代码更快......
我认为Adjcent matrix
不会让它更快......
有什么想法吗?我错过了什么吗?