如何寻找3 +方式交易的机会(就像运动队一样)

Set*_*thS 7 algorithm

我正在尝试拼凑一个算法(最好是红宝石),它将分析数据库,以寻找3+方式交易的机会,比如棒球队通常如何做.

例如:

想象一下,有100个团队,每个团队有20个左右的玩家.每个玩家都有一些可能属性的组合.(像"快速跑步","好防守"等)

每个团队都有玩家需求(具有上述可能的特定属性)以及要提供的玩家(每个都具有与上述可能选项相匹配的属性).

该理论算法可以搜索所有需求和提供,以找到可以相互交易的团队组合.

在理论场景中,想象三个团队:

A队有一名速度快的球员,需要一名防守好的球员.F队有一名防守好的球员,需要一名有良好投球能力的球员.球队Q有一名球员有很好的投手需要一名速度快的球员

因此,A,F和Q队可以进行三方交易,每个人都获胜.

我的问题是关于可以识别这个机会的算法.这是一个以前算法已经解决的问题吗?如果是这样,我会欣赏任何方向.关于如何在数据库中巧妙地使用缓存和crons,我有一些不同的想法.在Rails中构建它.只是有点卡住机会找到算法.

Nik*_* B. 4

您可以将您的需求和报价建模为图表:每个团队都是一个节点,如果可以从必须提供的玩家中获利,则团队A与团队B之间的能力存在优势。您可以在 中构建此图表,其中是报价数量,xAxBO(o + n)on是需求数量,方法是按要约属性对要约进行分类。

现在,您需要在此图中找到一个循环,该循环满足您在问题中未说明的某个属性(可能性是:长度 > 3、最大长度、最大容量……)。对于每个问题,您都可以使用现有算法来解决它们(最大流、最短路径、BFS,...)