簡體   English   中英

證明語言是語法的一部分,反之亦然

[英]proving that a language is part of a grammar and vice versa

所以這里有一個語法 R 和一個語言 L,我想證明從 R 出來 L。

    R={S→abS|ε} , L={(ab)n|n≥0}

所以我想我會證明 L(G) ⊆ L 和 L(G) ⊇ L 是正確的。

對於 L (G) ⊆ L:我通過對導數步數 i 的歸納表明,在每個導數步 u → w 之后,根據 R 的規則,w 由 u 產生,w = v1v2 或 w = v1v2w 與 | v2 | = | v1 | v1 ∈ {a} ∗ 和 v2 ∈ {b} ∗。 並且在歸納開始時:在 i = 0 時,它產生 w 是 ε,而在 i = 1 時,w 是 {ε, abS}。

到目前為止是這樣嗎?

所以這里有一個語法 R 和一個語言 L,我想證明從 R 出來 L。

可能您想要做的是表明某些語法 R 的語言 L(R) 與其他語言 L 以另一種方式指定的相同(在您的情況下,使用正則表達式的 set-builder 符號)。

所以我想我會證明 L(G) ⊆ L 和 L(G) ⊇ L 是正確的。

鑒於上述假設,您認為這是進行證明的正確方法是正確的。

對於 L (G) ⊆ L:我通過對導數步數 i 的歸納表明,在每個導數步 u → w 之后,根據 R 的規則,w 由 u 產生,w = v1v2 或 w = v1v2w 與 | v2 | = | v1 | v1 ∈ {a} ∗ 和 v2 ∈ {b} ∗。 並且在歸納開始時:在 i = 0 時,它產生 w 是 ε,而在 i = 1 時,w 是 {ε, abS}。

這對我來說很難遵循。 這並不是說這是錯誤的。 讓我用我自己的話寫下來,也許你或其他人可以判斷我們是否在說同樣的話。

我們想證明 L(R) 是 L 的一個子集。也就是說,任何由語法 R 生成的字符串都包含在語言 L 中。我們可以通過對生成的字符串的推導步驟數進行數學歸納來證明這一點由語法。 我們從一個推導步驟的基本情況開始:S -> e 通過選擇 n = 0 產生空詞,它是語言 L 中的一個字符串。 現在我們已經建立了基本情況,我們可以陳述歸納假設:假設對於所有從語法中直到並包括 k 的步驟中導出的所有字符串,這些字符串也在 L 中。 現在我們必須證明歸納步驟:從語法中的 k+1 步中導出的任何字符串也在L. 讓 w 是從 k+1 步中的語法派生的任何字符串。 從語法中很明顯,w 的推導必須是 S -> abS -> ababS -> ... -> abab...abS -> abab...abe = abab...ab。 但是這個推導和k步從文法推導一個字符串是一樣的,只是在S->e的應用之前多了一個S->abS的應用。 通過歸納假設,我們知道在 k 步中導出的字符串 w' 的形式為 (ab)^m,對於某些 m 至少為零,並且將 S -> abS 的額外應用添加到推導中添加了 ab。 因為 (ab)^m(ab) = (ab)^(m+1) 我們可以選擇 n = m+1。 因此,根據需要,從 k+1 步中的語法派生的所有字符串也在語言中。

為了證明語言中的所有字符串都可以在語法中導出,請考慮以下構造:要導出語法中的字符串 (ab)^n,應用產生式 S -> abS 的次數等於 n,並且生產 S -> e 恰好一次。 第一步給出中間形式 (ab)^nS,第二步給出閉合形式字符串 (ab)^n。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM