K.N*_*ath 1 algorithm graph-theory graph-algorithm data-structures
假设我在边缘加权无向图中具有源节点S,目的节点D和中间节点P1,P2,P3 ......的集合A. 我想找到顶点丕∈A是最大限度地减少DIST(S,PI)+ DIST(d,PI) ?此外,从S到D的总路径应仅包含集合A中的一个节点.什么是有效的算法?我不想用蛮力的方法.
蛮力是什么意思?
如果删除"只有一个节点来自集合A"的假设,则可以按如下方式进行:
复杂性:就A加上Dijkstra实现的复杂性而言是线性的(取决于所使用的堆结构)
根据您的假设,我认为您必须独立地从每个Pi运行最短路径搜索
现在复杂性是你最短路径算法(Dijkstra或其他)的复杂性的一倍
上述两种方法的组合将是创建一个"理论"图形,其中只有路径通过A的一个点,因此从实际角度来看,您将:
复杂性:A的线性加上Dijkstra实现的复杂性(取决于所使用的堆结构),因此它与Dijkstra的复杂性相同(它必须至少"读取"所有顶点,因此线性复杂度就术语而言A无关紧要).