📜  交替0和1的DFA

📅  最后修改于: 2021-08-25 18:29:58             🧑  作者: Mango

正则表达式可以是任何东西,从结束符号to到两个正则表达式(R 1 + R 2 )的并置(R 1 R 2 )或其闭包R 1 *的结合。

正则表达式的示例:

  1. 以两个零开头的0和1的所有字符串的集合的正则表达式:
    00(0+1)*
  2. 所有0和1的字符串的集合的正则表达式,其偶数为0,后跟奇数为1:
    (00)*1(11)*
  3. 所有包含至少一个0和至少两个1的0和1的所有字符串的集合的正则表达式:
    00*11(0+1)* + 0111*(0+1)*

正则表达式可接受的字符串,带有交替的0和1 –

  1. ∈(无输入,0和1)
  2. 010101…..(以0开头,然后是1的字符串,依此类推)。
  3. 101010…..(以1开头,后跟0的字符串,依此类推)。

现在,所有由交替的0和1组成的所有字符串的集合的正则表达式为(01)* ,它可以接受∈,01,0101,010101 ….. etc等,但这限制了该字符串,因为它总是以0开头只要。

同样,表达式(10)*将接受∈,10、1010、101010…等,但这也限制了字符串,因为它始终只能以1开头。

因此,我们引入1(01)*0(10)*来弥补各自情况下的差距。

而1(01)*打破字符串的从0开始,0(10)的限制*断裂同样为从1开始的字符串。

因此,最后的表达式是–

(01)* + (10)* + 0(10)* + 1(01)*

图–交替0和1的正则表达式的有限自动机