确定依赖关系的算法

时间:2018-09-07 21:10:38

标签: algorithm sorting

我将使用哪种算法来确定哪些交换依赖于另一个交换?

规则

  1. 交换可以并行发生,除非有依赖性
  2. 交换分批进行,例如。依赖另一个的交易 必须等待,直到依赖交换已处理之前的 批次。

这是一个例子

  • Johnny有100美元,还有5个苹果
  • 蕨类植物有$ 150和三个橙子
  • 比尔有$ 0和3个桃子

掉期队列

A)蕨(Fern)以5美元的价格从约翰尼(Johnny)购入苹果

B)约翰尼以140美元的价格将2个桃子交易给比尔

C)弗恩(Fern)以10美元的价格将1个桃子交易给比尔(Bill)

实际依赖项

A-> B

C

一旦我知道了依赖项,就可以使用拓扑排序来确定在哪个批处理中要处理的顺序。我该如何编写代码来自动确定依赖关系?

如果当前状态下的余额足够,请进行交换,如果找不到需要首先完成的交换。

1 个答案:

答案 0 :(得分:1)

我相当确定,尝试将其组织为尽可能少的批次将是NP完整的。但是,贪婪的解决方案将相当容易地提供相当好的解决方案。

我的意思是,您可以运行所有交换,将那些具有可用资源的交换添加到当前批次中。运行那些交换。重复下一批。继续直到所有交换用尽。