/ /有限状態機械を使用したチェスのゲームのエンコード規則-アルゴリズム、有限状態機械

有限状態機械を用いたチェスゲームのための符号化規則 - アルゴリズム、有限状態機械

私は有限で独学で研究していますステートマシン。そして現在、面白くて自明ではないタスクを達成することにつまずきました。チェスのゲームのルールのためにステートマシンを定義するのは本当に難しいです。

ルールはシンプルに見えますが、ゲーム自体はFSMを使用してアプローチするのは難しい。ゲームの状態をボードの状態としてエンコードすることを考えていました。各正方形は空であるか、一部が含まれています。しかし、遷移は対象セルの近傍に関係する事実を認識する必要があるため、遷移を定義するのは難しくなります。また、特にキャスリングが他のピースによってブロックされている場合、en-passantやcastlingなどのケースのトランジションを定義することは困難です。同じ方法で、他のピースによってブロックされ、それらをジャンプできないピース、つまりポーン、ビショップ、ルーク、クイーンの移動制限を定義することは困難です。

この問題にどのように取り組みますか? または、FSMにはいくつかの拡張機能がありますが、気づいていません。FSMを使用するのが実用的ではない類似のアプリケーションがたくさんあることは確かです。一般的な場合、この問題にどのように対処しますか。

前もって感謝します、

回答:

回答№1は1

あなたのアプローチでは、各状態はフィールド。各フィールドには特定の状態があります。これは、色とチェスの駒の構成であり、チェスの駒自体はチェスの駒とそのタイプ(ポーン、ルークの色の構成です)など)。これらのマトリックスを利用することで、ルールを簡単に定義できます。

Example for pawn:
Initial state:
C              D              E
5  (W , (X , ?))  (B , (P , B))  (W , (P , B))
4  (B , (P , W))  (W , (X , ?))  (B , (P , W))

これで、このルールに基づいて2つの白い数字を移動するルールを評価できます。

ポーンは、そうでない場合はまっすぐに移動できます別の図形によってブロックされているか、それから1ブロック離れた対角線上に配置されている図形を倒すことができます。次に白い動きで上記の状態の遷移テーブルを作成するには、次のようにします。

S1->(a)X (just the standard way to define a transition)
a would be the figure, we want to move and S2 the resulting state
X are the reachable state.

a = Pawn at C4
we have two options evaluating the field:
C5 is free, so we can move the pawn to that field
D5 is held by a black pawn, so we can beat it and move to that field
a = Pawn at E4
E5 not free, we can"t move ahead
D5 is held by a black pawn, which we can beat

これを数学に変換するのは、それほど難しくないはずです。各状態の状態遷移表には、すべての数字のすべての可能な動きが含まれます。結果のマシンはNFAになります。

別のオプションは、移動したいチェスの駒と移動したい場所のペアとしてトランジションを定義することです。それにより、DFAを構築できます。