昨日は、訪問者が多かったです。
理由は、詰将棋メモの記事からのリンクがあったからでした。
詰将棋メモ
あまり、詳しく書いてないので、少し意外な感じがしました。
<スペック、OS、プログラム言語>
優 勝:GPS将棋 CPU(Xeon X5570 2.93 コア8) Linux の C++言語
準優勝:大槻将棋 CPU(Xeon X5365 3.00 コア8) Linux の C言語
3 位:文殊 CPU(Xeon X5472 3.00 コア8) XP(Pro) 64bit C言語
シードの3つ
激指 CPU(Xeon X5482 3.20 コア8) Linux の C++言語
Bonanza CPU(Xeon W3570 3.20 コア8) XP(pro) 64bit C言語
YSS CPU(Xeon X5355 2.66 コア8) Vista C++言語
少しありきたりな内容ですが、補足します。
動画サイトより、勝又六段がコンピューター(パソコン)は数値化するという表現を使っています。
パソコンは、「0」、「1」の「OFF」と「ON」しか理解が出来ないのです。
※インターネットで見てることも、同様です。
なので、数値化するとは、「0」、「1」にするという意味なのです。
(C言語)
int iValue; (iValueを整数の変数とする)
if (iValue >= 200) (iValueが200以上)
{
... (何か処理する)
}
例えば、評価関数で、ある値(iValue)が 200 以上だったとするプログラムです。
C言語で書くと、こんな感じになります。
このC言語を、コンパイル(機械語)にします。
機械語とは、「0」、「1」に変換する意味です。
※コンパイルの開発ソフトは、基本的に有料なので、一般の方には手が入りません。
※制限がありますが、フリーソフトもあります。
0110 1110 1111 0101
1111 0001 0010 1101
これは、デタラメな数字ですが、イメージとしては、こんな感じになります。
これが、機械語です。
「0」、「1」だけなので、2進数とも言います。
パソコン(のCPU)は、この「0」、「1」しか理解が出来ません。
パソコンは、処理速度が速いだけが、唯一の特徴です。
パソコンは、自分で考えることが出来ないので、それをプログラマーが命令を書くことによって、ソフトはその指示通りに動いているだけなのです。
補足として、保木さん(Bonanzaの開発者)が学習機能を使用したと書かれていますが、その学習機能は、プログラマーの保木さんが作成したソフトです。
そういう訳で将棋ソフトは、どれだけパソコンに分かりやすいように、プログラマーが命令を書くのかによります。
「人間の思考」と「パソコンの思考」の違いの良く出る例があります。
数学の話になりますが、15、24 の最大公約数は、どのように求めるのでしょうか?
「人間の思考」では
15 = 3 * 5
24 = 2 * 2 * 2 * 3
だから、最大公約数は、3 とわかります。
「パソコンの思考」では
上の方法では出来ないのです。
人は、素数を、「2, 3, 5, 7, 11, 13, ...」であることを知っていますが、パソコンは、そんなことは知りません。
15 が奇数、24 が偶数ということも、知りません。
解決方法しては、ユークリッドの互除法を使うことによって解決します。
(ユークリッドの互除法の理論として)
自然数(一般的には整数)を、m、n とし、最大公約数を G とすると
m =Gm'、n = Gn' (m' と n' は互いに素) (互いに素とは、最大公約数が 1 の意味)
m - n = G(m' - n') より、m' - n' と n' は互いに素より m - n と n の最大公約数は G である。
(ユークリッドの互除法の実例)
24, 15 とすると、 24 - 15 = 9 より 15, 9 の最大公約数を求める。
15, 9 とすると、15 - 9 = 6 より、9, 6 の最大公約数を求める。
9, 6 とすると、 9 - 6 = 3 より、 6, 3 の最大公約数を求める。
6, 3 とすると、 6 - 3 = 3 より、 3, 3 なので、 3 = 3 より
求める最大公約数は、3 である。
「人間の思考」と「パソコンの思考」の違いは、最大公約数の 3 を発見の方法が違うということです。
注目するべきは、この発見をするの部分なのです。
将棋の最善手を発見する部分と似ていると思います。 序盤、中盤、終盤のすべてに当てはまります。
人間が最善手を発見する場合は、この形は良い、悪い(大局観など)と経験上知っているからです。
パソコンが最善手を発見する場合は、現在の段階では、詰みを除いて明確な答え(アルゴリズム)が発見されていません。
色々な方の思考錯誤より、これが最善手の発見のアルゴリズムだと考えられている方法を用いています。
このアルゴリズムが、トップアマも倒す実力がある訳ですけど・・・。