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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

句法模式识别(两)-正规文法、上下文无关文法

發布時間:2023/12/13 综合教程 46 生活家
生活随笔 收集整理的這篇文章主要介紹了 句法模式识别(两)-正规文法、上下文无关文法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正規的語法特點

1.全部長度有限的語言都是正規的。

2.用正規文法當然能產生無限長串,當中周期反復部分的長度不大于非終止符的長度。

舉個樣例

<img src="http://latex.codecogs.com/gif.latex?

S o aA,A o bS,A o c" alt="">

在此規則之下。能生成句子

當中周期反復部分為ab,這個樣例的非終止符的元素個數為2,故滿足2不大于2.

自嵌入特性

我們把上下文無關文法中的正規文法去掉。剩下的那部分我們叫做真正的上下文無關文法。

自嵌入特性是區分真正的上下文無關文法與正規文法的判定標準。

即一個真正的上下文無關文法一定具有自嵌入特性。正規文法具有非自嵌入特性。亦即非自嵌入的上下文無關文法是正規文法。上下文無關文法就蛻化了。

什么是自嵌入特性?

自嵌入顧名思義,就是可以自己嵌入自己:

當然必須保證vx不能是空串。

uvwxy定理

這是一個用以判定上下文無關文法和正規文法的條件。

就是說,當這個文法滿足自嵌入條件,表示出來就是

<img src="http://latex.codecogs.com/gif.latex?

Smathop Rightarrow limits_G^* uAy,Amathop Rightarrow limits_G^* vAx,Amathop Rightarrow limits_G^* w" alt="">

那么,能夠得到

當中當vx的反復次數同樣且為非空串時,則這個文法肯定就是真正的上下文無關文法。由于這樣的周期形式是正規文法所不具有的。比方這樣的

<img src="http://latex.codecogs.com/gif.latex?

c{a^i}d{b^i}" alt="">

就是必需要用真正的上下文無關文法。

以下介紹上下文無關文法的等價文法。

不同的上下文無關文法。它們生成的語言有可能是等價的,這樣就涉及到一個最優文法的問題。那么最優是什么?最有就是高效、沒有冗余和浪費。

粗略說有2種冗余,并且僅僅有非終止符可以冗余。終止符總是實用的啦。

其一是浪費環節。

浪費環節是說由單個非終止符傳遞到了單個的非終止符。比方

這樣的形式意味著B是多此一舉的。還不如直接A到C呢。

其二是無用環節。

細分又有2類。

通俗說

1.無尾的無用非終止符

所謂無尾,就是咱用了這個終止符,話根本都沒法結束。

有頭無尾。

A根本沒法最后變成常量(終止符)。

不存在x使得

2.無頭的無用非終止符

所謂無頭,就是這句話根本就不可能從這個非終止符開始。有尾無頭。

從起始符開始根本找不到含有A的句子。

從起始符S開始,不存在

首先介紹怎樣消去浪費環節。

消去浪費環節包含2個部分。

其一消去。

其二修正。

消去過程

這個過程用遞歸算法來實現。

就是要求出全部非終止符各自相應能到達的全部非終止符集合。

舉個樣例就好了

<img src="http://latex.codecogs.com/gif.latex?

{G_1}= left( {left{ {S,A,B} ight},left{ {a,b} ight},P,S} ight)" alt="">

如今消去浪費環節,先考慮S。

發現S能在一步之內的非終止符僅僅有A

在K1(S)集合中再次出發。在一步之內能走到的新非終止符僅僅有B

記<img src="http://latex.codecogs.com/gif.latex?

{K_2}(S)= left{ {S,A} ight} cup left{ B ight} = left{ {S,A,B} ight}" alt="">

再往后沒有新的非終止符了。

同理考察A,A在一步之內能到達的非終止符僅僅有B了,記

再考察B,B根本就沒有能在一步之內能到達的新終止符。

于是這相應的3個集合就求完了

修正過程

修正過程就依照上面的消去過程打補丁就好了,由于要消去一堆連接。舊橋拆了總得又一次修吧。還是上面那個樣例,先把之前的生成關系畫出來,如圖1黑線所看到的。

<img src="http://img.blog.csdn.net/20140517234450937?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWNoZW5nX3NqdHU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

圖1

如今考慮A,依據集合,我們要去掉A到B的連接

那么就得補上S到b、A到b、S到aS、A到aS。黃線代表。

然后再考慮S。要去掉S到A

那么就得補上S到BAb。綠線代表。

注意:如今盡管看起來文法規則比曾經更麻煩了,可是,實際生成句子的過程卻變得簡單了很多,所以簡化沒簡化還是要看療效。

以下介紹消去沒用的終止符

消去無用終止符的思路就是。找出全部實用的非終止符,那么剩下的自然就是沒實用的了。

消去無尾非終止符

找出全部的有尾非終止符集合。定義為J(G)

方法是

<img src="http://latex.codecogs.com/gif.latex?

egin{array}{l}{J_0}(G)= phi \{J_{i+ 1}}(G) = {J_i}left( G ight) cup left{ {A|A in {V_N},A o alpha,alpha in {{left( {{V_T} cup{J_{m{i}}}left( G ight)} ight)}^*}} ight}end{array}" alt="">

這個表達式非常清晰。還是舉個樣例。反而繞口。但還是舉吧

這個表達式事實上是一步步找到那些終于的到達終止符的非終止符。

首先J0(G)為空集。

則J1(G)為全部能一步走到以終止符為尾的非終止符,即A

繼續,J2(G)是J1(G)并上全部能在一步之內到以J1(G)或者其它終止符為尾的非終止符。

好繞口。。。

事實上就是{S,A}

再往下就找不到了。只是如今忽然發現,B呢?怎么沒看到B的影子。

這就說明B就是無尾的無用非終止符。

去掉全部跟B有過關系的生成關系就好。如今是新的生成關系

<img src="http://latex.codecogs.com/gif.latex?

egin{array}{*{20}{l}}{S o bA}\{A o aA}\{A o b}end{array}" alt="">

再說說消去無頭非終止符

也是僅僅要找出全部有頭的非終止符就好。剩下自然就無頭了

用表達式表示是這種

這個表達式的意義事實上就是從起始符,回溯一步步展開,希望能找到句子的頭部。

還是舉個樣例

展開起始符S,發現S能到aAA,因此R1(S)={S,A}

A繼續展開。發現A能到aCA。因此R2(S)={S,A,C}

搞定,又發現原來B是無頭的非終止符,趕緊刪掉與它有關系的全部表達關系就好了。不再贅述。

上下文無關文法的2中標準型

1.C(Chomsky)標準型

舉一個樣例馬上就知道怎么把隨便一個上下文無關文本變成C標準型了:

2.G(Greibach)標準型

<img src="http://latex.codecogs.com/gif.latex?

egin{array}{l}A o aalpha left( {alpha in V_N^*}ight)\A o aend{array}" alt="">

這個嚴格的轉化方法有點畸形,就臨時不展開了。

簡單情況用湊的就好了。


歡迎參與討論并關注本博客和微博以及知乎個人主頁,興許內容繼續更新哦~

轉載請您尊重作者的勞動,完整保留上述文字以及本文鏈接,感謝您的支持!

版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

總結

以上是生活随笔為你收集整理的句法模式识别(两)-正规文法、上下文无关文法的全部內容,希望文章能夠幫你解決所遇到的問題。

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