如何选择图中最接近所有其他节点的节点?
How to choose node closest to all other nodes in a graph?
一群人需要见面。从一个人的房子到聚会的房子有一定的距离。聚会场所可以是任何人的场所。选择什么房子作为聚会场所最合适?我们正在最小化总距离。
我想到了一个天真的解决方案,即您去每个房子并计算每个人必须前往该位置的距离。
这个问题的最佳解决方案是什么?
选择传入权重总和最小的节点。
O(V^2)时间复杂度,其中V是节点数。
O(1) 内存复杂度。
伪代码:
min_dist = INF
min_node = null
for node in graph: // O(V) loops
sum = 0
for neighbor in neighbors(node): // O(V) loops
sum += dist(node, neighbor)
if min_dist <= sum: // small optimization
break
if min_dist > sum:
min_dist = sum
min_node = node
return min_node
一群人需要见面。从一个人的房子到聚会的房子有一定的距离。聚会场所可以是任何人的场所。选择什么房子作为聚会场所最合适?我们正在最小化总距离。
我想到了一个天真的解决方案,即您去每个房子并计算每个人必须前往该位置的距离。
这个问题的最佳解决方案是什么?
选择传入权重总和最小的节点。
O(V^2)时间复杂度,其中V是节点数。
O(1) 内存复杂度。
伪代码:
min_dist = INF
min_node = null
for node in graph: // O(V) loops
sum = 0
for neighbor in neighbors(node): // O(V) loops
sum += dist(node, neighbor)
if min_dist <= sum: // small optimization
break
if min_dist > sum:
min_dist = sum
min_node = node
return min_node