日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

形式语言与自动机 Part.4 正则语言,2DFA,MealyMoore机

發布時間:2024/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 形式语言与自动机 Part.4 正则语言,2DFA,MealyMoore机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

課程名:形式語言與自動機

作者:Lupinus_Linn

許可證:CC-BY-NC-SA 3.0 創作共用-署名-非商業性-相同方式共享

  • 署名(英語:Attribution,BY):您(用戶)可以復制、發行、展覽、表演、放映、廣播或通過信息網絡傳播本作品;您必須按照作者或者許可人指定的方式對作品進行署名。
  • 非商業性使用(英語:Noncommercial,NC):您可以自由復制、散布、展示及演出本作品;您不得為商業目的而使用本作品。
  • 相同方式共享(英語:Sharealike,SA):您可以自由復制、散布、展示及演出本作品;若您改變、轉變或更改本作品,僅在遵守與本作品相同的許可條款下,您才能散布由本作品產生的派生作品。(參見copyleft。)

引用:

  • 本文中部分文字與圖片引用自北京郵電大學計算機學院王柏教授的《形式語言與自動機》課程課件。
  • 緒論中的證明方法部分引自清華大學王生原老師課件。
  • 部分題目插圖引用自北京郵電大學出版社《形式語言與自動機 第二版》教材。

在此一并表示感謝,并不做商業用途。

本筆記所有內容的傳送門

Part.1緒論, Part.2 語言與文法
Part 3.有限自動機
Part.4 正則語言,2DFA,Mealy&Moore機
Part.5 上下文無關語言與下推自動機(PDA)
Part.6 圖靈機

文章目錄

    • Part.4 正則語言
      • 4.1 基本概念
      • 4.2 右線性文法?正則表達式
      • 4.3 正則語言可以表示為有限自動機、正則表達式和右線性文法
      • 4.4 有限自動機→正則表達式:狀態消去法
      • 4.5 正則表達式→有限自動機
      • 4.6 右線性文法→有限自動機
      • 4.7 有限自動機→右線性文法
      • 4.8 DFA的最小化:填表算法
        • 4.8.1 刪除不可達狀態
        • 4.8.2 填表算法
        • 4.8.3 等價狀態的合并
        • 4.8.4 例子
      • 4.9 正則語言的泵引理
      • 4.10 雙向有限自動機(2DFA)
        • 4.10.1 2DFA的五要素
        • 4.10.2 2DFA的格局
        • 4.10.3 2DFA接受的語言
      • 4.11 有輸出的有限自動機(Mealy&Moore)
        • 4.11.1 Mealy機
        • 4.11.2 Moore機
        • 4.11.3 Moore機→Mealy機
        • 4.11.4 不做要求:Mealy機→Moore機

Part.4 正則語言

4.1 基本概念

  • 正則語言:滿足正則語言的判定定理的語言。
  • 正則(表達)式:用類似代數表達式的方法表示正則語言。
  • 正則式的相等:表示的語言相同。
  • 正則集:滿足正則式的字符串的集合。
  • 正則式和語言的的聯合運算+,連接運算?,正閉包 L + L^+ L+,星閉包 L ? L^* L?及運算性質。

注1:正則集是T* 的子集。(即正則集是T*上的語言)
注2:L+包含ε當且僅當L包含ε。
注3:每個正則集至少對應一個正則式(可有無窮多 個正則式)

4.2 右線性文法?正則表達式

兩個等價

  • 左線性文法和右線性文法等價。
  • 右線性文法和正則式等價(右線性文法產生的語言都是正則語言,正則語言都可以用右線性文法產生)
    從右線性文法導出正則式:設 x → α x + β , α ∈ T ? , x ∈ N , t h e n x = α ? β x\rarr \alpha x+\beta,\alpha \in T^*,x\in N,then\ x=\alpha^*\beta xαx+β,αT?,xN,then?x=α?β。不斷代入消元,最后得出 S = < R E > S= <RE> S=<RE>
  • 4.3 正則語言可以表示為有限自動機、正則表達式和右線性文法

    三者兩兩等價,都表示正則語言

    生成終結符吃掉,并轉移到產生式的非終結符。
    直接生成終結符的非終結符是被接受的。
    每個狀態名對應一個非終結符,轉移條件和轉移到的狀態構成產生式右側。
    被接受的狀態額外還有僅產生終結符的產生式。最后做文法三消。
    類似解方程,代入消元。 按照運算順序,將基本運算還原成文法。 狀態消去法。被消去的中間狀態對<射入,射出>的狀態對都有影響。 按照運輸按順序,將基本運算畫成自動機。 右線性文法 有限自動機 正則表達式

    例子

    G=({S,A},{0,1},P ,S)其中P:S—>1A,A—> 0A |1S|0

  • 文法轉正則式:解方程
    A → 0 A ∣ 1 S ∣ 0 , 即 A → 0 A ∣ 11 A ∣ 0 , 解 得 A = ( 0 + 11 ) ? 0 , 得 S = 1 ( 0 + 11 ) ? 0 A\to 0A|1S|0,即A\to 0A|11A|0,解得A=(0+11)^*0,得S=1(0+11)^*0 A0A1S0,A0A11A0A=(0+11)?0S=1(0+11)?0

  • 正則式轉文法:按照運算順序,按基本運算還原。
    1 , ( 0 + 11 ) ? , 0 1,(0+11)^*,0 1,(0+11)?,0是依次連接的,對應文法的連接,則 S → 1 A 0 , A → ( 0 + 11 ) ? S\to 1A0,A\to (0+11)^* S1A0,A(0+11)?
    閉包運算的文法是 A → a A ∣ ? A\to aA|\epsilon AaA?,所以 A → 0 A ∣ 11 A ∣ ? A\to 0A|11A|\epsilon A0A11A?

  • 文法轉自動機:生成一個吃一個,生成終結符串的,轉移到一個新增的接受狀態。
    因為mermaid語法的限制,用方形框表示接受。
    S → 1 A S\to 1A S1A,則狀態 q S q_S qS?用字符 1 1 1轉移到狀態 q A q_A qA?,其他以此類推。
    A A A可以推出終結符串 0 0 0,則 q A q_A qA?通過 0 0 0轉移到新的接受狀態 q H q_H qH?

    1 0 1 0 qs qa qh
  • 自動機轉文法:每一個轉移,對應一個產生式。轉移到接受狀態的,額外增加推出終結符串。
    q S q_S qS?接受 1 1 1轉移到 q A q_A qA?,所以文法有產生式 q S → 1 q A q_S\to 1q_A qS?1qA?,其他以此類推。
    最后可能要做三消(消單消空消遞歸)。
    q S → 1 q A q A → 1 q S q A → 0 q A q A → 0 q H ∣ 0 q_S\to 1q_A\\ q_A\to 1q_S\\ q_A\to 0q_A\\ q_A\to \bold{0q_H|0} qS?1qA?qA?1qS?qA?0qA?qA?0qH?0

  • 自動機轉正則式:狀態消去法
    要消去狀態 q A q_A qA?,入射 q A q_A qA?的有 { q S } \{q_S\} {qS?},出射 q A q_A qA?的有 { q H , q S } \{q_H,q_S\} {qH?,qS?},所以對 q S q_S qS? q H q_H qH? q S q_S qS?到$q_S $有影響。

    10*1 10*0 qs qh

    此時已經是基本結構,一舉寫出
    S = ( 1 0 ? 1 ) ? 1 0 ? 0 S=(10^*1)^*10^*0 S=(10?1)?10?0

  • 正則式轉自動機:按照運算順序,按基本運算還原。
    S = 1 ( 0 + 11 ) ? 0 S=1(0+11)^*0 S=1(0+11)?0來還原,5.里那個比較復雜。
    1 , ( 0 + 11 ) ? , 0 1,(0+11)^*,0 1,(0+11)?,0是依次連接的,對應自動機某一些狀態區域的空轉移。
    空閉包的結構是,要么空轉移,要么在原地轉圈后轉移。
    0+11的結構是,兩條并行線。
    11結構是,順序執行。

    rightZone midZone leftZone 1 0 1 1 0 c q3 qf a q2 d q1
  • 4.4 有限自動機→正則表達式:狀態消去法

    精髓:將正則表達式作為轉移弧的標記。不斷刪去狀態,刪去狀態時將其前驅和后繼的轉移弧標記修改。刪到基本結構時寫出最終表達式。

    刪除方法

    基本結構

    對于 q ∈ F q\in F qF

  • q ≠ q 0 q\ne q_0 q?=q0?,則正則表達式為 ( R + S U ? T ) ? S U ? (R+SU^*T)^*SU^* (R+SU?T)?SU?,即觀察從 q 0 q_0 q0? q q q的可能路徑。
    為到達 q 0 q_0 q0?,可以在 q 0 q_0 q0?自環轉任意次或者 q 0 q_0 q0? q q q之間反復橫跳任意次。
    之后要到達 q q q,一定會單獨經過一次 S S S,然后在 q q q又可以自環轉任意次。
  • q = q 0 q= q_0 q=q0?,最后可以刪到只剩下一個狀態。正則表達式為 R ? R^* R?.
  • 當有 ∣ F ∣ > 1 |F|\gt1 F>1,即有多個狀態被接受時,將到達每個終態的正則表達式加起來。
  • 技巧:刪去的順序不一定,可以先局部再整體。

    例子

    • 另有狀態消去法的形式化方法– CONVERT(G),但其不適合手工操作,略去不表。

    4.5 正則表達式→有限自動機

    精髓:將正則表達式的匹配過程寫成一個二叉樹,然后中序遍歷,按照幾種基本結構將其畫成自動機。
    其實大多數時候是隨手畫。

    基礎

    歸納


    4.6 右線性文法→有限自動機

    精髓:因為右線性文法每次會產生一個非終結符合一個終結符,將生成終結符作為自動機的轉移條件,產生的非終結符作為下一個狀態。
    因為只產生終結符時應該是接受狀態,但是文法中沒有這個符號,所以就新建一個符號H,讓終結符指向H,H被接受。
    為了不引入空轉移,根據是否能由S推出空串決定S的可接受性。

    方法:設右線性文法 G = ( N , T , P , S ) G=(N,T,P,S) GNTPS,構造一個與G等
    價的有限自動機 N F A M = ( Q , T , δ , q 0 , F ) NFA\ M=(Q,T,δ,q_0,F) NFA?MQTδq0?F,其中: Q = N ∪ H Q=N \cup {H} QNH H H H為一個新增加的狀態, H ? N H\notin N H/?N q 0 = S q_0=S q0?S.
    F = { { H , S } , i f S → ? ∈ P { H } F=\begin{cases}\{H,S\},if\ S\rarr\epsilon \in P\\\{H\}\end{cases} F={{H,S},if?S?P{H}?
    δ : \delta: δ:
    B ∈ δ ( A , a ) i f A → a B ∈ P H ∈ δ ( A , a ) i f A → a ∈ P δ ( H , a ) = ? B\in \delta(A,a)\ if\ A\rarr aB \in P\\H\in \delta(A,a)\ if\ A\rarr a \in P\\\delta(H,a)=\empty Bδ(A,a)?if?AaBPHδ(A,a)?if?AaPδ(H,a)=?
    例子

    4.7 有限自動機→右線性文法

    精髓:把 δ \delta δ函數的轉移看成是一個個生成式。

    方法:設 N F A M = ( Q , T , δ , q 0 , F ) NFA\ M=(Q,T,δ,q_0,F) NFA?MQTδq0?F,構造一個右線性文法 G = ( N , T , P , S ) G=(N,T,P,S) GNTPS,其中 N = Q N=Q NQ S = q 0 S=q_0 Sq0?

    P : P: P:
    A → a B ∈ P i f δ ( A , a ) = B , t h e n i f B ∈ F , a d d A → a t o P A\rarr aB\ \in P\ if\ \delta(A,a)=B,\ then\ if\ B\in F,\ add\ A\to a\ to\ P AaB?P?if?δ(A,a)=B,?then?if?BF,?add?Aa?to?P
    例子

    4.8 DFA的最小化:填表算法

    • 最小化:對DFA M的極小化是找出一個狀態數比M少的
      DFA M1,使滿足 L(M) = L(M1)。若DFA M不存在互為等價狀態不可達狀態,則稱 DFA M是最小化的.
    • 狀態偶對:兩個狀態的有序二元組稱為狀態偶對。
    • 狀態的等價和可區分:兩者是對立的。對于某一DFA M,如果兩個狀態 q 0 , q 1 q_0,q_1 q0?,q1?通過任意的串 ω \omega ω可以轉移接收狀態(不一定是同一個接收狀態),則兩者等價。反之兩者可區分。
      即:設 D F A M = ( Q , T , δ , q 0 , F ) DFA\ M = (Q,T,δ,q_0,F) DFA?M=(QTδq0?F),若 q x , q y ∈ Q q_x,q_y\in Q qx?,qy?Q,對于 ? ω ∈ T ? \forall \omega\in T^* ?ωT?,若 ( q x , ω ) ┣ ? ( q x , ? ) ? ( q y , ω ) ┣ ? ( q y , ? ) (q_x,\omega)┣^*(q_x,\epsilon)\leftrightarrow(q_y,\omega)┣^*(q_y,\epsilon) (qx?,ω)?(qx?,?)?(qy?,ω)?(qy?,?),則 q x , q y q_x,q_y qx?,qy?等價,反之兩者可區分。
    • 不可達狀態:即無法從 q 0 q_0 q0?輸入任何字符串 ω \omega ω到達的狀態。

    4.8.1 刪除不可達狀態

    可以減小填表算法的負擔。
    q 0 q_0 q0?開始,迭代尋找(bfs)可以到達的狀態 Q 可 達 Q_{可達} Q?,則 Q ? Q 可 達 Q-Q_{可達} Q?Q?即為不可達狀態,刪除不可達狀態即含有其的轉移條目。

    4.8.2 填表算法

    精髓:因為狀態的等價關系是傳遞的,可以通過兩兩判斷等價性來找出所有等價的狀態。又因為是自反的、對稱的,所以只需要一個 n × n n\times n n×n表格的下三角部分來記錄,且不需要對角線。
    如果沒有理由認為兩個狀態是可區分的,那么就認為他們是等價的。

    方法

  • 基礎:所有的終態和非終態是可區分的。
  • 歸納:如果某兩個狀態 q x , q y q_x,q_y qx?,qy?可以通過符號 a a a轉移到兩個可區分的狀態,那么他們是可區分的。
  • 例子

    4.8.3 等價狀態的合并

    將所有的狀態根據等價性構成一個劃分,將劃分塊用其等價類代替。
    用等價類作為狀態標記構造一個新的DFA,其轉移關系為:如果原來不同劃分之間至少有一種轉移,那么這兩個等價類增加一條轉移。
    即:設待最小化的DFA為 D F A A = ( Q , T , δ , q 0 , F ) DFA\ A = (Q, T, \delta, q_0 , F ) DFA?A=(Q,T,δ,q0?,F) ,最小化的自動機為 D F A B = ( Q B , T , δ B , [ q 0 ] , F B ) DFA\ B = (Q_B, T, \delta_B, [q0], F_B ) DFA?B=(QB?,T,δB?,[q0],FB?) , 其中 Q B = { [ q ] ∣ q ∈ Q } Q_B=\{ [q] | q\in Q\} QB?={[q]qQ}, δ B ( [ q ] , a ) = [ δ ( q , a ) ] } \delta_B([q] ,a)=[\delta(q,a)]\} δB?([q],a)=[δ(q,a)]} F B = { [ q ] ∣ q ∈ F } F_B = \{ [q] | q\in F\} FB?={[q]qF}

    4.8.4 例子

    4.9 正則語言的泵引理

    精髓:因為正則語言對應的是有限自動機,其狀態數是有限的,那么由Pigeonhole Rule,對于無限的語言(有限語言可以通過“并”構成正則語言),如果其為正則語言,那么一定會在自動機的某一段繞圈來達到無限。

    泵引理:正則語言中足夠長的句子一定能拆成三段,并且中間一段重復0次或任意多次得到的句子仍然屬于正則語言(可以Pumping in和Pumping out)。泵引理成立是正則語言的一個必要條件

    用泵引理來證明某語言不是正則語言

    證明步驟

  • 選任意的n.
  • 找到一個滿足以下條件的串 w ∈ L w\in L wL (長度至少為n).
  • 任選滿足 w = x y z ∧ y ≠ ? ∧ ∣ x y ∣ ≤ n w = xyz ∧ y\ne \epsilon ∧ |xy| \le n w=xyzy?=?xyn x , y , z x,y,z x,y,z
  • 找到一個 k ≥ 0 k\ge0 k0, 使 x y k z ≠ L xy^kz \ne L xykz?=L.
  • 例子:利用泵引理證明下述語言不是正則語言:
    L = { 1 n 2 ∣ n ≥ 0 } L=\{1^{n^2}|n\ge 0\} L={1n2n0}
    答:

  • 假設 L L L是正則語言。
  • 那么,存在 N ∈ Z + N\in Z^+ NZ+,對于 ? ω ∈ L ( ∣ ω ∣ ≥ N ) \forall \omega\in L(|\omega|\ge N) ?ωL(ωN)滿足泵引理。
  • ω = 1 N 2 \omega = 1^{N^2} ω=1N2,顯然 ω ∈ L \omega \in L ωL ∣ ω ∣ = N 2 ≥ N |\omega|=N^2\ge N ω=N2N
  • 那么, ω \omega ω可以被分為 ω = x y z \omega =xyz ω=xyz,且 ∣ x y ∣ ≤ N , ∣ y ∣ > 0 |xy|\le N,|y| \gt 0 xyN,y>0.
  • 那么, y y y只能是 1 m ( m > 0 ) 1^m(m\gt 0) 1m(m>0), x x x 1 l ( l ≥ 0 ) 1^l(l\ge 0) 1l(l0) z z z 1 N 2 ? l ? m 1^{N^2-l-m} 1N2?l?m,且滿足 m + l ≤ N m+l\le N m+lN
  • 那么 x y 2 z = 1 l 1 2 m 1 N 2 ? l ? m = 1 N 2 + m xy^2z=1^l1^{2m}1^{N^2-l-m}=1^{N^2+m} xy2z=1l12m1N2?l?m=1N2+m
  • 因為 m > 0 m\gt 0 m>0所以 N 2 + m > N 2 N^2+m\gt N^2 N2+m>N2;因為 m + l ≤ N m+l\le N m+lN l ≥ 0 l\ge 0 l0,得 m ≤ N m\le N mN,所以 N 2 + m ≤ N 2 + N < N 2 + 2 N + 1 = ( N + 1 ) 2 N^2+m\le N^2+N\lt N^2+2N+1=(N+1)^2 N2+mN2+N<N2+2N+1=(N+1)2,所以 N 2 < N 2 + m < ( N + 1 ) 2 N^2\lt N^2+m\lt (N+1)^2 N2<N2+m<(N+1)2,即新串的長度嚴格位于兩個完全平方數之間,所以其不是完全平方數。
  • x y 2 z ? L xy^2z\notin L xy2z/?L,而由泵引理 x y 2 z ∈ L xy^2z\in L xy2zL,所以假設不成立, L L L不是正則語言。
  • 例子:由文法 G G G產生的語言 L ( G ) L(G) L(G),其中 P : S → a S b S ∣ c P:S\to aSbS|c P:SaSbSc.
    語言的描述有很多種,用類似 a n b n a^nb^n anbn的公式化描述的只有一部分。還有用敘述性描述(比如a和b的數量一樣多)和文法描述的(本題)。這些描述有時候很難寫出完全等價的公式化描述,其實只需要其中的一個句子即可。

  • 假設L是正則語言,則存在正整數N,對于任意L內的字符串 ω \omega ω成立 ∣ ω ∣ ≥ N |\omega|\ge N ωN時,可以應用泵引理。
  • 對于L,不妨取 ω = a N c ( b c ) N = ω 1 ω 0 ω 2 \omega=a^Nc(bc)^N=\omega_1\omega_0\omega_2 ω=aNc(bc)N=ω1?ω0?ω2?,則 ∣ ω 0 ∣ > 0 , ∣ ω 1 ω 0 ∣ ≤ N |\omega_0|\gt 0,|\omega_1\omega_0|\le N ω0?>0,ω1?ω0?N,顯然 ω 0 = a i ( i > 0 ) \omega_0=a^i(i\gt 0) ω0?=ai(i>0)
  • 則對于 ω ′ = ω 1 ω 0 2 ω 2 = a N + i c ( b c ) N \omega'=\omega_1\omega_0^2\omega_2=a^{N+i}c(bc)^N ω=ω1?ω02?ω2?=aN+ic(bc)N,其不屬于 L L L(注意是文法那個L,不是取的句子),而與泵引理矛盾,所以L不是正則語言。
  • 4.10 雙向有限自動機(2DFA)

    雙向有限自動機:讀入一個字符之后,讀頭既可以左移一格, 也可以右移一格,或者不移動的有限自動機。

    確定的雙向有限自動機: 每讀入一字符,必須向左或右移動,不考慮不移動的情況.

    4.10.1 2DFA的五要素

    2 D F A M = ( Q , T , δ , q 0 , F ) 2DFA\ M=(Q,T ,δ, q_0, F) 2DFA?M(QTδq0?F)

    δ : Q × T → Q × { L , R } \delta:Q\times T\rarr Q\times\{L,R\} δ:Q×TQ×{L,R}
    δ ( q , a ) = ( p , R ) o r δ ( q , a ) = ( p , L ) \delta(q,a)=(p,R)\ or\ \delta(q,a)=(p,L) δ(q,a)=(p,R)?or?δ(q,a)=(p,L)
    其他與DFA相同。即每次除了狀態轉移之外還要移動讀頭(左移或右移一格)。

    4.10.2 2DFA的格局

    • 2DFA的格局和DFA的不同,要把字符串整個列出來。

    • δ ( q , a m + 1 ) = ( p , R ) δ(q,a_{m+1})=(p,R) δ(qam+1?)=(pR)的格局表示: a 1 a 2 … a m q a m + 1 … a n ┣ a 1 a 2 … a m + 1 p a + m + 2 … a n a_1 a_2…a_m q a_{m+1}…a_n┣ a_1 a_2…a_{m+1} p a+{m+2}…a_n a1?a2?am?qam+1?an?a1?a2?am+1?pa+m+2an?

    • δ ( q , a m + 1 ) = ( p , L ) δ(q,a_{m+1})=(p,L) δ(qam+1?)=(pL)的格局表示: a 1 a 2 … a m q a m + 1 … a n ┣ a 1 a 2 … a m ? 1 p a m a m + 1 … a n a_1 a_2…a_m q a_{m+1}…a_n┣ a_1 a_2…a_{m-1} p a_m a_{m+1}…a_n a1?a2?am?qam+1?an?a1?a2?am?1?pam?am+1?an?

    4.10.3 2DFA接受的語言

    • 2DFA接受的語言是 L ( M ) = { ω ∣ q ω ┣ ω ? q , q ∈ F } L(M)=\{ω| q_ω┣^*_ωq,q\in F\} L(M)={ωqω?ω??qqF}

    4.11 有輸出的有限自動機(Mealy&Moore)

    有輸出的有限自動機是有限自動機的一個類型.
    這類自動機在有字符輸入時,不僅存在狀態轉換, 同時引起字符輸出.

    根據輸入字符,自動機狀態,輸出字符三者之 間關系,可有兩類有輸出的自動機:

    米蘭機(Mealy): 輸出字符與輸入字符及狀態有關.
    摩爾機(Moore): 輸出字符僅與狀態有關.

    最大優點: 節省狀態

    4.11.1 Mealy機

    • M = ( Q , T , R , δ , g , q 0 ) M=(Q,T ,R,δ, g , q_0) M(QTRδgq0?)
      相比DFA,多了輸出函數 g : Q × T → R g:Q\times T\rarr R g:Q×TR
      δ \delta δ g g g函數共同描述Mealy機的工作情況。

    • 繪圖:
      { δ ( p , a ) = q g ( p , a ) = b \begin{cases}\delta(p,a)=q\\g(p,a)=b\end{cases} {δ(p,a)=qg(p,a)=b?
      繪制為

      a/b p q
    • 例子:

    4.11.2 Moore機

    • M = ( Q , T , R , δ , g , q 0 ) M=(Q,T ,R,δ, g , q_0) M(QTRδgq0?)
      相比DFA,多了轉移函數 g g g
      相比Mealy機,Moore機的轉移函數 g g g是個一元函數,只與當前狀態有關。

    • 繪圖:
      { δ ( p , a ) = q g ( p ) = b 1 g ( q ) = b 2 \begin{cases}\delta(p,a)=q\\g(p)=b_1\\g(q)=b_2\end{cases} ??????δ(p,a)=qg(p)=b1?g(q)=b2??
      繪制為

      a p,b1 q,b2

      因為輸出只與狀態有關,所以把輸出寫在狀態圈里。

    • 例子

    4.11.3 Moore機→Mealy機

    • Moore機比較簡單,所以轉換成Mealy機很方便。
    • 將Moore機中某個狀態 q q q的輸出 b b b,作為新的Mealy機任何到達 q q q狀態的轉移時的輸出。
      即:設摩爾機 M = ( Q , T , R , δ , g , q 0 ) M=(Q, T, R,δ, g ,q_0) M(Q,T,R,δ,g,q0?) 米蘭機 M ’ = ( Q , T , R , δ , g ’ , q 0 ) M’=(Q, T, R,δ, g’, q_0) M(Q,T,R,δ,g,q0?) 如果 中 中 δ ( q , a ) = p δ(q,a)=p δ(qa)=p,$ g§ = b$ 則 M ’ M’ M中有 g ’ ( q , a ) = b = g ( δ ( q , a ) ) g’(q,a) = b = g(δ(q,a)) g(qa)=b=g(δ(qa))

    例子

    4.11.4 不做要求:Mealy機→Moore機

    略去不表。

    總結

    以上是生活随笔為你收集整理的形式语言与自动机 Part.4 正则语言,2DFA,MealyMoore机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。