![](/img/trans.png)
[英]Distribute numbers to two “containers” and minimize their difference of sum
[英]minimize sum while minimizing difference
我想找到同时满足以下两个条件的节点(例如索引i
):
最小化从节点A
到节点i
的距离之和, i
d(A,i)
,以及从节点i
到节点B
距离之和,例如d(i,B)
,即min d(A,i)+d(i,B)
最小化这些距离之间的差异,即min |d(A,i)-d(i,B)|
。
可能这是一个众所周知的问题,但是我找不到开发合适算法的参考。
计算A到所有其他节点的距离,然后计算从B到逆图中的所有其他节点的距离(如果您的图未定向,则它在原始图中)。
您可以运行bellman ford O(VE)或Dijkstra(ElogV)。
然后在每个节点上进行迭代,计算出d(A,i)和d(B,i),因此选择一个满足您条件的参数,听起来您应该更喜欢min d(A,i)+d(i,B)
超过min|d(A,i) - d(i,B)|
。 无论如何,您将拥有所有值,因此只需要选择所需的值即可。 这将是O(V)。
因此,总体上,假设您使用Dijkstra进行解决,则解决方案将是O(ElogV)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.