【发布时间】:2015-04-11 15:01:29
【问题描述】:
假设我们有一个加权无向图。假设图中有 N 个节点(城市),我们要在城市中建立 M(M
假设我们有 3 个城市,我们需要建造 1 个医院。假设有边 1-3 和 2-3,权重分别为 83 和 71。显然最优方案是在城市 3 建一所医院,那么最大距离将是 83。
我的想法是使用 Floyd-Warshall 算法,然后在距离数组中具有最小最大值的城市建造一家医院。然后更新另一个数组 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
在 Floyd-Warshall 算法之后,距离表将如下所示:
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。那么我该如何克服这个问题?
【问题讨论】:
-
您可能想查看中心指数,特别是 betweenness centrality 可能会满足您的需求。还有一大堆其他的中心性度量,它们对您的问题具有不同程度的复杂性和适用性。如果对您有用,here 是一组德语幻灯片(我认为它们没有英文版),here 是带有参考资料的课程网站。
标签: algorithm graph nodes graph-theory edge-list