このセクションは、ちょっとだけ難しい話になります。
なるべく数学の専門用語は使わないようにしますが、どうしても触れなければならない部分も出てきます。順を追ってわかりやすく説明してみますので、どうかお付き合いください。
図1.3 逆15パズル |
---|
では、14−15パズルとこの逆15パズル、一体どういう関係があるのでしょう。
それを説明する前に、14−15パズルの形からはじめる15パズルのJavaアプレットをこちらに用意しましたので、Javaアプレットをご使用の方はそのウィンドウを開いておいてください。そうでない方は、お手元の15パズルを14−15パズルの形(図1.2 参照)にならべておいてください。
用意が出来ましたら、そこから逆15パズルを作ってください!
いかがですか? できたでしょう!
手元のJavaアプレットでない15パズルをお持ちの方は、他の完成できなかった形からはじめてみて、この逆15パズルの形に出来るかどうか試してみてください。必ず出来ると思います。だって、どの形も14−15パズルの形になったはずなんですから。
ここで、一つの考え(予想)が浮かびませんか? つまり、
『完成できない15パズルの初期配置が見つかったら、その左右対称にしたものは完成できる!』
ということです。
因みに、もしこの予想が正しいとすると、全ての初期配置(14−15パズルの形を含む)の中で、完成させられる15パズルは全体の半分だということが分かります。
結論から言いますと、実はこの予想は正しいのです。
15パズルの持つこの性質を、専門用語でパリティ(parity/偶奇性)と言います。
みなさんの中にも、パリティチェックという言葉を聞いたことのある人がいらっしゃるかもしれません。そのパリティと同じです。
そしてまさに、パリティチェックをすることで15パズルの完成できるかどうかの判定が出来るのです!
このセクションは、前のセクションより更に少し難しくなります。
でもやはり数学の色は濃く出さないようにしますし、今回は実際の判定方法を実践を交えて紹介しますので、頑張って読んでみてください。
まずはとにかく、手を動かすことからはじめましょう。 図1.1 をもう一度見てください。例として、この図を使って説明します。
一番左上の数字は[4]です。そこから右に見ていって、1行見たら次の行の一番左に移ってまた右に見て、最後まで各々の数字を見ていってください。
その中に、4より小さい数字はいくつありましたか?
[3]、[2]、[1]の順に、3つありましたね。
同じことを、今度は[4]の隣の[13]でやってみてください。つまり、そこから右にずーっと数字を見ていって、13より小さい数字を数えていってください。
[8]、[3]、[12]、[6]、[9]、[5]、[2]、[1]、[11]、[7]、[10]の順に、合計11個ありましたね。
これと同じことを、ずーっと最後までやってみてください。
注意点は、その数字よりも右(下)の数字だけを見て、その数字より左(上)にある数字は見てはいけない、ということです。そしてその数字よりも小さい数字がいくつあるかを全て数えてください。
全部数えたらそれを足してみましょう。この場合、こうなるはずです。
3+11+6+10+2+8+3+4+2+1+3+0+0+1+0 = 54
これは、偶数ですね。
では同じことを、14−15パズルでも試してみてください、といっても、これはすぐに分かりますね。
[14]と[15]が入れ替わっているだけなので、この部分だけが影響して、その数は 1 となり、これは奇数です。
では次に、更に同じことを逆15パズルでもやってみましょう。 ここで注意しなければならないことは、これは空マスが一番右下には無いということです。
しかし一番下の行において、3回の移動で空マスを右下に持っていくことが出来るので、この場合は問題なくそのまま数えていっても構いません。 でも普通は、この数え方は空マスが一番右下にある時の方法だと覚えておいてください。
で、具体的に計算しますと、 21 となります。
ここで、専門用語をもう一つ。今数え上げたこの数のことを転倒数(inversion number)と言います。
即ち、図1.1 の配置の転倒数は54、14−15パズルの転倒数は1、逆15パズルの転倒数は21、というわけです。
勘のいい方なら、もう気付かれたかもしれませんね。そうです。
この転倒数が、偶数ならば完成できる、奇数ならば出来ないということです!
そしてこれがパリティ(偶奇性)という言葉の意味であり、この転倒数を数えることがパリティチェックなのです。
図1.4 15パズル(完成図) |
---|
ところで、先程「完成できる配置の左右逆のものは完成できない」と言ったのを覚えておいででしょうか。
これもこのパリティから説明が出来ます。 と言っても、かなり数学的な話になりますので、ここではその理由の概要だけ話します。
転倒数が偶数の配置なら、左右を逆にした配置は、転倒数は奇数になります。奇数だったら偶数になります。つまり、パリティが入れ替わるのです。
以上(笑)
なお、ここでは結果だけに触れましたが、その証明をきちんとやっていません。
次回は、その証明に挑戦してみたいと思います。
ただしこれは、かなり数学的知識を必要とするものになると思いますので、興味のある方だけで結構です。興味の無い方は、読み飛ばしてくださっても構いません。
To be continued...