【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )
文章目錄
- 一、四個等價概念
- 二、自動機界限
- 三、Pumping 引理
- 四、Pumping 引理 示例
- 五、證明 語言 不是正則語言 步驟
- 六、證明 語言 不是正則語言 示例
一、四個等價概念
1 . 正則語言 : 給定一個語言 , 可以自動設計一個識別該語言的 自動機 ; 該語言必須是一個 正則表達式 表達的語言 ;
2 . 正則表達式可以轉成自動機 : 先構造 接受單字符自動機 , 然后通過串聯 并聯 或 星計算 , 拼裝成自動機 ; 這個轉化成的自動機是非確定性有限自動機 ( NFA ) , NFA 可以轉成 確定性有限自動機 ( DFA ) ;
3 . 自動機可以轉成正則表達式 : 給定一個自動機 , 逐個刪除自動機的狀態 , 最后刪除到只剩下開始狀態 與 接受狀態 兩個狀態 , 開始狀態 讀取 正則表達式 跳轉到接受狀態 , 這個正則表達式就是自動機轉成的 ;
確定性有限自動機 ( DFA ) 與 非確定性有限自動機 ( NFA ) 等價 , NFA 與 擴展型的非確定性有限自動機 ( GNFA ) 是等價的 , GNFA 可以寫成正則表達式語言 ( 正則語言 ) ;
上述 DFA , NFA , GNFA , 正則語言 概念是等價的 ;
二、自動機界限
1 . 自動機界限 : 自動機 不是萬能的 , 它有一個界限 , 有的語言自動機可以識別 , 有的語言自動機無法識別 , 這樣就需要給有限自動機確定一個界限 ;
2 . 判斷語言是否能被自動機識別 : 如何判定一個語言是否是自動機能識別的語言 , 只需要判定該語言是否是正則語言即可 ;
① 語言是正則語言 : 如果該語言是正則語言 , 那么該語言就可以被自動機識別 ;
② 語言不是正則語言 : 如果該語言不是正則語言 , 那么該語言不能被自動機識別 ;
3 . 引入 Pumping 引理 : 如何判定語言是否是正則語言 , 這里使用 Pumping 引理 , 可以判定一個語言是否是正則語言 ;
三、Pumping 引理
Pumping 引理 :
① 正則語言 : AAA 是正則語言 ;
② 數字 : 存在數字 ppp , 這個 ppp 叫做 Pumping 長度 ;
③ 字符串 : sss 是 AAA 語言中的字符串 , 其長度大于等于 ppp ; ( 字符串兩個要求 )
④ 字符串分組及要求 : sss 可以分為三個部分 , s=xyzs = xyzs=xyz , 滿足如下要求 :
- xyiz∈A(i≥0)xy^iz \in A \quad ( i \geq 0 )xyiz∈A(i≥0) : iii 表示中間的 yyy 的重復次數 ;
- ∣y∣>0|y| > 0∣y∣>0 : yyy 是中間重復的部分 , 星計算部分 ;
- ∣xy∣≤p|xy| \leq p∣xy∣≤p
四、Pumping 引理 示例
1 . 正則語言 與 自動機 等價 : 如果語言 AAA 是正則語言 , 該語言可以被有限自動機識別 ;
2 . 已知的語言 : AAA 語言的字符串 s=s1s2s3s4s5s6?sns = s_1 \; s_2 \; s_3 \; s_4 \; s_5 \; s_6 \; \cdots \; s_n \;s=s1?s2?s3?s4?s5?s6??sn? , 字符串的長度為 nnn ;
3 . Pumping 引理中的字符串有兩個要求 :
① 長度要求 : 長度 nnn 大于等于 Pumping 長度 ppp ;
② 語言要求 : 字符串屬于語言 AAA ;
4 . 假設 : 上述字符串可以被下面的自動機接受 ;
5 . 將上述字符串 sss 輸入到自動機中進行計算 :
q1q_1q1? 是自動機的開始狀態 , 讀取 s1s_1s1? 字符 , 就會跳轉到 q3q_3q3? 狀態 ;
q3q_3q3? 狀態下 , 讀取 s2s_2s2? 字符 , 就會跳轉到 q20q_{20}q20? 狀態 ;
q20q_{20}q20? 狀態下 , 讀取 s3s_3s3? 字符 , 就會跳轉到 q9q_{9}q9? 狀態 ;
q9q_{9}q9? 狀態下 , 讀取 s4s_4s4? 字符 , 就會跳轉到 q17q_{17}q17? 狀態 ;
q17q_{17}q17? 狀態下 , 讀取 s5s_5s5? 字符 , 就會跳轉到 q9q_{9}q9? 狀態 ;
?\vdots?
q..q_{..}q..? 狀態下 , 讀取 sns_nsn? 字符 , 就會跳轉到 q13q_{13}q13? 狀態 ;
6 . 重復狀態說明 : 字符串 sss 的長度是大于 字符串輸入 自動機 過程中經過的狀態個數的 , 中間肯定有重復的狀態 ;
① 這個重復的狀態是 q9q_9q9? ;
② 將兩個 q9q_9q9? 中間的部分 s4s5s_4 s_5s4?s5? 再重復幾遍 , 該字符串仍然可以被接受 ;
上圖就是 sss 字符串中的 xyzxyzxyz 三部分 , 其中的 yyy 部分可以無限重復 ;
五、證明 語言 不是正則語言 步驟
證明步驟 : 使用 反正法 進行證明 ;
① 提出假設 : 首先假設該語言是正則的 ;
② Pumping 引理證明 : 存在長度至少為 ppp 的任何字符串 , 都滿足 Pumping 引理 的三個性質 ;
③ 矛盾 假設不成立 : 如果不滿足 Pumping 引理 , 說明上面假設該語言是正則語言 是不成立的 , 該語言不是正則語言 ;
六、證明 語言 不是正則語言 示例
證明 : {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n≥0} 語言 不是正則語言 ;
提出假設 : 假設 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n≥0} 語言是正則語言 ;
引用 Pumping 引理 , 看上述語言是否符合該 Pumping 引理 ;
Pumping 長度 : 存在一個數字 ppp ( Pumping 長度 ) , 使得任何長度至少為 ppp 的字符串 , 并且該字符串屬于 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n≥0} 語言 ;
滿足 Pumping 引理 的三個條件 :
- xyiz∈A(i≥0)xy^iz \in A \quad ( i \geq 0 )xyiz∈A(i≥0)
- ∣y∣>0|y| > 0∣y∣>0
- ∣xy∣≤p|xy| \leq p∣xy∣≤p
如果所有的字符串都滿足上述上個條件 , 說明該語言是正則語言 , 如果找出了一個字符串不滿足上述條件 , 該語言就不是正則語言 ;
按照上述提出的證明步驟 , 證明該字符串不是正則表達式 ;
1 . 選擇反例字符串 : 目的是證明 正則表達式不成立 , 選擇的是反例 ;
① 反例選擇 : 選擇字符串 s=0p1ps = 0^p 1^ps=0p1p , 該字符串有 ppp 個 000 和 ppp 個 111 字符組成 ;
② Pumping 引理條件 : 將上述字符串分成 s=xyzs = xyzs=xyz 三個部分 , 看是否滿足 Pumping 引理的三個條件 ;
2 . yyy 出現三種情況 :
- yyy 全部由 000 組成
- yyy 全部由 111 組成
- yyy 全部由 0,10,10,1 組成 ;
如果上述每種情況都出現矛盾 , 說明假設不成立 ;
3 . yyy 全部由 000 組成 情況分析 :
① 假設 : 假設 yyy 全部由 000 組成 , 其不停的重復 , 得到的新字符串 , 仍然屬于 AAA 語言 ;
② yyy 重復后不符合要求 : 但是 000 重復若干次之后 , 000 的個數就大于 111 的個數了 , 此時不符合 s=0p1ps = 0^p 1^ps=0p1p 要求了 , 因此這種情況不成立 ;
4 . yyy 全部由 111 組成 情況分析 :
① 假設 : 假設 yyy 全部由 111 組成 , 其不停的重復 , 得到的新字符串 , 仍然屬于 AAA 語言 ;
② yyy 重復后不符合要求 : 但是 111 重復若干次之后 , 111 的個數就大于 000 的個數了 , 此時不符合 s=0p1ps = 0^p 1^ps=0p1p 要求了 , 因此這種情況不成立 ;
5 . yyy 全部由 0,10,10,1 組成 情況分析 :
① 假設 : 假設 yyy 全部由 0,10,10,1 組成 , 其不停的重復 , 得到的新字符串 , 仍然屬于 AAA 語言 ;
② yyy 重復后不符合要求 : 但是 0,10,10,1 重復若干次之后 , 就會打亂 s=0p1ps = 0^p 1^ps=0p1p 字符串中 0,10,10,1 的相互順序 , 其中 0,10,10,1 不能存在交叉 , 因此這種情況不成立 ;
經過上述討論 , yyy 的三種情況都不符合 Pumping 引理 , 因此 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n≥0} 語言不是正則語言 ;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【计算理论】正则语言 ( 推广型的非确定
- 下一篇: 【计算理论】上下文无关语法 ( 语法组成