前の記事はこちら、
不等式や等式を立てていくところを見ていく。
説明するのにあたり、石の配置は
●●●●
●
アルファベットで示せるようにしておくと
ABCD
E
それぞれ座標は
A(1,1) B(1,2) C(1,3) D(1,4)
E(2,1)
とした。(y,x)の順番なので注意。
石に全部、名前をつける。座標からとって。
(1,1)にある石なら x0101 以下同様。
スタート地点はどこからでも始められるので、
最初とる石の前にまだ、見えない石があるとして、xssssとしておく。最後のところも、同様にxeeeeとしておく。
石から石の移動(スタートやエンドも含めて)で考えられるリンクをすべて、binary変数とし登録する。それぞれの変数の取りえる値は0か1。
候補という意味で、
石と石の関係として、縦か横の座標一致で、つながる。
スタートからは全ての石につながる。
すべての石からエンドへはつながる。
l_xssss_x0101
l_x0102_x0101
l_x0103_x0101
l_x0104_x0101
l_x0201_x0101
l_xssss_x0102
l_x0101_x0102
l_x0103_x0102
l_x0104_x0102
l_xssss_x0103
l_x0101_x0103
l_x0102_x0103
l_x0104_x0103
l_xssss_x0104
l_x0101_x0104
l_x0102_x0104
l_x0103_x0104
l_xssss_x0201
l_x0101_x0201
l_x0101_xeeee
l_x0102_xeeee
l_x0103_xeeee
l_x0104_xeeee
l_x0201_xeeee
そして、例えば
l_x0102_x0101が1ならば、そのリンクが存在することを示す。この変数のうちの6個が1になって、スタートからエンドまでうまくつながっていればそれが答えということになるわけ。
つづく