<コンピューターの思考アルゴリズムの説明> コンピューターが●で、プレイヤーが●です。 |
<レベル1> ┌─┬─┬─┐ ★左図はコンピューター●の手番です。 │・│・│・│ ★「勝てるなら勝つ。」(1手読み) ●─●─x─┤ xに打ってきます。 │・│・│・│ ├─●─┼─┤ │・│・│・│ └─●─●─┘ ┌─●─┬─┐ ★左図はコンピューター●の手番です。 │・│・│・│ ★「プレイヤーのリーチを止める。」 ●─●─x─┤ xに打たなければ次の手でコンピューターが負けてしまう(2手読み)ので、 │・│・│・│ xに打ってきます。 ├─●─┼─┤ │・│・│・│ └─●─┴─┘ ┌─┬─┬─┐ ★左図はコンピューター●の手番です。 │・│・│・│ ★レベル1は、プレイヤーのコマを決してはさみません。 ●─●─●─x xに打つとプレイヤーのコマをはさむことになるので、 │・│・│・│ xには打ってきません。 ├─┼─┼─┤ │・│・│・│ └─┴─┴─┘ ●─┬─┬─┐ ★左図はコンピューター●の手番です。 │・│・│・│ ★xに打つことは、はさむことになりますが、 ●─●─●─x 打った瞬間に勝利が決定するので、この場合はxに打ってきます。 │・│・│・│ ├─●─●─┤ │・│・│・│ └─●─┴─┘ ★レベル1では、簡単にプレイヤーが勝利できるので、はじめてプレイする人が、 コマの動かし方等を理解したり、このゲームになじんだりするのに好適です。 (後手の1手目は先手の1手目のとなりに打たなければ負けてしまうということや、 コマの移動は上の世界⇔下の世界ということなどを理解するためのトレーニングになります。) ★プレイヤーにリーチが無い場合は、コンピューターはリーチを作ろうとしてきます。 (同時に複数のリーチが作れる場合は、最も多くリーチが作れる場所に打ってきます。) |
<レベル2> ★「勝てるなら勝つ。」「プレイヤーのリーチを止める。」 この2つはレベル1と同じです。 ★レベル2ではコンピューターは、プレイヤーのコマをはさんで飛ばします。 飛ばした結果、プレイヤーにリーチが発生しないように考えます。(3手読み) プレイヤーにリーチが発生しない場合は、コンピューターがリーチを作ろうとしてきます。 コンピューターはリーチの数をかぞえ、できるならば同時に多くのリーチを作ろうとしてきます。 |
<レベル3> ★レベル1、2では、コンピューターはリーチの数だけを考えていましたが、 レベル3では各列の配置を得点を付けることによって、盤面の良し悪しを判断します。 IE F G HJ A●─●─┬─● ★4マスで構成される列は、A〜Jの10本あります。 │・│●│・│ (A列〜D列は横。E列〜H列は縦。I列、J列は斜め。) B●─┼─┼─● ★A列は●のリーチなので、●にとって高得点です。 │・│・│●│ ★E列は●が2つ並んでいますが、次の手で3連を作ることはできない C├─┼─┼─┤ ので、●にとって高得点ではありません。 │・│・│・│ ★H列は●が次の手でコマをこの列に入れても4連になるだけで、勝利ではない D└─┴─┴─● ので、●にとって低得点です。 Q N O P R ┌─┬─┬─┐ K│●│●│・│ ★3マスで構成される列は、左図のK〜Rの8本(Q列、R列は斜め。)と、 ├─┼─┼─● 左下図のS〜Vの4本あります。 L│●│●│・│ ★K列は●のリーチなので、●にとって高得点です。 ├─┼─┼─┤ ★L列は●が●をはさむことができるので、●に少し得点が入ります。 M│●│●│・│ ★●にとって、O列は埋まった2連ですが、M列は空いている2連なので、 └─●─┴─┘ M列の方が少し高得点です。 ┌─T─S─┐ ★S列〜V列は、上の世界での3マスで構成される列です。 │・│・│・│ 下の世界の列と同様に得点を付けます。 U─S─T─V │・│・│・│ S─U─V─T │・│・│・│ └─V─U─┘ ★このようにしてすべての列の得点の合計で盤面を評価します。 ★プレイヤーのコマをはさんで飛ばした盤面が、プレイヤーにとって十分不利であれば、 その次の盤面がコンピューターにとって有利になるように考えます。(4手読み) |
<レベル4> ★レベル4では「硬いリーチ」を考えます。 ┌─┬─┬─┐ │・│●│・│ ★左図は●の手番です。 X●─●─┼─┤ ●がどう動こうとも、その次の手で●が勝利できます。 │・│・│・│ X列は●の「硬いリーチ」です。 ├─┼─┼─● │・│・│・│ ●─●─●─● ┌─┬─┬─┐ │・│●│・│ ★左図は●の手番です。 X●─●─┼─┤ ●がX列に移動してくれば、その次の手で●は勝利できません。 │・│●│・│ よって、X列は●のリーチですが、「硬いリーチ」ではありません。 ├─┼─┼─● │・│・│・│ ●─●─●─┘ ┌─┬─┬─● │・│●│・│ ★左図は●の手番です。 X●─●─┼─┤ ●が右下ではさんだコマをX列に飛ばせば、その次の手で●は勝利できません。 │・│・│・│ よって、X列は●のリーチですが、「硬いリーチ」ではありません。 ├─┼─┼─┤ │・│・│●│ ●─●─●─┘ Y ●─┬─●─┐ │・│・│●│ ★左図は●の手番です。 ├─┼─┼─┤ ●はX列のリーチを防ぐことができますし、Y列のリーチを防ぐこともできますが、 │・│●│・│ 同時に両方を防ぐことはできないので、その次の手で●が勝利できます。 X●─┼─●─┤ この盤面は●の「硬いリーチ」です。 │●│・│・│ └─┴─┴─● ★硬いリーチを作れば、その次の次の手で必ず勝利できることになります。 ★コンピューターがプレイヤーのコマを飛ばした後、プレイヤーが1手動いただけで硬いリーチを作ることができてしまうならば、 その次の次の手でコンピューターは負けてしまうので、これを防ぎます。(5手読み) |
<定石> ★コンピューターが後手の1手目を打つ際、先手の1手目の隣の上の世界に打ってきます。 B─C─D─E ★コンピューターが先手の2手目(全体の3手目)を打つ際の禁じ手。 │R│・│・│ (これは指示していただいた禁じ手です。) F─G─H─I G、D、の次にLには打ちません。 │・│・│・│ G、J、の次にLには打ちません。 J─K─L─M H、C、の次にKには打ちません。 │・│・│・│ H、M、の次にKには打ちません。 N─O─P─Q K、F、の次にHには打ちません。 K、P、の次にHには打ちません。 L、I、の次にGには打ちません。 L、O、の次にGには打ちません。 (もしコンピューターがこの手を打つと、プレイヤーが負ける可能性が高いという理由で、この禁じ手を 指示していただいたのだと思いますが、レベル4はできるだけコンピューターを強くしたいので、 この禁じ手は、レベル1・2・3にのみ実装しています。) (指示していただいた中で、L、I、G、O(L→P)で後手必勝と書かれていましたが、 その次に先手はNに打って後手をはさむことができるので、後手必勝ではありません。) ★先手の2手目(全体の3手目)、ここに打つと負けてしまう! (レベル4では、コンピューターが先手の場合はこの手を打ちません。) L、I、の次に、Oに打つと負けます。Q、M、G(L→E)で、後手が必ず勝つことができるからです。 L、I、の次に、Qに打つと負けます。O(L→B)、L、Gで、後手が必ず勝つことができるからです。 L、I、の次に、Bに打つと負けます。O(L→Q)、L、Gで、後手が必ず勝つことができるからです。 L、I、の次に、Fに打つと負けます。O(L→C)、L、Qで、後手が必ず勝つことができるからです。 L、I、の次に、Cに打つと負けます。O(L→F)、L、Qで、後手が必ず勝つことができるからです。 L、I、の次に、Hに打つと負けます。O(L→B)、L、G(H→Q)で、後手が必ず勝つことができるからです。 L、I、の次に、Kに打つと負けます。O(L→B)、L、G(K→Q)で、後手が必ず勝つことができるからです。 L、I、の次に、Mに打つと負けます。O(L→B)、L、Q(M→G)で、後手が必ず勝つことができるからです。 L、I、の次に、Eに打つと負けます。O(L→M)、L、Q(M→N)、そして先手はM(I→P)またはP(O→M)で 後手のBAD3を作りますが、後手は先手のコマを2ケ飛ばし(B、R、へ)、 先手がどう動こうと、後手はBAD3をいちどずらしてまた元にもどすことができるので、後手が必ず勝つことができるからです。 L、I、の次に、Pに打つと負けます。O(L→N)、L、Q(P→E)、そして先手はM(I→P)またはP(O→M)で 後手のBAD3を作りますが、後手は先手のコマを2ケ飛ばし(B、R、へ)、 先手がどう動こうと、後手はBAD3をいちどずらしてまた元にもどすことができるので、後手が必ず勝つことができるからです。 L、I、の次に、Nに打つと負けます。O(L→P)、L、Q(P→E)、そして先手はM(I→P)またはP(O→M)で 後手のBAD3を作りますが、後手は先手のコマを2ケ飛ばし(B、R、へ)、 先手がどう動こうと、後手はBAD3をいちどずらしてまた元にもどすことができるので、後手が必ず勝つことができるからです。 L、I、の次に、下の世界に打つと負けます。説明省略しますが、後手が必ず勝つことができるからです。 すなわち、L、I、の次に打っても大丈夫な場所はG、J、Dのみです。 上記ではLで始まるパターンを説明しましたが、これを90度ずつ回転したパターンと、さらにその鏡像のパターンがありますので、 8倍の数のパターンが存在します。 ★L、M、で始まった場合について。 L、M、の次に、Iに打つと負けます。E(I→R)、I、K(L→Q)で、後手が必ず勝つことができるからです。 L、M、の次に、Eに打つと負けます。K(L→G)、L、C(G→J)で、後手が必ず勝つことができるからです。 L、M、の次に、Hに打つと負けます。C(H→N)、H、K(L→E)で、後手が必ず勝つことができるからです。 L、M、の次に、下の世界に打っても、先手必敗にはならないようです。 この他にも先手必敗の場所があるかどうか検討中です。 上記も回転と鏡像で8倍の数のパターンが存在します。 (ちなみに、L、M、の次にKを打つのは悪い手ではないようですが、2つはさまれるのは印象が良くないのでKには打ちません。) ★L、Q、で始まった場合について。 L、Q、の次に、Iに打つと負けます。G(L→P)、L、O(P→B)で、後手が必ず勝つことができるからです。 L、Q、の次に、Eに打つと負けます。G(L→P)、L、O(P→B)で、後手が必ず勝つことができるからです。 L、Q、の次に、Mに打つと負けます。I(M→O)、M、G(L→E)で、後手が必ず勝つことができるからです。 L、Q、の次に、下の世界に打つと負けます。説明省略しますが、後手が必ず勝つことができるからです。 この他にも先手必敗の場所があるかどうかは検討中です。 上記も回転と鏡像で8倍の数のパターンが存在します。 (ちなみに、L、Q、の次にGを打つのは悪い手ではないようですが、2つはさまれるのは印象が良くないのでGには打ちません。) ★後手の1手目(全体の2手目)、ここに打つと負けてしまう! (レベル4では、コンピューターが後手の場合はこの手を打ちません。) 後手の1手目は、先手の1手目の隣に打たなければいけないことはよく知られていますが、隣であっても次の場所はだめです。 L、の次に、Gに打つと負けます。B(G→C)、G、D(C→Q)で、先手が必ず勝つことができるからです。 (同様に、Gで始まった場合はL、Hで始まった場合はK、Kで始まった場合はH、に打つと負けます。) ★コンピューターは上記定石で負けないように考えて打ちますが、上記定石を利用して攻撃してくることはありません。 |