連鎖時計パズルとは
108Hassiumさんのブログ記事で紹介されている「連鎖時計パズル」について考えてみたところ、疑問6(可換性)が解けたので、それについて解説する。元記事も非常に面白いので必読である。
元記事:
https://note.com/108hassium/n/nbf8412349447
連鎖時計とは次のような装置である。
- 平面上のいくつかの格子点に時計が置かれている。
- 時計の針は1本で、上下左右の4方向を指すことができ、時計回りに動作する。
- 時計を叩くとその時計の針がひとつ進む。
- 時計の針が進んだあと、の針の指す方向に隣接する時計があれば、の針もひとつ進む。
例えば時計が以下のようにの正方形状に置かれているとしよう。
このとき、左上の時計を叩くと時計は以下のように連鎖的に動作する。
この記事で考えたいのは次の問題である。
(元記事の疑問6)
連鎖時計において、「時計を叩いた後に時計を叩く」操作と「時計を叩いた後に時計を叩く」操作は常に同じ結果をもたらすか?
なお、元記事の疑問2についてはPratonさんにより反例の存在が指摘されている。
https://x.com/rettouw/status/1916469288858480962
数学的定式化
証明を書きやすくするために、問題設定を数学的な言葉で書き直すとともに、状況を抽象化する。
連鎖時計においては、時計の針が何周したかという情報は時計から読み取ることができない。そこで「時計の状態は整数値で管理されており、その値をで割った余りに応じて針の向きが決まっている」と考えることにしよう。この時計の内部状態を表す整数を内部カウンターと呼ぶ。内部カウンターがのときは針は上を指し、のときは右を指すという具合である。
連鎖時計の挙動は「時計の内部カウンターがのときに針がどの時計を指しているか」という隣接関係の情報だけから決まる。そこで次のように定義する。
通常の連鎖時計に対して、を時計の集合とし、を「時計の内部カウンターがのときに針が指す時計」(存在しないときは)とすることで抽象連鎖時計が得られる。つまり、通常の連鎖時計は抽象連鎖時計の特別な場合とみなせる。
抽象連鎖時計の状態とは、集合の元のことである。上の半順序を
により定める。またに対して
と定める。
通常の連鎖時計の場合には、状態は「時計の内部カウンターがである状態」と解釈できる。
を抽象連鎖時計とする。状態およびに対し、三項関係を以下のように帰納的に定義する。
- のときは.
- のときは
- のときは.
ただしはで定まるの元である。
通常の連鎖時計の場合には、は「状態において時計を叩くことで状態に到達する」ということを表している。
操作の復元
以下、を抽象連鎖時計とする。のとき、をとのみから求めることはできるだろうか?この疑問に答えるために以下のような関数を定義しよう。
通常の連鎖時計の場合には、は「状態がからに変化する過程で時計が隣接する時計から指された回数」を表している。定義から明らかに以下が成り立つ。
この関数を使うと、のときにからを求めることができる。
に関する帰納法で示す。なのでである。ならばなので主張は明らかに成り立つ。とすると、定義から
である。帰納法の仮定より
である。ここでの定義より
が成り立つので、上の式に代入することで所望の式が得られる。
操作後の状態の特徴づけ
引き続きを抽象連鎖時計とする。以下の定理が本記事における鍵である。
とする。このときは
が成り立つような全体における最小元である。すなわち、式を満たす任意のに対してが成り立つ。
に関する帰納法で示す。なのでである。ならばなので主張は明らかに成り立つ。とすると、定義から
である。式を満たすを任意に取ると
なのでが成り立つ。またの定義より
が成り立つので、式に代入することで
が得られる。よって帰納法の仮定をに適用することでが得られる。
定理3は複数回の操作に対しても一般化できる。
抽象連鎖時計において
のとき、は
が成り立つような全体における最小元である。
に関する帰納法で示す。のときは定理3そのものである。とし、式を満たすを任意に取る。すると特に
が成り立つので、定理3よりとなる。さらにより
が成り立つので、帰納法の仮定よりとなる。
可換性
定理4は問題1への肯定的な回答を与える。実際、式はを並べ替えても変化しないので、これらの時計をどの順に叩いても最終的な状態は同じであることがわかる。
最後に
定理4は元記事における疑問3(同型不変性)にも使える気がするが、与えられた状態がいつ実現できるか(元記事の疑問1)が非自明なので直ちにはわからない。逆に状態の実現可能性について解明されれば疑問3〜5は解けると思う。