首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为此,我应该使用什么图遍历算法?

为此,我应该使用什么图遍历算法?
EN

Stack Overflow用户
提问于 2010-08-27 02:34:33
回答 4查看 1.3K关注 0票数 3

我需要以某种方式遍历有向图,但我不确定要使用的算法。也许Stackoverflow可以提供帮助。

情况-我有一个有向图,其中的边有一个与它们相关联的数字。让我们假设这个数字是以英尺、英里、……为单位测量的距离。我想从一个起始结点开始遍历,并找到与该起始结点相距一定距离的所有边

例如,我想从某个节点开始,遍历图形,找到从开始到现在走了100英里的每一条边。例如(2),start_node - edge-1(80英里)->节点(2)- edge-2(40英里)->节点(3)-edge-3(50英里)- start_node - edge-4(40英里)->节点(4)- edge-5(70英里)->节点(5)--edge-6(50英里)--

从start_node开始,行进100英里,答案是edge-2,edge-5。有没有关于我应该使用/考虑的遍历算法的想法?

谢谢

EN

回答 4

Stack Overflow用户

发布于 2010-08-27 02:37:52

我会选择Dijkstra algorithm。当指向最后一个标记节点的路径超过定义时,就停止。

票数 3
EN

Stack Overflow用户

发布于 2010-08-27 02:37:20

Dijkstra's algorithm

票数 2
EN

Stack Overflow用户

发布于 2010-08-27 04:01:41

假设没有一条边可以多次遍历,那么您的问题就是Longest path problem的泛化,这是NP难的。因此,像Dijkstra算法这样的多项式时间方法将不起作用。

如果你的图不是很大,你可以做动态编程:一个表Dv,k,它为每个顶点v和每个边数存储从根到v的所有可能的距离,有k条边,加上每个可能距离的所有可能的前置。如果Dv,k-1被完成,则可以填充Dv,k。您可以重复此操作,直到距离不再低于100,然后可以从成本恰好为100的每个顶点开始回溯。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3578313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档