スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« テキスト動画はマルウェア? | トップページ | モンテカルロ法のAIは弱い »

35年前の何倍だろう?

今は、新しいリバーシプログラムの開発フェーズで、今日の時点で、弱いAIを幾つか作ったので、それらとの対局が可能にはなっている。で、何故、弱いAIを作ったのか、というと、後で作る強いAIがどの程度強いのかをデモンストレーションする時に使えるからなのだが。

当然の事ながら、強いAIよりも弱いAIの方が実装が簡単だからでもある。

つまり、作者的には、とりあえず、GUIだとか、ゲーム進行用のその他処理が正しく動作する事を確認する為に、とりあえず動作するAIが必要だった、という事もあり、実装が簡単なAIを作ってみた訳だ。

もっとも、作者が最初にリバーシプログラムを作ったのは、PC-6001上のBASICを使っての事だったので、今から35年くらい前にはなる筈だ。

で、人間の世界チャンピオンを破った事で有名なプログラムである所「LOGISTELLO」の研究開発が始まったのは、1991年の様なので、その当時には、まだ、強いリバーシプログラム用の一般的なアルゴリズムは確立されていなかった筈だ。

しかし、作者がうろ覚えしている所では、その当時、既に、終盤の完全読みを何手行えるか、というのは、リバーシプログラムの強さとして重要視されていた様に記憶している。

なので、作者的にも、前述のPC-6001のBASICを使ってリバーシプログラムを作った時には、終盤は完全読みする様にしていたのだが、当時の強豪プログラムは実用的な時間内で、10手読みくらいは可能になっていた。

これに対して、作者がPC-6001のBASICで作ったプログラムでは、5手読みくらいが限界だったのだが、その理由は、BASICでプログラミングしていた、という事もあったのだが、PC-6001の実質クロック数は当時の最高速のZ80のクロック数であった4MHzの半分以下だったからでもある。

もっとも、多分、その当時の作者的には、αβ検索だとか、検索順の並び替え、みたいな手法については知らなかった筈なので、上記の完全読みは、着手可能な位置への着手を順番に全て行っていただけの筈だ。

なので、検索順の並び替えとαβ検索を併用していれば、もっと高速な完全読みも可能だったかもしれないのだが、実際の所、MasterReversiの完全読み処理でも、残り5手程度では、検索順の並び替えは行っていない。

つまり、検索は着手位置の固定優先順位に従った順番で行っているので、必ずしも、αβ検索のメリットである所の後ろ向き枝刈りによる高速化は行われていないかもしれない。

何故、そんな事になっているのか、というと、MasterReversiの場合、並び替えの為に下手な演算を行うよりは、全着手を普通に行ってみた方が速いからだ。

で、今現在作成中の新しいリバーシプログラムでも、終盤は完全読みを行う格好にしてあるのだが、今の所、検索順の並び替えもαβ検索も行っていないので、そのアルゴリズムとしては、35年前にPC-6001上で作ったプログラムと変わらない。

にも関わらず、試してみた所では、残り12手から完全読みを行わせても、遅くとも数秒で読み切っている。

と、いう事で、作者的には、今使っているMac mini Late2014はPC-6001の何倍の速さなのかなあ、と、思ったりもしているのだが、当時のパソコンはメモリ容量も少なく、強いリバーシプログラムを作る為には、如何にメモリ使用量を節約するか、というのも大切だった。

具体的には、PC-6001でユーザーが利用可能なメモリ量は16kBしか無かったし、当時は記憶媒体がカセットテープだったので、定石をプログラム実行中に読み込む訳にも行かなかったので、定石を使用するためには、メモリ使用量の節約も重要だったのだが、今時のパソコンでは、そんな事は気にする必要は無くなっている。

このため、黎明期のリバーシプログラムでは、トリッキーなマシン語を使って高速に動作させ、かつ、メモリ消費量が少ない定石データが使える、というのが、強いリバーシプログラムの条件になっていたかもしれないのだが、今時のパソコン環境では、そんな事は気にする必要がなくなっている。

なので、今時のプログラマー的には、大昔のリバーシプログラムと同程度の強さや速さを持つプログラムを作るのは至って簡単になっているのだが、その分、MasterReversiなんかでは、残り30手の完全読みも、数分もあれば終わるのが普通になっているし、100万対局以上の結果が収められたBookも普通に利用可能になっている。

と、いう事で、この35年で、パソコンの速度やメモリ容量は滅茶苦茶増えたので、当時のプログラム開発者が苦労して編み出した処理速度の高速化/メモリ節約テクニックは、今となっては、全く無意味なモノとなった。

なので、その分、今時のプログラム開発者は開発が楽になった筈なのだが、その分、プログラムも変わってきているので、多分、35年前に、その当時の強豪リバーシプログラムと同等のプログラムを開発するよりも、今、MasterReversiと同等のプログラムを開発する方が大変になっているかもしれない。

もっとも、人間の能力は35年前と大して変わっていない筈だ。

なので、実際の所としては、当時のプログラム開発と今時のプログラム開発で、必要とされている人間の能力は、大して変わっていない筈ではある。

« テキスト動画はマルウェア? | トップページ | モンテカルロ法のAIは弱い »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/66355527

この記事へのトラックバック一覧です: 35年前の何倍だろう?:

« テキスト動画はマルウェア? | トップページ | モンテカルロ法のAIは弱い »

2018年7月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google