问题标签 [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.
java - 使用有限状态机解析文件
我正在实现自己的 fsm 来解析文件。我是 fsm 模式的新手,所以试图了解它。
我的 fsm 类采用正在解析的文件流以及当前状态和所有接受状态的集合。
现在我对几件事感到困惑。
fsm 如何通过状态移动并跟踪到目前为止已解析的内容?
状态对象应该存储哪些信息?现在他们有一个匹配的模式,看看 fsm 是否可以移动到这个状态。
例子:
要解析的文件:
所以我有一个人开始,年龄,位置和结束人的状态。每个状态对象都有一个模式。(正则表达式)检查给定的行是否被他们接受。
但是我被困在使用 fsm 解析这个文件时如何构造一个 Person 对象?
scala - 如何在 Akka FSM 中的转换期间访问状态
我正在使用 Akka FSM 来处理我的 Actor 中的状态。我希望每次转换到某个状态时都执行一些操作,无论转换是从哪个状态进行的。阅读文档后,我确信可以这样解决:
但是,当转换发生时,stateData 尚未更新为 NewStateData。
在进入特定状态时执行操作的推荐方式是什么?
android - android上状态机的性能问题
不确定这是一个 android 问题,我是一名 C++ 开发人员,正在尝试编写 java :)
简而言之问题..我用有限状态机替换了一个长而难以维护的开关盒,虽然基本代码相同,但我得到了大约 20% 的性能损失
一些更详细的解释:在扩展我的应用程序后,我根据 SDK 中的示例代码创建了一个基于 SurfaceView 的安卓应用程序我发现自己在我的游戏循环中维护了很长的开关案例
通常我的应用程序骨架看起来像这样(很多情况下)
所以我决定重构我的代码并实现一个简单的有限状态机(FSM)
并在 myView 中像这样使用它
虽然,在这些州内,我所做的与在创建相同数量的对象和运行我的应用程序的相同代码之前所做的完全一样,但我的帧速率降低了大约 20%...
任何想法为什么?或者我做错了什么?
scala - 如何使用 PriorityExecutorBasedEventDrivenDispatcher 防止消息重新排序?
我的 Akka FSM 演员需要根据类型确定消息的优先级。具体来说,参与者按照优先顺序接收这些类别之一的消息:
- 触发状态转换的消息
- 查询当前状态的消息
- 导致参与者执行某些工作的消息(“WorkMsg”)
根据 Akka 文档,可以根据上面的列表使用包含 PriorityGenerator 的 PriorityExecutorBasedEventDrivenDispatcher 对消息进行优先级排序。我已经用这个调度程序实现了 FSM 演员,它运行良好。
问题是这个调度程序还重新排序了WorkMsgs,这不是我想要的。
WorkMsgs 包含一个时间戳,并被发送到按此时间戳排序的 FSM 参与者。当 FSM 参与者处理 WorkMsgs 时,它会丢弃比之前的 WorkMsg 更旧的 WorkMsgs。所以如果这些被重新排序,我会丢失数据。
如果没有 PriorityExecutorBasedEventDrivenDispatcher,WorkMsgs 不会重新排序,但是上面列表中的优先级不满足。
如何保持上面列表中的优先级,同时防止相同优先级的消息重新排序?
c++ - 尝试非确定性有限状态机 (C++),静态 std::map 是个好主意吗?
我需要实现一个非确定性的 FSM,所以我想出了定义一个 FSM 类的想法,该类包含状态和转换(可能取决于也可能不取决于其他 FSM 的状态,但必须取决于事件/输入)每个对象并将静态 std::map 添加到每个 FSM 将在构造时注册的类。这样,在事件/输入上,每个 FSM 可以在需要时查找其他 FSM 的状态并做出相应的行为,而无需将所有 FSM 组合成一个巨大的确定性 FSM。
这适用于一个 NFSM,这是我现在所需要的,但如果需要更多,可以扩展吗?这种设计有什么根本错误吗?
c++ - 接收器访问无线介质到有限状态机的伪代码
此伪代码用于接收器,该接收器尝试访问无线介质以发送和接收来自传感器的数据。
- 放
pc = 0.01
- 发送轮询数据包
- 如果没有传感器响应轮询数据包,则设置
pc = min (pc + 0.01, 1.0)
- 如果从其中一个传感器成功接收到数据包,则保持
pc
当前值 - 如果两个或多个传感器之间发生冲突,如损坏的数据包所示,则设置
pc = pc / 2
- 重复步骤 2
我已经阅读了如何阅读 FSM 图的链接,它确实对我的传感器部分有帮助。但是我仍然对尝试将上述伪代码转换为 FSM 感到困惑。
任何人都可以建议一个链接或电子书,清楚地解释将伪代码转换为 FSM 吗?
c++ - 假堆栈比真堆栈快吗
我正在做一些递归解析。
目前我有一个假堆栈,我在其中存储有限状态机的状态,因此当我递归向下钻取时,我推送我所处的状态,并在处理完递归的文本位后将其弹出。
有一个“状态ID”堆栈会更快吗:
或者将事物拆分为适当的函数并让 C++ 担心堆栈会更快。
(我知道有人会告诉我“那是 C,它不是 C++”,所以我先发制人地回答,我的程序是 C++,但里面有很多 C)。
rdf - 将有限状态机表示为 RDF?
我想知道有限状态机是否可以表示为 RDF?任何参考或示例都会很有用。
python - 您甚至如何提供(openFST 制作的)FST 输入?输出到哪里去?
在开始之前,请注意我使用的是 linux shell(通过using subprocess.call()
Python),并且我使用的是 openFST。
我一直在筛选有关 openFST 的文档和问题,但我似乎无法找到这个问题的答案:人们实际上如何为 openFST 定义、编译和组合的 FST 提供输入?输出到哪里去?我只是执行'fstproject'吗?如果是这样,我将如何给它一个字符串来转换,并在达到最终状态时打印各种转换?
如果这个问题看起来很明显,我深表歉意。到目前为止,我对 openFST 还不是很熟悉。