問題タブ [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 投票する
2 に答える
169 参照

haskell - 非決定論的な選択肢の 1 つを選択する

次のおもちゃの例では、関数を呼び出して数値を非決定論的に計算しanyFunction、偶数の選択肢のみを保持します。偶数の選択肢の代わりに最大の選択肢を保持する同様のコードをどのように書くことができますか? 別のモナドスタック署名が必要ですか?

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

theory - NFA から DFA への変換 = 決定論的?

私は決定論と非決定論の意味に少し苦労しています。オートマトンに関しては違いがわかりますが、次の答えを見つけることができないようです: NFA から DFA への変換は決定論的ですか?

同じ正規言語に対して複数の DFA を構築できる場合、NFA から DFA への変換の結果は一意ではないということですか? したがって、非決定論的アルゴリズムですか?

皆さんが提供できる情報があれば幸いです。

前もって感謝します!

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

haskell - 二項展開による折り畳みによるパスカル三角形経路の合計 - ベースのアキュムレータ

ネタバレ: これはプロジェクト オイラーの問題 #18 です。自己責任でお読みください

問題は、パスカル三角形の頂点から厳密に下に向かうすべての非決定論的経路の「最大和」を見つけることです。三角形の行を折り畳んで合計を計算しようとしています。

入力文字列といくつかの基本的な準備を次に示します。

ここには 2 つのアイデアがあります。木の列を持つことと、三角形の列を持つことです。型レベルの抽象化はあまり行いませんでしたが、それほど重要ではありません。アイデアは、三角形のすべての行がその長さ全体の二項式の「並列列挙」であり (つまり: [(4,0), (3,1), (2,2), ... (0,4)])、ラベル付きの三角形の行がツリーの行に適用される前に、ツリーのすべての行が「コピーフォーク」されるというものです。分岐するたびに、非決定論の完全性が保持されるようにします。ここに私のテクニックがどのように見えるかがあります:

私の問題は、コードが1行の入力に対して機能することですが、複数の行を折りたたむと失敗します。私の「コピーフォーク」手法は、アクセスできると予想されるラベルを介しoverElemsて関数を適用する前に、新しいラベルを作成していることを直感しています。ここに私の主な機能があります:

奇妙なことに、1 行を折りたたむと機能しますが、複数行を折りたたむと高次関数が適用されず、結果が正しいサイズに拡張されます。入力例をいくつか示します。

私のリスト処理の怠惰はこれを引き起こしますか? 私の感覚では、ラベルの列挙は、ラベルoverWithを介して関数を適用する前に行われています。これも私のコードの全ページです。

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

python - 決定論的な python スクリプトが非決定論的な方法で動作する

ランダム化を使用しないスクリプトを実行すると、さまざまな答えが得られます。スクリプトを実行するたびに、答えは同じになると思います。この問題は、特定の (悪条件の) 入力データでのみ発生するようです。

スニペットは、線形システムの特定のタイプのコントローラーを計算するアルゴリズムから来ており、主に線形代数 (逆行列、リカッチ方程式、固有値) を実行することで構成されています。

明らかに、これは私のコードが正しい結果をもたらすとは信じられないため、私にとって大きな懸念事項です。条件の悪いデータでは結果が間違っている可能性があることはわかっていますが、一貫して間違っていると予想しています。Windows マシンで答えが常に同じではないのはなぜですか? Linux マシンと Windows マシンで同じ結果が得られないのはなぜですか?

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win 32Numpy バ​​ージョン 1.8.2 および Scipy 0.14.0を使用しています。(Windows 8、64 ビット)。

コードは以下です。また、2 台の Linux マシンでコードを実行してみましたが、スクリプトは常に同じ答えを返します (ただし、マシンの答えは異なります)。1 つは、Numpy 1.8.2 および Scipy 0.14.0 で Python 2.7.8 を実行していました。2 つ目は、Numpy 1.6.1 と Scipy 0.12.0 で Python 2.7.3 を実行していました。

リカッチ方程式を 3 回解き、答えを出力します。毎回同じ答えを期待していますが、代わりにシーケンス '1.75305103767e-09; を取得します。3.25501787302e-07; 3.25501787302e-07'.

私の派手な設定は以下の通りですprint np.show_config()

(質問を削除するために編集)

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

multithreading - マルチスレッド機能プログラムは決定論的ですか?

関数型プログラミングがもたらすプログラミング言語のパラダイム (不変性、副作用のない関数) を考えると、関数型プログラミングはマルチスレッド プログラムに非常に適していると読んだことがあります。また、マルチスレッド プログラムは非決定論的であることが多いことも読みました。

同様の(ただし異なる)質問に対するstakxの回答を考えると、ここに私の質問があります:

関数型プログラミング言語を使用してコーディングした場合、マルチスレッド プログラムは決定論的になりますか?