問題タブ [non-deterministic]

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 に答える
388 参照

mysql - この関数は決定論的ですか? null または INT を返す

決定論的関数は、「常に同じ結果セットを返す」で説明されています

どういう意味ですか?関数が常に (何があっても) 定義された型の値を返す場合は? はいの場合、この関数を決定論的にする必要がありますか?

null(空のセット?)またはINTを返すことができるので、非決定論的な関数だと思います

この関数を決定論的としてマークし、null 値を返すと、未定義の動作になりますか?

NULLを-1に反転する条件を追加できるかもしれませんが、これは自滅的なアイデアです

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

automata - プッシュダウン オートマトンで逆の順序でスタックをプッシュ/ポップする

だから私は、プッシュダウン オートマトンと文脈自由言語に関するテストの勉強をしていて、この 1 つの構造に固執しています。

以下で説明する 1 つの部分を除いて、このオートマトンのすべての部分が完全に機能しています。

認識する必要がある言語は次のとおりです。{ x#y#z#w | x, y, z, w in {0, 1}+ with x ≠ w and y ≠ z }.

したがって、私が抱えている問題は、Xi と Wi を比較することです。これは、オートマトンが W を処理する時点では Wi の要素がわからないためです。これは、私が設計した方法です。

X の内容を格納すると、各要素をポップオフして W の要素と比較するときに、逆の順序でポップオフするため、000111 と 111000 が同じ文字列であると見なされ、PDA は拒否する必要がありますが拒否されます。明確に受け入れます (それらは異なる文字列です)。これは一例にすぎません。これにより、他の入力が正しく分析されなくなります。

X の内容を逆の順序でスタックにプッシュする方法があれば、それらは元の形式でポップオフされるため、文字列の内容を正しく比較できます。

普通にプッシュした後にスタックの内容を逆にする方法があれば、これも解決策にたどり着くことができます。

どんな助けでも大歓迎です。ありがとう。

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

regex - 正規語学級は組合運営により閉鎖

私は閉じた和集合操作定理の下で正規語を学んでいます。Q,F,q oを取得しましたが、デルタ δ を取得するのに混乱しています。特にデルタセクションを例で説明してください。

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

python - 主キーによるsqlalchemy関係のソート

リレーションシップ属性を子テーブルの主キーでソートするにはどうすればよいですか? 多くのテーブルに共通の親があり、親にはこのような宣言システムを使用して各子のリストがあるスキーマがあります

したがって、シナリオ オブジェクトには、子のリストである属性 children があります。リスト内の子オブジェクトの順序が任意であることを除いて、これは正常に機能します。これはアプリケーションのセマンティクスにとっては問題なく、非決定論的な動作につながります。複合主キーであっても、すべての子リストがそのテーブルの主キーでソートされるように mixin を構成する最良の方法は何ですか?

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

algorithm - 非常に非決定的なシステムで MCTS を実行する方法は?

小さなゲームの AI に MCTS アルゴリズムを実装しようとしています。ゲームはRPGシミュレーションです。AI は、戦闘でどの動きをするかを決定する必要があります。ターンベースバトル(FF6-7風)です。関連する動きはありません。

詳細については触れませんが、プレイヤーがプレイする番になったときに、特定の状況でどの動きがプレイヤーを選択するかを確実に知っていると仮定しても問題ありません。

どちらかのパーティが生きているユニットを失った場合、ゲームは終了します (4v4)。何ターンでもかかる可能性があります(終了しない場合もあります)。ダメージ計算とスキル処理には多くのRNG要素があります(攻撃はヒット/ミス、クリティカルかどうか、「proc」できるかどうかにかかわらず多くのprocsが進行中です、バフは発生する%値を持つことができます. ..)。ユニットにはそれぞれ約 6 つのスキルがあり、分岐要因がわかります。

私は今のところ悪い結果をもたらす MCTS の暫定版を構築しました。私はいくつかの問題を抱えています:

私の主な問題の 1 つは、移動の非決定論的状態をどのように処理するかということです。私はこれについていくつかの論文を読みましたが、私はまだ暗闇の中にいます.

ゲーム情報を決定し、その上で MCTS ツリーを実行し、プロセスを N 回繰り返して、考えられるゲームの状態を幅広くカバーし、その情報を使用して最終決定を行うことを提案する人もいます。最終的には、MCTS ツリーを 1 回ではなく N 回計算する必要があるため、計算時間が大幅に増加します。私は戦いの過程で何千ものRNG要素を持っているので、それに頼ることはできません.

同じ動きに X 個の子を追加するという考えがありましたが、それも良い答えにはならないようです。RNG 曲線を少し滑らかにしますが、特定の RNG のパーセンテージと比較して X の値が大きすぎる/小さすぎる場合は、逆方向にシフトできます。そして、複数の RNG パー ムーブ (ヒット チェンジ、クリティカル チャンス、何かを発動するパーセンテージなど) を取得したので、すべてのケースを満たす適切な X の値を見つけることができません。何よりも悪いバンドエイドです。

同様に、RNG タプルごとに 1 つのノードを追加する {ヒットまたはミス、クリティカルかどうか、proc1 かどうか、proc2 かどうかなど...} は、すべての可能な状況をカバーする必要がありますが、いくつかの重大な欠点があります。移動ごとに 2^5 ノードを考慮する必要があり、計算するには多すぎます。それらをすべて作成できれば、それらに確率 (ノードのタプル内の各 RNG 要素の確率にリンク) を割り当て、選択段階でその確率を使用できます。これは全体的に機能するはずですが、CPU では非常に困難です :/

また、2 つの異なるゲーム状態に基づいてプレイヤー/モンスターの統計値を正確に平均化し、移動処理中に移動の結果を平均化する方法がないため、それらを 1 つのノードに「マージ」することはできませんが、多くのことが必要です。コードを単純化するのは面倒であり、いずれにせよ精度を急速に低下させます。

この問題にアプローチする方法はありますか?

アルゴリズムの他のいくつかの側面は私を避けています:

終了状態になるまで完全なプレイアウトを行うことはできません。これは、A) 計算に多くの時間がかかるため、および B) 一部の戦闘が (設計上) 終わらない可能性があるためです。私は2つの解決策を持っています(私は混ぜることができます)-Xターンのランダムプレイアウトを行います-評価関数を使用して、状況を試してスコアを付けます。

評価するヘルスポイントのみを考慮しても、特定の状況で信頼できる値を返すための適切な評価関数を見つけることができません (プレイヤーの場合は 1 ~ 4 ユニット、モンスターの場合も同じです。現在の HP を知っています/最大値)。私を悩ませているのは、戦いの長さ/力の格差が大きく異なる可能性があることです. つまり、HP の 0.01% の変化が重要な場合 (たとえば、長いゲーム対ボスの場合) もあれば、重要ではない場合もあります (プレイヤーが自分よりも低いレベルのゾーンを耕作する場合)。

戦闘間のパワーと HP の差異の不均衡は、UCB 選択プロセスでの Biais パラメーターを修正するのが難しいことを意味します。私は現在、0.03 のような非常に低い値を使用しています。> 0.1 で、探索係数が非常に高いため、ツリーは深さごとに構築されます:/

今のところ、私はシミュレーション段階で移動を選択するためにバイアスをかけた方法も使用しています。プレイヤーがその状況で選択する移動と、AI のランダムな移動を選択することで、プレイヤーに有利な偏ったシミュレーションにつながります。両方に純粋なランダムなものを使用してみましたが、結果が悪化するようです。偏ったシミュレーション段階を持つことは、アルゴリズムの目的に反すると思いますか? AIに悲観的な見方を与えるだけで、最終結果にあまり影響を与えないと思う傾向があります. たぶん私の考えは間違っています。

どんな助けでも大歓迎です:)

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

c# - 非決定論的ガベージ コレクション

メソッドが呼び出されたときにオブジェクトが破棄されることがわかっているため、C# の dispose メソッドは確定的なガベージ コレクション用であることがわかりました。非決定論的なガベージ コレクションの簡単な例を教えてください。通常、マルチスレッドの状況で発生しますか?

ありがとう