债务优化算法

时间:2016-03-24 10:55:50

标签: algorithm optimization

您可以提出什么算法来解决下一个任务? 或者其他已知的优化任务与它类似?

你有N个人(N> 2)。有些人欠其他人的钱。您需要优化它们之间的资金流动。

示例:

  • P1欠P2 30美元
  • P1欠P3 10 USD
  • P2欠P3 20美元

优化将是:

  • P1欠P2 10 USD
  • P1欠P3 30美元

2 个答案:

答案 0 :(得分:-1)

我想我找到了一个很好的解决方案。

  1. 计算每个人的最终状态(图中的节点)。您可以通过将所有收入值汇总到此人/节点并减去所有结果来实现此目的。在我的例子中:

    以下状态:

    • P1:-40 USD
    • P2:10美元
    • P3:30美元
  2. 将最小数字(永远为负数)与最大数字(始终为正数)匹配,并更新最终雕像列表。例如:

    匹配

    • P1欠P3:30美元。

    以下状态:

    • P1:-10 USD
    • P2:10美元
  3. 重复2直到所有匹配(状态列表为空)。

    匹配

    • P1欠P3:30美元
    • P1欠P2:10美元

答案 1 :(得分:-1)

如果您仍在寻找解决方案,请参阅其他StackOverflow问题的答案,并且它在所有解决方案的可能性方面都非常深入。链接:Algorithm to simplify a weighted directed graph of debts

第一个答案给出了算法的一些想法。 但第二个答案与学术论文有关,该论文深入探讨了这一问题。