2000.05.19 deepgreen 「解の存在条件式のパターンと0解のpushパターンが一致する」ことの 説明です。(証明と言えるほど厳密ではないので) □問題の定義 0解:反転する部分が全くないようなある特定のpushパターン (ある複数ボタンを押すと何も押さないのと同じになること) 5x5のライツアウトの場合 解の存在条件式(の1つ) 0解 a−c−e 10101 f−h−j 10101 −−−−− 00000 p−r−t 10101 u−w−y 10101 要するに、言いたいことは、 (1)解の存在条件式が分かると、そのパターンから0解を生成できる (2)逆に、0解が分かると、それから解の存在条件式を生成できる □連立式の作成 @ 問題面での位置および解のパターンでの位置を以下のように表現する 分かり易くするために、問題面は小文字、解のパターンは大文字とする。 [問題面] [解] abcde ABCDE fghij FGHIJ klmno KLMNO pqrst PQRST uvwxy UVWXY Aの位置をpushすると、a,b,fの位置が反転する。これを、 式01 A == (a,b,f) と記述することにする。(a,b,f)をAの構成要素と呼ぶことにする。 同様に、 式02 B == (a,b,c,g) 式03 C == (b,c,d,h) ・・・ 式25 Y == (t,x,y) となる。 A これを、以下のように略記することにします。 式xx 構成要素 push位置 1 ab---f------------------- A------------------------ 2 abc---g------------------ -B----------------------- 3 -bcd---h----------------- --C---------------------- 4 --cde---i---------------- ---D--------------------- 5 ---de----j--------------- ----E-------------------- 6 a----fg---k-------------- -----F------------------- 7 -b---fgh---l------------- ------G------------------ 8 --c---ghi---m------------ -------H----------------- 9 ---d---hij---n----------- --------I---------------- 10 ----e---ij----o---------- ---------J--------------- 11 -----f----kl---p--------- ----------K-------------- 12 ------g---klm---q-------- -----------L------------- 13 -------h---lmn---r------- ------------M------------ 14 --------i---mno---s------ -------------N----------- 15 ---------j---no----t----- --------------O---------- 16 ----------k----pq---u---- ---------------P--------- 17 -----------l---pqr---v--- ----------------Q-------- 18 ------------m---qrs---w-- -----------------R------- 19 -------------n---rst---x- ------------------S------ 20 --------------o---st----y -------------------T----- 21 ---------------p----uv--- --------------------U---- 22 ----------------q---uvw-- ---------------------V--- 23 -----------------r---vwx- ----------------------W-- 24 ------------------s---wxy -----------------------X- 25 -------------------t---xy ------------------------Y B 次に、+演算を以下のように定義する。 X+Y == (X,Yの片方にしか存在しないもののリスト) つまり、X,Y共通に存在する要素を取り除いたもの B+Cの場合、b,cが共通なので、a,d,g,hがのこり、 B+C == (a,d,g,h) となる。この式の意味は、「B,Cをpushすると、a,d,g,hが反転 する」ということになりますが、実際の操作と一致しています。 つまり、複数の個所をpushする操作は、上記の+演算となります。 □連立式の解 ところで、この連立式は見覚えがあるでしょう。高橋謙一郎さのHPで、解 を求める時に作成したものと全く同じです。しかも、+演算も同様に排他的 論理和として定義されています。 従って、これをa,b,c,...yについて解くと、 式xx 構成要素 push位置 1 a-----------------------y -BCD---H-J---NO----T----- 2 -b---------------------x- AB-DE-G-----MNO---S------ 3 --c--------------------xy A-CDEF-HI---MN-PQRST-V--- 4 ---d-------------------x- ABC---G---------Q---UVW-- 5 ----e-------------------y -BC-EF----K-M-O--R-TUV--- 6 -----f-----------------xy --C-E-GH-J--M-----ST----- 7 ------g------------------ -B-D-FG-IJ---N-PQR---V--- 8 -------h---------------xy A-C--F-HI-----OP-R-TU-W-- 9 --------i---------------- --C---GHI-K--NOP--S--VW-- 10 ---------j-------------xy A----FG---K-M-O-QR-T--W-- 11 ----------k------------x- ----E---IJ--M-OPQRS--V--- 12 -----------l-----------x- ----------------Q---UVW-- 13 ------------m------------ -BC-EF---JK-MN---R--UV--- 14 -------------n---------x- ABC---G-I---MNO---S------ 15 --------------o--------x- AB--E--HIJK--NOPQ-S-U---- 16 ---------------p-------xy --C---GHI-K---OP-R-TU-W-- 17 ----------------q-------- --CD--G--JKL--O-QRS---W-- 18 -----------------r-----xy --C-E-GH-JK-M--PQ-STU---- 19 ------------------s------ -BC--F--I-K--NO-QRS---W-- 20 -------------------t---xy A-C-EF-H-J-----P-R-TU-W-- 21 --------------------u---y ---DE--H---LM-OP-R-TUV--- 22 ---------------------v-x- --CDE-G-I-KLM-------UVW-- 23 ----------------------wxy ---D---HIJ-L---PQ-ST-V--- 24 ------------------------- -BCD-F-H-JKL-NOP-R-T-VWX- 25 ------------------------- A-C-EF-H-J-----P-R-TU-W-Y (解釈) 式01は、「B,C,D,H,J,N,O,Tをpushすると、aとyが反転する」と いう意味です。 では、式24,式25はどのような意味なのだろうか? 左辺は反転するものなし=無操作であり、右辺はpushパターンと なっているので、これは、0解ということになります。 つまり、式24,式25は、0解の存在を示している。 ところで、「以前は、式24,式25が解の存在条件式を表していた」が、 その「同じ式が0解を定義している」点に着目してください。 これこそが、最初に求めていた結論である。 □まとめ 前回の方法と今回のアプローチとの関係を整理すると、 [前回] 問題面 pushパターン □□□ □■□ □■□ <==== ■■■ □□□ □■□ 問題面の■を反転させる条件(右のpushパターン)を求め、その解法の 結果として、解の存在条件が判明した。 [今回] pushパターン 問題面 □□□ □■□ □■□ ====> ■■■ □□□ □■□ 「pushパターンの■を反転させると問題面のパターンが反転する」とい うルールそのものの関係式を定義し、pushパターンの重ね合わせが +演算(排他的論理和)で表現できることを確認した。この結果、今回 の連立式が前回と全く同じものとなった。その解法の結果を解釈するこ とで0解の存在パターンを求めることができた。 何故、このような結果が得られたかは、いままでの経過よりあきらかで ある。前回と今回のアプローチは全く同じパターンになっていることが その原因です。 もし、ルールとして以下のような反転パターンのゲームを考えると、 このような結果がえられないことは明らかであろう。 pushパターン 問題面 □□□ □□■ □■□ ====> ■■□ □□□ □■□ (おわり)