国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

最短路徑算法與正則語(yǔ)言的空性判定

2015-07-18 12:18:36姜盼崔艷榮
電腦知識(shí)與技術(shù) 2015年12期

姜盼 崔艷榮

摘要:正則語(yǔ)言的空性判定方法除了傳統(tǒng)的標(biāo)記法外,還有另一種方法,那就是利用最短路徑算法。通過(guò)對(duì)路徑的判斷,來(lái)證明正則語(yǔ)言的空性是否可判定。如果為空,則路徑無(wú)限長(zhǎng),不為空,則路徑是有限長(zhǎng)的。該算法比標(biāo)記法少了標(biāo)記這一過(guò)程,減少了系統(tǒng)的開(kāi)銷(xiāo),提高了正則語(yǔ)言的判定效率。

關(guān)鍵詞:最短路徑算法 ;正則語(yǔ)言;可判定性

中圖分類(lèi)號(hào):TP301 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)12-0079-02

確定型有窮自動(dòng)機(jī)能夠識(shí)別的語(yǔ)言稱之為正則語(yǔ)言。正則語(yǔ)言可以用有窮自動(dòng)機(jī)的形式進(jìn)行描述。本文研究算法求解問(wèn)題的能力,因?yàn)橛幸恍﹩?wèn)題算法上能夠求解,而另一些則不能[1]。我們的目的是研究算法可解性的局限。正則語(yǔ)言的空性問(wèn)題是否是可判定的,這需要我們?nèi)プC明。

最短路徑的問(wèn)題源出于交通運(yùn)輸?shù)葐?wèn)題,對(duì)于n個(gè)城鎮(zhèn)之間的公路所組成的公路網(wǎng),從甲地到乙地是否有公路,若有多條公路可以到達(dá)時(shí),走哪條路最近?花費(fèi)最省?這些問(wèn)題是我們最為關(guān)注的。最短路徑可以定義為從某頂點(diǎn)出發(fā),沿圖的邊到達(dá)另一頂點(diǎn)所經(jīng)過(guò)的路徑中,各邊上權(quán)值之和最小的一條路徑。解決最短路的問(wèn)題有Dijkstra算法,Bellman-Ford算法,F(xiàn)loyd算法和SPFA算法等。本文結(jié)合最短路徑Dijkstra算法問(wèn)題的求解來(lái)證明正則語(yǔ)言的空性可判定性。

1 正則語(yǔ)言的空性判定方法 ——標(biāo)記法

1.1 有窮自動(dòng)機(jī)(DFA)和正則語(yǔ)言

定義1 有窮自動(dòng)機(jī)是一個(gè)5元組(Q,Σ,Γ,δ,q0,F(xiàn))[2],其中:

Q:一個(gè)有窮集合,叫做狀態(tài)集。

Σ:一個(gè)有窮集合,叫做字母表。

δ:Q Σ→Q是轉(zhuǎn)移函數(shù)。

q0: 起始狀態(tài),q0∈Q。

F:接收狀態(tài)集,F(xiàn) Q。

設(shè)M=(Q,Σ,Γ,δ,q0,F(xiàn))是一臺(tái)有窮自動(dòng)機(jī),ω=ω1ω2…ωn是字母表Σ上的一個(gè)字符串。如果存在*Q中的狀態(tài)序列r0,r1,…,rn,滿足下述條件:

1) r0= q0

2) δ(ri, ωi+1)=ri+1,i=0,1,…,n-1

3) rn∈F

則M接受ω。

條件(1)說(shuō)機(jī)器從起始狀態(tài)開(kāi)始,條件(2)說(shuō)機(jī)器按照轉(zhuǎn)移函數(shù)從一個(gè)狀態(tài)到一個(gè)狀態(tài),條件(3)說(shuō)如果機(jī)器結(jié)束在接受狀態(tài),則接受它的輸入。如果A=﹛ω|M接受ω﹜,則稱M識(shí)別語(yǔ)言A。

定義2如果一個(gè)語(yǔ)言被一臺(tái)有窮自動(dòng)機(jī)識(shí)別,則稱它是正則語(yǔ)言[2]。

由于當(dāng)M1對(duì)ω計(jì)算時(shí)進(jìn)入的狀態(tài)序列為

q0,q1,q1,q0,q2,q0,q0,q0,q1,q0

它滿足上述3個(gè)條件,根據(jù)計(jì)算形式定義, M1接受ω。M1的語(yǔ)言是

L(M1)=﹛ω|除將計(jì)數(shù)重新置0之外,ω中所有符號(hào)之和模3等于0﹜

因?yàn)镸1識(shí)別這個(gè)語(yǔ)言,所以它是正則語(yǔ)言。

1.2 圖靈機(jī)(TM)的形式定義

定義3 一個(gè)圖靈機(jī)是一個(gè)7元組(Q,Σ,Γ,δ,q0,qaccept,qreject),其中:Q,Σ,Γ都是有窮集合[3],并且:

Q:狀態(tài)集。

Σ:輸入字母表,不包括特殊空白符號(hào) 凵。

Γ:帶字母表,其中:凵∈Γ,Σ Γ。

δ:Q ?!鶴 Γ ﹛L,R﹜是轉(zhuǎn)移函數(shù)。

q0:起始狀態(tài),q0∈Q。

qaccept:接收狀態(tài),qaccept∈Q。

qreject:拒絕狀態(tài),qreject∈Q且qaccept qreject。

圖靈機(jī)M=(Q,Σ,Γ,δ,q0,qaccept,qreject)的計(jì)算方式如下:開(kāi)始時(shí),M以最左邊的n個(gè)帶方格接受輸入ω=ω1ω2…ωn∈Σ*,帶的其余部分是空白(即填以空白符)。讀寫(xiě)頭從最左邊的帶方格開(kāi)始運(yùn)行。注意,Σ不含空白符,故出現(xiàn)在帶上的第一個(gè)空白符表示輸入的結(jié)束。M開(kāi)始運(yùn)行后,計(jì)算根據(jù)轉(zhuǎn)移函數(shù)所描述的規(guī)則進(jìn)行。如果M試圖將讀寫(xiě)頭從帶的左端移出,即使轉(zhuǎn)移函數(shù)指示的是L,讀寫(xiě)頭也停在原地不動(dòng)。計(jì)算一直持續(xù)到它進(jìn)入接受或拒絕狀態(tài),此時(shí)停機(jī)。如果二者都不發(fā)生,則M永遠(yuǎn)運(yùn)行下去。

1.3 標(biāo)記法證明正則語(yǔ)言的空性

下面定理證明了EDFA是可判定的,因而也就證明了問(wèn)題“一個(gè)給定的有窮自動(dòng)機(jī)的語(yǔ)言是否為空”是可判定的。

定理1 EDFA是一個(gè)可判定語(yǔ)言。

證明 DFA接受一個(gè)串當(dāng)且僅當(dāng):從起始狀態(tài)出發(fā),沿著此DFA的箭頭方向,能夠到達(dá)一個(gè)接受狀態(tài)。為檢查這個(gè)條件,設(shè)計(jì)一個(gè)使用標(biāo)記算法的TM M。

T=“對(duì)于輸入,其中A是一個(gè)DFA:

1) 標(biāo)記起始狀態(tài)。

2) 重復(fù)下列步驟, 直到所有狀態(tài)都被標(biāo)記。

3) 對(duì)于一個(gè)狀態(tài),如果有一個(gè)到達(dá)它的轉(zhuǎn)移是從某個(gè)已經(jīng)標(biāo)記過(guò)的狀態(tài)出發(fā)的,則將其標(biāo)記。

4) 如果沒(méi)有接受狀態(tài)被標(biāo)記,則接受,否則拒絕?!?/p>

2 最短路徑算法判定正則語(yǔ)言的空性

2.1 最短路徑算法及其思想

Dijkstra算法是典型的單源最短路徑算法,用于計(jì)算一個(gè)節(jié)點(diǎn)到其他所有節(jié)點(diǎn)的最短路徑。主要特點(diǎn):以起始點(diǎn)為中心向外層層擴(kuò)展,直到擴(kuò)展到終點(diǎn)為止[4]。

主要思想[5]:設(shè)G=(V,E)是一個(gè)帶權(quán)有向圖,把圖中頂點(diǎn)集合V分成兩組,第一組為已求出最短路徑的頂點(diǎn)集合(用S表示,若源頂點(diǎn)為V0,則S={V0}),第二組為其余未確定最短路徑的頂點(diǎn)集合(用U表示)。對(duì)于源頂點(diǎn)V0,首先選擇其直接相鄰的頂點(diǎn)中長(zhǎng)度最短的頂點(diǎn)Vi,那么可得從V0到Vj的最短距離為dist[j]=min{dist[j],dist[i]+matriX[i][j]}?;谶@個(gè)原理,則可分為如下步驟:

1) 從集合U中選擇使dist[i]的值最小的頂點(diǎn)i,將i加入到S中;

2) 更新與i直接相鄰頂點(diǎn)的dist值;

3) 直到S=V結(jié)束。

2.2 最短路徑算法判定正則語(yǔ)言的空性

正則語(yǔ)言的空性判定除了標(biāo)記法證明外,還可以用最短路徑算法來(lái)證明,其過(guò)程如下:

1) 初始時(shí),假設(shè)所有路徑權(quán)值相同。S只包含起始狀態(tài)q0,即S={ q0},q0的距離為0。U包含除q0外的其他狀態(tài),即:U={其余狀態(tài)}。

2) 從起始狀態(tài)q0出發(fā),沿著此DFA的箭頭方向,在集合U中尋找其子節(jié)點(diǎn)qn,把qn加入S中(由于權(quán)值相同,子節(jié)點(diǎn)qn可能會(huì)有多個(gè)),則路徑總數(shù)為每一個(gè)深度中子節(jié)點(diǎn)總數(shù)的乘積。

3) 將子節(jié)點(diǎn)qn作為父節(jié)點(diǎn),尋找下一個(gè)深度中的子節(jié)點(diǎn)。

4) 重復(fù)步驟(2)(3),直到需找一條有限深度的路徑。即正則語(yǔ)言若為空,則路徑無(wú)限長(zhǎng),正則語(yǔ)言若不為空,則路徑是有限長(zhǎng)的。

3 結(jié)論

用最短路徑算法來(lái)證明正則語(yǔ)言的空性是一個(gè)比較創(chuàng)新的方法,該算法在實(shí)現(xiàn)的基礎(chǔ)上相比傳統(tǒng)正則語(yǔ)言的判定方法——標(biāo)記法有自己的優(yōu)勢(shì)。標(biāo)記法比較麻煩的就是要考慮每一個(gè)狀態(tài),如果有一個(gè)到達(dá)它的轉(zhuǎn)移是從某個(gè)已經(jīng)標(biāo)記過(guò)的狀態(tài)出發(fā)的,則將其標(biāo)記。而最短路徑算法不用考慮,直接比較其深度即可。該算法提高了正則語(yǔ)言判定的效率,是一個(gè)比較理想的算法。

參考文獻(xiàn):

[1] Michael Sipser. Introduction to the Theory of Computation Second Edition[M]. China Machine Press, 2007.

[2] 王曉峰.有窮自動(dòng)機(jī)狀態(tài)極小化方法及正則語(yǔ)言判定優(yōu)化[J].廣西民族大學(xué)學(xué)報(bào),2008,14(3):81-84.

[3] 趙正平.圖靈機(jī)及其構(gòu)造研究[J].電腦知識(shí)與技術(shù),2006:192-194.

[4] 陸鋒.最短路徑算法:分類(lèi)體系與研究進(jìn)展[J].測(cè)繪學(xué)報(bào),2001,30(3):269-275.

[5] 陳雨婕.用圖示法解析最短路徑算法[J].開(kāi)發(fā)研究與設(shè)計(jì)技術(shù),2007.

温泉县| 鹤岗市| 枝江市| 扶沟县| 边坝县| 八宿县| 三亚市| 五大连池市| 沈丘县| 策勒县| 麻栗坡县| 江川县| 洮南市| 齐河县| 关岭| 瑞昌市| 蒲城县| 浪卡子县| 河东区| 开封县| 从化市| 南木林县| 昭觉县| 景谷| 高清| 凤山市| 碌曲县| 拉萨市| 樟树市| 乌拉特前旗| 宿州市| 同仁县| 横峰县| 介休市| 石柱| 宜章县| 绥滨县| 宁阳县| 沂南县| 石台县| 灵宝市|