繁体   English   中英

如何在线性时间内边缘权重为0或1的有向图中找到最短路径?

[英]How to find shortest path in a directed graph that has edge weights either 0 or 1 in linear time?

我正在寻找一种方法来增加用于在未加权有向图中找到单源最短路径的BFS方法,并在O(N + M)时间内解决上述问题。 其中N是顶点数,M是边数

我想到了以下几点:

  1. 收缩图表的顶点,它们之间的边权重为0。 但这绝对是错误的,因为我将更改图形的属性并向最初没有的顶点添加新边。

  2. 将边权重更改为1和2.然后在长度为2的路径中创建虚拟顶点,将这些边转换为权重1的边。但这会给出错误的答案。

更一般地说,当边缘权重在线性时间内在0和MAX之间时,如何在有向图中找到单源最短路径。 (MAX是最大边缘重量)

您可以使用bfs进行一些修改:维护deque而不是队列,如果使用0边,则在顶层的前面添加顶点,否则添加到deque的背面。(我的意思是0-1情况)

我认为你可以通过顶点收缩来解决这个问题。 这里只是一个提示:

首先形成由0权重边连接的顶点的连通分量,并在每个分量中选择一个代表性成员。 这将为您提供合同图。

然后解决未加权的问题。

真实路径将由连接代表性成员的“边缘”(权重1)和连接组件内的顶点的“边缘内”形成,从输入的边缘到输出的边缘。 换句话说,您需要能够找到从任何代表到任何其他代表的路径。

对不起,但在这种复杂性中,这是不可能的。

您可以查看此表格,了解最短路径算法的复杂性

当您解释问题时,您希望保持0和1的权重。如果您能够承受去除0权重边缘,则会退化为具有未加权边缘的最短路径,这应该是您所需要的复杂度。(广度优先搜索将是关键字然后)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM