问题标签 [nfa]

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 投票
1 回答
3550 浏览

nfa - 我们如何知道 NFA 有最少的状态?

有什么证据可以证明这一点吗?我们怎么知道当前的 NFA 有最小的量呢?

0 投票
1 回答
800 浏览

regex - 在 clojure 中表示图形

我试图通过移植一个玩具 NFA 正则表达式匹配器来学习一些 clojure 。显然,我的主要问题是表示和操作图表。我找到了一个可行的解决方案,但我的实现(gensym基本上是用来模拟指针)让我嘴里有一种难吃的味道。

是否愿意提出改进建议,包括表示图形以及一般可读性和习语?(最初的命令式解决方案比我现在的更具可读性)。

干杯!

0 投票
1 回答
13741 浏览

regex - 如何将 NFA 转换为正则表达式

我知道将正则表达式转换为 NFA,有一个算法。

但我想知道是否有一种算法可以将 NFA 转换为正则表达式。如果有,它是什么?

如果没有,我也想知道是否所有 NFA 都可以转换为正则表达式。是否存在无法表示正则表达式的 NFA?

谢谢!:D

0 投票
2 回答
788 浏览

regex - 如何实现基于 NFA 或 DFA 的正则表达式匹配算法来查找所有匹配项?

匹配可以重叠。

但是,如果从同一位置开始找到多个匹配项,则选择较短的一个。

例如,要在字符串"abcabdcd"中查找正则表达式部分"a.*d",答案应该是 { "abcabd" , "abd" }。并且不应包含“abcabdcd”“abdcd” 。

0 投票
1 回答
2665 浏览

regex - 生成具有死状态或多余状态的 DFA 的正则表达式

我希望在我的词法分析器中实现一个 DFA 最小化器,但我似乎无法生成一个看起来不像它已经是表达式的最小 DFA 的 DFA。

我正在从一个 NFA 构建 DFA,该 NFA 是使用来自后缀正则表达式的 thomson 构造构建的。这和龙书里描述的差不多。为了使词法分析器使用从开始状态的 epsilon 转换来组合几个 NFA。正是在这个组合的 NFA 上应用了 DFA 算法。

那么,是否有任何“已知”的正则表达式会生成一个 DFA,这将为死态消除和状态最小化提供一个很好的测试平台?

我当然可以破解一个奇怪的 DFA 并在其上应用算法,但它真的不是一个合适的测试用例吗?如果这样我构建 DFA 的方法不容易出现死状态,那么该信息将同样有价值,因为那时我可以完全跳过实现状态消除功能。

编辑:如果您需要实现细节以便准确回答,代码可在github上获得,特别是NFA.csDFA.cs类。此外,如果有帮助,我还写了一系列关于我正在使用的构造算法的博客文章。

0 投票
1 回答
505 浏览

algorithm - 是否有一种有效的算法来确定一个 NFA 接受的语言是否是另一个 NFA 接受的语言的超集?

给定两个不确定的有限自动机M1M2,是否有一种有效的算法来确定M1接受的语言是否是M2接受的语言的超集?

0 投票
2 回答
1362 浏览

c++ - 检查两个正则表达式是否相等/同构的库

我需要一个库,它将接受两个正则表达式并确定它们是否同构(即匹配完全相同的字符串集)例如 a|b 与 [ab] 同构

据我了解,正则表达式可以转换为 NFA,在某些情况下可以有效地转换为 DFA。然后可以将 DFA 转换为最小 DFA,如果我理解正确,它是唯一的,因此可以比较这些最小 DFA 是否相等。我意识到并非所有正则表达式 NFA 都可以有效地转换为 DFA(尤其是当它们是从不是真正“正则”的 Perl 正则表达式生成时),在这种情况下,理想情况下,库只会返回错误或其他指示转换是不可能。

我在网上看到了大量关于这样做的文章和学术论文(甚至是一些要求学生这样做的课程的编程作业),但我似乎找不到实现此功能的库。我更喜欢 Python 和/或 C/C++ 库,但任何语言的库都可以。有谁知道这样的图书馆吗?如果没有,是否有人知道我可以用作起点的接近的图书馆?

0 投票
2 回答
2996 浏览

dfa - 我如何证明这种语言是否正常?

我如何证明这种语言是否正常?

L = {a n b n : n≥1} 并集 {a n b n+2 : n≥1}

0 投票
3 回答
2767 浏览

regex - 正则表达式 - 最多两对连续

我正在学习一门计算课程,该课程还教授正则表达式。有一个很难回答的问题。

找到接受最多包含两对连续 0 的单词的语言的正则表达式。字母表由 0 和 1 组成。

首先,我制作了该语言的 NFA,但无法将其转换为 GNFA(后来被转换为正则表达式)。我怎样才能找到这个正则表达式?是否将其转换为 GNFA?

0 投票
1 回答
201 浏览

c - 用于绘制 DFA、NFA 的 C 库

任何用于绘图机的轻量级 C 库?我进行了搜索,但是我发现的所有库都不是特定于任务的,它们很重。我需要一个用于绘图机的轻量级库。