形式語言與編譯4 NFA與正規表示式的相互轉化

2022-06-26 10:48:10 字數 2707 閱讀 5859

dfa、nfa、\(\varepsilon\)-nfa隱含的處理的語言就是,正則語言。

有的人知道自動機,有的人不知道自動機。這些不知道自動機的科學家從算術運算或者數學的角度定義了語言。用的是表示式法。

還有一些人定義語言用的是文法不同的流派

就是說定義語言有許多流派,有自動機派、文法派、表示式派

語言用類似四則運算(代數)的方法研究語言是我們接下來要講的。

串連線運算

注意:\(l_1\cup l_2\)也用\(l_1+l_2\) 和\(l_1|l_2\)來表示。表示要麼l1,要麼l2。

不存在既屬於l1有屬於l2這種情況,這與我傳統理解的並集有出入。此處的並非彼並!!!

\(0+1 = \\)

01串 \((0+1)^*\)

例題:\(l_1有限集合\)

\(l_2無限可列集合\)

現在我們是要用我們定義的運算方式將 我們想要定義的語言組合起來

用最基礎的三種運算進行組合

由正規表示式定義的語言是正則的

正則語言:能用正規表示式表示出來

正規表示式題感覺有積累的意義,多看看吧,自己初次見感覺不好想

前面講到的三種自動機能夠定義正則語言;而這裡我們使用正規表示式也能夠定義正則語言;某種程度上來說,前面三種自動機與我們這裡的正規表示式功能一樣

這個題可以積累 這就是讓寫出串長度是2的倍數或者3的倍數的串

同樣的我們可以寫出串長度是4,5,6,7,8的串

三種自動機與現在所學的re其實是研究同一種東西的不同角度罷了

re ——>\(\varepsilon-nfa\)——>\(nfa\) ——>dfa

現在問題就是從re到\(\varepsilon-nfa\) 咋搞???後面的我們都說了

其實有如下套路:

看到連線 對應我們的\(\varepsilon\)順序結構

看到並運算 對應我們的\(\varepsilon\)分支結構

看到*運算 對應我們的迴圈結構

引進\(\varepsilon\)的目的就是讓我們可以把單個的dfa連線起來

這樣就把re與\(\varepsilon\)nfa聯絡起來了!!!!!(太妙了)

上面這題分成三部分,然後把三個自動機用\(\varepsilon\) 連線起來即可

核心就是:把正規表示式中的三種基礎運算用相應的自動機代替(這三種基礎的運算對應的自動機固定可以記憶),然後把題目要求的正規表示式通過

\(\varepsilon\) 連線起來,組合成乙個比較大的自動機

左下角是準備化簡的nfa,不滿足三個條件中的後兩個條件。因此我們可以通過新增\(\varepsilon\)達到滿足下面三個條件。新增後發現:確實,滿足了簡化後nfa的三個要求 其實就是通過增加狀態數,簡化nfa。簡化到乙個筆直的向量結構

拓展的nfa (g-nfa)

原來的nfa弧上只能有字元,即使是多個字元,每個字元也是單個的,並非串。現在我們要拓展的nfa是準備把弧上的字元變成串(這個串我們常常用正規表示式表示)

而我們通過把這個帶有正規表示式的nfa,通過消除狀態到:最終只有乙個開始狀態與乙個接受狀態;此時這個弧上的正規表示式就是我們的目的(結果)——從nfa得到re。

消除狀態

完美!!!

底下這張slides我認為有點錯誤,應該是\(0^*1(00^*1+1^*)^*\)

答案有點錯誤,但是過程是相當完美,值得記憶的!!!

數學的符號語言與形式語言

形式語言和自然語言本質上都是一種符號系統,形式語言是人為的設計的,而自然語言則是在人類進化過程中自然演化的。形式語言包括數學符號,程式語言,化學式等。自然語言的發展是先出現語音的區別來表意,接著出現文字,而數字的出現則要晚很多。數字的出現則是人類發現了數量這一資訊時,產生了數的意識。當古代人在需要記...

形式語言與自動機複習 4 7

1.dfa轉正則語言 1.直接轉 需要注意的是,我們經常會處理到一p s p的情況,讓我們分析一下這個本質是什麼 可以把p看作p t看作p 那麼實際上 p s p 只會變成 p t p p 而p s q並沒有受到 p s t的影響 這也就是為什麼不會這麼迴圈的原因 如下 q0 q2 q0只會影響作用...

形式語言與自動機理論總結

一 圖形總結。重點 喬姆斯基體系 四大文法之間的關係 二 文字詳解。1,集合關係 並 交 補 差 笛卡爾積 冪積 二元關係 1 笛卡爾積 axb,即都分別對應的乘積。例1 1,a b 則 axb 2 冪積 2 a,即所有的子集。例1 2,a 則2 a 3 二元關係 任意的r a b,r 是a到b 的...