我正在解决这个问题:确认为O Dijkstras算法(V + E)
Gaedel教授撰文指出,他声称一个程序实现Dijkstra算法。 该程序为V中的每个顶点v生成v.d和v.π。给出一个 O(V + E)时间算法来检查教授程序的输出。应该由 确定d和π属性是否匹配某些最短路径树的属性。 你可以假定所有的边权重都是非负的。
VD是从起始节点到v的最短距离 v.π为v在最短路径前身从起始节点到v
我的想法是: 对于每一个顶点(I),比较用的ID (i.π).D。如果我的前任有更大的d值,那么我们不能有最短路径的树。
我相信这可以检查教授的输出是不是最短路径树,但我不认为它可以确认输出是最短路径树。没有更多信息,我想不出有办法做到这一点。
我在正确的轨道上吗?
在什么样的时间你要实现这一点,使用什么?运行SPA,看看它是不是树。它是有效的,而且是最有名的。 – ashley
我不确定SPA是什么。这个问题是从算法第3版的介绍。我想我只需要提供一个通用算法;我不需要指定数据结构。我建议的解决方案在O(E + V)中运行,因为我访问过每个顶点和边,但我不确定它是否正确。 – user1754045
最短路径算法。 Dijkstra的。最着名的算法之一。 – ashley