可以使用什么算法来找到最佳解决方案?

时间:2011-12-01 14:38:17

标签: algorithm theory

我有正余额和负余额的帐户以及某些人之间的承诺关系。质押给负余额账户提供从认捐账户中取钱以弥补损失的权利。

我想找到调用这种取钱权的最佳顺序。

            1    2    3
A 1000 | -1000 -500 -500
B 1000 | -1000

在给定的示例中,帐户A和B具有1000的正余额,并且帐户1,2,3被优先级覆盖(1> 2> 3)。我希望通过在1,2,3上分配A和B的资金来支付尽可能多的账户,同时尊重优先权。

在这个特殊的例子中,选择A1作为我的第一对将导致仅覆盖1000但如果我选择B1,A2,A3我有覆盖2000的最佳解决方案。

如何调用此类优化问题以及解决此问题的算法是什么?

2 个答案:

答案 0 :(得分:4)

这基本上是一个网络流量问题。我将为您的示例绘制容量图(未标记的弧具有无限容量)。 s是来源,t是接收器。

     >A------->1
1000/ |\       ^\
   /  | \     /  \1000
  /   |  \   /    \
 /    |   \ /  500 v
s     |    /->2--->t
 \     \  /        ^
  \     \/        /
   \    /\       /500
1000\  /  \     /
     >B    --->3

答案不是最大流量;它是最大化1,然后是2,然后是3的流量。一个多时间算法是基于增广路径(简单路径! - 另外我们可能从优先级较高的帐户流出)修改最大流量算法优先增加路径经过1,然后是2,然后是3。

答案 1 :(得分:2)

我的协会说,如果'包装问题'(在几何领域之外应用),您可以在该区域找到信息

由于不是该领域的专家,我发现以下相关主题:

或许甚至相关: