形式語言自動機-圖靈機.ppt
《形式語言自動機-圖靈機.ppt》由會員分享,可在線閱讀,更多相關《形式語言自動機-圖靈機.ppt(31頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1,SchoolofComputerScience&Technology,BUPT,第五章圖靈機,A.Turing在1936年介紹了這樣一個通用的計算模型,該模型具有以下兩個性質(zhì)該模型的每個過程都是有窮可描述的;過程必須是由離散的、可以機械執(zhí)行的步驟組成。圖靈機是計算機的一種簡單數(shù)字模型,盡管簡單,但它具有模擬通用計算機的計算能力。通過研究TM來研究遞歸可枚舉集和部分遞歸函數(shù)為算法和可計算性研究提供了形式化描述工具。,2,SchoolofComputerScience&Technology,BUPT,主要內(nèi)容,TM的基本定義TM的格局TM接受的語言TM的構造技術TM的變形;重點:TM的定義、TM的構造。難點:TM的構造。,3,SchoolofComputerScience&Technology,BUPT,讀寫頭在每一時刻掃描帶上的一個單元帶有一個最左單元,向右則是無限的。帶的每個單元可容納一個帶符號開始時,最左邊n個單元裝著輸入(n>=0,n為有限數(shù)),它是一個字符串,符號都選自“帶符號”的一個子集,即所謂的“輸入符號集合”。余下的有窮個單元都存放空白符,它是一個特殊的帶符號,但不是輸入符號。,圖靈機的基本模型,4,SchoolofComputerScience&Technology,BUPT,在一個圖靈機的動作中,圖靈機根據(jù)帶頭(讀寫頭)所掃描的符號和有限控制器的狀態(tài)可能作改變狀態(tài)在被掃描的帶單元上重新寫一個符號,以代替原來寫在該單元上的符號.將帶頭向左或者右移一個單元。*圖靈機和雙向有限自動機的區(qū)別:圖靈機能改變它帶上的符號。,圖靈機的工作機制,5,SchoolofComputerScience&Technology,BUPT,圖靈機的形式化描述,有限狀態(tài)集有限輸入符號集有限帶符號集轉(zhuǎn)移函數(shù)開始狀態(tài)特殊帶符:空白符終態(tài)集合,q0?QT??B??–TF?Q,轉(zhuǎn)移函數(shù)?:Q???Q???{L,R},形式定義一個圖靈機TM(Turingmachine)是一個七元組M=(Q,T,?,?,q0,B,F).,6,SchoolofComputerScience&Technology,BUPT,δ函數(shù)示例:Q∑→Q∑{L,R}δ(q,ai)=(p,B,L)q,p∈Qδ(q,ai)=(p,b,R)ai∈∑b∈∑格局用w1qw2描述圖靈機的瞬間工作狀態(tài)q為M的當前狀態(tài),w1w2∈∑*w1w2是當前時刻從開始端(因為可寫)到右邊空白符號為止的內(nèi)容當讀寫頭已達到帶的右端,則w1w2為讀寫頭以左的內(nèi)容。約定:w1qw2表示讀寫頭正掃描w2的最左字符w2=?則表示讀寫頭正掃描一個空白字符。,圖靈機的函數(shù)與格局,7,SchoolofComputerScience&Technology,BUPT,圖靈機的格局,給定圖靈機M=(Q,T,?,?,q0,B,F),定義格局之間的推導關系├M如下:1.設?(q,Xi)=(p,Y,L),則有X1X2…Xi-1qXiXi+1…Xn├MX1X2…Xi-2pXi-1Y…Xn,但有如下兩個例外:(1)i=1時,qX1X2…Xn├MqYX2…Xn,和(2)i=n及Y=B時,X1X2…Xn-1qXn├MX1X2…Xn-2pXn-1B.2.設?(q,Xi)=(p,Y,R),則有X1X2…Xi-1qXiXi+1…Xn├MX1X2…Xi-1YpXi+1…Xn,但有如下兩個例外:(1)i=n時,X1X2…Xn-1qXn├MX1X2…Xn-1YpB,和(2)i=1及Y=B時,qX1X2…Xn├MBpX2…Xn-1Xn.,8,SchoolofComputerScience&Technology,BUPT,圖靈機接受的語言,L(M)={ω│ω∈T*且q0ω├*α1pα2,p∈F,α1α2∈∑*}圖靈機接受的語言是輸入字母表中這樣一些字符串的集合,初始時,這些字符串放在M的帶上,M處于狀態(tài)q0,且M的帶頭處在最左單元上,這些字符串將使M進入某個終止狀態(tài)。假定:當輸入被接受時,圖靈機將停止,沒有下一個動作。,9,SchoolofComputerScience&Technology,BUPT,任給圖靈機M=(Q,T,?,?,q0,B,F),以及輸入字符串w?T*.試問:對于w,M是否停機?停機是指圖靈機不存在下一個移動步(move).結(jié)論圖靈機的停機問題是不可解的(即不可判定的).結(jié)論任給圖靈機M,很容易構造一個圖靈機M?,使得L(M)=L(M?),并滿足:如果w?L(M),則對于w,M?接受w并一定停機.如果沒有特別指出,總是假定圖靈機到達終態(tài)(接受態(tài))后一定停機.但是,對不能接受的字符串,圖靈機可能永不停止.(只要M還在某個輸入上運行,我們無法知道是因為運行的時間不夠長而沒有被接受,還是根本就不會停機),,圖靈機的停機問題,10,SchoolofComputerScience&Technology,BUPT,圖靈機舉例,例1:設語言L={anbn│n>=1},設計圖靈機接受L。思路:最初帶上為aa…abb…bBBB……n個an個b首先用x替換M最左邊的a,再右移至最左邊的b用y替換之,左移尋找最右的x,然后右移一單元到最左的a,重復循環(huán)。如果(1)當在搜尋b時,M找到了空白符B,則M停止,不接受該串。(此時,a的個數(shù)大于b的個數(shù))(2)當將b改為y后,左邊再也找不到a,此時,若右邊再無b,接受;若仍有b,則b的個數(shù)大于a的個數(shù),不接受。,11,SchoolofComputerScience&Technology,BUPT,例1L={anbn│n>=1},δ(q0,a)=(q1,x,R)δ(q0,y)=(q3,y,R)δ(q1,a)=(q1,a,R)δ(q1,y)=(q1,y,R)δ(q1,b)=(q2,y,L)δ(q2,a)=(q2,a,L)δ(q2,y)=(q2,y,L)δ(q2,x)=(q0,x,R)δ(q3,y)=(q3,y,R)δ(q3,B)=(q4,B,R),例:aabb的接收格局序列q0aabb├xq1abb├xaq1bb├xq2ayb├q2xayb├xq0ayb├xxq1yb├xxyq1b├xxq2yy├xq2xyy├xxq0yy├xxyq3y├xxyyq3B├xxyyq4,12,SchoolofComputerScience&Technology,BUPT,對于輸入字符串001122,該圖靈機可以有如下推導步:,q0001122,├M,Xq101122,├M,X0q11122,├M,X0Yq2122,├M,X0Y1q222,├M,X0Yq31Z2,├*M,q3X0Y1Z2,├M,Xq00Y1Z2,├*M,XXYYZq22,├M,XXYYq3ZZ,├*M,Xq3XYYZZ,├M,XXq0YYZZ,├*M,XXYYq4ZZ,├M,XXYYZq5Z,├M,XXYYZZq5B,├M,XXYYZZBq6B,例2L=?0n1n2n?n?1?.,13,SchoolofComputerScience&Technology,BUPT,轉(zhuǎn)移圖與轉(zhuǎn)移表,14,SchoolofComputerScience&Technology,BUPT,作為整數(shù)函數(shù)計算機的圖靈機,預備知識:圖靈機除了作為語言接受器外,還可看作整數(shù)到整數(shù)的函數(shù)計算機。傳統(tǒng)方法把整數(shù)表示成一進制整數(shù)i?0用字符串0i表示如果一個函數(shù)有k個自變量,i1,i2,…ik,那么這些整數(shù)開始時被放在帶上,并用1把他們分隔開。形如0i110i210i3…10ik如果圖靈機停止(不論是否在一個接受狀態(tài)上)且?guī)蠟?m,則f(i1,i2,…,ik)=mf是被圖靈機計算的k元函數(shù)如果f(i1,i2…,ik)對所有i1,i2…,ik有定義,那么稱f是一個全遞歸函數(shù)。全遞歸函數(shù)對應于遞歸語言,因為它總是被能停下來的圖靈機所計算。所有常用的整數(shù)算術函數(shù)都是全遞歸函數(shù)。,15,SchoolofComputerScience&Technology,BUPT,例3:設計圖靈機求真減法,思路:1.用空白符B代替帶上的最左端的02.右移至緊跟1后的0,將其改為13.左移找到B,將B之后的0改為B4.重復上述過程如果(1)右移找0時,遇到B,意味著m>nBB…B0m-(n+1)111…1n+1n個將后面n+1個1變?yōu)锽,將左側(cè)最后一個B變0,形如BB…B00m-(n+1)BB…Bn個n+1個這時,帶上留下m-n個0,即結(jié)果為m-n,初始帶0m10n,16,SchoolofComputerScience&Technology,BUPT,求真減法(續(xù)),(2)M左移找不到0,意味著n?m,形如BB…B111…10…0m個m個n-m個此時,用B替換所有剩余的1和0,17,SchoolofComputerScience&Technology,BUPT,例4:L=?0m?m=2n,n?0?,設計思路:對輸入串w1.從左到右掃描帶,隔一個消一個0;2.若帶上只剩唯一一個0,接受;3.若帶上不止一個0,且個數(shù)為奇數(shù),拒絕;4.讓讀寫頭返回帶的最左端;5.轉(zhuǎn)第一步。,18,SchoolofComputerScience&Technology,BUPT,識別L=?0m?m=2n,n?0?的圖靈機,19,SchoolofComputerScience&Technology,BUPT,課堂練習,設計一個狀態(tài)數(shù)不超過3的圖靈機,它能夠接受語言L=a(a+b)*,若假定T={a,b},兩個狀態(tài)的圖靈機能否接受該語言?,20,SchoolofComputerScience&Technology,BUPT,5.2圖靈機的構造技術,在設計圖靈機的過程中,寫出δ函數(shù)很麻煩,為了構造復雜的圖靈機,需探討圖靈機的若干構造技術,并引入一些新的概念和工具。目的:設計時方便,但這些構造技術并未增加圖靈機的功能。,21,SchoolofComputerScience&Technology,BUPT,5.2.1.利用帶存儲區(qū)的狀態(tài)(storageinthestate),此類圖靈機M=(Q,?,?,?,q0,B,F)中,狀態(tài)中可以包含一個具有有限個取值的存儲單元,即狀態(tài)集合為Q=S?T={[q,a]|q?S?a?T},其中q?S通常表示控制狀態(tài),而a?T通常表示數(shù)據(jù)元素.一般情況下,有限控制器內(nèi)允許存儲n個字符,即狀態(tài)的第2個元素可存儲n個字符。,,22,SchoolofComputerScience&Technology,BUPT,例:設計一個圖靈機,讀寫頭將掃視第一個字符存入有限控制器內(nèi),然后掃視整個帶,若找不到與第一個相同的字符,則M接受該字符串,否則不接受。構造M=(Q,{a,b},{a,b,B},δ,q0,B,F)其中Q={q0,q1}{a,b,B}={[q0,a],[q0,b],[q0,B][q1,a][q1,b][q1,B]}初態(tài)[q0,B]終態(tài)F={[q1,B]}δ函數(shù):δ([q0,B],a)=([q1,a],a,R)δ([q0,B],b)=([q1,b],b,R)存第一個字符δ([q1,a],b)=([q1,a],b,R)δ([q1,b],a)=([q1,b],a,R)后面符號與第一個不等,繼續(xù)右移δ([q1,a],B)=([q1,B],B,L)δ([q1,b],B)=([q1,B],B,L)進入終態(tài)[q1,B]δ([q1,a],a)=Фδ([q1,b],b)=Ф遇到相同符號,δ無定義M停機,不接受,23,SchoolofComputerScience&Technology,BUPT,5.2.2多道(multipletracks)圖靈機,把圖靈機的輸入帶分成兩層或多層,這樣,原來的每一單元變成了上下兩個或多個單元。對含有n層的輸入帶來說,讀寫頭一次可同時讀出并改寫n個單元的字符,這樣的圖靈機稱為n道機。,24,SchoolofComputerScience&Technology,BUPT,例:多道圖靈機,例:用三道機,檢查某個數(shù)n(n>2)是否為素數(shù)。(書p196)思路:將被檢查的數(shù)n以二進制形式寫在輸入帶的第一道上,數(shù)的兩端分別用¥和Ф定界允許的輸入符號為[¥,B,B],[0,B,B],[1,B,B],[Ф,B,B][…]分別代表1,2,3帶上的內(nèi)容。檢查方法:在第二道上寫下一個二進制數(shù)2把第一道上的數(shù)復制到第三道上將第三道上的數(shù)減去第二道上的數(shù),余數(shù)留在第三道上若余數(shù)為0,被檢查的數(shù)不是素數(shù)若余數(shù)不為0,將第二道數(shù)加1,將第一道數(shù)復制到第三道,重復上述1,2,3,4過程當一,二道數(shù)相等時,該數(shù)時素數(shù)。,25,SchoolofComputerScience&Technology,BUPT,5.2.3核對符,當用圖靈機識別語言時,如果語言中存在有重復性或可逆性等類型的句子時,為了判定某個字符串是否屬于語句中的句子,可以使用一個核對符,以此增加圖靈機的靈活性。考慮用一個雙道機,在第二道上使用核對符“?”,在第一道上放要被檢查的字符串,當字符串中某個字符一旦被核對以后,可以在第二道上對應位置寫上核對符“?”。,26,SchoolofComputerScience&Technology,BUPT,例:核對符,例:設計一個圖靈機M,能夠識別語言{wtw│w∈{a,b}*}思路:以t為分界符,一個一個比較。解:構造M=(Q,T,∑,δ,q0,B,F)其中Q={[qi,c]│i=1,2,…,9,c=a,b或B}狀態(tài)第二元素可存儲一個字符。T={[c,B]}│c=a,b或t}兩道與一道不同的表示法∑={[c,Y]}│c=a,b,t或B,Y=B或?}q0=[q1,B],F={[q9,B]}空白符B在二道機下表示為[B,B],27,SchoolofComputerScience&Technology,BUPT,例:核對符,,28,SchoolofComputerScience&Technology,BUPT,核對符例:abtab的分析過程,,[q1,B]abtab├a[q2,a]btab├ab[q2,a]tab├abt[q3,a]ab???├ab[q4,B]tab├a[q5,B]btab├[q6,B]abtab??????├a[q1,B]btab├ab[q2,b]tab├abt[q3,b]ab???????├abta[q3,b]b├abt[q4,B]ab├a[q5,B]btab???????????├ab[q7,B]tab├abt[q8,B]ab├abta[q8,B]b…????????????,29,SchoolofComputerScience&Technology,BUPT,5.2.4移位,可以讓圖靈機具備移位的功能,即對輸入帶上的字符進行移位操作。當需要在輸入帶上留出一部分空間時,可將輸入帶上的非空白符右移若干單元。假設需要輸入帶上的非空白字符右移n個單元,則可讓控制器狀態(tài)的第二個元素具有存儲n單元的功能(n是有限數(shù)),30,SchoolofComputerScience&Technology,BUPT,例:構造圖靈機M,要求它將帶上非空白符向移動兩個單元,原帶為abcdB,移后為zzabcdB設M=(Q,T,∑,δ,q0,B,F);Q={[q,D1,D2]│q=q0,q1,且D1,D2,…Dn∈∑}初始:[q0,B,B],終態(tài)[q1,B,B]δ定義:δ([q0,B,B],D1)=([q0,B,D1],Z,R)δ([q0,B,D1],D2)=([q0,D1,D2],Z,R)δ([q0,D1,D2],D3)=([q0,D2,D3],D1,R)δ([q0,Dn-1,Dn],B)=([q0,Dn,B],Dn-1,R)δ([q0,Dn,B],B)=([q1,B,B],Dn,L)對D∈∑-{B,Z}:δ([q1,B,B],D)=([q1,B,B],D,L)回到輸入點,31,SchoolofComputerScience&Technology,BUPT,5.2.5子程序(subroutines)的設計,左上圖的圖靈機表示子程序copy,右上圖的圖靈機表示可以調(diào)用copy的主程序,完成兩個正整數(shù)的乘法.初始時,帶上的符號串形如0m10n1,而結(jié)束時,帶上的符號串變?yōu)?mn.,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 形式語言 自動機 圖靈機
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-11504975.html