コンドーム問題について改めて調べなおしてみました。

 

まず、前回あげた秋山仁とガードナーの本の他に

「入門 組合せ論」ラスロウ・ロバース (著), 秋山 仁 (翻訳), ピーター・フランクル (翻訳) 共立出版 (1985/4/25)

「Mathematica計算の愉しみ」(アジソンウェスレイ・トッパン情報科学シリーズ 16) I. ヴァルディ (著), 時田 節 (翻訳) トッパン (1991/10/1)

にも載っていることがわかりました。

この「Mathematica計算の愉しみ」にかなり詳しく書かれていて、この問題の歴史から完全な解まで書かれています。この本の原著(英語版)も1991年に出版されているようですからずいぶん前に解決していたようです。

 

結論は次の通り。(n≦m)として

 

「皆殺しの數學」ではm=n=2の場合とn=1, m=2k+1の場合は省略されていました。

n≦mとしても一般性を失わないので、「皆殺しの數學」の最後の(0 or 1)となっていた部分は0で決着がついたということになります。

 

この辺りも詳しく書かれていて、

まずハイナルとロバースは下限を任意のn,mについて示し、上限をm=n=6kの場合に示したようです。(「皆殺しの數學」の時点の最良の解)

さらにその後、枚で足りるというアルゴリズムを見つけたことで解決。そのアルゴリズムがこの本に書かれています。

 

この証明はかなり複雑で詳しくはよく分かりませんが、マスターコンドームと呼ばれる「片面が常に清潔に保たれていて、これを間に挟むことで他が汚染されないようにするもの」を1枚用意するというアイデアがポイントです。

このマスターコンドームの考えを使ったn=2, m=3の場合の解(4枚必要)もありますので以下に載せておきましょう。とても素晴らしいアイデアです。

 

医者をA,B,C、患者をa,b、手袋をア, イ, ウとM(マスター)で表しています。誰かに汚染された面を赤い点を付けて表しています。

・Aはアイを重ねてaを、Bはウイを重ねてaを手術

→ウを裏返してCに渡す

→CはウMイの順に重ねてaを手術

→イをbに渡す

→AはアM(裏返し)イの順に重ねてbを手術、Cはウイを重ねてbを手術

→アを裏返してBに渡す

→Bはアイを重ねてbを手術

以上

 

 

ちなみにWikipedia(英語版)にgrove problemのページ、そのリンクにある「MathWorld」"Glove Problem"も見つけました。

wikipediaには、手袋の裏返しがアリの場合と、ナシの場合の結果が書いてあったんですが、アリの場合の結果がガバガバで論外でした。

「MathWorld」"Glove Problem"は「Mathematica計算の愉しみ」と同じ結果でしたが、求め方の詳細は書かれていません。