7

私は、野球チームが通常行う方法のように、データベースを分析して 3 つ以上のトレードの機会を見つけるアルゴリズム (できれば Ruby) をまとめようとしています。

例えば:

100 のチームがあり、それぞれに 20 人ほどのプレーヤーがいると想像してください。各プレイヤーは、可能な属性の組み合わせをいくつか持っています。(「走るスピードが速い」「守備がうまい」など)

各チームには、プレーヤーのニーズ(上記の可能なセットからの特定の属性を持つ) と、提供するプレーヤー(それぞれ、上記の可能なオプションに一致する属性を持つ) があります。

この理論的アルゴリズムは、すべてのニーズとオファーを検索して、互いに取引できるチームの組み合わせを見つけることができます。

理論的なシナリオでは、次の 3 つのチームを想像してください。

チーム A にはスピードのある選手がいて、守備の良い選手が必要です チーム F には守備の良い選手がいて、ピッチングの良い選手が必要です チーム Q にはピッチングの良い選手がいて、スピードの良い選手が必要です

したがって、チーム A、F、および Q は、全員が勝つスリーウェイ トレードを行うことができます。

私の質問は、この機会を特定できるアルゴリズムについてです。これは以前にアルゴリズムによって解決された問題ですか? もしそうなら、どこを見ればいいのか教えていただければ幸いです。キャッシュとcronを巧みに使用してデータベース内でこれを構造化する方法について、いくつかの異なるアイデアがあります。Railsでビルドします。機会を見つけるアルゴリズムに少しこだわっています。

4

1 に答える 1

4

ニーズとオファーをグラフとしてモデル化できます。すべてのチームはノードであり、オファーする必要があるプレーヤーから利益を得ることができる場合A、チームごとBにキャパシティのエッジがあります。でこのグラフを作成できます。ここで、 はオファーの数、 はオファーの数であり、オファーを属性別に分類することによって求められます。xAxBO(o + n)on

次に、このグラフで、質問で述べなかった特定のプロパティを満たすサイクルを見つける必要があります (可能性は次のとおりです: 長さ > 3、最大長、最大容量など)。これらの問題のそれぞれについて、既存のアルゴリズムを使用して解決できます (最大フロー、最短パス、BFS など)。

于 2012-08-30T00:06:45.797 に答える