【问题标题】:Can I use Breadth-First-Search on weighted graphs if I modify it?如果我修改它,我可以在加权图上使用广度优先搜索吗?
【发布时间】:2022-01-14 09:37:17
【问题描述】:

如果以下方法可行,我正在与朋友讨论:

我们最近在一次关于广度优先搜索的讲座中了解到。我知道这是 Dijkstra 的一个特例,每个边的权重都设置为一个。假设现在我们得到一个图,其中边的整数权重大于 1。然后我会通过引入额外的顶点并通过权重为 1 的边连接它们来修改这个图,例如假设我们有一条权重为 3 的边连接顶点 u 和 v,那么我将引入虚拟顶点 d1、d2,删除连接 u 和 v 的边,而是添加边 {u, d1}, {d1, d2}, { d2,v} 的权重为 1。

如果我以这种方式修改我的整个图形,然后从一个原始顶点开始应用广度优先搜索,这不是也有效吗?

非常感谢您!

【问题讨论】:

  • 非编程算法问题请关注Computer Science
  • 哦对不起,我不知道有更好的平台。以后我会在那里发帖

标签: breadth-first-search shortest-path dijkstra


【解决方案1】:

由于 BFS 保证在未加权图上返回最佳路径,并且您已创建原始图的未加权等效项,因此您将保证获得最短路径。

在 Dijkstra 算法上这样做失去的是运行时最优性。现在您的算法的运行时间取决于边权重,而 Dijkstra 的运行时间仅取决于边数。


这种思想实验是理解 Dijkstra 算法如何工作的好方法(例如,您将如何修改您的算法以不需要创建新图?或者对于权重为 100 的边不采取 100 步? )。事实上,这可能是 Dijkstra 最初发现算法的原因。

【讨论】:

  • 非常感谢您的回答!这正是我的想法。谢谢你的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多