我正在努力解决这个问题:
Gaedel 教授编写了一个程序,他声称该程序实现了 Dijkstra 算法。该程序为 V 中的每个顶点 v 生成 vd 和 v.π。给出一个 O.(V + E) 时间算法来检查教授程序的输出。它应该确定 d 和 π 属性是否与某些最短路径树的属性相匹配。您可以假设所有边权重都是非负的。
vd 是从起始节点到 vvπ 的最短距离是 v 在从起始节点到 v 的最短路径中的前任
我的想法是:对于每个顶点 (i),将 id 与 (i.π).d 进行比较。如果 i 的前任具有更大的 d 值,那么我们就不可能有最短路径树。
我相信这可以检查教授的输出是否不是最短路径树,但我认为它不能确认输出是最短路径树。如果没有更多信息,我想不出办法做到这一点。
我在正确的轨道上吗?