問題タブ [game-theory]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
358 参照

game-engine - ナッシュ積とは?

「ナッシュ プロダクト」の概念を調べようとしましたが、ナッシュ プロダクトの目的と動作に関する適切で有用な文献は見つかりませんでした。誰かが文献を指摘したり、それについて説明したりするとよいでしょう (それが何であるか、いつ、どのように使用または計算するかを意味します)。

0 投票する
2 に答える
40 参照

python - インスタンス変数は自動的に変更されます

Tic Tac Toeのゲームの 1 つの位置を表す新しいクラスを作成しました。基本的に私がやろうとしているのは、各ノードがPositionオブジェクトであるゲーム位置のすべての可能性のツリーを作成し、ミニマックス アルゴリズムを使用してプレーヤーにとって最適な動きを見つけることです。Position クラスが必要に応じて機能していないため、ミニマックス アルゴリズムは以下に示されていません。

このPositionクラスには、現在の位置から到達できるオブジェクトgenerate_childrenのリストを作成するメソッドがあります。Positionプログラムを実行すると、各反復後pos_matrixに現在のPositionオブジェクトの が変化しているという出力が得られますが、これは望ましくありません。pos_matrixループ内の現在の Position オブジェクトには触れておらず、play_move混乱を避けるためにマトリックスのコピーを作成しています。それでも、pos_matrix繰り返しごとに変化しています。

何が起こっている?どうすればデバッグできますか?

試した:play_moveクラスの外に出ましたが、うまくいきませんでした。

: 0pos_matrix の A は空の正方形を1表し、"X" を-1表し、"O" を表します。「誰のチャンス」という意味
もあります。kiska_chance:P

0 投票する
5 に答える
8839 参照

algorithm - 石のゲーム - 2 人のプレイヤーが完璧にプレイ

最近、私は nim game と grundy number について学びました。アイデアを教えてください

問題: A と B が石の山でゲームをします。A がゲームを開始し、交互に動きます。それぞれの動きで、プレイヤーは山から少なくとも 1 つ以上の数の石を取り除かなければなりません。たとえば、山に 10 個の石が含まれている場合、プレイヤーは山から 1、2、3 個の石を取ることができます。AもBも完璧に弾けます。有効な動きをすることができないプレーヤーが負けます。石の数が与えられたので、両方が最適にプレーした場合に勝つプレーヤーを見つける必要があります。例

n=3 勝利、

n=5 B勝

n<=10^12

グランディ数https://www.topcoder.com/community/data-science/data-science-tutorials/algorithm-games/を使用して、少数の石でこの問題を解決できますか?

grundy 関数は g(x) で、x は残りの石です。コール F(s) は、x ストーンから取得できる残りのストーンの数のセットです。s が終端位置の場合、g(s)=0

s が終端位置でない場合、X = {g(t)| とする。t in F(s)}。そして、s の grundy 数は、X に含まれない 0 以上の最小の整数です。

例えば ​​x=10 なので F(x)={9,8,7} 1,2 または 3 個の石を取ります。(平方(10)<=3)

g(n)>0 の場合 => 最初のプレイヤーの勝利

g(0)=0

g(1)=1

g(2)=0

g(3)=1

g(4)=2 ....

しかし、このアルゴリズムは遅いです。

前もって感謝します。

0 投票する
2 に答える
1023 参照

game-theory - マナサとプライムゲーム (Hackerrank)

この質問を解決するには助けが必要です -

まなさはNIMゲームが大好きですが、同じゲームを何度もプレイしているため、ある日飽きてしまいます。だから彼女はゲームのルールを変えたいと思っています。彼女は素数が大好きなので、新しいルールを作りました。どのプレーヤーもバケツから素数のボールだけを取り除くことができます。しかし、素数は無限にあります。したがって、ゲームを単純にするために、プレーヤーはバケツから x 個のボールだけを取り出すことができます。x は集合 S に属します。S={2,3,5,7,11,13} ここで、ゲーム全体は次のように記述できます。 N 個のバケツと Ak 個のボールを持つ k 番目のバケツが与えられた場合、プレーヤーはバケツを選択し、そのバケツから x 個のボールを取り除くことができます。ここで、x は S に属します。マナサはサンディに対して最初の動きをします。両方が最適にプレーした場合、どちらが勝つでしょうか?

0 投票する
1 に答える
2188 参照

javafx - ミニマックスアルゴリズムの最適化

TicTacToe とNine Men's Morris のゲームをJavaFX で作成し、それぞれに AI を実装しました。Nine Men's Morris については、ミルの除去をまだ実装していないので、今のところは複雑な TicTacToe のようなものです。私はアルファ ベータ プルーニングでミニマックス アルゴリズムを使用しました。AI はかなりまともな動きをしていますが、ナイン メン モリスの動きの計算は非常に遅いです。AI にゲーム全体をプレイさせると、数分かかります。

評価関数については、ボード上の各行を評価する関数を使用しています。ここで、行の値は次のとおりです。

3 列の場合は 100、

2列なら10、

1列なら1、

敵のセルに対して負(-100、-10、-1)、

それ以外の場合は 0。

Minimax アルゴリズムは多かれ少なかれ同じものですが、TicTacToe の 8 行とは対照的に、Nine Men's Morris の場合、評価される行は 16 行ありますが、AI は Nine Men's Morris でははるかに遅くなります。

AI のパフォーマンスをさらに向上させるにはどうすればよいですか?

私はこの問題について研究を行っており、ニューラルネットワークを使用してミニマックス検索に焦点を当てたり、評価関数をニューラルネットワークに置き換えたりするというアイデアを見つけました。これらのソリューションは AI のパフォーマンスを改善できますか?

0 投票する
2 に答える
156 参照

algorithm - カードアルゴリズムゲーム

私は次の問題で遊んでいて、力ずくのアプローチをとっていましたが、良い解決策を思いつくことができませんでした。問題は次のとおりです。

2*N 枚のカードがあります。あなたとあなたの対戦相手はそれらを分割します(あなたにN枚のカード、それらにN枚)。彼らが持っているカードと、それらをプレイする順番を正確に知っています。

ゲームのルールは次のとおりです。最初の N/2 ラウンドでは、最も高いカードを持つ人が勝ち、最後の N/2 ラウンドでは、最も低いカードを持つ人が勝ちます。

これらのルールと、対戦相手がカードをプレイする順序を考えると、獲得できる勝利の最大額はいくらか.

例:

あなたはカードを持っています: 2, 5, 6, 7. 対戦相手はカードを持っています: 1, 8, 4, 3 そして、それらを順番にプレイします.

7 対 1 でプレイし、2 ラウンド目と 3 ラウンド目で負け、最終ラウンドで 2 をプレイして勝つため、獲得できる最大スコアは 2 です。

私の考え: カードを 2 つの山に分けます。数字の大きい方と小さい方です。次に、最適なマッチングを見つけます。

疑似コード/アルゴリズムのアイデアは大歓迎です。

編集: 合計 N ラウンドがあります。最初の N/2 ラウンド: 高いカードが勝ちます。最後の N/2 ラウンド: 下のカードが勝ちます。N は偶数でなければなりません。

0 投票する
1 に答える
53 参照

r - データをデータ フレームに変換する

私はRとプログラミング全般に不慣れです。私はこのデータを持っています:スクリーンショット ここに画像の説明を入力

私は 12 の「ID」(研究対象) を持っており、1 から 12 までの番号が付けられています。「タイプ」列は、各 ID の「タイプ」を示します。たとえば、「タイプ」列の最初の 5 つの数字は、最初の 5 つの ID の「タイプ」を参照します。つまり、最初の 5 つの ID の「タイプ」は、それぞれ 3、3、2、1、1 です。

「ペア」列は、ID がどのようにペアにされているかを示します。たとえば、6 は 9 と対になっています。4 は 7 とペアになっています。1 は 11 などとペアになっています。

そこで、このデータを使用して 3 つの列を作成したいと考えています。

最初の列: ID (1-12) をリストします
2 番目の列:ペアの ID を返します(1 は 11 とペアになっているように、2 番目の列は ID 1 に対して 11 と表示する必要があります)
3 番目の列:ペアの「タイプ」を示します (したがって、11 の「タイプ」は 3 です。3 番目の列にはそれが表示されます。

目的の出力形式を視覚化したものを次に示します: output format ここに画像の説明を入力

どんな助けでも大歓迎です。前もって感謝します!