CCM をつかった N クイーン問題とならべかえの解法

はじめに

CCM では問題をとくのにプロダクション規則と局所評価関数とをつかいます. N クイーン問題やならべかえの問題をとくには,1 個のプロダクション 規則と 1 個の局所評価関数とをつかいます.このページではN クイーン 問題を念頭において説明しますが,ならべかえでもプロダクション規則としては まったくおなじものをつかいます.

基本のプロダクション規則

クイーンの列交換規則

プロダクション規則は,データにそれを適用することによって,データの 状態を変化させるものです. アプレットのページでつかわれている 規則のなかでもっとも単純なのは ``Single catalyst swapping rule'' です. これは 2 個のクイーンの列を交換 (swap) する規則です. 右のアプレットについているボタンをおして,「列の交換」の意味を 確認してください. (右のアプレットの原始プログラム)

この規則をつかうときには,このような単純な操作 をことなるクイーンの対に対してくりかえすことによって,解をもとめます. クイーンの対はランダムに (乱数をつかって) 選択しますが,選択された クイーンに対して実際に規則を適用するかどうかは,後述の局所評価関数を つかってきめます.その方法についても後述します.

右図にしめした規則はじつはアプレットの ページの ``No catalyst swapping rule'' で,このままつかっても実際 には解をもとめることはできません.実際には第 3,第 4 のクイーンを 規則に記述してやりますが,それについても後述します.

クイーンの列移動規則

``Variable catalyst MOVING rule'' では 1 個のクイーンの列をランダムに 変更します.この規則の意味を右のアプレットについているボタンをおして 確認してください.(ボタンをおしても変化がおこらないようにみえること がありますが,くりかえしおしてみてください.変化がおこらないのはなぜ だかわかりますか?). (右のアプレットの原始プログラム)

局所評価関数

局所評価関数は 2 個のクイーンのあいだに定義されます.クイーン x, y のあいだの局所評価関数 o(x, y) の値は,x, y がたがいにとりあえる位置にあるときには 0, そうでないときには 1 と定義します.2 個のクイーンはそれらがおなじ行, おなじ列またはちょうど対角方向にあるときにとりあうことができるので, そのときには局所評価関数の値は 0 になるわけです. (この説明に対応するアプレットもつくりたいのですが,規則の説明の ためのアプレットより複雑になるので,まだつくっていません.)

規則の適用法

プログラムの実行においては,適用候補のクイーンをランダムに選択します. 選択したクイーンに実際に規則を適用するかどうかは,それらのあいだの 局所評価関数をつかってきめます.選択されたクイーンに関するすべての 局所評価関数の和をもとめて,それが規則の適用によって増加するときには 規則を適用し,減少するときには規則を適用しません (和が変化しないときにはどちらにするか,あらかじめきめておく). つまり,規則の適用が局所的に盤面の状態を改善するときにはそれを適用し, 改悪するときには適用しないということです.ただし,もちろん局所的に改善 されても全体としては改悪されることもありますし,その逆のこともあります.

触媒

上記の列交換規則では,じつは 2 個のクイーンのあいだの局所評価関数は 変化しません.したがって,これでは CCM の計算機構はうまくはたらきません. そこで,右図のように,列交換には関係がないもうひとつのクイーンを 規則にくわえてやります.こうすると,第 3 のクイーンも局所評価関数の 和をもとめるときに計算に参加するので,CCM の計算機構がはたらくように なります.これがアプレットのページで つかわれている ``Single catalyst swapping rule'' です.ところで, このように規則の適用の前後で変化しないデータのことを触媒 (catalyst) とよびます.

右図の規則は触媒を 1 個つかう規則ですが,触媒の数はふやすことができま す.アプレットのページでも 2 個の触媒をつかう ``Double catalyst swapping rule'' をためすことができ ます.触媒の数をふやすにつれてしだいに計算に非局所的な情報をつかうよう になって,解をもとめるまでの規則の適用回数は減少していきます. (右のアプレットの原始プログラム)


[アプレットのページにもどる][例題ホームページにもどる]
著作 (C) 1996, 1999  金田 泰
コメントは yasusi @ kanadas.com におくってください.
作成: 1996-8-25, 改訂: 2003-10-19.