今天我在和朋友解释我上次旅程的旅行费用时,遇到了一个有趣的问题。优化需要的分配算法
假设我们有下列支出:
# expenditures in US-$
Peter= 117
Joe= 38
Bill= 15
Chris= 0
Alan= 209
Tim= 201
Ahmet= 124
Pati= 57
Steven= 74
现在,我们已经决定,每个人都应该支付的钱一样多。鉴于平均支出为92.77778 US- $,余额是这样的:
# balances in US-$
Peter= 24.22
Joe= -54.78
Bill= -77.78
Chris= -92.78
Alan= 116.22
Tim= 108.22
Ahmet= 31.22
Pati= -35.78
Steven=-18.78
所以现在我想找到我们共有银行交易的最低数量和公平地分配份额的优化方法的交易(所以两个优化目标)
我抬头看Stable Marriage Problem,但我认为它不适用于这种情况。
打我吧:)。 +1。我只补充一点,这个解决方案没有考虑到,通常当你为某种东西进行筹码时,你支付的数额是10或5的倍数。在这种特殊情况下,你可以获得比n更好的结果-1,因为例如来自另外两个人的2笔交易可能会同时覆盖他们的正面和负面余额。 –
考虑有2 * 5 = 10个人。其中5个每个都有-1个余额,其中5个每个都有+1个余额。交易的最佳数量是5.您的算法将如何工作? –
这就是我的意思是关于“一般情况”。在给出的例子中,没有办法低于n-1交易。如果这就是乔希寻找的东西,但我认为有一个非常简单的方法可以做到这一点。 (基本上,子集总和的动态规划算法的变化。) – Sneftel