Monday, June 05, 2006

数独

学生が数独をやっていた.
# 本来であれば,演習中なので注意すべきか...
数独とは以下のようなものである.

数独という呼称は、パズル雑誌『パズル通信ニコリ』で使用される名称で、「数字は独身に限る」の略である。「数独(スウドク)」はニコリの登録商標であり、一般には「ナンバープレース(ナンプレ)」と呼ばれることが多い。日本以外の国ではSudokuの呼称の方が一般的であるが、アメリカ合衆国ではSudoku,Number Place双方の名称が使用されている。
Wikipedia による.)

私もやったことはないが,要は縦横それぞれの列および各ブロックに数字が独立して入るようにする,というもの.
1つの問題を解くのに結構時間がかかるようだが,この解法に関して考察してみた.

人工知能の分野でよく取り上げられる,チェスや将棋との違いについて考察する.
よく言われるとおり,チェスや将棋においては,現在の状況から数手先を推論するには,かなりの計算量が必要である.
たしかに,何も考えずに総当りで検索を行えば,最適な解を導き出すことができる.
しかしながら,これをやろうとすると,実時間での計算は不可能となる.(NP完全問題)
よって,これを解決するためには,何らかの知識を与えてやる必要がある.
普通は,そのゲームに沿ったセオリーなどを与えてやることにより,劇的に計算量を削減することができる.
しかしながら,最適なセオリーを与えることは,熟練した人間でも非常に困難である.
# すなわち,どのような状況でどのような手が最適化を判断するのは困難,ということ.
そこで,これを学習により行う,というアプローチが自然であると考えられる.

一方で,人間はさまざまな状況を考慮した上で,実時間で次の一手を決定することができる.
# 実力によっては,たいした手ではない場合もあるが.
よって,どのような推論によりこの手を導き出したかを顕在化することができれば,これを計算機にあたえてやれば,同様の強さを持ったシステムを作成可能である.
しかしながら,実際には,これを顕在化し,システムに与えることは,ほとんど不可能である.
なぜなら,人間が次の一手を決定する際には,「直感」のようなものが作用しているからである.
この直感をシステムに与えることができればよいのだが,現在の技術では,ほぼ不可能である.

このような問題点を持つチェスや将棋に比べて,数独の解法を考える.
数独には,上述した確固たるルールが存在する.
よって,このルールに従い,1つずつ論理的に推論を行うと,必ず,決定できる数字が存在する.
# 逆にいうと,決定できない場合はパズルとして成立しない.
さらに,この決定された数字を利用し,推論を進めることにより,また,別の数字も決定可能である.
このように,直感を使用せずとも,論理的に推論を行うことにより,必ず,1つの解にたどり着くことができる.
よって,この解法に必要なものは,推論を進めるための記憶領域(スタック)のみである.
# 場合によっては,結構な量が必要となる.
そのため,これを計算機において実装するのは,たやすいものと考えられる.
一方,これを人間が行おうとすると,スタックの情報を記憶しながら,推論を遂行するという,かなり論理的な思考能力が必要となる.
そのため,脳を鍛えるには,なかなかによいパズルである.

以上より,数独は,チェスや将棋とはほぼ反対の性質を持っており,これをうまく利用した頭を鍛えるパズルであるといえる.

No comments: