问题标签 [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 回答
597 浏览

regex - NFA 到 RE Kleene 定理

这是我的 NFA:

NFA

这是我的尝试。

  • 创建新的开始和最终节点
  • 接下来从左边消除第二个节点,这给了我 ab
  • 接下来从右边消除第二个节点,它给了我 ab*a
  • 接下来从左边消除第二个节点,它给了我 abb*b
  • 接下来从右边消除第二个节点,它给了我 b+ab*a

这导致 abb b (b+ab a)*

这是正确的答案吗?

0 投票
1 回答
656 浏览

regex - NFA 如何实现否定正则表达式

我尝试使用 NFA 来实现否定正则表达式。

我知道 NFA 可以很容易地结合正则表达式ab a|ba*

并且品种[ab]可以转换为a|b

但是如何转换[^ab]为 NFA 片段?

0 投票
1 回答
1288 浏览

context-free-grammar - 如何将上下文无关语法(可以生成常规语言)转换为右线性语法

上下文无关文法:(e代表epsilon)

它可以生成正则语言,这意味着它可以转换为正确的线性语法。是否有将 CFG 转换为 RLG 的一般规则?

0 投票
1 回答
34759 浏览

regex - 寻找 DFA 的补码?

我被要求展示 DFA 图和 RegEx 作为 RegEx 的补充(00 + 1)*。在上一个问题中,我必须证明 DFA 的补码是封闭的并且也是一个正则表达式,所以我知道要将 DFA M 转换为补码 M`,我只需要交换初始接受状态和最终接受状态。

但是,RegEx 的初始接受状态似乎是{00, 1, ^},最终接受状态也是{00, 1, ^}如此。因此,交换它们只会导致完全相同的 RegEx 和 DFA,这似乎是矛盾的。

我做错了什么还是这个 RegEx 应该没有真正的补充?

谢谢

0 投票
2 回答
4236 浏览

automata - 将 NFA 转换为 DFA

NFA

我无法理解如何转换。

如果 2 得到一个 'a' 的输入,它会因为空字符串而变成 (1,4) 还是 (1,2,4)?

谢谢!

0 投票
1 回答
470 浏览

python - NFA 中的缩写,python

我正在尝试创建一种方法是缩写从一个点跳到另一个点。

我用当前的边缘创建了一个 NFA

我正在尝试完成的示例 nrec("h-rd", nfa, 1)应该返回accept

nrec是为 NFA 处理字符串并检查它是否接受或拒绝的方法。

我需要添加一个将缩写词纳入帐户的方法。我不太确定如何从一个州跳到另一个州。这是 NFA 类中的内容:

我坚持使用 abrs,但是在尝试定义我自己的 abrs 时,我经常遇到错误,例如

我收到错误“TypeError: init () got an unexpected keyword argument 'abrs'” 为什么我收到该错误?

对于修改,我认为我会做这样的事情

明智的选择还是更好的解决方案?

0 投票
0 回答
109 浏览

python - 试图跳过带有缩写的州

我试图在这个 nfa 中使用缩写来从一个州到另一个州。

NFA 定义为

我在处理字符串时创建了这个内部方法。

当尝试使用 test print =>print nrec("h:d", nfa, 1)它返回 false 事情是它没有创建状态。当:-sign 出现时,我想创建来自("h:z")应该给出所有这些状态 =>的示例的状态('h'->'a'->'z'->'a'->'r'->'d'),我该如何修改这个方法来执行这个任务?NFA这是在创建结构后处理字符串的定义方法。

如何使缩写正常工作并返回 true?

0 投票
2 回答
1700 浏览

regex - 过渡中的歧义:如何在 NFA 中处理字符串?

我已经从给定的正则表达式制作了 DFA 以匹配测试字符串。在某些情况下.*会发生。(例如.*ab)。现在假设机器处于状态 1。在 DFA 中, .*指的是所有字符到自身的转换,以及从状态 1 到“a”的另一个转换。如果测试字符串包含“a”,那么转换可能是什么,因为从状态 1 开始,机器可以进入 DFA 中不可能的两个状态。

0 投票
1 回答
222 浏览

nfa - 确定两个 NFA 接受的语言是否相同

我有两个NFA的。我需要确定两者是否都能识别相同的语言,如果有人能如此友好地解释如何做到这一点,我将非常感激。

0 投票
2 回答
1410 浏览

automata - 什么是 glushkov NFA。Glushkov NFA 和 Thompson NFA 有什么区别?

我在http://lambda-the-ultimate.org/node/2064看到了“Glushkov NFA”这个术语。搜索引擎正在返回对使用 glushkov nfa 的文章的引用,但没有具体说明 glushkov nfa 本身。

什么是 Glushkov NFA?它与 Thompson Construction 创建的 NFA 有何不同?