簡體   English   中英

證明常規語言和自動機

[英]Prove regular language and automata

這是一種語法,我想檢查一下這種語言是否正常。

 L → ε | aLcLc | LL 

例如,此語法的結果是:
acc, accacc ..., aacccc, acaccc, accacc, aaacccccc, ...

我知道這不是普通語言,但如何證明呢? 建立自動機是證明它的正確方法嗎? 什么是自動機。 我看不到用於構建自動機的模式。

感謝您的任何幫助!

首先,讓我快速演示一下,不能僅根據語法的不規則性來推斷語法的語言是否不規則。 要查看此內容,請考慮無限制的語法:

S -> SSaSS | aS | e
SaS -> aSa
aaS -> SSa

顯然這不是常規語法,但是您應該能夠驗證它會生成a的所有字符串的無限常規語言。

也就是說,我們應該如何進行? 我們將需要弄清楚您的語法生成哪種語言,然后辯稱特定的語言不能正常。 我們注意到,唯一引入終端符號的規則總是引入c兩倍於a。 此外,不難看出該語言必須是無限的。 我們可以使用Myhill-Nerode定理證明這些觀察結果暗示該語言必須是不規則的。

考慮此語法語言中的假設字符串的前綴a ^ n。 可以附加到此前綴末尾以給出由該語法生成​​的字符串的最短字符串為c ^(2n)。 沒有更短的字符串將起作用,並且該字符串將始終起作用。 想象一下,現在我們正在為語法語言尋找正確的確定性有限自動機。 然后,無論處理前綴a ^ n的狀態如何,我們都需要從那里到自動機中接受狀態的最短路徑的長度為2n。 但是DFA必須具有有限的多個狀態,並且n是任意自然數。 我們的DFA無法在所有可能的n范圍內工作(它需要具有任意多個州)。 這是一個矛盾,因此語法語言沒有正確的DFA。 由於所有常規語言都具有DFA,這意味着該語法的語言不能是常規語言。

暫無
暫無

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

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