鉛筆パズルの整数計画法による解法定式化集 93. 復元迷路 解答 例題 (2015.7.11毎日新聞 より) ルール 左上から右下まで、すべてのマスを一度ずつ通るルートを見つける。 ①あらかじめ入っている線は必ずルートの一部となる。 ②進めるのはタテかヨコのみで、ナナメに進んだり、一度通ったマスを通ってはいけない。 変数 マスの行番号をI、列番号をJとして、マスにルートに従った矢印を付けて行く。 U(I,J) =1 =0 D(I,J) =1 =0 L(I,J) =1 =0 R(I,J) =1 =0 N(I,J) =K (I,J)の矢印が上に向いているとき 〃 いないとき J → 1 2 (I,J)の矢印が下に向いているとき 〃 いないとき (I,J)の矢印が左に向いているとき 〃 いないとき (I,J)の矢印が右に向いているとき 〃 いないとき (I,J)の矢印K番目とき I 1 ↓ 2 3 . . . Nr 3 4 . . . Nc 目的関数 minimize x (ダミー) 制約式 subject to 1.マスから出る矢印は1個 L(I,J)+R(I,J)+U(I,J)+D(I,J) = 1 右下終点マスのとき L(I,J)+R(I,J)+U(I,J)+D(I,J) = 0 (I=1,2,....Nr) (J=1,2,....Nc) 2.マスに入る矢印は1個である L(I,J+1)+R(I,J-1)+U(I+1,J)+D(I-1,J) = 1 左上始点マスのとき L(I,J+1)+U(I+1,J) = 0 (I=1,2,....Nr) (J=1,2,....Nc) 3.矢印の先に矢印の根元が付く L(I,J) ≦ L(I,J-1)+U(I,J-1)+D(I,J-1) R(I,J) ≦ R(I,J+1)+U(I,J+1)+D(I,J+1) U(I,J) ≦ U(I-1,J)+L(I-1,J)+R(I-1,J) D(I,J) ≦ D(I+1,J)+U(I+1,J)+D(I+1,J) (I=1,2,....Nr) (J=1,2,....Nc) 4.外枠から外に向かう矢印はない L(I,1) = 0 R(I,Nc) = 0 U(1,J) = 0 D(Nr,J) = 0 (I=1,2,....Nr) (J=1,2,....Nc) 5.盤面指定経路 ┏に曲がるマスの座標を(I,J)として R(I,J-1)+D(I-1,J)+L(I,J)+U(I,J) = 0 ┗に曲がるマスの座標を(I,J)として R(I,J-1)+U(I+1,J)+L(I,J)+D(I,J) = 0 ┛に曲がるマスの座標を(I,J)として L(I,J+1)+U(I+1,J)+R(I,J)+D(I,J) = 0 ┓に曲がるマスの座標を(I,J)として L(I,J+1)+D(I-1,J)+R(I,J)+U(I,J) = 0 2連水平記号の左マスの座標を(I,J)として R(I,J)+L(I,J+1) = 1 3連水平記号の左端マスの座標を(I,J)として R(I,J)+L(I,J+1) = 1 R(I,J+1)+L(I,J+2) = 1 U(I,J+1)+D(I,J+1)+U(I+1,J+1)+D(I-1,J+1) = 0 2連鉛直記号の上マスの座標を(I,J)として D(I,J)+U(I+1,J) = 1 3連鉛直記号の上端マスの座標を(I,J)として D(I,J)+U(I+1,J) = 1 D(I+1,J)+U(I+2,J) = 1 R(I+1,J)+L(I+1,J)+R(I+1,J-1)+L(I+1,J+1) = 0 6.矢印に番号を振る 左上マスに1番を振る。 N(1,1) = 1 のとき N(I,J)+1 ≦ N(I,J+1) その他 R(I,J) = 1 すなわち矢の先に繋がる矢印の番号が大きくなるように振る。 ビッグMを使って (I=1,2,....Nr) N(I,J)+1 ≦ N(I,J+1)+bigM*{1-R(I,J)} (J=1,2,....Nc) 同様に bigM=Nr*Nc とする N(I,J)+1 ≦ N(I,J-1)+bigM*{1-L(I,J)} N(I,J)+1 ≦ N(I-1,J)+bigM*{1-D(I,J)} N(I,J)+1 ≦ N(I+1,J)+bigM*{1-U(I,J)} 上下界 bounds N(I,J)≦ bigM 変数型 binary L(I,J) R(I,J) U(I,J) D(I,J) (I=1,2….…Nr) (J=1,2….…Nc) general N(I,J) (I=1,2….…Nr) (J=1,2….…Nc) 終端 end このパズルでは、経路がすべてのマスを一度ずつ通らなければならない。 この条件が付くと、問題を作るとき、盤のタテ・ヨコのマス数を自由に選ぶことができなくなる。 ① ② ③ ④ ⑤ ⑥ すなわち、左図のように白黒模様をつ付けて、経路に沿って 番号を付けて行くと、どんな経路を取っても、偶数番目が 黒マスである。したがって、全体のマスが偶数個の盤では 最終マスとなる右下のマスは黒マスでなければならない。 この例ではもう1行足して8x8とすると解がなくなる。
© Copyright 2024 ExpyDoc