上下文無關語言的抽取引理解釋
上下文無關語言 (CFL) 的抽取引理用於證明一個語言不是上下文無關語言。
假設 L 是上下文無關語言。
則存在一個抽取長度 n,使得任何長度大於等於 n 的字串 w εL 可以寫成如下形式:
|w|>=n
我們可以將 w 分成 5 個字串,w=uvxyz,如下所示:
- |vxy| >=n
- |vy| ≠ ε
- 對於所有 k>=0,字串 uvkxykz∈L
下面解釋了使用抽取引理證明語言不是上下文無關語言的步驟:
- 假設 L 是上下文無關語言。
- 抽取長度為 n。
- 所有長度大於 n 的字串都可以被抽取 |w|>=n。
- 現在在 L 中找到一個字串 'w',使得 |w|>=n。
- 將 w 分成 uvxyz
- 證明對於某些 k,uvkxykz ∉L
- 然後,考慮 w 可以分成 uvxyz 的方式。
- 證明這些方式中沒有一個能夠同時滿足所有 3 個抽取條件。
- w 無法被抽取(矛盾)。
示例
找出 L={xnynzn|n>=1} 是否為上下文無關語言。
解答
- 設 L 為上下文無關語言。
- L 必須滿足抽取長度,例如 n。
- 現在我們可以取一個字串,例如 s=xnynzn
- 我們將 s 分成 5 個字串 uvxyz。
設 n=4,則 s=x4y4z4
情況 1
v 和 y 各自只包含一種型別的符號。
(我們只考慮 v 和 y,因為 v 和 y 的冪是 uv2xy2z)
X xx x yyyyz z zz
=uvkxykz 當 k=2
=uv2xy2z
=xxxxxxyyyyzzzzz
=x6y4z5
(x 的數量 ≠ y 的數量 ≠ z 的數量)
因此,結果字串不滿足條件。
x6y4z5 ∉ L
如果一種情況失敗,則無需檢查其他條件。
情況 2
v 或 y 包含多種型別的符號。
Xx xx yy y y zzzz
=uvkxykz (k=2)
=uv2xy2z
=xxxxyyxxyyyyyzzzz
=x4y2x2y5z2
這個字串不符合我們字串 xnynzn 的模式。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP