finite-automata

    3热度

    1回答

    我很好奇,如果有这样一个正则表达式定义所有可能的正则表达式。由于在RE中可能出现转义字符,因此在RE中主要用于描述字母数字字符序列,因此将这些字符表示为验证程序RE会很棘手。 我的问题可以类比解释为好像有一个有限自动机能够决定有限自动机候选人是否是FA。这是因为我们知道FA的设计方式可以排除给定的输入字符串与FA定义或不符合的模式匹配。所以,如果我们以某种方式将所有的东西(FA候选)定义为字符串,

    0热度

    1回答

    我试图创建一个方法是abreviations跳过从一个点到另一个。 我创建了一个NFA与当前边的什么,我试图完成 EDGES = [ (0, 'h', 1), (1,'a',2), (2,'z', 3), (3,'a',4), (4, 'r', 5), (5, 'd', 6) )] 例 nrec("h-rd", nfa, 1)应该返回accept nrec是处理该NFA字符串的方

    2热度

    1回答

    我可以获得关于如何为接受所有字符串的字母表{a,b}构造正则表达式的提示即: 具有相同数量的a的和b的s。 从左至右读取字符串,a和b的数字之间的差异永远不会超过两个。 例如: aaa不是有效的(因为有3 a的多于b的) aa不是有效的(不相同数量的a的和b's) aababb有效(相同数量的a的和b的和累积数量a的或b的从来都不是3比其他更多) [空字符串]为有效 bbaabbaa有效

    0热度

    2回答

    我在找Kameda-Weiner算法的解释。 我发现论文“关于非确定性有限自动机的状态最小化”,我认为它包含了这一点,尽管它不幸在付费墙后面,而我只是一个业余爱好者。 有人可以解释算法,或指向另一个来源?

    6热度

    2回答

    我正在与Ragel一起评估FSA,并且我想嵌入一个用户操作,该操作在我的机器完成测试输入时运行。无论机器是否以接受状态结束,我都需要执行此操作。我从Ragel指南采取了这一修改的例子,说明了什么我要去为: #include <string.h> #include <stdio.h> %%{ machine foo; main := ('foo' | 'bar') 0 @{

    0热度

    1回答

    我正在使用Ragel来评估FSA,并且在输入中每次评估字符后我都需要运行一段代码。 Ragel拥有允许用户操作嵌入到转换和状态中的操作符;但是,经过一些测试后,似乎这些用户操作仅在机器第一次进入给定状态时运行。因此,如果机器在多个字符中保持一种状态,则不会执行用户操作。每次ragel处理输入字符时,是否都有一个用户操作的方法?

    0热度

    2回答

    如果L是一种语言定义为: L = { awa | w ∈ {a, b}* }, 是aa语言L的字符串? (注意w这里是空字符串)

    0热度

    1回答

    例如正则表达式go*d是一个模式将匹配字符串喜欢gd,god,good ... 你能想象它的DFA会像一个三态机。 当它用于模式搜索时,例如,给定句子xxxxgodxxxxgoodxxx,go*d的DFA似乎不起作用。即使在此3态DFA中,字符x也未定义。 我们可以想象一个具有额外“重置”状态的4状态DFA可能在这里工作。也就是说,当遇到未定义的字符时,进入该“重置”状态。 问题是模式搜索工具如何

    1热度

    2回答

    我只是想弄清楚以下符号表示: L =Σ* - λ 在问候什么“ - λ”表示。我知道“λ”表示空字符串,但我不确定“ - ”是什么意思。 上下文:构造一个DFA或NFA(确定性/非确定性有限自动机),它接受上面的字母为{0,1}的语言。我的猜测是,这意味着不允许空字符串?不知道。感谢您的帮助。

    6热度

    4回答

    我在一本书上可计算阅读: (克林定理)语言是正则的当且仅当它可以通过应用三个操作结合, 串联,重复有限,从有限的语言获得 次数。 我很苦恼“有限的语言”。 考虑这样的语言:L = a* 这是不是有限的。它是集合{0, a, aa, aaa, ...},这显然是一个无限集合(0 =空字符串)。 所以这是一种无限的语言,对吧?也就是说,“无限集合”的意思是“无限语言”,对吧? 显然,a*是一种常规语言