Nimで絶対に勝てる方法をこのブログを見ているあなたにだけお届け!!
なんと今回に限り、無料でNimの必勝法を教えちゃいます!!!
Nimに負け続けてお困りの方、生き別れの妹を賭けてNimで勝負の予定がある方、必見です!
今までNimの必勝法をあまり理解しないまま必勝法が存在することのみを覚えていて、毎回ググって勝利条件を調べていましたが、この問題の解法を考えている時によく整理できたのでまとめようと思います。
排他的論理和の説明->Nimの必勝法への応用
という順序で説明していきます。
排他的論理和
排他的論理和 : 2つの入力のどちらか一方のみが真の時のみ真を返す演算のこと。
ビットごとの排他的論理和: 整数を二進数表現した数値の各bitについて排他的論理和をとること。
ここでは以降ビットごとの排他的論理和も「排他的論理和」と呼び、整数同士の演算子としてを使用します。
3と5のビットごとの排他的論理和を例に取ると、
となります。
Nimをする上で必要になる排他的論理和の重要な性質がこちらになります。
これは排他的論理和はビットごとに「のあるフラグが立っていればの同じ位置のフラグを反転させる操作」であるので、二度繰り返すと元に戻るということを表しています。
参考
Nim
Nimとは複数の石を積み上げてできた山を複数並べた場から、先手と後手が交互に任意の山を一つ選び任意の個数の石を取っていき、取れる石の無くなった方が負けになるゲーム*1です。
参考:
Nimの必勝法
Nimの必勝法を端的にまとめると、「『全ての山の石の個数の排他的論理和を取り、それが』の状態で相手に手番を渡せたら勝ち。」です。
全ての山の石の個数の排他的論理和がでないところからは必ずこれをの状態にできるので、
「先手が始まるときに全ての山の石の個数の排他的論理和がでなければ勝利」が成り立ちます。
次に、これを説明します。
まず最初に全ての山の石の個数の排他的論理和をとします。
山の石の個数がそれぞれとすると、
となります。
Nimが終了した状態でのは明らかにです。
について
(1) からはへの遷移しかできない.
(2) となるを手で必ずにできる.
これら2つが言えると上の必勝法は正しいと言えます。
自分の手番をで終えると(1)により相手はで手番を終え、そうなると(2)によってで自分の手番を終えられるからです。
(1)は
からわかります。
(2)について考えます。
石が個ある山から何個か石を取り出して石が個になったとします。
このときのの変化は
と表せます。
(『排他的論理和の重要な性質』より、排他的論理和の演算は「総和からの寄与を消す」という演算と「をxorする」という演算が等価であるので。)
(2)が成り立つためにはが必要なので、となるように取れること、つまりとなるについて石の個数が
を満たす山が存在すると証明できればればよいです。
全ての山の石の個数の排他的論理和の一番大きいビットと同じ位置にフラグが立っている山を見つけ、その山の石の個数をとします。
について考えます。
もも番目にフラグが立っているので
の番目のフラグは立ちません。
となる番目のフラグに関して制限はありません。
したがって
が成り立ちます。
加えて、
より、
が示されました。
以上より、の一番大きいビットと同じ位置にフラグの立っている山からは操作後の石の個数が
となるように石を取り除くことができると証明できました。