问题标签 [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 投票
0 回答
404 浏览

c++ - Brzozowski 算法的实现

我正在用 C++ 实现 Brzozowski 算法。我理解这个算法没有问题,但我不知道如何用 C++ 编写整个东西。我知道它应该如何工作,但我没有任何编程技能。

有人可以帮我吗?我只需要一些建议,比如建立一个矩阵或从中获取信息。是否可以将数组放入矩阵中。也许有人知道如何反转算法的节点,或者有人有一些 C++ Brzozowski 算法的片段。

0 投票
1 回答
1601 浏览

javascript - 从解析树到 NFA

我正在寻找将正则表达式转换为 NFA。我知道我们需要将正则表达式转换为解析树,然后将其转换为 NFA。我正在使用java脚本。是否有任何 js 工具可以直接从给定的正则表达式生成解析树?

我也对解析树到 NFA 部分的转换感到困惑。

0 投票
2 回答
3186 浏览

regex - DFA 和 NFA 与正则表达式有何关系?

顾名思义,DFA 和 NFA 与正则表达式有什么关系?学习 DFA 和 NFA 是否有助于更好地理解正则表达式?

0 投票
1 回答
5447 浏览

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

Python中是否有可用的模块将正则表达式转换为相应的NFA,或者我必须从头开始构建代码(通过将正则表达式从中缀转换为后缀,然后实现汤普森算法以获得相应的NFA)?

是否可以在 Python 中从转换表中获取 NFA 的状态图?

0 投票
1 回答
902 浏览

state-machine - nfa 中的 epsilon 转换是否接受任何输入?

如果我在我的 nfa 中有这个过渡

对于字母 {a,b}

这是否意味着当 nfa 处于状态 q1 时将 b 或 a 作为输入读取时,存在从 q1 到 q2 的转换?或者在输入 a 和 b 上没有定义从 q1 到 q2 的转换

0 投票
3 回答
745 浏览

regular-language - 证明 {a,b} 上的下列集合是正则的

给定字母表{a, b},我们将其定义为单词中出现的次数,对于. 证明下面的集合是有规律的。Na(w)awNb(w){a, b}

A = {xy | Na(x) = Nb(y)}

我很难弄清楚从哪里开始解决这个问题。任何信息将不胜感激。

0 投票
1 回答
1615 浏览

regex - 在 E={a,b} 上找到语言的正则表达式

L = w : (na(w) - nb(w)) mod 3 /= 0

我怎样才能找到这种语言的正则表达式?

我知道这意味着 As 的数量减去 B 的数量不能是 3 的倍数。所以 a - b 不能是 3、6、9、12 等。

但我仍然无法将它放入正则表达式。我首先尝试将其设为 DFA 或 NFA,但我也做不到。

任何帮助表示赞赏!

0 投票
1 回答
2956 浏览

regex - NFA DFA and Regex to Transition Table

I have been looking out for some algorithm that has in input a regular expression or a string and that converts it into an NFA and then a DFA, and that would actually print out the transition table of the corresponding final DFA.

I'am thus wondering if there is already an algorithm or C or Python library that does that,or if you have suggestions of algorithms to use, that I could implement.

Thank you.

0 投票
1 回答
4425 浏览

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

我在这个网站上发现了同样的问题,答案是描述如何将 NFA 转换为 regex 的 PDF。但这不起作用,因为这种方法有一些条件:

  1. 有从初始状态到所有其他状态的转换,并且没有到初始状态的转换。
  2. 有一个接受状态,只有转换进入它(并且没有传出转换)。
  3. 接受状态不同于初始状态。
  4. 除了初始状态和接受状态外,所有其他状态都通过转换连接到所有其他状态。特别是,每个状态都有到自身的转换。

在我的示例中,开始状态只是进入下一个状态,而不是所有状态(例如,q0 进入 q1 但没有进入 q2、q3),并且有到开始状态的转换。

那么将 NFA 转换为正则表达式的最简单方法是什么?我没有给出 NFA 示例,因为我没有一个特定的示例,这只是一个一般性问题,因为我遇到了这种 DFA,其中开始状态与所有状态不相关,并且是过渡到开始状态。

我想要一个通用算法来转换这种 NFA。

0 投票
1 回答
96 浏览

c++ - 正则表达式匹配字符串

我目前正在编写一个正则表达式来匹配这样的字符串:

我希望正则表达式匹配每个 ' | 之间出现的每个字符集 ',但也匹配单独的表达式,例如:

我目前有这个,但我做错了消极的前瞻,我不确定如何继续。

Ps 我不太喜欢在这种情况下使用 .* ,但我想不出另一种匹配方式,因为 ' | 之间的字符 's 可以是单词字符、数字或介于两者之间的任何内容。

编辑:

我希望输出匹配看起来像这样:

正则表达式在第 1 行运行,输出:

正则表达式在第 2 行运行:

正则表达式在第 3 行运行: