栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

查找树中两个顶点之间的简单路径(无向简单图)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

查找树中两个顶点之间的简单路径(无向简单图)

如果发现距离后问题在于重构路径,请按以下方式调整BFS:从要连接的两个顶点之一开始,进行BFS。对于

v
发现的每个顶点,请存储其前驱体:如果
w
通过边发现顶点
u->w
,则的前驱体
w
u
。然后,可以从目标顶点开始,从前一个顶点到另一个前一个顶点,直到到达源顶点为止,然后以相反的顺序重建路径。

例:

     J                     A       /       /        B     C    /         /          D     E     F  /  /   G     H      I

如果您计算从

D
到的路径
I
,那么您将具有以下前身:

pre[I]=Gpre[G]=Fpre[F]=Cpre[C]=Apre[A]=B        //A was discovered during the BFS via the edge B->A, so pre[A]=Bpre[B]=D

您还会有一些前辈不在您的道路上,因此它们在重建期间不会有任何问题。在示例中,您还将拥有

pre[J]=Apre[E]=Bpre[H]=F

但是对于从BFS的源

D
到目标的路径,
I
您在重建期间将无法实现。

当您重建从开始的路径时

I
,您会得到
I<-G
,然后是
I<-G<-F
,依此类推,直到您拥有相反顺序的完整路径。

如果只关心到一个目标的路径,则一旦发现目标,就可以中止BFS;否则,您可以终止BFS。但是,这不会改变复杂性。但是,如果要从一个源顶点到所有目标的路径,请执行完整的BFS;如果这样做,那么前任版本将允许您重构到任何目标顶点的路径。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/427661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号