当前位置: 首页 > 知识库问答 >
问题:

确定的有穷自动机

曹乐意
2023-03-14

我不熟悉自动机理论。下面这个问题是为了练习:

让一种语言由以不同符号开头和结尾的单词组成,字母表为{0,1}。例如,001、10101010100、10和01都被接受。但101、1、0和1010001101被拒绝。

我该如何:

我试图发布我画的DFA的图片,但不幸的是,我需要10个声誉来发布图片,而我还没有。

共有2个答案

柏麒
2023-03-14

这里我们可以得到两种可能性:1)字符串以0开头,以1结尾=

因此最终表达式是[0(0|1)*1]|[1(0|1)*0]NFA是这样的

给定语言的NFA

钱远
2023-03-14

为了回答这个问题,我认为首先识别正则表达式更容易。

正则表达式

1(1|0)*0 | 0(1|0)*1 

(*表示Kleene的star操作)

现在我们把这个正则表达式转换成一个等价的有限自动机。

构建DFA

你可以设计NFA-∧(或某些文本中的NFA-ε)轻松使用给定语言(regex)的汤普森构造函数[1],然后将其转换为无lambda转换的NFA。然后,可以使用子集构造方法将该NFA映射到等效DFA。[2]

如果需要,可以进一步减少此DFA,以获得对于给定的正则语言唯一的最小DFA。(Myhill-Nerode定理)[3]

正则表达式→NFA→NFA→DFA→DFA(最小值),这是标准程序。

http://en.wikipedia.org/wiki/Thompsons_construction_algorithm

[2]http://www.cs.nuim.ie/~jpower/Courses/Previous/parsing/node9.html

http://en.wikipedia.org/wiki/MyhillNerode_theorem

 类似资料:
  • 这里的“自动机”指的是”确定有限状态自动机”。而自动机是信息学奥林匹克竞赛、计算机科学中被广泛使用的一个数学模型,其思想在许多字符串算法中都有涉及,学习自动机有助于理解上述算法,但是学习自动机前一定要先了解基础图论的相关知识,这样才更好理解自动机。 自动机(确定有限状态自动机)是由一个非空有限状态的集合Q、一个输入字母表 Σ(非空有限字符的集合)、一个转移函数(单值映射)、一个开始状态、一个接受状

  • 如何编写Java代码来确定给定的自动机是否具有确定性。我有一个代表自动机的类,它有以下五个变量: Δ表示如下所示,例如,在实际自动机中,程序中的q1,1,q2看起来像。我知道在一个非确定性自动机中,可能有多个可能的状态,但我不知道如何计算。

  • 如果我们有一个没有最终/接受状态的有限自动机。所以F是空的。你如何最小化它?我得到了一个测试,在这个测试中,我被要求最小化一个自动机,但是它有空的F,我不知道如何解决这个问题,因为自动机没有接受状态。一个包含所有转换的初始状态是正确最小化的自动机吗?我想如果两个自动机A和B对于任何可能的输入,A返回与B完全相同的输出,它们必须是等价的。因此,如果一个自动机没有最终状态,那么它不接受任何输入或者任何

  • 如果我必须用一个状态图来画一个确定性有限自动机,以接受一种语言,例如{λε{a,b}*:λ这个词包含a的偶数和b的奇数,我怎么知道我有多少个状态?

  • 我的问题是,我如何开始在圆圈中“绘制”状态,添加边,在两个状态之间插入输入,我如何使用java编写GUI部分?请帮我一把..

  • 我尝试使用两个matInput字段,每个字段都绑定到单独的mat-autocomplete面板。按照这里的步骤,我可以让一个工作正常,但我有困难与两个输入字段和自动完成面板。 有人看到这个或者知道我做错了什么吗?