Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 转账的最佳方式';人与人之间的平衡_Algorithm_Math_Optimization - Fatal编程技术网

Algorithm 转账的最佳方式';人与人之间的平衡

Algorithm 转账的最佳方式';人与人之间的平衡,algorithm,math,optimization,Algorithm,Math,Optimization,我正在寻找一种在账户之间转移资金的最佳方式,以确保每个人的账户上都有相同的金额。我已经正确地计算了每个账户中应该产生的数字,但我正在搜索一个算法,确定谁应该向谁转账,以及应该向谁转账多少资金(没有中央银行),这样每个人的结果都是相同的余额 例子 在这个例子中,每个人最终都应该有一个平衡点o 2 500。为实现这一目标: A人应向B人转让5000英镑 人员D应将12500转移至人员C 总而言之,我掌握的数据如下: 人数(>=2) 每个人的起始平衡 每个人在转账后应该有什么余额 有什么算法吗

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

例子 在这个例子中,每个人最终都应该有一个平衡点o 2 500。为实现这一目标:

  • A人应向B人转让5000英镑
  • 人员D应将12500转移至人员C
总而言之,我掌握的数据如下:

  • 人数(>=2)
  • 每个人的起始平衡
  • 每个人在转账后应该有什么余额

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

这个问题是NP难的。它本质上相当于:

给定一组人员和一定数量的贷项和借项,找出这些人员之间的最小转账次数,以结算所有贷项和借项


在这里,你的目标是使每个人的总数等于平均数,这基本上与上面的问题相同,只要你从每个人的帐户中减去平均总数。

这个问题是NP难问题。它本质上相当于:

给定一组人员和一定数量的贷项和借项,找出这些人员之间的最小转账次数,以结算所有贷项和借项

在这里,你的目标是使每个人的总数等于平均数,这基本上与上面的问题相同,只要你从每个人的账户中减去平均总数

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