【编译原理】第二章部分课后题答案

news2024/11/17 14:34:45

《编译原理(第三版)》陈意云著

第 二 章 课 后 习 题

T 2.3

叙述由下列正规式描述的语言

  1.    0    (    0    ∣    1    )   ∗    0 \space\space0\space\space(\space\space 0\space\space |\space\space 1\space\space)^{\space*\space\space}0   0  (  0    1  )   0

    正规式规定开头和结尾必须包括0,中间由0或1的闭包构成,可以看出该正规式描述的语言包含的串长度至少为2,所以总结为:以0开头和结尾的长度至少是2的串01.

  2.    (    (    ε    ∣    0    )    1   ∗    )   ∗ \space\space(\space\space (\space\space \varepsilon\space\space|\space\space0\space\space)\space\space1^{\space*\space\space}) ^{\space*}   (  (  ε    0  )  1   ) 

    内层括号中是对空和0的选择,再与外面的1的闭包相连接,可能构成的串有: ε \varepsilon ε 1 1 1 1...1 1...1 1...1 0 0 0 01 01 01 01...1 01...1 01...1,再加上外层的闭包,可以让 0 0 0 的个数变成任意多且可以为空串的闭包,所以总结为:所有的01串(包含空串).

  3.    (    0    ∣    1    )   ∗    0    (    0    ∣    1    )    (    0    ∣    1    ) \space\space(\space\space0\space\space|\space\space1\space\space)^{\space*\space\space}0\space\space(\space\space0\space\space|\space\space1\space\space)\space\space(\space\space0\space\space|\space\space1\space\space)   (  0    1  )   0  (  0    1  )  (  0    1  )

    0    (    0    ∣    1    )    (    0    ∣    1    ) 0\space\space(\space\space0\space\space|\space\space1\space\space)\space\space(\space\space0\space\space|\space\space1\space\space) 0  (  0    1  )  (  0    1  )描述了长度为3,第一位为0的01串,在前面加上0或1的闭包使得串可以以任意二进制或空开头,所以结论为:至少包括三位且倒数第三位是0的01串.

  4.    0   ∗   10   ∗   10   ∗   10   ∗ \space\space0\space^*\space10\space^*\space10\space^*\space10\space^*   0  10  10  10 

    三个1是必然存在于串中的,而剩下0的闭包则说明0的个数为任意多,所以结论为:含有三个1的01串.

  5.    (    00    ∣    11    )   ∗    (    (    01    ∣    10    )    (    00    ∣    11    )   ∗    (    01    ∣    10    )    (    00    ∣    11    )   ∗    )   ∗ \space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space(\space\space(\space\space01\space\space|\space\space10\space\space)\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space(\space\space01\space\space|\space\space10\space\space)\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space)\space^*   (  00    11  )   (  (  01    10  )  (  00    11  )   (  01    10  )  (  00    11  )   ) 

    第一个闭包可以选择00或11,后面的两个内层闭包所描述的语言与第一个闭包相同,外层闭包让其内部的串可以出现任意次。由于该正规式过于复杂,所以可以将其描述的语言简单概括为:含有偶数(含0个)个0和偶数(含0个)个1的01串.


T 2.4

为下列语言写出正规定义

  1. 包含5个元音的所有字母串,其中每个元音只出现一次且按顺序排列。

    不含五个元音的任意字符: [ B − D F − H J − N P − T V − Z b − d f − h j − n p − t v − z ] [B-DF-HJ-NP-TV-Zb-df-hj-np-tv-z] [BDFHJNPTVZbdfhjnptvz],记为 α \alpha α

    故, α   ∗    (    a    ∣    A    )    α   ∗    (    e    ∣    E    )    α   ∗    (    i    ∣    I    )    α   ∗    (    o    ∣    O )    α   ∗    (    u    ∣    U    )    α   ∗ \alpha\space^*\space\space(\space\space a\space\space|\space\space A\space\space)\space\space\alpha\space^*\space\space(\space\space e\space\space|\space\space E\space\space)\space\space\alpha\space^*\space\space(\space\space i\space\space|\space\space I\space\space)\space\space\alpha\space^*\space\space(\space\space o\space\space|\space\space O)\space\space\alpha\space^*\space\space(\space\space u\space\space|\space\space U\space\space)\space\space \alpha\space^* α   (  a    A  )  α   (  e    E  )  α   (  i    I  )  α   (  o    O)  α   (  u    U  )  α 

  2. 按词典序排列的所有字母串。

    A   ∗    a   ∗    B   ∗    b   ∗    . . .    Z   ∗    z   ∗ A\space^*\space\space a\space^*\space\space B\space^*\space\space b\space^*\space\space...\space\space Z\space^*\space\space z\space^* A   a   B   b   ...  Z   z 

  3. 某语言的注释,它是以 / ∗ /* /开始并以 ∗ / */ /结束的任意字符串,但它的任何前缀(本身除外)不以 ∗ / */ /结尾。

    不含 / / / ∗ * 的任意字符记为 α \alpha α

    不含 ∗ / */ /的任意字符串可以表示为 ( ∗ ∗ α + / ∗ ) ∗ (*^*\alpha^+/^*)^* (α+/)

    故, / ∗ ( ∗ ∗ α + / ∗ ) ∗ ∗ / /*(*^*\alpha^+/^*)^**/ /(α+/)/

  4. 相邻数字都不相同的所有数字串。

  5. 最多只有一处相邻数字相同的所有数字串。

  6. 由偶数个0和偶数个1组成的所有01串。

    (    00    ∣    11    )   ∗    (    (    01    ∣    10    )    (    00    ∣    11    )   ∗    (    01    ∣    10    )    (    00    ∣    11    )   ∗    )   ∗ (\space\space00\space\space|\space\space11\space\space)\space^*\space\space(\space\space(\space\space01\space\space|\space\space10\space\space)\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space(\space\space01\space\space|\space\space10\space\space)\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space)\space^* (  00    11  )   (  (  01    10  )  (  00    11  )   (  01    10  )  (  00    11  )   ) 

  7. 由偶数个0和奇数个1组成的所有01串。

    1    (    00    ∣    11    )   ∗    (    (    01    ∣    10    )    (    00    ∣    11    )   ∗    (    01    ∣    10    )    (    00    ∣    11    )   ∗    )   ∗ 1\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space(\space\space(\space\space01\space\space|\space\space10\space\space)\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space(\space\space01\space\space|\space\space10\space\space)\space\space(\space\space00\space\space|\space\space11\space\space)\space^*\space\space)\space^* 1  (  00    11  )   (  (  01    10  )  (  00    11  )   (  01    10  )  (  00    11  )   ) 

  8. 不含字串011的01串。

    (    1   ∗    (    0   +    1    )   ∗    )    0   ∗ (\space\space1\space^*\space\space(\space\space 0\space^+\space\space1\space\space)\space^*\space\space)\space\space0\space^* (  1   (  0 +  1  )   )  0 

  9. 字母表 { a , b } \{a, b\} {a,b}上, a a a不会相邻出现的所有串。

    b   ∗    (    a   ?    b   +    )   ∗    a   ? b\space^*\space\space(\space\space a\space?\space\space b\space^+\space\space)\space^*\space\space a\space? b   (  a ?  b +  )   a ?


T 2.7

用算法 2.4 为下列正规式构造不确定有限自动机,给出它们处理输入串 a b a b b a b ababbab ababbab 的状态转化序列

  1. (    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  ) 

方式一:(算法 2.4)

在这里插入图片描述

a b a b b a b    :    s → 0 → 1 → 3 → 5 → 0 → 2 → 4 → 5 → 0 → 1 → 3 → 5 → 0 → 2                               → 4 → 5 → 0 → 2 → 4 → 5 → 0 → 1 → 3 → 5 → 0 → 2 → 4 → 5 → f ababbab\space\space :\space\space s\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow0\rightarrow2\rightarrow4\rightarrow5\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow0\rightarrow2\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\rightarrow4\rightarrow5\rightarrow0\rightarrow2\rightarrow4\rightarrow5\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow0\rightarrow2\rightarrow4\rightarrow5\rightarrow f ababbab  :  s01350245013502                             45024501350245f

方式二:(分裂法)

在这里插入图片描述

a b a b b a b    :    s → 0 → 1 → 0 → 1 → 0 → 1 → 0 → 1 → 0 → 1 → 0 → 1 → 0 → 1 → f ababbab\space\space :\space\space s\rightarrow0\rightarrow1\rightarrow0\rightarrow1\rightarrow0\rightarrow1\rightarrow0\rightarrow1\rightarrow0\rightarrow1\rightarrow0\rightarrow1\rightarrow0\rightarrow1\rightarrow f ababbab  :  s01010101010101f

方式三:

在这里插入图片描述

a b a b b a b    :    s → 0 → 0 → 0 → 0 → 0 → 0 → 0 → 0 → f ababbab\space\space :\space\space s\rightarrow0\rightarrow0\rightarrow0\rightarrow0\rightarrow0\rightarrow0\rightarrow0\rightarrow0\rightarrow f ababbab  :  s00000000f

  1. (    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   ) 

在这里插入图片描述

a b a b b a b    :    s → 0 → 1 → 3 → 5 → 0 → 2 → 4 → 5 → 0 → 1 → 3 → 5 → 0                                → 2 → 4 → 2 → 4 → 5 → 0 → 1 → 3 → 5 → 0 → 2 → 4 → 4 → f ababbab\space\space :\space\space s\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow0\rightarrow2\rightarrow4\rightarrow5\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow0\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\rightarrow2\rightarrow4\rightarrow2\rightarrow4\rightarrow5\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow0\rightarrow2\rightarrow4\rightarrow4\rightarrow f ababbab  :  s0135024501350                              2424501350244f

  1. (    (    ε    ∣    a    )    b   ∗    )   ∗ (\space\space(\space\space \varepsilon\space\space |\space\space a\space\space)\space\space b\space^*\space\space)\space^* (  (  ε    a  )  b   ) 

在这里插入图片描述

a b a b b a b    :    s → 0 → 1 → 3 → 5 → 6 → 7 → 8 → 0 → 1 → 3 → 5 → 6                        → 7 → 6 → 7 → 8 → 0 → 1 → 3 → 5 → 6 → 7 → 8 → f ababbab\space\space :\space\space s\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow6\rightarrow7\rightarrow8\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow6\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\rightarrow7\rightarrow6\rightarrow7\rightarrow8\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow6\rightarrow7\rightarrow8\rightarrow f ababbab  :  s013567801356                      76780135678f

  1. (    a    ∣    b    )   ∗    a    b    b    (    a    ∣    b    )   ∗ (\space\space a \space\space | \space\space b\space\space) \space^*\space\space a\space\space b\space\space b\space\space(\space\space a \space\space | \space\space b \space\space)\space^* (  a    b  )   a  b  b  (  a    b  ) 

在这里插入图片描述

a b a b b a b    :    s → 0 → 1 → 3 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 13 → 15 → 10 → 12 → 14 → 15 → f ababbab\space\space :\space\space s\rightarrow0\rightarrow1\rightarrow3\rightarrow5\rightarrow6\rightarrow7\rightarrow8\rightarrow9\rightarrow10\rightarrow11\rightarrow13\rightarrow15\rightarrow10\rightarrow12\rightarrow14\rightarrow15\rightarrow f ababbab  :  s013567891011131510121415f


T 2.8

用算法2.2把习题2.7中的第三问的NFA变换成DFA。给出它们处理输入串 a b a b b a b ababbab ababbab 的状态转换序列

为了书写的方便,将上面 NFA 中的状态重新编号,得到下图:

在这里插入图片描述

上图的 NFA 等价的 DFA 的开始状态是 ε − c l o s u r e ( 0 ) \varepsilon-closure(0) εclosure(0),记为 A = { 0 , 1 , 2 , 4 , 5 , 6 , 7 , 9 , 10 } A=\{0,1,2,4,5,6,7,9,10\} A={0,1,2,4,5,6,7,9,10}

输入字母表是 { a , b } \{a,b\} {a,b} ,计算 ε − c l o s u r e ( m o v e ( A , a ) ) \varepsilon-closure(move(A,a)) εclosure(move(A,a)),由于只有状态 2 2 2 能发生 a a a 转换,所以 m o v e ( A , a ) = { 3 } move (A, a)=\{3\} move(A,a)={3},故 ε − c l o s u r e ( m o v e ( A , a ) ) = ε − c l o s u r e ( { 3 } ) = ε − c l o s u r e ( 3 ) = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 9 , 10 } \varepsilon-closure(move(A,a))=\varepsilon-closure(\{3\})=\varepsilon-closure(3)=\{1,2,3,4,5,6,7,9,10\} εclosure(move(A,a))=εclosure({3})=εclosure(3)={1,2,3,4,5,6,7,9,10},称该集合为 B B B

计算 ε − c l o s u r e ( m o v e ( A , b ) ) \varepsilon-closure(move(A,b)) εclosure(move(A,b)),由于只有状态 7 7 7 能发生 b b b 转换,所以 m o v e ( A , b ) = 8 move(A, b)={8} move(A,b)=8,故 ε − c l o s u r e ( m o v e ( A , b ) ) = ε − c l o s u r e ( { 8 } ) = ε − c l o s u r e ( 8 ) = { 1 , 2 , 4 , 5 , 6 , 7 , 8 , 9 , 10 } \varepsilon-closure(move(A,b))=\varepsilon-closure(\{8\})=\varepsilon-closure(8)=\{1,2,4,5,6,7,8,9,10\} εclosure(move(A,b))=εclosure({8})=εclosure(8)={1,2,4,5,6,7,8,9,10},称该集合为 C C C

对新集合 B B B C C C 重复上面的过程可以得到完整的转换表如下:

状态输入符号
ab
ABC
BBC
CBC

根据转换表得到等价的 DFA 如下:

在这里插入图片描述

a b a b b a b    :    A → B → C → B → C → C → B → C ababbab\space\space :\space\space A\rightarrow B \rightarrow C \rightarrow B \rightarrow C \rightarrow C \rightarrow B \rightarrow C ababbab  :  ABCBCCBC


T 2.11

可以从正规式的最简 DFA 同构来证明两个正规式等价。使用这种计数,证明正规式 (    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  (    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   )  (    (    ε    ∣    a    )    b   ∗    )   ∗ (\space\space(\space\space \varepsilon\space\space |\space\space a\space\space)\space\space b\space^*\space\space)\space^* (  (  ε    a  )  b   )  等价

与 T 2.8 类似,先将上面的 NFA 中的状态重新编号便于计算。

(    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  对应的 NFA:

在这里插入图片描述

(    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  对应的状态转换表:

A = { 0 , 1 , 2 , 4 , 7 } A=\{0,1,2,4,7\} A={0,1,2,4,7}

B = { 1 , 2 , 3 , 4 , 6 , 7 } B=\{1,2,3,4,6,7\} B={1,2,3,4,6,7}

C = { 1 , 2 , 4 , 5 , 6 , 7 } C=\{1,2,4,5,6,7\} C={1,2,4,5,6,7}

状态输入符号
ab
ABC
BBC
CBC

(    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  对应的 DFA:

在这里插入图片描述

(    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  对应的最简 DFA:

初始划分两个子集:接受状态子集 { B ,   C } \{B,\space C\} {B, C} 和非接受状态 { A } \{A\} {A}

{ A } \{A\} {A} 不可进一步划分,所以对 { B ,   C } \{B,\space C\} {B, C} 进一步划分;

m o v e ( { B ,   C } ,   a ) = { B } move(\{B, \space C\},\space a)=\{B\} move({B, C}, a)={B}

m o v e ( { B ,   C } ,   b ) = { C } move(\{B, \space C\},\space b)=\{C\} move({B, C}, b)={C}

这说明 { B ,   C } \{B,\space C\} {B, C} 是不可区分的子集,故无需进一步划分。

最终上图即为最简 DFA。


(    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   )  对应的 NFA:

在这里插入图片描述

(    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   )  对应的状态转换表:

A = { 0 , 1 , 2 , 4 , 7 } A=\{0,1,2,4,7\} A={0,1,2,4,7}

B = { 1 , 2 , 3 , 4 , 6 , 7 } B=\{1,2,3,4,6,7\} B={1,2,3,4,6,7}

C = { 1 , 2 , 4 , 5 , 6 , 7 } C=\{1,2,4,5,6,7\} C={1,2,4,5,6,7}

状态输入符号
ab
ABC
BBC
CBC

(    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   )  对应的 DFA:

在这里插入图片描述

(    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   )  对应的最简 DFA:

由于 (    a   ∗    ∣    b   ∗    )   ∗ (\space\space a\space^*\space\space|\space\space b\space^*\space\space)\space^* (  a     b   )  对应的 DFA 与 (    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  对应的 DFA 完全一致,所以最终化简得到的 DFA 也是一样的,即上图。


(    (    ε    ∣    a    )    b   ∗    )   ∗ (\space\space(\space\space \varepsilon\space\space |\space\space a\space\space)\space\space b\space^*\space\space)\space^* (  (  ε    a  )  b   )  的 DFA 在 T 2.8 中已经得到,由于其与 (    a    ∣    b    )   ∗ (\space\space a\space\space|\space\space b\space\space)\space^* (  a    b  )  对应的 DFA 完全一致,所以最终化简得到的 DFA 也是一样的,即:

在这里插入图片描述

由于已知“最简 DFA 同构的正规式等价”可知,三者的最简 DFA 同构,所以三个正规式等价。


T 2.12

为下列正规式构造最简的 DFA

  1.    (    a    ∣    b    )   ∗    a    (    a    ∣    b    ) \space\space(\space\space a\space\space | \space\space b\space\space)\space^*\space\space a\space\space (\space\space a \space\space |\space\space b\space\space)   (  a    b  )   a  (  a    b  )

对应的 NFA 如下:

在这里插入图片描述

对应的转换表如下:

A = { 0 , 1 , 2 , 4 , 7 } A=\{0,1,2,4,7\} A={0,1,2,4,7}

B = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 } B=\{1,2,3,4,6,7,8,9,11\} B={1,2,3,4,6,7,8,9,11}

C = { 1 , 2 , 4 , 5 , 6 , 7 } C=\{1,2,4,5,6,7\} C={1,2,4,5,6,7}

D = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 } D = \{1,2,3,4,6,7,8,9,10,11,13,14\} D={1,2,3,4,6,7,8,9,10,11,13,14}

E = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 } E=\{1,2,4,5,6,7,12,13,14\} E={1,2,4,5,6,7,12,13,14}

状态输入符号
ab
ABC
BDE
CBC
DDE
EBC

对应的 DFA 如下:
在这里插入图片描述

对应的最简 DFA 如下:

初始划分两个子集:接受状态子集 { D , E } \{D,E\} {D,E} 和非接受状态子集 { A , B , C } \{A,B,C\} {A,B,C}

对于接受状态子集,输入字符 a a a,状态 D D D 和状态 E E E 分别变换到状态 D D D 和状态 B B B,二者不在同一子集中,所以需要划分成 { D } \{D\} {D} { E } \{E\} {E}

对于非接受状态子集,输入字符 a a a,状态 A A A 和状态 C C C 均变换到状态 B B B,而状态 B B B 变换到状态 D D D,属于另一个子集,所以初步划分为 { A , C } \{A,C\} {A,C} { B } \{B\} {B};输入字符 b b b,状态 A A A 和状态 C C C 均变换到状态 C C C,所以两个状态不可区分,无需进一步划分。

故,最终状态子集为 { A , C } \{A,C\} {A,C} { B } \{B\} {B} { D } \{D\} {D} { E } \{E\} {E}

为了绘制 DFA 方便,令 { A , C } \{A,C\} {A,C} 为状态 0 0 0 { B } \{B\} {B} 为状态 1 1 1 { D } \{D\} {D} 为状态 2 2 2 { E } \{E\} {E} 为状态 3 3 3

在这里插入图片描述


  1.    (    a    ∣    b    )   ∗    a    (    a    ∣    b    )    (    a    ∣    b    ) \space\space(\space\space a\space\space | \space\space b\space\space)\space^*\space\space a\space\space (\space\space a \space\space |\space\space b\space\space)\space\space(\space\space a \space\space |\space\space b\space\space)   (  a    b  )   a  (  a    b  )  (  a    b  )

方法一: 子集构造法得到的 NFA 如下:

在这里插入图片描述

对应的转换表如下:

A = { 0 , 1 , 2 , 4 , 7 } A=\{0,1,2,4,7\} A={0,1,2,4,7}

B = ε − c l o s u r e ( { 3 , 8 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 } B=\varepsilon-closure(\{3,8\})=\{1,2,3,4,6,7,8,9,11\} B=εclosure({3,8})={1,2,3,4,6,7,8,9,11}

C = ε − c l o s u r e ( { 5 } ) = { 1 , 2 , 4 , 5 , 6 , 7 } C=\varepsilon-closure(\{5\})=\{1,2,4,5,6,7\} C=εclosure({5})={1,2,4,5,6,7}

D = ε − c l o s u r e ( { 3 , 8 , 10 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 , 16 } D=\varepsilon-closure(\{3,8,10\})=\{1,2,3,4,6,7,8,9,10,11,13,14,16\} D=εclosure({3,8,10})={1,2,3,4,6,7,8,9,10,11,13,14,16}

E = ε − c l o s u r e ( { 5 , 12 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 , 16 } E=\varepsilon-closure(\{5,12\})=\{1,2,4,5,6,7,12,13,14,16\} E=εclosure({5,12})={1,2,4,5,6,7,12,13,14,16}

F = ε − c l o s u r e ( { 3 , 8 , 10 , 15 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 , 15 , 16 , 18 , 19 } F=\varepsilon-closure(\{3,8,10,15\})=\{1,2,3,4,6,7,8,9,10,11,13,14,15,16,18,19\} F=εclosure({3,8,10,15})={1,2,3,4,6,7,8,9,10,11,13,14,15,16,18,19}

G = ε − c l o s u r e ( { 5 , 12 , 17 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 , 16 , 17 , 18 , 19 } G=\varepsilon-closure(\{5,12,17\})=\{1,2,4,5,6,7,12,13,14,16,17,18,19\} G=εclosure({5,12,17})={1,2,4,5,6,7,12,13,14,16,17,18,19}

H = ε − c l o s u r e ( { 3 , 8 , 15 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 , 15 , 18 , 19 } H=\varepsilon-closure(\{3,8,15\})=\{1,2,3,4,6,7,8,9,11,15,18,19\} H=εclosure({3,8,15})={1,2,3,4,6,7,8,9,11,15,18,19}

I = ε − c l o s u r e ( { 5 , 17 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 17 , 18 , 19 } I=\varepsilon-closure(\{5,17\})=\{1,2,4,5,6,7,17,18,19\} I=εclosure({5,17})={1,2,4,5,6,7,17,18,19}

状态输入符号
ab
ABC
BDE
CBC
DFG
EHI
FFG
GHI
HDE
IBC

方法二: 分裂法得到的 NFA 如下:

在这里插入图片描述

对应的转换表如下:

A = { 0 , 1 , 3 } A=\{0,1,3\} A={0,1,3}

B = ε − c l o s u r e ( { 2 , 4 } ) = { 1 , 2 , 3 , 4 } B=\varepsilon-closure(\{2,4\})=\{1,2,3,4\} B=εclosure({2,4})={1,2,3,4}

C = ε − c l o s u r e ( { 2 } ) = { 1 , 2 , 3 } C=\varepsilon-closure(\{2\})=\{1,2,3\} C=εclosure({2})={1,2,3}

D = ε − c l o s u r e ( { 2 , 4 , 5 } ) = B ∪ { 5 } = { 1 , 2 , 3 , 4 , 5 } D=\varepsilon-closure(\{2,4,5\})=B∪\{5\}=\{1,2,3,4,5\} D=εclosure({2,4,5})=B{5}={1,2,3,4,5}

E = ε − c l o s u r e ( { 2 , 5 } ) = C ∪ { 5 } = { 1 , 2 , 3 , 5 } E=\varepsilon-closure(\{2,5\})=C∪\{5\}=\{1,2,3,5\} E=εclosure({2,5})=C{5}={1,2,3,5}

F = ε − c l o s u r e ( { 2 , 4 , 5 , 6 } ) = D ∪ { 6 } = { 1 , 2 , 3 , 4 , 5 , 6 } F=\varepsilon-closure(\{2,4,5,6\})=D∪\{6\}=\{1,2,3,4,5,6\} F=εclosure({2,4,5,6})=D{6}={1,2,3,4,5,6}

G = ε − c l o s u r e ( { 2 , 5 , 6 } ) = E ∪ { 6 } = { 1 , 2 , 3 , 5 , 6 } G=\varepsilon-closure(\{2,5,6\})=E∪\{6\}=\{1,2,3,5,6\} G=εclosure({2,5,6})=E{6}={1,2,3,5,6}

H = ε − c l o s u r e ( { 2 , 4 , 6 } ) = B ∪ { 6 } = { 1 , 2 , 3 , 4 , 6 } H=\varepsilon-closure(\{2,4,6\})=B∪\{6\}=\{1,2,3,4,6\} H=εclosure({2,4,6})=B{6}={1,2,3,4,6}

I = ε − c l o s u r e ( { 2 , 6 } ) = C ∪ { 6 } = { 1 , 2 , 3 , 6 } I=\varepsilon-closure(\{2,6\})=C∪\{6\}=\{1,2,3,6\} I=εclosure({2,6})=C{6}={1,2,3,6}

状态输入符号
ab
ABC
BDE
CBC
DFG
EHI
FFG
GHI
HDE
IBC

可以看出“子集构造法”和“分裂法”得到的状态转换表一样,所以化出的DFA也一致。

对应的 DFA 如下:

在这里插入图片描述

对应的最简 DFA 如下:

初始划分两个子集:接受状态子集 { F , G , H , I } \{F,G,H,I\} {F,G,H,I} 和非接受状态子集 { A , B , C , D , E } \{A,B,C,D,E\} {A,B,C,D,E}

对于接受状态子集,分别输入字符 a a a 和字符 b b b,可将原集合划分为 { F , G } \{F,G\} {F,G} { H , I } \{H,I\} {H,I}

对于非接受状态子集,分别输入字符 a a a 和字符 b b b,可将原集合划分为 { A , B , C } \{A,B,C\} {A,B,C} { D , E } \{D,E\} {D,E}

{ F , G } \{F,G\} {F,G} 集合进一步划分成 { F } \{F\} {F} { G } \{G\} {G}

{ H , I } \{H,I\} {H,I} 集合进一步划分成 { H } \{H\} {H} { I } \{I\} {I}

{ A , B , C } \{A,B,C\} {A,B,C} 集合进一步划分成 { A , C } \{A, C\} {A,C} { B } \{B\} {B}

{ D , E } \{D,E\} {D,E} 集合进一步划分成 { D } \{D\} {D} { E } \{E\} {E}

故,最终状态子集为 { A , C } \{A,C\} {A,C} { B } \{B\} {B} { D } \{D\} {D} { E } \{E\} {E} { F } \{F\} {F} { G } \{G\} {G} { H } \{H\} {H} { I } \{I\} {I}

为了绘制 DFA 方便,令 { A , C } \{A,C\} {A,C} 为状态 0 0 0 { B } \{B\} {B} 为状态 1 1 1 { D } \{D\} {D} 为状态 2 2 2 { E } \{E\} {E} 为状态 3 3 3 { F } \{F\} {F} 为状态 4 4 4 { G } \{G\} {G} 为状态 5 5 5 { H } \{H\} {H} 为状态 6 6 6 { I } \{I\} {I} 为状态 7 7 7

在这里插入图片描述


  1.    (    a    ∣    b    )   ∗    a    (    a    ∣    b    )    (    a    ∣    b    )    (    a    ∣    b    ) \space\space(\space\space a\space\space | \space\space b\space\space)\space^*\space\space a\space\space (\space\space a \space\space |\space\space b\space\space)\space\space(\space\space a \space\space |\space\space b\space\space)\space\space(\space\space a \space\space |\space\space b\space\space)   (  a    b  )   a  (  a    b  )  (  a    b  )  (  a    b  )

方法一: 子集构造法得到的 NFA 如下:

在这里插入图片描述

对应的转换表如下:

A = { 0 , 1 , 2 , 4 , 7 } A=\{0,1,2,4,7\} A={0,1,2,4,7}

B = ε − c l o s u r e ( { 3 , 8 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 } B=\varepsilon-closure(\{3,8\})=\{1,2,3,4,6,7,8,9,11\} B=εclosure({3,8})={1,2,3,4,6,7,8,9,11}

C = ε − c l o s u r e ( { 5 } ) = { 1 , 2 , 4 , 5 , 6 , 7 } C=\varepsilon-closure(\{5\})=\{1,2,4,5,6,7\} C=εclosure({5})={1,2,4,5,6,7}

D = ε − c l o s u r e ( { 3 , 8 , 10 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 , 16 } D=\varepsilon-closure(\{3,8,10\})=\{1,2,3,4,6,7,8,9,10,11,13,14,16\} D=εclosure({3,8,10})={1,2,3,4,6,7,8,9,10,11,13,14,16}

E = ε − c l o s u r e ( { 5 , 12 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 , 16 } E=\varepsilon-closure(\{5,12\})=\{1,2,4,5,6,7,12,13,14,16\} E=εclosure({5,12})={1,2,4,5,6,7,12,13,14,16}

F = ε − c l o s u r e ( { 3 , 8 , 10 , 15 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 , 15 , 16 , 18 , 19 , 21 } F=\varepsilon-closure(\{3,8,10,15\})=\{1,2,3,4,6,7,8,9,10,11,13,14,15,16,18,19,21\} F=εclosure({3,8,10,15})={1,2,3,4,6,7,8,9,10,11,13,14,15,16,18,19,21}

G = ε − c l o s u r e ( { 5 , 12 , 17 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 , 16 , 17 , 18 , 19 , 21 } G=\varepsilon-closure(\{5,12,17\})=\{1,2,4,5,6,7,12,13,14,16,17,18,19,21\} G=εclosure({5,12,17})={1,2,4,5,6,7,12,13,14,16,17,18,19,21}

H = ε − c l o s u r e ( { 3 , 8 , 15 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 , 15 , 18 , 19 , 21 } H=\varepsilon-closure(\{3,8,15\})=\{1,2,3,4,6,7,8,9,11,15,18,19,21\} H=εclosure({3,8,15})={1,2,3,4,6,7,8,9,11,15,18,19,21}

I = ε − c l o s u r e ( { 5 , 17 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 17 , 18 , 19 , 21 } I=\varepsilon-closure(\{5,17\})=\{1,2,4,5,6,7,17,18,19,21\} I=εclosure({5,17})={1,2,4,5,6,7,17,18,19,21}

J = ε − c l o s u r e ( { 3 , 8 , 10 , 15 , 20 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 , 15 , 16 , 18 , 19 , 20 , 21 , 23 , 24 } J=\varepsilon-closure(\{3,8,10,15,20\})=\{1,2,3,4,6,7,8,9,10,11,13,14,15,16,18,19,20,21,23,24\} J=εclosure({3,8,10,15,20})={1,2,3,4,6,7,8,9,10,11,13,14,15,16,18,19,20,21,23,24}

K = ε − c l o s u r e ( { 5 , 12 , 17 , 22 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 , 16 , 17 , 18 , 19 , 21 , 22 , 23 , 24 } K=\varepsilon-closure(\{5,12,17,22\})=\{1,2,4,5,6,7,12,13,14,16,17,18,19,21,22,23,24\} K=εclosure({5,12,17,22})={1,2,4,5,6,7,12,13,14,16,17,18,19,21,22,23,24}

L = ε − c l o s u r e ( { 3 , 8 , 15 , 20 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 , 15 , 18 , 19 , 20 , 21 , 23 , 24 } L=\varepsilon-closure(\{3,8,15,20\})=\{1,2,3,4,6,7,8,9,11,15,18,19,20,21,23,24\} L=εclosure({3,8,15,20})={1,2,3,4,6,7,8,9,11,15,18,19,20,21,23,24}

M = ε − c l o s u r e ( { 5 , 17 , 22 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 17 , 18 , 19 , 21 , 22 , 23 , 24 } M=\varepsilon-closure(\{5,17,22\})=\{1,2,4,5,6,7,17,18,19,21,22,23,24\} M=εclosure({5,17,22})={1,2,4,5,6,7,17,18,19,21,22,23,24}

N = ε − c l o s u r e ( { 3 , 8 , 10 , 20 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 10 , 11 , 13 , 14 , 16 , 20 , 23 , 24 } N=\varepsilon-closure(\{3,8,10,20\})=\{1,2,3,4,6,7,8,9,10,11,13,14,16,20,23,24\} N=εclosure({3,8,10,20})={1,2,3,4,6,7,8,9,10,11,13,14,16,20,23,24}

O = ε − c l o s u r e ( { 5 , 12 , 22 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 12 , 13 , 14 , 16 , 22 , 23 , 24 } O=\varepsilon-closure(\{5,12,22\})=\{1,2,4,5,6,7,12,13,14,16,22,23,24\} O=εclosure({5,12,22})={1,2,4,5,6,7,12,13,14,16,22,23,24}

P = ε − c l o s u r e ( { 3 , 8 , 20 } ) = { 1 , 2 , 3 , 4 , 6 , 7 , 8 , 9 , 11 , 23 , 24 } P=\varepsilon-closure(\{3,8,20\})=\{1,2,3,4,6,7,8,9,11,23,24\} P=εclosure({3,8,20})={1,2,3,4,6,7,8,9,11,23,24}

Q = ε − c l o s u r e ( { 5 , 22 } ) = { 1 , 2 , 4 , 5 , 6 , 7 , 22 , 23 , 24 } Q=\varepsilon-closure(\{5,22\})=\{1,2,4,5,6,7,22,23,24\} Q=εclosure({5,22})={1,2,4,5,6,7,22,23,24}

状态输入符号
ab
ABC
BDE
CBC
DFG
EHI
FJK
GLM
HNO
IPQ
JJK
KLM
LNO
MPQ
NFG
OHI
PDE
QBC

可以看出“子集构造法”和“分裂法”得到的状态转换表一样,所以化出的DFA也一致。

方法二: 分裂法得到的 NFA 如下:

在这里插入图片描述

对应的转换表如下:

A = { 0 , 1 , 3 } A=\{0,1,3\} A={0,1,3}

B = ε − c l o s u r e ( { 2 , 4 } ) = { 1 , 2 , 3 , 4 } B=\varepsilon-closure(\{2,4\})=\{1,2,3,4\} B=εclosure({2,4})={1,2,3,4}

C = ε − c l o s u r e ( { 2 } ) = { 1 , 2 , 3 } C=\varepsilon-closure(\{2\})=\{1,2,3\} C=εclosure({2})={1,2,3}

D = ε − c l o s u r e ( { 2 , 4 , 5 } ) = B ∪ { 5 } = { 1 , 2 , 3 , 4 , 5 } D=\varepsilon-closure(\{2,4,5\})=B∪\{5\}=\{1,2,3,4,5\} D=εclosure({2,4,5})=B{5}={1,2,3,4,5}

E = ε − c l o s u r e ( { 2 , 5 } ) = C ∪ { 5 } = { 1 , 2 , 3 , 5 } E=\varepsilon-closure(\{2,5\})=C∪\{5\}=\{1,2,3,5\} E=εclosure({2,5})=C{5}={1,2,3,5}

F = ε − c l o s u r e ( { 2 , 4 , 5 , 6 } ) = D ∪ { 6 } = { 1 , 2 , 3 , 4 , 5 , 6 } F=\varepsilon-closure(\{2,4,5,6\})=D∪\{6\}=\{1,2,3,4,5,6\} F=εclosure({2,4,5,6})=D{6}={1,2,3,4,5,6}

G = ε − c l o s u r e ( { 2 , 5 , 6 } ) = E ∪ { 6 } = { 1 , 2 , 3 , 5 , 6 } G=\varepsilon-closure(\{2,5,6\})=E∪\{6\}=\{1,2,3,5,6\} G=εclosure({2,5,6})=E{6}={1,2,3,5,6}

H = ε − c l o s u r e ( { 2 , 4 , 6 } ) = B ∪ { 6 } = { 1 , 2 , 3 , 4 , 6 } H=\varepsilon-closure(\{2,4,6\})=B∪\{6\}=\{1,2,3,4,6\} H=εclosure({2,4,6})=B{6}={1,2,3,4,6}

I = ε − c l o s u r e ( { 2 , 6 } ) = C ∪ { 6 } = { 1 , 2 , 3 , 6 } I=\varepsilon-closure(\{2,6\})=C∪\{6\}=\{1,2,3,6\} I=εclosure({2,6})=C{6}={1,2,3,6}

J = ε − c l o s u r e ( { 2 , 4 , 5 , 6 , 7 } ) = F ∪ { 7 } = { 1 , 2 , 3 , 4 , 5 , 6 , 7 } J=\varepsilon-closure(\{2,4,5,6,7\})=F∪\{7\}=\{1,2,3,4,5,6,7\} J=εclosure({2,4,5,6,7})=F{7}={1,2,3,4,5,6,7}

K = ε − c l o s u r e ( { 2 , 5 , 6 , 7 } ) = G ∪ { 6 } = { 1 , 2 , 3 , 5 , 6 , 7 } K=\varepsilon-closure(\{2,5,6,7\})=G∪\{6\}=\{1,2,3,5,6,7\} K=εclosure({2,5,6,7})=G{6}={1,2,3,5,6,7}

L = ε − c l o s u r e ( { 2 , 4 , 6 , 7 } ) = H ∪ { 7 } = { 1 , 2 , 3 , 4 , 6 , 7 } L=\varepsilon-closure(\{2,4,6,7\})=H∪\{7\}=\{1,2,3,4,6,7\} L=εclosure({2,4,6,7})=H{7}={1,2,3,4,6,7}

M = ε − c l o s u r e ( { 2 , 6 , 7 } ) = I ∪ { 7 } = { 1 , 2 , 3 , 6 , 7 } M=\varepsilon-closure(\{2,6,7\})=I∪\{7\}=\{1,2,3,6,7\} M=εclosure({2,6,7})=I{7}={1,2,3,6,7}

N = ε − c l o s u r e ( { 2 , 4 , 5 , 7 } ) = D ∪ { 7 } = { 1 , 2 , 3 , 4 , 5 , 7 } N=\varepsilon-closure(\{2,4,5,7\})=D∪\{7\}=\{1,2,3,4,5,7\} N=εclosure({2,4,5,7})=D{7}={1,2,3,4,5,7}

O = ε − c l o s u r e ( { 2 , 5 , 7 } ) = E ∪ { 7 } = { 1 , 2 , 3 , 5 , 7 } O=\varepsilon-closure(\{2,5,7\})=E∪\{7\}=\{1,2,3,5,7\} O=εclosure({2,5,7})=E{7}={1,2,3,5,7}

P = ε − c l o s u r e ( { 2 , 4 , 7 } ) = B ∪ { 7 } = { 1 , 2 , 3 , 4 , 7 } P=\varepsilon-closure(\{2,4,7\})=B∪\{7\}=\{1,2,3,4,7\} P=εclosure({2,4,7})=B{7}={1,2,3,4,7}

Q = ε − c l o s u r e ( { 2 , 7 } ) = C ∪ { 7 } = { 1 , 2 , 3 , 7 } Q=\varepsilon-closure(\{2,7\})=C∪\{7\}=\{1,2,3,7\} Q=εclosure({2,7})=C{7}={1,2,3,7}

状态输入符号
ab
ABC
BDE
CBC
DFG
EHI
FJK
GLM
HNO
IPQ
JJK
KLM
LNO
MPQ
NFG
OHI
PDE
QBC

对应的 DFA 如下:

在这里插入图片描述

对应的最简 DFA 如下:

初次划分: { A , B , C , D , E , F , G , H , I } \{A,B,C,D,E,F,G,H,I\} {A,B,C,D,E,F,G,H,I} { J , K , L , M , N , O , P , Q } \{J,K,L,M,N,O,P,Q\} {J,K,L,M,N,O,P,Q}

第二次划分: { A , B , C , D , E } \{A,B,C,D,E\} {A,B,C,D,E} { F , G , H , I } \{F,G,H,I\} {F,G,H,I} { J , K , L , M } \{J,K,L,M\} {J,K,L,M} { N , O , P , Q } \{N,O,P,Q\} {N,O,P,Q}

第三次划分: { A , B , C } \{A,B,C\} {A,B,C} { D , E } \{D,E\} {D,E} { F , G } \{F,G\} {F,G} { H , I } \{H,I\} {H,I} { J , K } \{J,K\} {J,K} { L , M } \{L,M\} {L,M} { N , O } \{N,O\} {N,O} { P , Q } \{P,Q\} {P,Q}

第四次划分: { A , C } \{A,C\} {A,C} { B } \{B\} {B} { D } \{D\} {D} { E } \{E\} {E} { F } \{F\} {F} { G } \{G\} {G} { H } \{H\} {H} { I } \{I\} {I} { J } \{J\} {J} { K } \{K\} {K} { L } \{L\} {L} { M } \{M\} {M} { N } \{N\} {N} { O } \{O\} {O} { P } \{P\} {P} { Q } \{Q\} {Q}

最终划分结果为: { A , C } \{A,C\} {A,C} { B } \{B\} {B} { D } \{D\} {D} { E } \{E\} {E} { F } \{F\} {F} { G } \{G\} {G} { H } \{H\} {H} { I } \{I\} {I} { J } \{J\} {J} { K } \{K\} {K} { L } \{L\} {L} { M } \{M\} {M} { N } \{N\} {N} { O } \{O\} {O} { P } \{P\} {P} { Q } \{Q\} {Q}

为了绘制 DFA 方便,令 { A , C } \{A,C\} {A,C} 为状态 0 0 0 { B } \{B\} {B} 为状态 1 1 1 { D } \{D\} {D} 为状态 2 2 2 { E } \{E\} {E} 为状态 3 3 3 { F } \{F\} {F} 为状态 4 4 4 { G } \{G\} {G} 为状态 5 5 5 { H } \{H\} {H} 为状态 6 6 6 { I } \{I\} {I} 为状态 7 7 7 { J } \{J\} {J} 为状态 8 8 8 { K } \{K\} {K} 为状态 9 9 9 { L } \{L\} {L} 为状态 10 10 10 { M } \{M\} {M} 为状态 11 11 11 { N } \{N\} {N} 为状态 12 12 12 { O } \{O\} {O} 为状态 13 13 13 { P } \{P\} {P} 为状态 14 14 14 { Q } \{Q\} {Q} 为状态 15 15 15

在这里插入图片描述


T 2.13

构造一个 DFA,它接受 Σ = { 0 , 1 } \Sigma=\{0,1\} Σ={0,1} 0 0 0 1 1 1 的个数都是偶数的字符串

对于一个01串,无论其 0 和 1 的个数有多少,总属于下面四种情况之一:

0:0和1的个数都是偶数;

1:0的个数是偶数,1的个数是奇数;

2:0的个数是奇数,1的个数是偶数;

3:0和1的个数都是奇数.

无论上述哪种情况,在01串后添加一个0或1后,总会处于另一种情况中,因此构造的 DFA 可以通过四个状态表示出来:

在这里插入图片描述


T 2.14

构造一个 DFA,它接受 Σ = { 0 , 1 } \Sigma=\{0,1\} Σ={0,1} 上能被 5 5 5 整除的二进制数

一个数对5取模,存在五种结果,结果为0、1、2、3、4。结果为0对应的是接受状态,其余是非接受状态。这样便可通过五个状态构造 DFA。

0:对5取模得0;

1:对5取模得1;

2:对5取模得2;

3:对5取模得3;

4:对5取模得4.

在这里插入图片描述


T 2.15

构造一个最简的 DFA,它接受所有大于 101 101 101 的二进制整数

根据题意,先简单地将状态分为六种,为 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5和大于 5 5 5的整数。

0:对应二进制整数为0;

1:对应二进制整数为1;

2:对应二进制整数为2;

3:对应二进制整数为3;

4:对应二进制整数为4;

5:对应二进制整数为5;

6:对应二进制整数大于5.

初步构造 DFA:

在这里插入图片描述

对上面的 DFA 进行化简:

初步划分为接受状态子集 { 6 } \{6\} {6} 和非接受状态子集 { 0 ,   1 ,   2 ,   3 ,   4 ,   5 } \{0,\space 1,\space2, \space 3,\space4,\space5\} {0, 1, 2, 3, 4, 5}

接受状态子集无法进一步划分;

对非接受状态子集进一步划分:

m o v e ( { 0 ,   1 ,   2 ,   3 ,   4 ,   5 } ,   0 ) = { 0 ,   2 ,   4 ,   6 } move(\{0,\space 1,\space2, \space 3,\space4,\space5\}, \space0)=\{0, \space 2, \space 4, \space 6\} move({0, 1, 2, 3, 4, 5}, 0)={0, 2, 4, 6},其中状态 0 0 0 转换到状态 0 0 0,状态 1 1 1 转换到状态 2 2 2,状态 2 2 2 转换到状态 4 4 4,状态 3 ,   4 ,   5 3,\space4,\space5 3, 4, 5 均转换到状态 6 6 6

m o v e ( { 0 ,   1 ,   2 ,   3 ,   4 ,   5 } ,   1 ) = { 1 ,   3 ,   5 ,   6 } move(\{0,\space 1,\space2, \space 3,\space4,\space5\}, \space1)=\{1, \space 3, \space 5, \space 6\} move({0, 1, 2, 3, 4, 5}, 1)={1, 3, 5, 6},其中状态 0 0 0 转换到状态 1 1 1,状态 1 1 1 转换到状态 3 3 3,状态 2 2 2 转换到状态 5 5 5,状态 3 ,   4 ,   5 3,\space4,\space5 3, 4, 5 均转换到状态 6 6 6

由于 0 ,   1 ,   2 ,   3 ,   4 ,   5 0,\space1,\space2,\space 3,\space4,\space5 0, 1, 2, 3, 4, 5 属于同一个子集,所以 0 ,   1 ,   2 0,\space1,\space2 0, 1, 2 仍属于同一子集,而由于 3 ,   4 ,   5 3,\space4,\space5 3, 4, 5 转换到了另一个不同的子集中,所以 3 ,   4 ,   5 3,\space4,\space5 3, 4, 5 被归为新的一个子集,子集 { 0 ,   1 ,   2 } \{0,\space1,\space2\} {0, 1, 2} 和子集 { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5} 代替了原先的子集 { 0 ,   1 ,   2 ,   3 ,   4 ,   5 } \{0,\space 1,\space2, \space 3,\space4,\space5\} {0, 1, 2, 3, 4, 5}

现在全部子集为 { 6 } \{6\} {6} { 0 ,   1 ,   2 } \{0,\space1,\space2\} {0, 1, 2} { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5},分别对子集 { 0 ,   1 ,   2 } \{0,\space1,\space2\} {0, 1, 2} 和子集 { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5} 进一步划分:

m o v e ( { 0 ,   1 ,   2 } ,   0 ) = { 0 ,   2 ,   4 } move(\{0,\space 1,\space2\}, \space0)=\{0, \space 2, \space 4\} move({0, 1, 2}, 0)={0, 2, 4},其中状态 0 0 0 转换到状态 0 0 0,状态 1 1 1 转换到状态 2 2 2,状态 2 2 2 转换到状态 4 4 4

m o v e ( { 0 ,   1 ,   2 } ,   1 ) = { 1 ,   3 ,   5 } move(\{0,\space 1,\space2\}, \space1)=\{1, \space 3, \space 5\} move({0, 1, 2}, 1)={1, 3, 5},其中状态 0 0 0 转换到状态 1 1 1,状态 1 1 1 转换到状态 3 3 3,状态 2 2 2 转换到状态 5 5 5

在输入字符为 0 0 0的情况下,状态 0 0 0 和 状态 1 1 1 均转换到同一集合 { 0 ,   1 ,   2 } \{0,\space 1,\space2\} {0, 1, 2} 中,但是状态 2 2 2 转换到了另一个集合 { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5} 中,所以状态 2 2 2 将被划分到与状态 0 0 0 和状态 1 1 1 不同的子集中;在输入字符为 1 1 1的情况下,状态 0 0 0 转换到子集 { 0 ,   1 ,   2 } \{0,\space 1,\space2\} {0, 1, 2} 中,而状态 1 1 1 转移到子集 { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5} 中,根据子集划分的要求“两个状态 s s s t t t 被划分到同一子集中,当且仅当对任意输入符号 α \alpha α,状态 s s s t t t 转换到本次划分前的同一子集中”,所以状态 0 0 0 和 状态 1 1 1 也要被划分到不同子集。故,经过本次划分,得到全部子集 { 0 } \{0\} {0} { 1 } \{1\} {1} { 2 } \{2\} {2} { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5} { 6 } \{6\} {6}

m o v e ( { 3 ,   4 ,   5 } ,   0 ) = m o v e ( { 3 ,   4 ,   5 } ,   1 ) = { 6 } move(\{3,\space4,\space5\}, \space0) = move(\{3,\space4,\space5\}, \space1) = \{6\} move({3, 4, 5}, 0)=move({3, 4, 5}, 1)={6},所以无需进一步划分。

最终得到全部子集 { 0 } \{0\} {0} { 1 } \{1\} {1} { 2 } \{2\} {2} { 3 ,   4 ,   5 } \{3,\space4,\space5\} {3, 4, 5} { 6 } \{6\} {6}。令 A = { 0 } A=\{0\} A={0} B = { 1 } B=\{1\} B={1} C = { 2 } C=\{2\} C={2} D = { 3 ,   4 ,   5 } D=\{3,\space4,\space5\} D={3, 4, 5} E = { 6 } E=\{6\} E={6},最简 DFA 如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78101.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java搭建宝塔部署实战毕设项目springboot销售培训考评系统源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套Java开发的毕业设计项目springboot销售培训考评系统源码。 技术架构 技术框架:jQuery MySQL5.7 mybatis shiro Layui HTML CSS JS jpa运行环境:jdk8 IntelliJ…

【Linux】四、Linux 进程概念(三)|进程优先级|环境变量

目录 七、进程优先级 7.1 基本概念 7.1.1 什么是优先级 7.1.2 为什么存在优先级 7.1.3 Linux 优先级特点 7.2 查看系统进程 7.3 PRI 和 IN 7.4 查看进程优先级和更改进程优先级 7.5 其它概念 7.6 进程切换 八、环境变量 8.1 环境变量基本概念 8.2 常见环境变量 8…

windows下node.js通过N-API调用c++函数

环境准备 vscode安装(以下均在vscode中操作)node.js安装,版本不要太老c工具链安装,安装Visual Studio2019社区版即可,或者执行 npm install --global windows-build-tools(这个我没试过,window…

ARM SDRAM

前言 涉及到的文档: S5PV210_UM_REV1.1 x210cv3.pdf K4T1G164QE.pdf 一、SDRAM 引入 1、简介 SDRAM:Syncronized Dynamic Ramdam Access Memory,同步动态随机存储器; DDR:DDR 就是 DDR SDRAM,是 SDRAM 的升级版。…

[论文分享] DnD: A Cross-Architecture Deep Neural Network Decompiler

DnD: A Cross-Architecture Deep Neural Network Decompiler [USENIX 2022] Ruoyu Wu Purdue University Taegyu Kim The Pennsylvania State University Dave (Jing) Tian Purdue University Antonio Bianchi Purdue University Dongyan Xu Purdue University 深度神经网络(…

web前端期末大作业:婚纱网页主题网站设计——唯一旅拍婚纱公司网站HTML+CSS+JavaScript

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

代码随想录训练营day59, 下一个更大元素II, 接雨水

下一个更大元素II 给定一个循环数组, 输出每个元素的下一个更大元素, 没有则-1 所以在遍历的过程中, 模拟走了两遍nums class Solution {public int[] nextGreaterElements(int[] nums) {int len nums.length;//先进行边界判断if(nums null || len < 1){return new int…

Python制作读者下载器,实现随时随地免费看

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 一个看书党一年有多少money投入小说行业呢~ 碰上一本好看的书&#xff0c;你能购买上多少章呢~ 其中的投入&#xff0c;无法想象&#xff0c;尤其是兴致上来了&#xff0c;不得投上个礼物给作者…

redis之作为缓存使用

写在前面 Redis因为其自身高性能的数据读取能力&#xff0c;因此会经常被应用到缓存的场景中&#xff0c;本文就一起看下Redis当做缓存使用时的特点&#xff0c;问题&#xff0c;以及需要注意的点。 1&#xff1a;缓存的架构模式 从架构模式上来看缓存系统可以分为旁路缓存&…

Kotlin 基础学习笔记第八章——高阶函数:Lambda作为形参和返回值

一、声明高阶函数 高阶函数定义&#xff1a;高阶函数就是以另一个函数作为参数或者返回值的函数。 在kotlin中&#xff0c;函数可以用lambda或者函数引用来表示。因此&#xff0c;任何以lambda或者函数引用作为参数的函数&#xff0c;或者返回值为lamda或函数应用的函数&#x…

基于遗传算法优化的lssvm回归预测-附代码

基于遗传算法优化的lssvm回归预测 - 附代码 文章目录基于遗传算法优化的lssvm回归预测 - 附代码1.数据集2.lssvm模型3.基于遗传算法优化的LSSVM4.测试结果5.Matlab代码摘要&#xff1a;为了提高最小二乘支持向量机&#xff08;lssvm&#xff09;的回归预测准确率&#xff0c;对…

使用openshift 进行云平台连接

使用openshift 进行云平台连接 OpenShift CLI on Windows openshift 文档地址 OpenShift CLI on Mac 通过Homebrew方式安装 brew install openshift-cli安装完成&#xff0c;进行验证 oc version服务连接 oc login 服务地址根据提示输入用户名和密码&#xff0c;即可连接…

某讯滑块验证码反汇编分析-第一章

某讯滑块验证码反汇编分析-第一章js分析初步分析vmp结构js分析 在滑动完成后&#xff0c;会请求【cap_union_new_verify】接口&#xff0c;其中有5个比较长的参数&#xff0c;看起来可能会有加密的&#xff0c;分别如下。 参数名来源uasesscollecteksvData 那现在js看看这些参…

让车机「下雨」,路特斯的智能座舱跑偏了吗?

HIEV消息&#xff08;文/张祥威&#xff09;“我们今天用双8155&#xff0c;都觉得&#xff08;算力&#xff09;还不够。”杨平说。 这位路特斯的智能座舱研发负责人&#xff0c;目前带领着一支两百多人的团队&#xff0c;为Eletre这款车操刀座舱智能化。 双8155&#xff0c;指…

Gitee应用(1):快速搭建Git环境在不同电脑同步文件

一、前言 环境&#xff1a;Windows 11 64位 &#xff1b;vscode&#xff1a;1.73.1 当你要操作在两台不同的电脑上操作&#xff0c;或许经常会遇到一个问题&#xff0c;就是怎么同步同一个或几个文件&#xff0c;以方便你在不同的电脑上进行同个文件内容的创作。 在申请了公司电…

【Java难点攻克】「NIO和内存映射性能提升系列」彻底透析NIO底层的内存映射机制原理与Direct Memory的关系

NIO与内存映射文件 Java类库中的NIO包相对于IO包来说有一个新功能就是 【内存映射文件】&#xff0c;在业务层面的日常开发过程中并不是经常会使用&#xff0c;但是一旦在处理大文件时是比较理想的提高效率的手段&#xff0c;之前已经在基于API和开发实战角度介绍了相关的大文…

Java Math类

JavaMath类\huge{Java \space Math类}Java Math类 Math类 包含执行基本数字运算的方法&#xff0c;Math类没有提供公开的构造器。 MathMathMath类本质就是一个工具类&#xff0c;提供许多方法用于其他类调用&#xff0c;但是无法创建子类对象。 常用方法 ①. abs()取绝对值…

CANoe测试的两种方式Test Module 和 Test Unit对比,你常用哪种呢?

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

前端接口联调时传的参数是array数组形式处理

情景&#xff1a;使用van-uolaoder组件上传多个图片后调用保存按钮&#xff0c;这时由于存在多张图片&#xff0c;调用接口时前端传的参数就是数组形式。&#xff08;前端传的数组要先转为字符串&#xff09; 处理方法是&#xff1a; 1. 先确定后端使用什么注解&#xff0c;如…

Gerb视图支持新表单和旧表单

Gerb视图支持新表单和旧表单 GerbView生产高级软件Companions&#xff0c;但也易于替换、打印和查看HPGL、HPGL/2、Excellon和国际象棋文件。该程序支持RS274D和RS274X。您可以使用此软件将旧格式和标准RS274D转换为具有默认信息的新类型RS274X。Gerbview将致力于展示和绘制您的…