【學習筆記】計算理論


視頻課程:北大的劉田老師的理論計算機基礎

書籍:1.《計算理論導引》,麻省理工,中文翻譯本              2.  《computational complexity: a modern approach》,普林斯頓


本質:通過學習這一個課程,解決什么問題是能計算的,什么是不能計算的?有多快,要用多少存儲?以及采用什么計算模式?

課程結構:針對上述課程關心的三個問題,分為三大塊,

    1)自動機:即形式語言、自動機;采用什么計算模型?

    2)可計算性:即可計算理論及算法;解決哪些是可計算的、哪些是不可計算的?

    3)復雜性:即計算復雜性理論;要用多少時間、要用多少存儲?


1 自動機與語言

這一部分解決:有哪些計算裝置?能力如何?

包括有窮自動機、下推自動機、圖靈機

1.1 有窮自動機與正則語言

包括確定性有窮自動機(deterministic finite automaton,DFA)、非確定性有窮自動機(nondeterministic finite automaton,NFA)

1.1.1 確定性有窮自動機DFA

有窮自動機兩個要素:狀態、轉移

一般用狀態圖或狀態表來表示自動機

有窮指的的是有窮個狀態,確定指的是接受輸入后狀態的轉移是確定的

接受狀態、拒絕狀態、初始狀態

馬爾科夫鏈


有窮自動機的形式定義:一個5元組

image

計算的形式定義:

如果一個語言被一台有窮自動機識別,則稱它是正則語言


正則運算:包括連接、並、星號(注意不包括補、交)

image正則語言對正則運算封閉,也對補運算、交運算封閉(即對A,B兩個正則語言做並、連接、星號、補或交運算之后仍然是正則語言)

補運算證明思路:只要將接受狀態改動下即可補運算

並運算證明思路:讓兩個自動機同時運行 只要兩個自動機有一個接受 我就接受

交運算證明思路:1)交可以根據布爾運算轉化為補和並2)構造自動機,讓2個自動機同時運行

連接運算證明思路:還是運行2自動機,和交運算並運算不同,不是同時運行,是先后運行;把輸入分割為2部分,先后輸入到2自動機,難點是何處斷開;當遇到第一個斷開點,第一個自動機不停繼續走,第二個自動機開始啟動,那么每次遇到一個斷開點,第一個自動機保留一個副本,繼續往下走,第二個自動機啟動新副本從這兒往下走;那么只要控制斷開點是常數個,就可以設計有窮自動機了

星號運算證明思路:類似證明,不過是啟動一個自動機,把輸入串截成若干段,每段都是接受的,每段都是重啟自動機,難點和連接運算一樣,在何處截斷?


1.1.2 非確定性有窮自動機NFA

下一個狀態可以不唯一確定

包含ε移動,多種選擇(含0種選擇)


計算樹

非確定性自動機可以讓證明簡單,也可以讓自動機變得簡單

非確定性自動機是概念上的突破 更簡單


確定性自動機的狀態數更多,計算簡單:描述復雜,分析簡單

非確定性自動機狀態數簡單,計算復雜:描述簡單,分析復雜


確定性自動機是真實的

非確定性自動機只是方便分析,沒有實物,無法制造,只是數學概念


非確定有窮自動機的形式定義:

image計算的定義:

image


等價性:每台DFA都有對應的NFA,兩台機器識別相同語言

推論:一個語言是正則的,當且僅當有一台NFA識別它


用NFA對正則運算的封閉性證明更加簡單,用ε移動連接一下就搞定了

1.1.3 正則表達式

正則表達式是描述模式的手段


正則表達式形式定義:

image是一個歸納定義


省略最外層括號

規定優先級,星號 > 連接 > 並

image

正則表達式  等價於   正則語言   等價於  有窮自動機

利用泵引理證明一個語言是非正則語言

1.2 下推自動機與上下文無關文法

1.2.1 上下文無關文法

文法 文法(生成的)語言

產生式  替換規則 產生式縮寫

變元  非終結符  初始符

非變元 終結符

派生 語法分析樹


上下文無關文法CFG定義

image一步生成 任意步生成(派生,推導)

上下文無關文法生成的語言稱為上下文無關語言CFG


設計CFG:合並、正則、匹配、遞歸

正則語言是實際上CFG的一種特例

ww是上下文有關的  非ww是上下文有關的

定理:CFG對並運算封閉

定理:正則語言都是上下文無關語言


最左派生 文法的歧義性 歧義文法  固有歧義語言

非確定性


喬姆斯基范式CNF

image等價:兩個文法生成相同語言

定理:任意CFG都有等價的CNF

形式語言:零型文法(任意圖靈機識別的文法TM) 一型文法(上下文有關文法  線性有界自動機LBA) 二型文法(上下文無關文法 下推自動機PDA) 三型文法(典型代表正則表達式 NFA DFA)

1.2.2 下推自動機PDA

比非確定性有窮自動機多了個設備--棧,棧可以做推入和彈出

下推自動機有非確定性的,這個非確定性直接擴展了下推自動機的能力,比如固有歧義文法和有窮自動機不同,有窮自動機的確定性與否,實際上是等價的,不改變自動機的能力

所以一般下推自動機指非確定性下推自動機,即PDA即NPDA


形式定義,6元組

image

PDA計算

image

另一個例子

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM