有向图中一组顶点的距离

时间:2011-09-21 09:37:30

标签: algorithm graph-theory traversal

我正在设计一种算法,用于从顶点A的子集(即来自该子集的元素)中查找给定顶点v的最小距离。 我需要找到值k:

  • 从x到v的距离是k,对于A
  • 中的某些x 对于A中的所有y,
  • 从y到v的距离> = k。

我的解决方案包括:

  • 获取转置图G'
  • 使用BFS从v开始访问G'。
  • 找到距离A
  • 中顶点的最小距离

我认为这样可行并且它应该在O(| V | + | E |)时间运行。 我的问题是:这个问题有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

不,没有更好的解决方案。
请考虑以下事项:1-2-3-4A={4}v=1。你必须迭代图中的所有V,E [你必须阅读所有路径],这就产生了这个问题Omega(V+E)。因为你的算法是正确的[简单证明],并且O(V+E) [triviialy,创建G'和BFS],问题是Omega(V+E),你的解决方案是最好的,就大O符号而言。

答案 1 :(得分:0)

没有希望改进渐近最坏的情况,但实际的优化是从A和v同时搜索直到搜索满足(总是选择更新较小的边界)。