如何有效地测试Dijkstra算法

时间:2016-09-13 04:35:52

标签: algorithm data-structures dijkstra

我正在研究Dijkstra的现有实现,我的一个可交付成果是测试此实现是否是解决手头问题的有效解决方案或推荐替代算法。 问题是......我应该如何对现有的Dijkstra算法进行基线测试,以便将其与备用算法进行比较? 为缩小范围,我的客户正在使用Dijkstra为b2b消费者动态选择最佳关税计划。它有意义吗?

1 个答案:

答案 0 :(得分:2)

Dijkstra是一种在图中查找最短路径的算法。要测试并查看效果如何,您需要将其与其他算法进行比较。例如Bellman–Ford算法,A* search algorithm

重要说明

除了表现之外,还有其他一些重要问题,例如Dijkstra不适用于负值。这就是贝尔曼 - 福特在许多问题上被使用的原因。

此外,Dijkstra有不同的实现方式。

带有列表的Dijkstra算法来自O(V 2),而具有修改二进制堆的Dijkstra算法来自O((E + V)log V),而具有Fibonacci堆的Dijkstra算法来自O(E + V log V)。 Bellman-Ford算法来自O(VE)。

结论

如果您需要查看哪一个更适合您的工作,请首先查看哪些参数对您很重要,然后比较哪些参数适合您。如果你愿意,你甚至可以测试它们,因为它们之前都是由其他人实现的。你只需要给他们一个图表