除非語法,直接關係到另一個語法 - 通過標準的轉換,如標準化,零生產消除,等等 - 例如證實兩個文法derivee同樣的語言是非常困難不知道什麼語言是。通常更容易證明(獨立地)每個語法都來自語言。
第一語法您提供:
S → aSbS | bSaS | ε
確實在事實上獲得的所有字符串的語言在字母表{a, b}*
其中一個的個數爲相同的b S上的號碼。我們可以分兩部分來證明:首先,語法所識別的每個句子都具有該屬性,其次,具有該屬性的每個句子都可以由該語法派生。兩種證明都是通過歸納進行的。
對於前向證明,我們通過對派生數進行歸納。假設我們有一些推導S → α → β → … → ω
,其中所有的希臘字母代表非終端和終端的序列。
如果微分的長度正好是零,使得它開始與S
結尾,則有在任何派生句子沒有端子,以便其清楚,每一個導出的句子具有相同數量的一個 S和b s。 (基礎步驟)
現在爲感應步驟。假設每個長度爲i
的派生已知以衍生句子結束,該衍生句子具有相同數量的a s和b s。我們想從這個前提證明,每個長度爲i+1
的派生結尾的句子的句號與a s和b s相同。但是,這也很清楚:三種可能的生產步驟中的每一種都保持了平價。
現在,讓我們來看看相反的方向:與相同數量的一個 S和b S能夠從該語法派生的每一句話。我們將通過字符串長度的歸納來完成此操作。我們歸納前提將是,如果它是一個爲每個j ≤ i
,與正好j
一個 S和j
b小號的每一句話都有從S
推導,然後用準確i+1
一個 S和i+1
每一句話的情況下b s。 (這裏我們只考慮只包含終端的句子。)
考慮這樣一個句子。它可以從a或b開始。假設它與一個開始:然後至少有一個b在句子中,使得與該b結束前綴具有相同數目的每個終端。 (把這個字符串想象成一個方形網格:每個a向上向右移動一個單位,並且每個對角向下向右移動,因爲端點的高度與起點完全相同,並且有沒有蟲洞在圖中,一旦我們提升我們必須遲早下降回到起始高度,這是結束b的前綴。)這樣的前綴的內部(以外的所有一個在開始和最後的b)是平衡的,正如字符串的其餘部分一樣。這兩者都較短,所以通過歸納假設,它們可以從S
得出。使這些替代,我們得到一個小號b小號,這可以從S
導出。相同的參數適用於以b開頭的字符串。再次,基礎步驟是微不足道的。
所以這基本上是你需要適應你的語法的證明程序。
祝你好運。
順便說一句,這類問題也可以在cs.stackexchange.com或math.stackexchange.com構成,其中MathJax可用。 MathJax使得寫出數學證明更加乏味,所以你可能會發現你會在那裏得到更多可讀的答案。
也許你可以改進你的語法? 有一點上下文會有所幫助。 –
@CalvinTaylor,我編輯了我的問題!加入我認爲是相同的語法,但是我想到了一個問題。我如何證明它們都是等價的? –