問題タブ [state-machine]
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.
state-machine - あなたのプロジェクトでスキーマのような「ステート マシン」を使用した人はいますか?
何かが起こったときにやるべきことをすべて定義し、
本当に感謝しています。
しかし、まだそれを試したことはありません。
私の質問は: ステート マシン ベースのシステムを設計する方法は?
programming-languages - 言語レベルで状態をサポートするプログラミング言語はどれですか?
UnrealScriptは、関数とフィールドを次のようなブロックにグループ化/オーバーロードすることにより、状態(および潜在関数)を本質的にサポートしていることに常に感銘を受けています。
これは、すべての関数内で大量のswitchステートメントを使用するよりもかなりクリーンです(これは、契約によるほぼある種の設計です)。
これに似た状態宣言を本質的にサポートする(ビジュアルプログラミング言語やWorkflow Foundationなどのツールを無視する)他のより汎用的なプログラミング言語はありますか?
編集:
UnrealScriptの状態の利点のいくつかは、サブクラスのステートフル関数をオーバーライドでき、新しい名前付き状態を定義できることです。これは、特に単一継承のみをサポートするC#やJavaなどの言語で、さまざまな状態を実装する列挙型スイッチ(列挙型を拡張できない場合)、デリゲート、またはコクラスで行うのは面倒だと思います。
design-patterns - 2つのステートマシンの同期
たとえば、私はビジネスプロセス管理アプリケーションを構築しています。次のエンティティがあります。多くのタスクに対する1つの問題として相互に関連する問題とタスク。タスクと問題の両方に独自の状態があり、一方の状態がもう一方の状態に影響を与える可能性があります。
たとえば、どちらも「キャンセル済み」と「完了」の状態になっています。問題の状態を「キャンセル済み」に変更すると、すべてのタスクが「キャンセル済み」になります。すべてのタスクの状態を「完了」に変更すると、問題は自動的に「完了」になります。
両方のエンティティにかなりの数の状態があり、ある状態から別の状態への遷移のロジックが変化し、状態の依存関係が変わる可能性があると仮定すると、その状況を処理するためのデザインパターンやベストプラクティスはありますか?
c++ - 有限状態機械コンパイラ
C ++コードを生成できる最高のオープンソースFSMコンパイラは何ですか?
graph - ドットでノードを強制的にランク付けするにはどうすればよいですか?
私はgraphvizドット形式の比較的単純な(自動生成された)グラフをいくつか持っています。これらはステートマシンを通るパスを示していますが、グラフをステートオーダーにしたい場合、ドットには2つのノードが同じランクにある必要があると判断するという少し紛らわしい習慣があります。私は多くの設定(:n
および:s
とweight
以下にリストされているものを含む)を試しましたが、ドットを説得して第3の状態を第4の状態の上に配置することはできません。
多くのグラフでこの問題が発生します。2つのノードが同じランクにあり、それをオーバーライドするためにできることは何もない場合に、ドットの内部に何かがあるようです。1つのノードをに指定するコードもありますがrank=sink
、ドットはとにかくその下に別のノードを配置することにしました。
他のどの制約よりもノードが整然としていることが重要であることをドットで示す方法はありますか?
グラフの生成に使用されたコードは次のようになります。
グラフは現在次のようになっています。
c# - 「yield」キーワードを使用してステート マシンを実装する
ここに示すように、yield キーワードを使用して単純なステート マシンを実装することは可能ですか。私には、C# コンパイラが、yield ステートメントを機能させるためにステート マシンを内部的に実装しているため、大変な作業を行ったように見えます。
コンパイラーが既に行っている作業に便乗して、コンパイラーにステートマシンのほとんどを実装してもらうことはできますか?
誰かがこれを行ったことがありますか、技術的に可能ですか?
theory - 有限時間における2つのFSMの同等性の一般的な証明?
常に有限の時間を要する 2 つの (決定論的) 有限状態マシンの同等性についての一般的な証明は存在しますか? つまり、2 つの FSM が与えられた場合、同じ入力が与えられた場合、FSM を実際に実行しなくても常に同じ出力が生成されることを証明できます (これは終了しない可能性があります)。そのような証明が存在する場合、時間計算量はどのくらいですか?