棋譜
棋譜といっても、僕は別段これが読めるわけではない。
新聞に小さく書かれている将棋盤の絵、☗と☖のアイコンに数字と漢数字、駒の種類など。読めるわけではないのだけれど、切り詰められた情報を見ているととてもワクワクしてくる。
いきなり逸れるけれど、僕は指示書の類がとても好きだ。
限られた記号を使って、これを並べ組み合わせて、読み手に必要な情報を伝える。使われる記号が最小限になっていること。情報を伝えきる並べかたができるだけ短く、それでいて間違いや誤解なく伝わるよう構成されていること。
そう、要はプログラムだ。
プログラムコードのことだし、楽譜もそうだし、棋譜も仲間だし、僕が使っているこの日本語だってそうだ。小説も読み手の感情を操作するものだと思えばプログラムの仲間だし、漫画やアニメ、映画にしたってそうだ。演奏される音楽、演劇、ダンスパフォーマンス。
僕は人を動かす、僕を動かす記号の並びが、この上なく魅力的に見える。
さて。
僕の趣味嗜好をごく自然に、違和感を引き起こすことなく、さしはさんだところで本題に移ろう。
僕は今、将棋AIを作ろうとしている。
そのAIに将棋を理解させたい。
だから教えようとしているのだけれど教えるにしても、
そして教えたことを彼/女が理解したのか確かめるにしても、
僕と彼/女の間で共通のことば(記号と文法)が必要だ。
そこで出てくるのが棋譜。
将棋の先達が数百年の歴史を重ねて使い磨いてきた言語。
* * *
自分が先手番☗として将棋盤をみると、右下に香車の駒がある。
この右下位置には1九という記号が割り付けられている。
この駒をひとつ上に進めることを、棋譜では「☗1八香」(せんてイチハチきょう)と書く。
将棋の駒は、どれも相手の陣地に向かって進む能力を持っている。
相手陣の方向、盤上の縦方向を「筋」(すじ)と呼び、自陣の駒が布陣する盤の横方向を「段」(だん)と呼ぶ。
筋はアラビア数字の1から9で表し、段は漢数字の一から九で表す。
自陣は七段から九段にあり、狙う相手陣の玉将(王様)は一段の真ん中5筋にいる。この5一玉を目指して自駒を繰り、自分の5九玉を詰めようと迫る相手駒をあるいはかわし、あるいは生け捕り、勝負を繰り広げる。
駒は、相手陣(三段から一段)に切り込むと無双モードに入る。
「出会え出会え〜ィ!
やアやア我こそはぁ◯◯ゥ!
いざ尋常に勝負〜!!」
というアレだ。(一歩ずつしか進めなかったあんなに頼りなかった歩兵くんが、相手陣に攻め入った瞬間、スゴいんです……!)
歩兵、香車、桂馬、銀将は、それぞれ金将と同じ動きを手に入れ縦横無尽の活躍をはじめる。序盤からその機動力が頼もしい(でも押さえておくことが難しい)暴れ武者の飛車と斜に構えたクールな角行は、それぞれ苦手方向にも動けるようになり、まさに八面六臂の大活躍を見せる。
相手方も同様。タダでさえ厄介な相手将たちは、こちらの陣地に侵入するや目を血走らせ獣の咆哮を上げ、打って変わった動きで我が方の武将たちをバッタバッタ切り倒しにかかってくる。
なお将棋においては駒同士に力の強さの差はない。先に相手に手をかけた側が必ず勝つ。勝って相手を捕虜にして、次以降の手番では自軍の将兵として好きな位置に打つことができる。なぜ、貴様! どこから現れた! ナンデ! ニンジャナンデ?! アアイエエエエーーー!!
そして大将である玉将だけは決して捕虜になることはない。相手武将に囲まれて逃げ場がないと悟ると潔く腹を「詰め」て終了。
いや、将棋、ほんと怖いですね。
ところで筋は右が一番若くなる。つまり右端が1筋で順に2、3と増え、左端が9筋。これはたぶん日本語が縦書きだったころ、 R to L で書かれる習慣に即しているのだろう。(プログラムに起こす際はちょっと悩ましい)
* * *
指せない位置、できない動きやありえない盤面になることを無視して、駒をどの位置に動かすか。自分の手番に考えるべき(これはできる、これはできないという判断を含め)組み合わせが、いくつあるか数えてみました。
ざっと二万通りです。
棋譜にならって、駒を指す位置を基準に考えます。9かける九で81の場所がある。
駒は歩・香・桂・銀・金・飛・角・玉と、これに成駒と・杏・圭・全・竜・馬を加えて14種。
駒の打ち方は前方に向かって「上」「左」「右」、横に「左寄」「右寄」、後ろに「引」「左引」「右引」の8方向。(概算で済ませるために、歩は前にしか動けないなどの制限はここでは無視)
それぞれ相手陣での「成る」動きが8方向ぶん加わって16。加えて手駒からの「打」で17。
81×14×17=19278
ここに各駒の動きや、成りは相手陣三段などの制限を加えていくと、およそ1/3の6千弱まで減ります。(数え方が間違っていなければ)
そして盤面による制限が加わって、さらに候補が減る。
つまり初手で相手玉の前に金将を錬成して「☗5二金打」はできないし、頭を邪魔する自陣の歩を手駒に移して「☗2七飛」を指すこともできない。
手駒にあっても二歩を指してはいけないなど、いくつかのルール上の制約も加わる。
これらは盤面によって指せる、指せないが変わるので、あらかじめ探索候補から除くことはできない。
すなわち、機械的に指し手を考えるときは、ある盤面に対して6千の手を広げて、これは指せる、指せないと篩に掛け、指せる手の中から相手の応手を考え、自分が有利に勝負を進められるように手を決める。
そういうゲームだと言えるわけです。
いや、将棋、ほんと怖いですね。
この記事が気に入ったらサポートをしてみませんか?