Algorithm 如何选择最接近图形中所有其他节点的节点?

Algorithm 如何选择最接近图形中所有其他节点的节点?,algorithm,optimization,graph,puzzle,Algorithm,Optimization,Graph,Puzzle,一群人需要见面。从一个人的家到聚会的家有一定的距离。meetup house可以是任何人的家。什么是最佳的房子选择作为meetup房子?我们正在最小化总距离 我想到了一个天真的解决方案,你去每家每户,走每个人都要去的地方 这个问题的最佳解决方案是什么 选择传入权重总和最小的节点 O(V^2)时间复杂度,其中V是节点数 O(1)内存复杂性 伪代码: min_dist = INF min_node = null for node in graph: // O(V) loops sum = 0

一群人需要见面。从一个人的家到聚会的家有一定的距离。meetup house可以是任何人的家。什么是最佳的房子选择作为meetup房子?我们正在最小化总距离

我想到了一个天真的解决方案,你去每家每户,走每个人都要去的地方


这个问题的最佳解决方案是什么

选择传入权重总和最小的节点

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
min\u dist=INF
最小节点=null
对于图://O(V)循环中的节点
总和=0
对于邻居中的邻居(节点)://O(V)循环
总和+=距离(节点、邻居)
如果最小距离和:
最小距离=总和
最小节点=节点
返回最小值节点

您在最小化什么?总距离?或者最长距离?我们正在最小化总距离问题的输入是什么,一个加权的,完全连通的,无向图?是的,这是输入,不是应该是O(V+E),所以我说的原始解决方案实际上是最佳解决方案?考虑到图可能不是完全连通的,在这种情况下,您需要首先遍历图,并管理每个节点的距离O(V)表。计算传入权重之和是一个O(V)运算,因此这是一个简单的O(V^2)解决方案。也就是说,我没有更好的答案了。@AdamStelmaszczyk好的,更多的是关于问题的质量,而不是你的答案。