特定のラダーが有効かどうかを効率的に判断する方法は?


28

私の地元のスカッシュクラブには、次のように機能するはしごがあります。

  1. シーズンの初めに、クラブの各メンバーの名前を別々の行に並べた表を作成します。
  2. 次に、各名前の横に、勝ったゲームの数とプレイしたゲームの数を記入します(プレイヤーの勝ち/ゲームの形式で)。

したがって、シーズンの初めには、テーブルは次のようになります。

Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0

任意の2人のプレイヤーが試合をすることができ、1人のプレイヤーが勝ちます。テーブルの一番下に最も近いプレーヤーが勝った場合、プレーヤーの位置が切り替わります。その後、ステップ2を繰り返し、各プレイヤーの隣の勝ちとゲームの数を更新します。たとえば、アリスがビリーを破った場合、

Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0

これらの試合はシーズンを通して続き、最終的にはおおよその強さの順にリストされます。

残念ながら、更新はかなり偶然に行われるため、間違いが発生します。以下は無効なテーブルの例です。つまり、いくつかの開始順序(シーズンの初めに使用した順序を忘れてしまった)と一致と結果のシーケンスに対して上記の手順を正しく実行しても作成できなかったテーブルです。

Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0

Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0

Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1

テーブルが与えられた場合、それが有効かどうかをどのように効率的に判断できますか?以下に注意することから始めることができます。

  1. 元の開始順序を忘れているため、名前の順序は重要ではありません。

  2. 勝利の合計数は、プレイしたゲームの数の合計の半分でなければなりません。(これは、上記の最初の例が無効であることを示しています。)

  3. テーブルが有効であるとします。その後、マルチグラフがあります-複数のエッジを認めるがループは認めないグラフ-各頂点がプレイヤーに対応し、各エッジが試合に対応します。次に、各プレーヤーがプレイするゲームの総数は、マルチグラフ内のプレーヤーの頂点の度合いに対応します。したがって、適切な頂点角度を持つマルチグラフがない場合、テーブルは無効でなければなりません。たとえば、1次の1つの頂点と3次の1つの頂点を持つマルチグラフはないため、2番目の例は無効です。[このようなマルチグラフの存在を効率的に確認できます。]

したがって、最初に適用できるチェックは2つありますが、3番目の例のように、無効なテーブルは引き続き許可されます。このテーブルが無効であることを確認するには、逆方向に作業して、テーブルが発生する可能性のあるすべての方法を使い果たします。

この決定問題を解決する多項式時間(プレイヤー数とゲーム数)アルゴリズムを考えることができる人がいるかどうか疑問に思っていましたか?


2
多分...監督multigraphsためハヴェルハキミタイプの定理がある
アリヤバータ

なぜ3番目の例が不可能なのでしょうか?アリスがボブに勝ったら、キャロルがボブに勝ち、キャロルがダフィーに勝ったとしたらどうでしょう。その後、アリスは1ゲーム中1勝、ボブは2ゲーム中0勝、キャロルは2ゲーム中2勝、ダフィードは1ゲーム中0勝?
utdiscant

utdiscant:各ゲームの後、下のプレイヤーが勝った場合、プレイヤーは切り替わります。3番目の例が可能であることを示すには、開始設定と一連のゲーム(つまり、順序付き)を指定して、指定されたテーブルを作成する必要があります。
ベン

aryabhata:ありがとう-はい、それは有用なステップでしょう。残念ながら、かなり難しいように聞こえます
ベン

1
これを研究/解決する提案。SAT問題として指定します。その後、多くのランダムなケースを試してください。標準ソルバーにとって難しいものがあるかどうかを確認します。そうでない場合は、Pの制約されたサブセットである可能性があります
。– vzn

回答:


1

これは完全な答えではありません。問題の簡単な説明といくつかの発言をします。

頂点がラベル付けされているグラフから始めます。[n]

から有向エッジを追加する操作がありますvulabel(v)<label(u)

Gne

NPG

観察

label(v)vv

この観測とHavel-Hakimiを組み合わせて多項式時間アルゴリズムを作成することは可能だと思います。


こんにちは。ありがとうございました。はしごの文脈であなたの観察を再び言い表してもいいですか?3次のグラフには反例があると思いますが、おそらく誤解しています。
ベン

@Ben、私はそれが次のようになると思います:はしごの最後の人がトーナメントの開始時に勝ったすべてのゲームをプレーし、トーナメントの終わりに負けたすべてのゲームをプレーしたと仮定することができます。これに反例があるかどうかを教えてください、私はこれを注意深くチェックしていません。
カベ

残念ながら、このようなラダーがあります:A 2/2 B 0/1 C 0/1
ベン・

@Ben、この例は私が書いたものと一致していると思います。つまり、観察の反例ではありません。
カベ

はしごは有効です。最後にプレイしたゲームがCの損失だったと仮定しましょう。最後のゲームの前に、ラダーは次のようになっているはずです。C0/0 B 0/1 A 1/1ですが、このラダーは無効です。したがって、我々は最後の試合は、Cの損失だったと仮定することはできません
ベン

0

私は問題を解決していませんが、部分的な結果があります。そのステートメントを以下に示します。誰かが興味を持っているなら、私は証拠を書きます。

命題。はしご(1)に複数のプレーヤー(2)が含まれており、同数の勝敗があるとします。(3)各プレイヤーが少なくとも1つのゲームに勝ち、少なくとも1つのゲームに負けた場合。その後、ラダーは有効です。

WiiLiiRi

Li=0

Wik:Rk>Ri,Wk>0(Lk1)++k:Rk<RiLk,
LiWi=0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.