验证有向图中每个顶点的最短路径

时间:2018-01-10 11:51:00

标签: algorithm graph shortest-path bellman-ford

我正在尝试使用更有效的解决方案来解决问题,我无法考虑任何可行的方法而不是琐碎的解决方案,也无法在任何其他来源中找到相同版本的此问题我遇到了,所以我很想得到一些帮助。

假设:

1.A有向图G,其中每个边都有一个权重(权重可以是负数,G可以包含负数周期)。

2.每个顶点的d [v]字段。

3.A源顶点。

如果d [v]是从s到v的G中最短路径的长度,我如何验证G中的每个顶点?

当然我可以使用Bellman-Ford算法并将每个d [v]与Bellman-Ford为v ...提供的距离进行比较,但这非常天真且效率不高。

我可以做得更好吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以使用以下伪代码验证所有d [v]是否正确,该代码在O(E)中运行,其中E是边数。

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <ListView
            android:id="@+id/household_member_list"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</HorizontalScrollView>

w(n,v)是节点n和v之间的权重。

但是,如果您使用此方法在d [v]中发现错误,则无法推断哪些错误。在这种情况下,正如评论中已经提到的那样,您必须预先形成Bellman-Ford。