问题标签 [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.
python - 有没有可以将正则表达式转换为 fsm 的编译器?或者可以转换成人类的话?
可以转换的东西
到
或类似的东西
并接受 2 或 5
c - 有限状态机实现
我正在尝试在 C 中实现有限状态机,并且需要它非常快。所以我决定使用函数指针作为“状态”:
然后,主 FSM 循环可以非常简单:
有一个问题:
1) 是否可以避免在函数返回类型中使用 void 指针?理想情况下,状态函数应该具有某种类型定义的类型,以确保在 FSM 中仅使用具有这种类型的函数。
2)在 C 中实现 FSM 的传统方法是使用枚举作为状态和基于开关的调度程序循环,因此与基于函数指针的实现相比,会有一个间接级别。
但我不确定,指令缓存或分支预测是否存在一些问题?换句话说,是否存在可以胜过我的解决方案的实现?
谢谢。
python - 将正则表达式转换为有限状态机
您是否会提示将任何正则表达式转换为有限状态机(FSM)的算法。例如,解析正则表达式并将状态适当地添加到 FSM 的算法?任何参考或更深层次的想法?
我正在用 Python 写这个
regex - 我可以用 FSM 计算字符串中的位数吗?
我想计算一个字符串中可以包含非数字(aa11aa1a)的位数。我可以用有限状态机解决这个问题吗?这个问题可以表示为正则表达式吗?
如果我想知道计数是否为“X”怎么办,它会改变性质问题吗?更准确地说,这个字符串中有 3 位数字吗?FSM 是否足以解决问题?
algorithm - 算法实现的测试规则,它们是什么?
我想知道,我如何测试任何给定算法的实现?
测试方法有哪些不同的选项?
- 是否需要在确定/非确定最终状态机上进行算法分解?
- 单元测试?
- 还有什么?
finite-automata - 对于给定的正确输入字符串,如何纠正稍微不正确的 DFA?
我写了一个可以生成 DFA 的程序。但是 DFA 有点不正确。也就是说,有时他们不能接受正确的字符串。
我的问题是:是否有任何算法可以纠正 DFA,以便它们可以接受给定的正确字符串?
更正式地说,
假设 DFA D不接受字符串str。
需要一个算法A , st D' = A( D, str)并且D'接受str
java - 从 JPanel 中删除 JPanel
我有一个包含一堆状态的游戏的状态管理器。现在在我的一种状态(“菜单”)中,我在一个 JPanel 中有两个 JButton(JPanel 被添加到显示所有内容的主 JPanel)。当我单击 JButton“播放”时,我从堆栈中删除了菜单状态。然而,JButtons 留在屏幕上(即使当我 peek() 我看到菜单已从堆栈中删除)。
我不想从状态中删除按钮,因为我希望能够返回菜单并再次看到我的按钮。如何删除按钮以及状态?
compiler-construction - 为给定的正则表达式构建和运行 NFA 与 DFA 的时间成本
我正在经历过去的考试,并且不断遇到我在教科书或谷歌上找不到答案的问题,因此非常感谢任何帮助。
我目前遇到的问题如下:
给定正则表达式 (a|bb)*,推导出将其转换为相应 NFA 和 DFA 的时间成本估计值。您的答案应该参考正则表达式的大小。
另一年的一个类似问题是:
鉴于以上示例,您知道原始正则表达式的大小 |r| 和输入字符串 |x| 的大小,解释如何计算构建和运行 NFA 与构建和运行等效 DFA 的时间成本。
(a|bb)* 得到的 NFA 有 9 个状态,而 DFA 有 4 个状态。即使知道这一点,我也不知道如何解决这个问题。
javascript - Javascript FSM 的可能性/想法
所以我一直在 Unity3D 中制作东西,并决定尝试一个名为 Playmaker 的扩展。基本上是使用 FSM(有限状态机)来设计状态和事件流。您可以将事件拖到不同的状态以触发事件的另一种状态等。(参考:http ://www.hutonggames.com/features.html )注意:我链接的实际产品与我的想法无关想尝试并建立。只是一个参考。
好吧,我希望能够在 Javascript 中做一些类似的事情。我想我有一些逻辑,但我更多地考虑用户体验。我希望用户能够使用 Javascript 在浏览器中使用我的逻辑创建 FSM。
我不要求任何人为我或任何东西编写代码,因为我在 javascript 方面有足够的经验来完成大部分工作。我更多地考虑将一个事件拖到另一个事件的方式,它会创建一个可视箭头,向用户显示连接了哪些事件。如果您查看我提供的参考链接上的第一个教程,您就会明白我的意思。箭头长度和曲线将是动态的。可能能够拖动状态以重新组织状态的布局。这显然也会改变箭头指向的方式。
我希望这一切都说得通。
想法?指针?也许有人已经做过这样的事情了?我确实找到了一个 Javascript 状态机,但它只生成一次,不允许用户移动任何东西,拖动到另一个状态的事件非常重要。
c++ - 在进行 OOP 状态机设计时如何避免单例?
我正在尝试自学编程。我以与大多数人相同的方式开始;制作小而杂乱的应用程序和游戏,以不那么简单的方式做简单的事情。最近,我一直在尝试通过编写一个稍微复杂一些的游戏来迈出下一步,该游戏使用 OOP 设计来编写更好、更模块化的代码!
我遇到的主要问题是我的主要 StateManager (FSM) 类的设计(在介绍/菜单/游戏/等屏幕状态之间切换)。高高在上,我只见过两种设计方法:
使用 switch/case 语句 + 枚举在状态之间切换..
制作一个单例 FSM 类来处理向/从向量推送/弹出状态。
现在,我的问题是,switch case 语句非常重复且笨拙,这与我使用这个项目来自学 OOP 的目标背道而驰。
我的第二个也是更大的问题是“单身”建议。
正如我之前所说,我正在努力自学,在编程方面我还有很多东西要学,尤其是在 OOP 和设计模式等领域。我遇到了一个问题,对于我发现的每一个“单例都是邪恶的”线程和讨论,我发现人们在他们的代码中使用单例来制作“引擎”类和 FSM 的教程和参考资料一样多。这是一个非常一致的混合信息。
我想我只是不明白为什么......即使你只想/打算拥有一个类的单个对象,为什么有必要/有益于将构造函数设为私有并创建一个单例?我读过很多关于单例有多糟糕,它们本质上是如何全局的,它们是如何阻碍多线程的,以及有多少程序员认为它们被过度使用或只是简单的糟糕设计......但我看到一个又一个例子使用它们的人,很少有反例显示替代方法。
普通班就不能做同样的事情吗?明确限制创建实例的目的是什么?我只听说过关于单例的负面消息,但人们似乎经常使用它们……我是否完全错过了单例和 OOP 的一些内容?
单例的使用只是一种趋势,还是人们称单例为“邪恶”的一种趋势?我该如何解决这个问题..?开关/外壳 FSM 和单例 FSM 之间没有什么东西吗?有人不能以完全相同的方式设计他们的程序的状态系统而不使他们的任何类成为单例吗?那会改变什么吗?[困惑]