形式語言與自動機中的7大演算法

2021-08-27 00:25:09 字數 2065 閱讀 8237

期末複習的時候,把涉及到的7個在做題目經常會用到的演算法整理了一下

演算法 1——dfa 的極小化

⑴ for "(q,p)∈f×(q-f) do

標記可區分狀態表中的表項(q,p);

⑵ for"(q,p)∈f×f∪(q-f) ×(q-f)&q≠p do

⑶ if $a∈∑,可區分狀態表中的表項(δ(q,a),δ(p,a))已被標記 then

begin

⑷ 標記可區分狀態表中的表項(q,p);

⑸ 遞迴地標記本次被標記的狀態對的關聯鍊錶上的各個狀態對在可區分狀態表中的對應表項

end

⑹ else for " a∈∑,do

⑺ if δ(q,a)≠δ(p,a) &(q,p)與(δ(q,a),δ(p,a))不是同乙個狀態對 then

將(q,p)放在(δ(q,a),δ(p,a))的關聯鍊錶上。 例:

演算法 2—— 刪除派生不出終極符號行的變數。

(1) oldv=φ;

(2) newv=;

(3) while oldv≠newv do

begin

(4) oldv=newv;

(5) newv=oldv∪

end(6) v′=newv;

(7) p′=

演算法 3—— 刪除不出現在任何句型中的語法符號。

(1) oldv=φ;

(2) oldt=φ;

(3) newv=∪;

(4) newt=;

(5) while oldv≠newv 或者oldt≠newt do

begin

(6) oldv=newv;

(7) oldt=newt;

(8) newv=oldv∪;

(9) newt=oldt∪;

end(10) v′=newv;

(11) t′=newt;

(12) p′=。

演算法4——求cfg g的可空變數集u。

(1)oldu=φ;

(2) newu=;

(3)while newu≠oldu do

begin

(4)oldu = newu;

(5) newu= oldu ∪

end(6)u=newu

演算法 5—— 判定cfl l是否為空。

輸入:cfg g=(v,t,p,s)。

輸出:g是否為空的判定;cfg g′=(v′,t,p′,s),v′中不含派生不出終極符號行的變數,並且有l(g′)=l(g)。

主要步驟:

(1) oldv=φ;

(2) newv=

(3) while oldv≠newv do

begin

(4) oldv=newv;

(5) newv=oldv∪;

end(6) v′=newv;

(7) p′=;

(8) if s∈newv then l(g)非空 else l(g)為空

演算法6—— 判定cfl l是否為無窮語言。

(1) 呼叫演算法6-1、6-2;

(2) if sïv′ then l(g)為有窮的語言

else

begin

(3) 構造g′的簡化的可派生性圖表示sdg;

(4) if sdg中含有迴路 then l(g′)為無窮語言

(5) else l(g′)為有窮有語言。

end

演算法7——x是否為l的句子的判定 ( cyk演算法)

(1) for i=1 to |x| do

(2) vi,1=;

(3) for k=2 to |x| do

(4) for i=1 to |x|-k+1 do

begin

(5) vi,k=φ;

(6) for j=1 to k-1 do

(7) vi,k= vi,k∪;

end

形式語言與自動機複習 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 的...

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

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