这是一个算法问题。问题陈述如下: 在2D网格(或显示每个自行车和人的位置的2D网格)中给定自行车和人的坐标(或长度为n)的两个列表,计算自行车和人的最佳配对,以使曼哈顿总距离所有的对都被最小化。保证每个人到所有自行车的距离不会相同,并且每个自行车都相同。
this question中有一个解决方案,该解决方案指出,我们可以对从低到高的所有距离进行排序,如果自行车和人都未配对,则可以将其与人配对。复杂度显然是O(n ^ 2 logn)时间和O(n ^ 2)空间。
所以我的问题是
更新:
链接的问题使用了不同的优先级标准。那么,如果准则是最小化曼哈顿总距离(除了复杂度指数级的暴力DFS算法除外),那么计算最佳配对的算法将是什么?
更新2:
如果标准是没有一对夫妇会比他们当前的伴侣更喜欢对方,那么这是一个稳定的婚姻问题。如果标准是距离的总和,则应使用匈牙利算法。
答案 0 :(得分:3)
排序算法计算出稳定的联姻,因为每当形成一对时,每个邻居要么可用,要么成对出现。
稳定的婚姻不是最理想的。自行车和距离2的人宁愿在一起,这迫使自行车和距离9的人配对。总成本为11,比3 + 4 = 7还差。
B
2 |3
B---P
|4
P
一种最佳算法是计算两两之间的距离并运行匈牙利算法以计算最小成本的完美匹配。