なぜ、80年代当時は開発者より強い将棋ソフトは作れなかったのか。
それは当時のパソコンの能力では繰り返し計算(ループ等)に時間がかかり、最適解を導き出すには何日もかかることがわかっていた。
それでは、市販ソフトとして成り立たないので、開発者はアルゴリズムに対して妥協せざるを得なかったのだ。
強くなるパターンの作り方はわかっているが、その方法ではあまりにも時間がかかりすぎる。
力業が使えないとなると、仕方がないので、ケースバイケースの対処法を組み込むことで妥協した。
このケースバイケースの部分に開発者のセンス≒引出しが影響していたと思われる。
やはりこの方法では最適解を導く計算を使っておらず、これまでに出会ったことのない局面に出くわすと反応できない状況だったと言える。
繰り返し計算で時間のかかる代表的な例は、行列のべき乗である。
行列×行列×・・・と続く計算である。
縦×横が小さい行列のかけ算は学校で習ったと思うが、この縦横の数が多くなると計算時間は指数関数的に大きくなる。
このような計算は行政の災害時の被害想定のシステムにも用いられている。
これは地震が発生してから計算していたのでは災害対策本部に報告する時間がかかるので、あらかじめ計算を済ませておき、発生した地震時の条件を入れてすぐにデータが取り出せるようにしている。
このあらかじめの計算に用いる要素や属性等は何年もかけて収集したデータで膨大な数にのぼる。
こう言った行政のシステムで最も有名なのが海洋研究開発機構の地球シミュレータであろう。
他にも、繰り返し計算で時間がかかるものにゲノム解読がある。
これにはショットガン・シークエンシング法(出た当時はショットガン・ゲノム法と言っていた)いうアルゴリズムが用いられていて面白い。
災害時の被害予測にも使えそうだ。
他に計算に時間がかかるものには、橋、ビル、原子力発電所の構造計算、津波や地震動の計算、FEM・BEM・DEM解析などがある。
話を80年代戻すと、その後、繰り返し計算(ループ等)をなるべくしないようなテクニックが模索され、今日のアルゴリズムの進歩に貢献してきたと言える。
当時のパソコンの能力は初期のスマホ(現在ではない)以下である。
力業でしらみつぶしに踏み倒して行くのがベストであるが当時はそれができなかったのである。
電王戦で評価関数という言葉がよく出てくるが、これは工学研究の世界では昔からあらゆる分野で使われてきたものである。
工学の世界ではこの評価関数の決め方が難しく、最も問われる部分である。
実測値や経験値をもとに作られるので当然過去のデータが多いほうがいい。
コンピュータ将棋も多くの過去の局面をもとに評価関数が作成されており、強さに影響する重要な要素である。