我正在设计一种算法,用于从顶点A的子集(即来自该子集的元素)中查找给定顶点v的最小距离。 我需要找到值k:
我的解决方案包括:
我认为这样可行并且它应该在O(| V | + | E |)时间运行。 我的问题是:这个问题有更好的解决方案吗?
答案 0 :(得分:1)
不,没有更好的解决方案。
请考虑以下事项:1-2-3-4
,A={4}
,v=1
。你必须迭代图中的所有V,E [你必须阅读所有路径],这就产生了这个问题Omega(V+E)
。因为你的算法是正确的[简单证明],并且O(V+E)
[triviialy,创建G'和BFS],问题是Omega(V+E)
,你的解决方案是最好的,就大O符号而言。
答案 1 :(得分:0)
没有希望改进渐近最坏的情况,但实际的优化是从A和v同时搜索直到搜索满足(总是选择更新较小的边界)。