人与人之间转移账户余额的最佳方式

时间:2020-04-14 20:59:07

标签: algorithm math optimization

我正在寻找一种在帐户之间转移资金的最佳方法,以确保每个人的帐户金额都相同。我已经正确计算了每个帐户应产生的数字,但我正在寻找一种算法,确定谁应该向谁转移以及多少资金(没有中央银行),以便每个人都拥有相同的余额。

示例

+--------+---------+
| person | balance |
+--------+---------+
| A      | 7 500   |
| B      | -2 500  |
| C      | -10 000 |
| D      | 15 000  |
+--------+---------+

在此示例中,每个人的结余应为o 2500。要实现这一目标:

  • 人员A应将5000转移给人员B
  • 人员D应将12 500转移给人员C

总结一下我拥有的数据是:

  • 人数(> = 2)
  • 开始平衡每个人
  • 每个人在转帐后应该拥有什么余额

有什么算法吗?那是一个NP完全问题吗?

1 个答案:

答案 0 :(得分:0)

此问题很难解决。它基本上等效于this other problem

给定一组人和一定数量的贷方和借方,找到这些人之间结清所有贷方和借方的最小转账数。

在这里,您的目标是使每个人的总数等于平均值​​,一旦从每个人的帐户中减去了平均总数,这基本上就是上述问题。