|
|
1
11
微 |
|
|
2
3
也许我没有回答你的问题。我的观点是,当你的问题有更有效的算法时,为什么要使用Dijkstra。如果你的图充满了三角形属性(它是欧几里得图)
(节点a到节点b的距离加上节点b到节点c的距离大于节点a到结点c的距离),然后可以应用a*算法。 实施不是主要问题。要使用的算法确实很重要。 |
|
|
3
2
我想说两点: 1) Dijkstra vs A* 对于欧几里德图这样的情况,A*效果很好,因为启发式函数很容易定义(例如,可以简单地使用欧几里德距离)。然而,对于非欧几里德图,定义启发式函数可能更难,错误的定义可能会导致非最优路径。 因此,dijkstra比A*有优势,因为它适用于任何一般图(除了A*在某些情况下更快)。很可能某些实现可以互换使用这些算法,从而产生不同的结果。
|
|
|
4
1
Dijkstra的所有“真”实现每次都应该返回相同的结果。
|
|
|
5
0
这将取决于很多事情。你对输入数据了解多少?它是密集的还是稀疏的?这将改变算法的哪个版本最快。 如果它是密集的,就使用矩阵。如果它是稀疏的,你可能想看看更有效的数据结构来找到下一个最近的顶点。如果你有更多关于数据集的信息,而不仅仅是图连接,那么看看不同的算法是否会像a*那样更好地工作。 问题是,该算法没有“最快”的版本。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |