問題タブ [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 に答える
539 参照

python - Gambit ゲーム理論のコードが Python スクリプトを使用して実行されないのはなぜですか?

game1.py:

これは、次のエラーを示す私のコードです。

/usr/lib/python2.7/site-packages/setuptools-5.7-py2.7.egg/pkg_resources.py:1049: UserWarning: /home/raja/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).

Pythonコンソールで同じコードを実行すると、正常に動作するエラーが発生しません..

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

algorithm - 連続する 2 つのプラスをマイナスに反転するゲーム

私はあるインタビューでこの質問をされました。質問は次のようになります

'+' と '-' の文字列があります (例: ++----++++++-+--+ )。プレーヤー 1 とプレーヤー 2 の 2 人のプレーヤーがいます。各ターンで、プレーヤーの 1 人が任意の 2 つの連続する「+」、つまり ++ を選択し、それらを -- に裏返すことができます。したがって、最初の文字列が ++----++++++-+--+ の場合、プレーヤーには次の 6 つの選択肢 (2 - 7) があります (最初の選択肢は参照用です)。

  1. ++----++++++-+--+
  2. ------++++++-+--+
  3. ++--------++++-+--+
  4. ++----+--+++-+--+
  5. ++----++--++-+--+
  6. ++----+++--+-+--+
  7. ++----++++---+--+

プレイヤーは1人ずつ手番を行います。最後の手を打ったプレイヤーが勝ちます (または負けます - 違いはありません)。

最初の文字列が与えられ、プレーヤー 1 が最初のターンを実行した場合、誰が勝つかを知る必要がありますか?

これは、各プレーヤーが最適なプレイを試み、各ステップで彼を勝利の位置に移動させる動きをするという、古典的なゲーム理論の問題のように思えます。

これを解決するためにどのようにアプローチできるかについてのアイデアはありますか?

PS - 解決よりもアプローチに興味があります。http://www.codechef.com/wiki/tutorial-game-theoryを読みましたが、ここで同じロジックを適用できませんでした。

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

algorithm - 組み合わせゲーム。両方のプレーヤーが最適にプレーした場合、どちらが勝ちますか

プレイヤーAとプレイヤーBはゲームを最適にプレイし、交互に動きます。それらは 1 から始まります。自分のターンの各プレイヤーは、現在の数字に [2,9] の任意の整数を掛けます。プレーヤーのターンの後、その数がn以上の場合、そのプレーヤーが勝ちます。

Aがスタート。nが与えられた場合、誰が勝ちますか?

例えば、

数字の 2、3、..、9 が当たりの数字です (プレイヤー A が勝ちます)。

数字 10、11、..、18 は負け数字です (プレイヤー A が負けます)

数字 19、20、..、162 は当選番号です。

勝つための戦略とは?これを解決するために Sprague-Grundy の定理をどのように適用できますか?

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

matlab - MATLAB での Sprague–Grundy の定理

MATLAB で「 Sprague–Grundy の定理」を実装しようとしています。この定理は基本的に、配列内の最小の除外要素を見つけようとします。たとえば、配列 [0 1 3 4 5] では、値は 2 になります。さらに、関数は、配列内の異なる行に沿って再帰できる必要があります。行列 (具体的には、グラフ理論からの隣接行列) たとえば、隣接行列があるとします。

10000

10000

0 0 0 1 0

0 1 0 0 0

0 0 1 0 0

この行列を入力として使用し、関数が 5 行目から開始された場合、行 "0 0 1 0 0" を反復し、3 列目に 1 が表示されると、関数は 3 列目に再帰します。行、次に 4 番目、次に 2 番目、そして 1 番目に再帰します。

私が問題を抱えているのは、関数入力がmatrix/arrayである再帰を行うことです。関数入力が整数の場合、再帰は十分に単純だと思いますが、行列/配列では、値を「追跡」して必要な最終配列を取得する方法がわかりません。これまでのところ、これは私のmatlabコードです:

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

python-2.7 - 白黒の木から頂点を削除するための優れた構造

各頂点が白または黒である Python 2.7 で (数学的な観点から) ツリーをプログラムしたいと考えています。次に、葉を削除して新しいツリーを作成できるようにしたいと考えています。ルートは、接続が 1 つしかない場合はリーフになる可能性があるため、削除できることに注意してください。

リストに異なるツリーの値を保存できるように、ツリーの ID を見つける方法はありますか? また、さまざまな小さな木のループを作成したいと考えています。たとえば、8 つ以下の頂点を持つすべての木で、考えられるすべての白黒の色を使用します。

1 つのアイデアは、そうでなければ複雑になりすぎる可能性があるため、二分木から始めることです。

これに適した構造はありますか?

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

algorithm - 2 人がコインを取る、ハッキーな解決策

パズルは次のとおりです。

n 個のコインが一列に並び、コインにはさまざまな値があります。コインがなくなるまで、2 人のプレイヤーが交代で列の端からコインを 1 枚取ります。より多くのお金を持つプレイヤーが勝ちます。n が偶数の場合、最初のプレイヤーが O(1) メモリと O(n) 時間で勝つか負けるかを決定できるハッキーなアルゴリズムはありますか?

動的計画法で問題を解決しましたが、ハッキーなアルゴリズムが何であるかがわかりません。検索した後、ここから解決策を見つけました:

の場合は理解できますがodd_s != even_s、常に最初の人が勝つのですが、状況が理解できませんodd_s == even_sでした。次の場合、勝利戦略がないことをどのように証明しodd_s == even_sますか?

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

c++ - NFS Most Wanted 2005 の作成に使用されたテクノロジ

最重要指名手配のブラック エディションは 2005 年にリリースされ、ゲームのプログラミングに C++ を使用したことを知っています。誰かが C++ のマスター知識を持っているとします。彼は NFS 2005 のようなゲームを作成したいと考えています。プログラミングを始めるために必要なツールは何ですか。NFS について私が知っていることは、ゲームが既存のエンジンを使用して作成されていないということです。たぶん私は間違っています。しかし、そうでない場合は、それらのグラフィックに使用されたものです。トラックは無視してください。ゲーム全体を完璧にするために実装されたテクノロジーを知りたいだけです。