
- 自動機理論教程
- 自動機理論 - 首頁
- 自動機理論 - 入門
- 自動機理論 - 歷史
- 自動機理論 - 應用
- 自動機理論術語
- 自動機中字串的基礎知識
- 自動機的集合論
- 語言和文法
- 計算理論中的文法
- 由文法生成的語言
- 喬姆斯基文法分類
- 有限自動機
- 確定性有限自動機 (DFA)
- 非確定性有限自動機 (NFA)
- 從 NFA 到 DFA 的轉換
- DFA 的最小化
- 摩爾機與米利機
- DFA 的補集
- 正則表示式
- 自動機中的正則表示式
- 自動機中的 Arden 定理
- 將正則表示式轉換為有限自動機
- 正則文法的泵引理
- 計算理論中的正則集
- 上下文無關文法
- 上下文無關文法 (CFG)
- 上下文無關文法中的二義性
- 上下文無關語言的封閉性
- 簡化上下文無關文法
- 喬姆斯基正規化 (CNF)
- 格雷巴赫正規化 (GNF)
- 上下文無關文法的泵引理
- 下推自動機
- 下推自動機 (PDA)
- 下推自動機的接受
- 從 CFG 構造 PDA
- 下推自動機和語法分析
- 圖靈機
- 圖靈機 (TM) 基礎
- 圖靈機接受的語言
- 多磁帶圖靈機
- 多軌跡圖靈機
- 非確定性圖靈機
- 半無限磁帶圖靈機
- 線性界限自動機 (LBA)
- 可計算性和不可判定性
- 圖靈語言的可判定性
- 不可判定語言
- 圖靈機停機問題
- 計算理論中的 Rice 定理
- Post 對應問題 (PCP)
- 自動機理論資源
- 自動機理論 - 快速指南
- 自動機理論 - 資源
- 自動機理論 - 討論
由文法生成的語言
可以從文法推匯出的所有字串的集合被稱為由該文法生成的語言。由文法G生成的語言是正式定義的子集
L(G)={W|W ∈ ∑*, S ⇒G W}
如果L(G1) = L(G2),則文法G1等價於文法G2。
示例
如果有一個文法
G: N = {S, A, B} T = {a, b} P = {S → AB, A → a, B → b}
這裡S產生AB,我們可以用a替換A,用b替換B。這裡,唯一接受的字串是ab,即
L(G) = {ab}
示例
假設我們有以下文法 -
G: N = {S, A, B} T = {a, b} P = {S → AB, A → aA|a, B → bB|b}
由該文法生成的語言 -
L(G) = {ab, a2b, ab2, a2b2, ………}
= {am bn | m ≥ 1 and n ≥ 1}
生成語言的文法構造
我們將考慮一些語言並將其轉換為生成這些語言的文法 G。
示例
問題 - 假設,L (G) = {am bn | m ≥ 0 and n > 0}。我們必須找出產生L(G)的文法G。
解決方案
由於 L(G) = {am bn | m ≥ 0 and n > 0}
接受的字串集可以重寫為 -
L(G) = {b, ab,bb, aab, abb, …….}
這裡,起始符號必須至少包含一個以任意數量的 'a'(包括空)開頭的 'b'。
為了接受字串集 {b, ab, bb, aab, abb, …….}, 我們採用了以下產生式 -
S → aS , S → B, B → b and B → bB
S → B → b (接受)
S → B → bB → bb (接受)
S → aS → aB → ab (接受)
S → aS → aaS → aaB → aab(接受)
S → aS → aB → abB → abb (接受)
因此,我們可以證明 L(G) 中的每個字串都被產生的語言接受。
因此,文法 -
G: ({S, A, B}, {a, b}, S, { S → aS | B , B → b | bB })
示例
問題 - 假設,L (G) = {am bn | m > 0 and n ≥ 0}。我們必須找出產生 L(G) 的文法 G。
解決方案 -
由於 L(G) = {am bn | m > 0 and n ≥ 0},接受的字串集可以重寫為 -
L(G) = {a, aa, ab, aaa, aab ,abb, …….}
這裡,起始符號必須至少包含一個 'a',後面可以跟任意數量的 'b'(包括空)。
為了接受字串集 {a, aa, ab, aaa, aab, abb, …….}, 我們採用了以下產生式 -
S → aA, A → aA , A → B, B → bB ,B → λ
S → aA → aB → aλ → a (接受)
S → aA → aaA → aaB → aaλ → aa (接受)
S → aA → aB → abB → abλ → ab (接受)
S → aA → aaA → aaaA → aaaB → aaaλ → aaa (接受)
S → aA → aaA → aaB → aabB → aabλ → aab (接受)
S → aA → aB → abB → abbB → abbλ → abb (接受)
因此,我們可以證明 L(G) 中的每個字串都被產生的語言接受。
因此,文法 -
G: ({S, A, B}, {a, b}, S, {S → aA, A → aA | B, B → λ | bB })