問題タブ [minmax]

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 投票する
1 に答える
66 参照

r - Rで非連続数のセットで最小数と最大数を取得する方法

私は一連の数値を持っています:1,2,3,7,8,9,12,13,14...そして、各連続部分の最小値と最大値を取得したいので、結果は1-3,7-9,12-14.

forループを使用して最小最大値を比較して取得できますが、1000万を超える数がある場合、この方法では時間がかかります...

私が欲しいものを手に入れるためのより速い方法があるかどうか誰かが知っていますか? ありがとう!

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

java - アルファ ベータ プルーニングを使用した最小最大アルゴリズムでスタックする

Java の tic tac toe ゲームで、アルファ ベータ プルーニングを使用して minmax アルゴリズムを実装しようとしています。コーディングを終えるとすぐに例外を見つけたArrayIndexOutOfBoundsので、自分でエラーを見つけるためにターミナル出力をいくつか入れようとしましたが、最終的な戻り値の間違った結果が原因であることがわかりました: アルゴリズムは最終的に[-1][-1]スコア-2147483646を返し、それはコードの残りの部分が移動を試みて座標をフィールドに入れようとすると、例外が発生します。いくつかの動きと考えられるツリーをシミュレートするスキームを作成しましたが、バグが見つかりません。

私はこの問題に 1 週​​間立ち往生していて、気が狂いそうです! 事前に感謝し、英語が下手で申し訳ありませんが、それは私の主な言語ではなく、ゆっくりと学習しようとしています

-------------------------------------------------- - - - - - - - -編集 - - - - - - - - - - - - - - - - - --------------------------

要求に応じてチェック機能を追加する:

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

c++ - 「for」ループを置き換えて、STL mimax アルゴリズムで最小/最大を見つける方法

から最小/最大値(最小x、最小y、最大x、最大y)を見つける必要があります

ここに私のコード:

...

これはうまくいきます。mimmax STL を使用してバージョンを開発しました。

これも問題なく動作し、同じ結果が得られます。ただし、アルゴリズム minmax が 2 回呼び出されるため、実行時間は 2 倍になります。minmax algo への 1 回の呼び出しでこれを最適化することは可能ですか?

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

python - Minimax 実装 Planet Wars Python

私は人工知能に非常に慣れておらず、主に理論的なコンピューター サイエンス/AI の経験があります。小さなプロジェクトとして、数年前の Google AI チャレンジの簡易版にミニマックス アルゴリズムを実装しようとしています。残念ながら、多くの試みと疑似コードの読み取りの後、私はまだそれをうまく実装できていません。

プラネット ウォーズは、自分の惑星を持つ 2 人のプレイヤー間のゲームです。毎ターン、プレイヤーは自分の惑星のどれから船の半分を中立または敵の惑星に送るかを決めることができます。このように、相手の惑星を乗っ取ることが可能です。対戦相手の惑星がなくなったら勝ちです。

まだ私はこれを書いています:

しかし、別のボットと対戦しようとすると、ターミナルはこれを返します:

私のボットは、速度が不十分であるか、決定を下していないために、ターンを逃しているようです。

ご意見やフィードバックをいただければ幸いです。ありがとう!

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

java - MinMax TicTacToe Java

過去数日間、Java を使用して、tictactoe に minmax アルゴリズムを実装しようと試みてきました。これまでのところ、私の試みはある程度成功していますが、無敵というわけではなく、トークンを配置する際に多くの場合ミスを犯します。コードを修正する方法についてのアドバイスを期待していました:

写真の青がプレイヤー、赤がAI、青が先です。この状況では、赤は自分のトークンを中央の正方形に配置する必要があります

ここでプレイヤーをブロックする代わりに、赤は自分のトークンを右上に置きます。

何かが原因で AI が非常に攻撃的になり、常に他のプレイヤーが何をしているかを考慮せずに行進しますが、コンピューターがプレイヤーをブロックする場合があるため、何が原因なのかわかりません。

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

c# - 4 行 (connect4) ゲームでの MinMax の実装と使用

4 連続 (または connect4 または connect 4) ゲームの MinMax アルゴリズムを実装しようとしています。

私はそれのアイデアを得たと思います、それは可能なボードのツリーを特定の深さまで構築し、それらを評価してスコアを返し、それらのスコアの最大値を取るだけです。

そのため、aiChooseCol()呼び出して可能なすべての列のスコアをチェックMinMax()し、最大スコアの列を返します。

よくわかりませんでしたが、これは正しい呼び出し方MinMax()ですか?

チェックするのは正しいtemp = Math.Max(temp, 1000);ですか?

私はまだヒューリスティック関数を作成していませんが、これは少なくとも勝者の列を認識して選択する必要がありますが、現在は左から最初の空いている列を選択するだけです...何が間違っているのかわかりません。

いくつかのメモ:

FillSignInBoardAccordingToCol()成功した場合はブール値を返します。

boardタイプには、実際のボードとプレーヤーのサインを含む配列char[,]があります。

このコードは AI Player クラスにあります。

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

c - Minmax アルゴリズムは、いくつかの深さで最悪の動きを選択します

Android のゲームである FloodWars のプレーヤーをコーディングする必要があります。これまでのところ、最小値と材料評価器のコーディングに成功しました。これは簡単です。

私の問題は、特定のテーブルで、9 より大きい奇数の深さで、最悪の動きになることです。ここに表があります:

色は次のように置き換えられます: '@', '#', '+', '.', '*'. 指定された深さでの出力は次のとおりです。

11 より小さいすべての深さで、期待される出力が得られます。

コードの一部、重要なものを次に示します。

  • lvl は深さ、board は d[MAX_L][MAX_C] - データと l (行数)、c (列数) - ボードの実際のサイズとして格納されたボードです。
  • 関数 floodfill_ch(...) は、ボード上の色のグループを別の色に変更します。ボード (「私」が支配する四角形 - 「彼」が支配する四角形)。
  • g_me と g_he はプレイヤーの位置 (行と列) です。

@WeatherVaneが提案したように、の引数を交換しましたevalMが、何も起こりませんでした。ルートの子の結果を stdout に出力すると、結果 (スコア) が異なりましたが、プログラムは最悪のものを選択しました。
これは、引数がスワップされたプログラムのデバッグ画面です。

そして、これは引数がスワップされていない出力です:

スコアは、ルートの子にマークされたスコアです。

コード全体は次のとおりです。

minmax アルゴリズムの呼び出しは次のとおりです。minmaxMin(10, &cpB);

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

algorithm - アルファ ベータ プルーニングを使用したランダム性と最小最大アルゴリズムについて

アルファベータアルゴリズムでノードの子をランダムに選択すると、順番に選択するよりもカットオフを取得する可能性が高くなりますか?

*** でマークされた追加の疑似コードを次に示します。

コネクト フォー ゲームでこれを使用して小さなサンプルを実行したところ、少し速く実行されたように見えますが、実際にランダム性の有無にかかわらずカットオフをカウントすると、ランダム性のないカットオフの方が多くなります。それは少し奇妙です。

それが速い(または遅い)ことを証明することは可能ですか?

0 投票する
3 に答える
719 参照

c++ - ペアに対する std::minmax の比較

標準アルゴリズムで、単一の値minmax比較できます。ただし、minmaxアルゴリズムの戻り値を値のペアと比較することはできません。

実際の例

その理由は、make_pair(2, 1)が a を返し、 apair<int, int>minmax(1, 2)返すためpair<const int&, const int&>です。の参照混合operator==オーバーロードはありませんpair

修正は、明示的に記述するstd::pair<const int&, const int&>(int, int)か、これを自家製のmake_cref_pair関数でラップすることです。

質問minmax:戻り値を値の aと比較するよりクリーンな方法はありpairますか? で参照を正しく処理しましたmake_cref_pairか?