在求图中任意两点间的最短距离的时候,传统的方法是Floyd.
当然,我们也可以使用经过用前向星存储边+优化+特别处理的Bellman-Ford——把每一个点作为起始点进行Bellman-Ford,而且,如果某一次Bellman-Ford对边遍历没有进行任何疏松操作则跳出Bellman-Ford,换下一个顶点进行Bellman-Ford处理。
Floyd复杂度是O(n^3),Ford做这个事情理论上的复杂度是O(N^2*k)。看起来,边数太大的时候,Bellman-Ford不适合这个工作。
但是,在USACO的3.2.6 Sweet Butter一题中,优化的Bellman-Ford远远快于Floyd,在国庆模拟赛Day1的第二题Stock中效果差距更加明显(似乎可以比标程在最后一点快上不少)。
求教:实际做题的时候哪个更好,哪个更应该应用起来?
当然,我们也可以使用经过用前向星存储边+优化+特别处理的Bellman-Ford——把每一个点作为起始点进行Bellman-Ford,而且,如果某一次Bellman-Ford对边遍历没有进行任何疏松操作则跳出Bellman-Ford,换下一个顶点进行Bellman-Ford处理。
Floyd复杂度是O(n^3),Ford做这个事情理论上的复杂度是O(N^2*k)。看起来,边数太大的时候,Bellman-Ford不适合这个工作。
但是,在USACO的3.2.6 Sweet Butter一题中,优化的Bellman-Ford远远快于Floyd,在国庆模拟赛Day1的第二题Stock中效果差距更加明显(似乎可以比标程在最后一点快上不少)。
求教:实际做题的时候哪个更好,哪个更应该应用起来?