問題タブ [fsm]

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

java - 有限状態マシンを使用したファイルの解析

ファイルを解析するために独自のfsmを実装しています。私はfsmパターンに慣れていないので、それについて学ぼうとしています。

私のfsmクラスは、現在の状態とすべての受け入れ状態のコレクションとともに解析されているファイルのストリームを取得します。

今、私はいくつかのことについて混乱しています。

  1. fsmはどのように状態を移動し、これまでに解析されたものを追跡しますか?

  2. 状態オブジェクトはどのような情報を保存する必要がありますか?現在、それらはライン上で一致するパターンを持っており、fsmがこの状態に移行できるかどうかを確認します。

例:

解析するファイル:

ですから、私には、人の開始、年齢、場所、および終了者の状態があります。各状態オブジェクトにはパターンがあります。(正規表現)指定された行が受け入れられるかどうかを確認します。

しかし、fsmを使用してこのファイルを解析するときにPersonオブジェクトをどのように構築するのかということに固執していますか?

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

scala - AkkaFSMで遷移中に状態にアクセスする方法

アクターの状態を処理するためにAkkaFSMを使用しています。どの状態から遷移したかに関係なく、特定の状態への遷移が発生するたびにいくつかのアクションを実行したいと思います。ドキュメントを読んだ後、私はこれが次のように解決できると確信しました:

ただし、遷移が発生した場合、stateDataはまだNewStateDataに更新されていません。

特定の状態に入るときにアクションを実行するための推奨される方法は何ですか?

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

android - Android のステート マシンのパフォーマンスの問題

これがAndroidの問題であるかどうかはわかりません.私はJavaを書こうとしているC ++開発者です:)

簡単に言えば問題..長くて保守が難しいスイッチケースを有限状態マシンに置き換えました。ベースコードは同じですが、約20%のパフォーマンスが低下します

より詳細な説明: アプリを拡張した後、SDK のサンプル コードに基づいて SurfaceView ベースの Android アプリを作成しました。ゲーム ループで長いスイッチ ケースを維持していることに気付きました。

一般的に、私のアプリのスケルトンは次のようになります(多くの場合)

そこで、コードをリファクタリングし、単純な有限状態マシン (FSM) を実装することにしました。

myView では、このように使用されます

一方、州内では、同じ量のオブジェクトを作成する前に行ったこととまったく同じことを行い、アプリを実行するまったく同じコードで、フレームレートが約 20% 低下します...

理由はありますか?または私は何を間違っていますか?

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

scala - PriorityExecutorBasedEventDrivenDispatcherを使用してメッセージの並べ替えを防ぐ方法は?

私のAkkaFSMアクターは、タイプに応じてメッセージに優先順位を付ける必要があります。具体的には、アクターは次のいずれかのカテゴリのメッセージを優先順位に従って受信します。

  1. 状態遷移をトリガーするメッセージ
  2. 現在の状態を照会するメッセージ
  3. アクターに何らかの作業を実行させるメッセージ( "WorkMsg")

Akkaのドキュメントによると、PriorityGeneratorを含むPriorityExecutorBasedEventDrivenDispatcherを使用して、上記のリストに従ってメッセージに優先順位を付けることができます。このディスパッチャーを使用してFSMアクターを実装しましたが、うまく機能します。

問題は、このディスパッチャがWorkMsgsも並べ替えることですが、これは私が望んでいることではありません。

WorkMsgsにはタイムスタンプが含まれており、このタイムスタンプでソートされたFSMアクターに送信されます。FSMアクターがWorkMsgsを処理するとき、以前のWorkMsgよりも古いWorkMsgsを破棄します。したがって、これらを並べ替えると、データが失われます。

PriorityExecutorBasedEventDrivenDispatcherがないと、WorkMsgsは並べ替えられませんが、上記のリストの優先順位は満たされません。

同じ優先度のメッセージの並べ替えを防ぎながら、上記のリストの優先度を維持するにはどうすればよいですか?

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

java - dk.brics.automatonパッケージスレッドは安全ですか?

Apache Luceneは、 Bricsオートマトンパッケージの変更された形式を使用します。しかし、Bricsのスレッドは安全ですか?

より具体的には、異なるスレッドからの複数の同時オートマトンインスタンスをブロックせずに安全に処理できますか?

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

c++ - 非決定性有限状態マシン(C ++)での試みは、静的std :: mapは良い考えですか?

非決定論的FSMを実装する必要があるため、状態と遷移(他のFSMの状態に依存する場合と依存しない場合がありますが、イベント/入力に依存する必要があります)を保持するFSMクラスを定義するというアイデアを思いつきました。各オブジェクトと静的std::mapを、すべてのFSMが構築時に登録するクラスに追加します。このように、イベント/入力時に、各FSMは必要に応じて他のFSMの状態を検索し、すべてのFSMを1つの巨大な決定論的FSMに結合することなくそれに応じて動作できます。

これは1つのNFSMで機能します。これは私が今必要としているすべてですが、さらに必要な場合は拡張できますか?このデザインに根本的な問題はありますか?

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

c++ - 有限ステート マシンにワイヤレス メディアにアクセスするシンクの疑似コード

この疑似コードは、センサーからデータを送受信する際にワイヤレス メディアにアクセスしようとするシンク用です。

  1. 設定pc = 0.01
  2. ポーリング パケットを送信する
  3. ポーリング パケットに応答するセンサーがない場合は、pc = min (pc + 0.01, 1.0)
  4. センサーの 1 つからデータ パケットが正常に受信された場合は、pc現在の値のままにします。
  5. 破損したデータ パケットによって示されるように、2 つ以上のセンサー間で衝突が発生した場合は、pc = pc / 2
  6. 手順 2 を繰り返します

私はFSMダイアグラムの読み方のリンクを読みましたが、センサーの部分で本当に役に立ちました。しかし、上記の疑似コードを FSM に変換しようとすることについて、私はまだ混乱しています。

疑似コードを FSM に変換する方法を明確に説明しているリンクまたは電子ブックを提案できる人はいますか?

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

c++ - 偽のスタックは実際のスタックよりも高速です

再帰的な構文解析を行っています。

現在、私は偽のスタックを持っており、有限状態マシンの状態を格納しているので、再帰的にドリルダウンするときに、現在の状態をプッシュし、再帰的なテキストの処理が終了した後でポップします。

次のような「状態ID」スタックを使用する方が高速でしょうか。

または、物事を適切な関数に分割して、C++にスタックについて心配させる方が速いでしょうか。

(誰かが「それはCであり、C ++ではない」と言うことを知っているので、先制的に答えます。私のプログラムのc ++ですが、多くのcが含まれています)。

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

rdf - 有限状態マシンをRDFとして表現しますか?

有限状態マシンをRDFとして表現できるかどうか知りたいですか?参考文献や例があれば便利です。

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

python - (openFST製の)FST入力をどのように提供しますか?出力はどこに行きますか?

始める前に、私は (Python から) Linux シェルを使用しておりusing subprocess.call()、openFST を使用していることに注意してください。

openFST に関する文書や質問を調べてみましたが、この質問に対する答えが見つからないようです。出力はどこに行きますか?「fstproject」を実行するだけですか? もしそうなら、どのように変換する文字列を与え、最終状態に達したときにさまざまな変換を出力しますか?

この質問が明白に思われる場合は、お詫び申し上げます。私はまだ openFST にあまり詳しくありません。