我有一个图G,其中包含起始节点S和结束节点E。这个图的特殊之处在于,边不具有成本,而是节点具有成本。我想要找到连接S和E的路径(一组节点W),使得max(W)最小化。等价地,如果我删除所有成本大于k的节点,那么S和E仍然连接的最小k是多少?
我有一个想法,但想知道它是否正确和最优。以下是我的当前伪代码:
我认为最坏情况下时间复杂度为O(n log n),其中n是节点数。
以下是我特定问题(过滤)的一些细节,但我也对此问题的算法感兴趣。节点权重在0到给定的最大值之间随机均匀分布。我的节点在R²平面上呈泊松分布,如果两个节点之间的距离小于给定的常量,则它们之间存在一条边。可能会有很多节点,因此它们在foreach中动态生成(隐藏)。我的起始节点在(0,0),结束节点是距离(0,0)大于R的任意节点。
编辑:节点上的权重为浮点数。
我有一个想法,但想知道它是否正确和最优。以下是我的当前伪代码:
L := Priority Queue of nodes (minimum on top)
L.add(S, S.weight)
while (!L.empty) {
X = L.poll()
return X.weight if (X == G)
mark X visited
foreach (unvisited neighbour N of X, N not in L) {
N.weight = max(N.weight, X.weight)
L.add(N, N.weight)
}
}
我认为最坏情况下时间复杂度为O(n log n),其中n是节点数。
以下是我特定问题(过滤)的一些细节,但我也对此问题的算法感兴趣。节点权重在0到给定的最大值之间随机均匀分布。我的节点在R²平面上呈泊松分布,如果两个节点之间的距离小于给定的常量,则它们之间存在一条边。可能会有很多节点,因此它们在foreach中动态生成(隐藏)。我的起始节点在(0,0),结束节点是距离(0,0)大于R的任意节点。
编辑:节点上的权重为浮点数。