日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )

發布時間:2025/6/17 编程问答 34 豆豆

文章目錄

  • 一、四個等價概念
  • 二、自動機界限
  • 三、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 長度 ;

③ 字符串 : sssAAA 語言中的字符串 , 其長度大于等于 ppp ; ( 字符串兩個要求 )

④ 字符串分組及要求 : sss 可以分為三個部分 , s=xyzs = xyzs=xyz , 滿足如下要求 :

  • xyiz∈A(i≥0)xy^iz \in A \quad ( i \geq 0 )xyizA(i0) : iii 表示中間的 yyy 的重復次數 ;
  • ∣y∣>0|y| > 0y>0 : yyy 是中間重復的部分 , 星計算部分 ;
  • ∣xy∣≤p|xy| \leq pxyp




四、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:n0} 語言 不是正則語言 ;


提出假設 : 假設 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n0} 語言是正則語言 ;


引用 Pumping 引理 , 看上述語言是否符合該 Pumping 引理 ;


Pumping 長度 : 存在一個數字 ppp ( Pumping 長度 ) , 使得任何長度至少為 ppp 的字符串 , 并且該字符串屬于 {0n1n:n≥0}\{ 0^n 1^n : n \geq 0 \}{0n1n:n0} 語言 ;


滿足 Pumping 引理 的三個條件 :

  • xyiz∈A(i≥0)xy^iz \in A \quad ( i \geq 0 )xyizA(i0)
  • ∣y∣>0|y| > 0y>0
  • ∣xy∣≤p|xy| \leq pxyp

如果所有的字符串都滿足上述上個條件 , 說明該語言是正則語言 , 如果找出了一個字符串不滿足上述條件 , 該語言就不是正則語言 ;


按照上述提出的證明步驟 , 證明該字符串不是正則表達式 ;


1 . 選擇反例字符串 : 目的是證明 正則表達式不成立 , 選擇的是反例 ;


① 反例選擇 : 選擇字符串 s=0p1ps = 0^p 1^ps=0p1p , 該字符串有 ppp000ppp111 字符組成 ;

② 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:n0} 語言不是正則語言 ;

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的【计算理论】Pumping 引理 ( 四个等价概念 | 自动机界限 | Pumping 引理简介 | Pumping 引理证明正则表达式 | Pumping 引理示例分析 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。