Unfair Tournament

bottom-up な DP の構成で,最悪の場合列挙する数が指数になってしまうのだけれど,これを何とか圧縮する方向を模索.
特に今,2^n人が参加する部分トーナメントにおいて,A を含むどんな参加者の組み合わせにおいても A がこの部分トーナメントを勝ちぬけられるような部分トーナメントの組み方がある場合,「Aが n 次勝ち抜け可能である」と勝手に呼ぶことにする.そうすると,本来 A を含めた{}_NC_{2^n}の組み合わせを列挙しないといけなかったものが,「A が n 次勝ち抜け可能である」という情報だけで済む.さらに,B が A を除くある2^n-1人との部分トーナメントを勝ち抜けられるということが分かっていて,さらに B が A に勝てるとすると,2^{n+1}人が参加する部分トーナメントで,A と B を含む任意の参加者の組み合わせに対して B が勝てるようなトーナメントの組み方があることが分かる.これを「(B, A) が n+1 次勝ち抜け可能である」と勝手に呼ぶことにする.こういう記述の仕方にしておいて,さらにある程度の必要条件を満たした任意の参加者が,ある自然数 p に対して「p 次勝ち抜け可能」になるのではないかとゆ〜淡い期待を抱きつつ,もしくはトーナメントの高さの増加に対して p の増加が十分小さければ,記述するべき情報が高々多項式になるので,そういうのが証明できないかにゃーと考え中.
いずれにせよ,手計算では限界がある大きさのトーナメント(高さ>3)で色々試してみないと本質が見えてこない気がするので,実際にプログラム書いてこんぴーたさんに色々やらせてみて,ある程度性質を把握する必要がありそう.
ちなみに,K.INABAさんも書いている通り,A が勝ち抜けられるための必要条件として

  1. トーナメントグラフ上で A から任意の参加者に到達可能であること
  2. A の勝敗表での勝利数がlog N以上であること

がある.A が1の必要条件を満たしているなら A を根とした深さ2の全域木が必ず張れるはず.別の言い方では,A を根とした深さ3以上の全域木が得られるなら,深さ3以上の枝を2以下に書き換えることができる.この強い性質から,ある程度以上の高さのトーナメントではそれまでと全然違う新しい性質が見えてくると期待してるわけなんですが…….
#上の特に後半は大嘘.たとえトーナメントグラフ上で任意の参加者に到達可能でも,ある参加者を任意の深さにするように勝敗表を調整することが可能.
#ただし,ある参加者がいてその参加者を根とする深さ2の spanning tree を張ることが可能.これはK.INABAさんが紹介されている通り.