问题描述
我有 DurationTime 来计算具有不同 numVertices 的不同图形的 DIjkstra 算法的时间。 当我第一次调用 DurationTime 时,持续时间为:1.5+ 秒,下一次调用的持续时间约为 0.1-0.3 秒。
public static double DurationTime(Graph graph){
double start,end,duration;
if(graph.isArray()){
start=System.nanoTime();
graph.DijkstraArray(0,false);
end=System.nanoTime();
}else {
start=System.nanoTime();
graph.DijkstraList(0,false);
end=System.nanoTime();
}
duration=(end-start)/1000000.000;
return duration;
}
如果我第一次调用 DurationTime() 和 NumVertices N=10 的图形,则持续时间为 1.5+,但如果我第二次调用它,则持续时间将在 0.1-0.3 左右,例如 N=20 的图形将有 1.5+ 秒。
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=10");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph10));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph10Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=20");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph20));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph20Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=30");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph30));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph30Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=40");System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph40));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph40Arr));
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("N=50");
System.out.println("Dijkstra(adjacency list) duration: "+DurationTime(graph50));
System.out.println("Dijkstra(adjacency array) duration: "+DurationTime(graph50Arr));
一些结果: 正常顺序:
N=10:Dijkstra(邻接表)持续时间:1.9511 || Dijkstra(邻接数组)持续时间:1.3817
N=20:Dijkstra(邻接表)持续时间:0.1411 || Dijkstra(邻接数组)持续时间:0.1783
N=30:Dijkstra(邻接表)持续时间:0.2351 || Dijkstra(邻接数组)持续时间:0.2029
N=40:Dijkstra(邻接表)持续时间:0.2995 || Dijkstra(邻接数组)持续时间:0.1992
N=20 先:
N=20:Dijkstra(邻接表)持续时间:1.6951 || Dijkstra(邻接数组)持续时间:1.2283
N=10:Dijkstra(邻接表)持续时间:0.0608 || Dijkstra(邻接数组)持续时间:0.0575
N=30:Dijkstra(邻接表)持续时间:0.1933 || Dijkstra(邻接数组)持续时间:0.1555
我不明白为什么会这样..
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)