在图中最小化最大距离

4
假设我们有一个带权无向图。假设图中有N个节点(城市),我们想在城市中建立M个医院(M<=N)。现在我们需要选择最优解,使得距离城市的医院最远的城市之间的最大距离最小。
假设我们有3座城市,并且我们需要建造1座医院。让1-3和2-3这两条边存在,其权值分别为83和71。显然,最优的解是在城市3建立医院,因为这样最大的距离是83。
我的想法是使用Floyd-Warshall算法,然后在距离数组中具有最小max值的城市中建立医院。然后更新另一个数组b,以便b1显示从城市1到拥有医院的城市的最小距离,并类似地定义bi。之后,我想按以下方式更新距离值:
dist_i_j = min (dist_i_j, b_j)

请重复此步骤,直到我们建造完所有的M个医院。

但是,这种算法会遇到一些问题。比如说,我们有这样一个图表,需要建造3个医院:

edge 1-2 with distance 1
edge 1-3 with distance 2
edge 2-4 with distance 7
edge 2-6 with distance 3
edge 3-4 with distance 5
edge 4-5 with distance 2
edge 5-6 with distance 4

在弗洛伊德-沃舍尔算法之后,距离表将如下所示:
0 1 2 7 8 4
1 0 3 7 7 3
2 3 0 5 7 6
7 7 5 0 2 6
8 7 7 2 0 4
4 3 6 6 4 0

显然,现在最好在城市6建造医院,因为最大值将会是6。现在更新数值:
0 1 2 6 4 0
1 0 3 6 4 0
2 3 0 5 4 0
4 3 5 0 2 0
4 3 6 2 0 0
4 3 6 6 4 0

但是我们现在不确定是在城市3还是城市4建立医院。如果我们在城市4建立医院,那么更新表格后,我们会发现需要在城市1建立医院,最大距离为2。
但是如果我们在城市3建立医院并更新数值,我们会发现最好在城市4或城市5建立医院。但无论哪种情况,最大值都将是3。那么我该如何解决这个问题呢?

你可能需要查看中心性指数,特别是介数中心性可能满足您的需求。还有许多其他中心性度量,具有不同程度的复杂性和适用性,可用于解决您的问题。如果对您有用,这里是一组德语幻灯片(我认为它们不提供英文版本),而这里则是课程网站及参考资料。 - G. Bach
1个回答

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接