Chapter01

782 views

Published on

測試看看行不行。

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
782
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Chapter01

  1. 1. 1 Introduction to the theory of computation <ul><li>Computer science 是很實際的學科,大多數人對 computation theory 沒有什麼興趣,除非理論能夠對他們所要解決的實際問題有幫助。
  2. 2. 那為什麼要學習計算理論的課程呢? </li></ul><ul><ul><li>理論提供一些幫助我們了解 computer science 的觀念;可以建構出一個理論的計算機,由理論的研究可知道實際電腦的限制。實際有用的東西常是依據「簡單的理論」而來。
  3. 3. 理論觀念可應用在很多地方。
  4. 4. 這些理論的主題是有趣、令人興奮的。 </li></ul></ul>
  5. 5. 本章的主要主題 <ul><li>Automata , An automaton is a construct that possesses all the indispensable features of a digital computer.
  6. 6. A formal language is an abstraction of the general characteristics of programming languages.
  7. 7. 之後再討論 mechanical computation 的概念,也就是 algorithm 的觀念,以及哪些問題適合用 algorithm 來解、哪些不能。 </li></ul>
  8. 8. outline 1.1 Mathematical preliminaries and notation sets <ul><ul><li>介紹一些後面會用到的專有名詞,像: set theory, functions, relations, trees, graph 等, deduction, induction, contradiction 等證明觀念。 </li></ul></ul>1.2 Three basic concepts <ul><ul><li>初步介紹 languages, grammars, automata 三種觀念,以後會更嚴謹的介紹。 </li></ul></ul>1.3 Some applications <ul><ul><li>這些觀念的一些應用。 </li></ul></ul>
  9. 9. 1.1 Mathematical Preliminaries and Notation <ul><li>集合 Sets : A set is a collection of elements, without any structure other than membership. </li></ul><ul><li>S = { 0, 1, 2 } , 可判斷 x  S 與 x  S
  10. 10. S = { i : i > 0, i 是偶數 } </li></ul><ul><li>union 聯集、 intersection 交集、 difference 差 </li></ul>S 1  S 2 = { x: x  S 1 or x  S 2 } S 1  S 2 = { x: x  S 1 and x  S 2 } S 1 - S 2 = { x: x  S 1 and x  S 2 }
  11. 11. 關於集合 (set) <ul><li>complementation : The complement of a set S consists of all elements not in S .
  12. 12. Universal set U : 代表所有可能的元素。 </li></ul><ul><li>空集合 Φ 或  ,empty set 或 null set :就是不包含任何元素的集合。 </li></ul>S   = S -  = S , S   = 
  13. 13. 關於集合 (set) <ul><li>DeMorgan’s laws </li></ul><ul><li>子集合 subset </li></ul>若 S 1 的元素也都是 S 的元素,則 S 1 為 S 的 subset 。 S 1  S <ul><li>若 S 中存在一個元素不屬於 S 1 ,則 S 1 為 S 的 proper subset ( 真子集合 ) 。 S 1  S </li></ul><ul><li>disjoint set ,互斥集合,交集為空集合者。 </li></ul>S 1  S 2 = 
  14. 14. 關於集合 (set) <ul><li>有限集合 finite sets ,元素個數為有限者;其他的為 infinite sets 無限集合。
  15. 15. 集合 S 的元素個數記成 | S | 。
  16. 16. 部份集合 powerset ,所有子集合所形成的集合稱為部份集合。令 2 S 為 S 的 powerset ,其元素個數為 2 |S| 。
  17. 17. S = { a, b, c }
  18. 18. 2 S = {  , { a } , { b } , { c } , { a,b } , { b, c } , { c, a } , </li></ul>{ a, b, c } } .
  19. 19. 關於集合 (set) <ul><li>Cartesian product </li></ul>S = S 1  S 2 = {( x, y ) : x  S 1 and y  S 2 } S 1  S 2  …  S n = {( x 1 , x 2 , …, x n ) : x i  S i } <ul><li>Example 1.2 令 S 1 = {2, 4}, S 2 = {2, 3, 5, 6} </li></ul>S 1  S 2 = {(2,2), (2, 3), (2, 5), (2, 6), (4, 2), (4, 3), (4, 5), (4, 6)}
  20. 20. 關於 functions and relations <ul><li>A function is a rule that assigns to elements of one set a unique element of another set. </li></ul>f : S 1 ->S 2 <ul><li>其中 f 的 domain ( 定義域 ) 是 S 1 的 subset 、 f 的 range ( 值域 ) 是 S 2 的 subset 。
  21. 21. 如果 S 1 就是 f 的 domain ,則 f 稱為 total function 、否則稱為 partial function 。 </li></ul>
  22. 22. 關於 functions and relations <ul><li>令 f(n) 與 g(n) 是兩個整數函式 (domain 是整數的 subset) 。 If there exists a positive constant c such that for all n , f(n) ≤ c g(n) ,則稱「 f has order at most g 」, f(n) = O(g(n))
  23. 23. 若 |f(n)| ≥ c |g(n)| , 「 f has order at least g 」 , f(n) = Ω (g(n))
  24. 24. 若存在 c 1 與 c 2 兩個常數, c 1 |g(n)| ≤ |f(n)| ≤ c 2 |g(n)| , 「 f and g have the same order of magnitude 」 , f(n) = Θ (g(n)) </li></ul>
  25. 25. 關於 functions and relations <ul><li>Example 1.3 </li></ul>f(n) = 2n 2 + 3n g(n) = n 3 h(n) = 10 n 2 + 100 則 f(n) = O(g(n)) g(n) = Ω(h(n)) f(n) = Θ(h(n))
  26. 26. 關於 functions and relations <ul><li>函式可以用集合的方式表示 </li></ul>{ ( x 1 , y 1 ) , ( x 2 , y 2 ) , … } ,其中 x i 是 domain 的元素、 y i 是 range 的元素。 <ul><li>一個集合若表示函式的話,每個 x i 只能在 pair 中第一個位置出現一次。
  27. 27. 若有某個 x i 出現兩次以上的話,就不是 function ,只能稱它為 relation 。所以 relation 比函式一般化。 </li></ul>
  28. 28. 關於 functions and relations <ul><li>一種特別的 relation 稱為 equivalence relation ; ( x,y ) 若屬於一個 equivalence relation 的話,記成 x ≡ y 。
  29. 29. 一個 equivalence relation 必須滿足下列三個條件: the reflexivity rule( 反身性 ), x ≡ x for all x, the symmetry rule( 對稱性 ), if x ≡ y then y ≡ x 與 the transitivity rule( 遞移性 ), if x ≡ y and y ≡ z , then x ≡ z .
  30. 30. Example 1.4 除以 3 的餘數是否相同的關係,是不是 equivalence relation 呢? </li></ul>
  31. 31. 關於 Graphs and Trees <ul><li>圖形 G = ( V, E ) , V = { v 1 , v 2 , …, v n } 是 vertex set 點集合 , E = { e 1 , e 2 , … e m } 是 edge set 邊集合,兩者皆為有限集合,有限圖形。
  32. 32. e i = ( v j , v k ) 是從 v j 連到 v k 的邊、有方向的邊; e i 是 v j 的 outgoing edge ,是 v k 的 incoming edge 。
  33. 33. 邊都有方向的圖形、稱為有向圖 directed graph , digraph 。圖形的點或邊都可以有名稱。 </li></ul>
  34. 34. 關於 Graphs and Trees <ul><li>V= { v 1 ,v 2 ,v 3 } , E= {( v 1 ,v 3 ) , ( v 3 , v 1 ) , ( v 3 , v 2 ) , ( v 3 , v 3 )} </li></ul><ul><li>walk ( v 1 , v 3 ) , ( v 3 , v 3 ) , ( v 3 , v 2 )
  35. 35. path : 沒有重複邊的 walk, simple path : 沒有重複點的 path
  36. 36. length , cycle , simple cycle , loop </li></ul><ul><li>找兩點間所有的最短路徑。 BFS 的方法。 </li></ul>
  37. 37. 關於 Graphs and Trees <ul><li>A tree is a directed graph that has no cycle.
  38. 38. There is exactly one path from the root to every other vertex.
  39. 39. root 沒有 incoming edge 、其他點都有一條 incoming edge ;
  40. 40. parent , child , leaves , level : root 到該點的 edge 數 , height 。
  41. 41. ordered trees ,同一個 level 的 node 都有順序。
  42. 42. degree : in-degree 與 out-degree </li></ul>
  43. 43. 關於 Graphs and Trees
  44. 44. 關於 proof techniques <ul><li>必須擁有「了解證明的能力」。
  45. 45. 最常用、最重要的兩個證明: proof by induction 歸納法、 proof by contradiction 矛盾證法、反證法。
  46. 46. 歸納法證明通常是證明 P 1 , P 2 , … 每個 statement 都是正確的,包括幾個部份 </li></ul><ul><ul><li>Basis : 證明 P 1 , P 2 , …, P k , for k ≥ 1 , 是正確的
  47. 47. Inductive assumption : 假設 P 1 , P 2 , …, P n 是正確的, for some n ≥ k 。
  48. 48. Inductive step :證明 P 1 , P 2 , …, P n -> P n+1 , for any n ≥ k </li></ul></ul>
  49. 49. 關於 proof techniques <ul><li>Example 1.5 A binary tree is a tree in which no parent can have more than two children. Prove that a binary tree of height n has at most 2 n leaves . </li></ul>Proof: 令 l ( n ) 代表高度為 n 的 binary tree 最多的 leaf 數。因此等於要證明 l ( n )  2 n . Basis: l ( 0 ) = 1 ≤ 2 0 ,故成立。 Inductive assumption: l ( i ) ≤ 2 i , for i = 0, 1, …, n Inductive step: 高度為 n+1 的 binary tree 之 leaf 數最多就是 l ( n ) 的兩倍,因此 l ( n+1 ) = 2 l ( n ) ≤ 2×2 n = 2 n+1 。 由數學歸納法得證。
  50. 50. 關於 proof techniques <ul><li>Example 1.6 證明 </li></ul><ul><li>Basis: S 0 = 0 = 0(0+1)/2
  51. 51. 因為 S n+1 = S n + n + 1 , 所以 </li></ul>S n+1 = n(n+1)/2 + n + 1 = (n+1)(n+2)/2 。 故由數學歸納法得證
  52. 52. 關於 proof techniques <ul><li>數學歸納法與遞迴的關係
  53. 53. 在作遞迴函式時,求 f ( n+1 ) 通常必須由 f ( n ) , f ( n-1 ) , …, f ( 1 ) 來求得,這與數學歸納法中的 inductive step 是相同的。
  54. 54. 而遞迴函式中,當執行到 n  k 時,就不再作遞迴呼叫,這也與歸納法中的 basis 相同。
  55. 55. 因此用數學歸納法證明出來的方式、都很容易直接轉換為遞迴函式的寫法。
  56. 56. 有些連結網路上的問題也是如此,有遞迴結構圖形的問題,通常都適合用數學歸納法來證明。 </li></ul>
  57. 57. 關於 proof techniques <ul><li>Proof of contradiction 反證法,若我們要證明某個 statement P 成立,則先假設相反的結果、就是假設 P 不成立,然後看由這個假設是否能推導出明顯矛盾的結果。
  58. 58. 只要我們的每個推理都是正確的,那就必然導致這個假設是錯的,因此 P 就必然成立。 </li></ul>
  59. 59. 關於 proof techniques <ul><li>Example 1.7 A rational number ( 有理數 ) is a number that can be expressed as the ration of two integers n and m so that n and m have no common factor. 否則就是 irrational 。請證明 為 irrational 。 </li></ul>Proof: 假設 為有理數,令 = n/m ,且 gcd(m,n) = 1 。 所以 n 一定是 2 的倍數,令 n = 2k 則 2 m 2 = n 2 Þ 2 m 2 = 4 k 2 Þ m 2 = 2 k 2 因此、 m 也是 2 的倍數, gcd (m, n) ≥ 2 ,產生矛盾。 因此 必然為 irrational 。
  60. 60. 1.2 Three Basic Concepts <ul><li>這小節將介紹這門課中的三個主要主題的意義: languages , grammars 與 automata
  61. 61. 什麼叫作語言 language ?似乎不容易精確定義
  62. 62. 字典的定義是: a system suitable for the expression of certain ideas, facts, or concepts, including a set of symbols and rules for their manipulation.
  63. 63. 這樣的定義不夠 formal ,下面我們要介紹本課程對 language 的定義。 </li></ul>
  64. 64. 關於 languages <ul><li>令 Σ 代表一個 finite, nonempty symbols 的集合,稱為 alphabet 。
  65. 65. 由 Σ 中某些字母連接組成的 sequence 稱為 strings
  66. 66. 例如 Σ = { a, b } , abab 與 aabbba 是 Σ 中的 strings 。通常我們用 a, b, c, … 等符號代表字母、而 u, v, w, … 等符號代表字串。 </li></ul><ul><li>concatenation : </li></ul>w = a 1 a 2 …a n v = b 1 b 2 …b m wv = a 1 a 2 …a n b 1 b 2 …b m
  67. 67. 關於 languages <ul><li>reverse , w R </li></ul>w = a 1 a 2 …a n -> w R = a n …a 2 a 1 <ul><li>length of w, |w| , 字串 w 中的字母個數
  68. 68. empty string 空字串 λ </li></ul>| λ | = 0 λ w = w λ = w <ul><li>substring </li></ul>w = vu, u 與 v 都是 w 的 substrings ,而且 v 是 w 的 prefix , u 是 suffix ,若 w = abbab ,其 prefix 與 suffix 各有哪些呢?
  69. 69. 關於 languages <ul><li>|uv| = |u| + |v| , 其中 u, v 都是 strings . </li></ul><ul><li>Example 1.8 證明上面的式子。 </li></ul><ul><li>用數學歸納法證明, a 是字母, |a| = 1 ,而 w 是字串, |wa| = |w| + |a| = |w| + 1 。
  70. 70. 假設 v 長度為 n 時 |uv| = |u| + |v| ,當 v 的長度為 n + 1 時,令 v = wa ,則 </li></ul>|uv| = |uwa| = |uw| + 1 = |u| + |w| + 1 = |u| + |v| 。 <ul><li>由數學歸納法得證 |uv| = |u| + |v| </li></ul>
  71. 71. 關於 languages <ul><li>令 w 為一字串 , w n 就是將此字串重複 n 次的字串
  72. 72. w 0 =  </li></ul><ul><li>Σ 是 alphabet , Σ * 就是 Σ 中字母所組成之任意長度的字串所形成的集合。 </li></ul>  Σ * Σ + = Σ * - {  } <ul><li>Σ * 與 Σ + 都是無窮集合,因為它們的長度沒有上限。
  73. 73. 一個 language 是 Σ * 的子集合,語言 L 中的一個字串稱為 sentence 。 ( 不考慮意義的問題 ) </li></ul>
  74. 74. Example 1.9 <ul><li>Σ = { a,b } 則 Σ * = {  ,a, b, aa, ab, ba, bb, aaa, aab, … }
  75. 75. { a, aa, aab } 就是一個 Σ 的語言, finite language
  76. 76. L = { a n b n : n  0 } 也是一個 Σ 的語言, aabb , aaaabbbb 都屬於 L ,但 abb 不屬於 L , infinite language 。
  77. 77. 大部份有趣的語言都是 infinite </li></ul>
  78. 78. 關於 languages <ul><li>既然語言是集合,所以也可以有 complement , intersection , difference , union 等集合運算。 </li></ul><ul><li>reverse of L , L R = { w R : w  L }
  79. 79. concatenation of L 1 and L 2 , </li></ul>L 1 L 2 = { xy : x  L 1 , y  L 2 } <ul><li>L n 代表 L 自己 concatenate n 次 </li></ul>L 0 = {  } , L 1 = L
  80. 80. 關於 languages <ul><li>star-closure , L * = L 0 ∪ L 1 ∪ L 2 ∪ …
  81. 81. positive-closure , L + = L 1 ∪ L 2 ∪ … </li></ul><ul><li>Example 1.10 L = { a n b n : n  0 } , </li></ul>L 2 = { a n b n a m b m : n  0, m  0 } L R = { b n a n : n  0 } L * , L + , complement of L 等就不太容易描述。
  82. 82. 關於 Grammars <ul><li>我們對每天所使用的 language 的定義常常很難描述得清楚、精確;這節中我們用 grammar 來描述 language 。
  83. 83. 那什麼叫作 grammar 呢?英文的 grammar 告訴我們什麼句子是 well-formed( 合文法的 ) ,例如:
  84. 84. A sentence can consist of a noun phrase followed by a predicate( 陳述 ). </li></ul><sentence> -> <noun_phrase><predicate> <noun_phrase> -> <article><noun> <predicate> -> <verb> <article> -> “a” | “the” <noun> -> “boy” | “dog” <verb> -> “runs” | “walks”
  85. 85. Definition 1.1 <ul><li>A grammar G is defined as a quadruple </li></ul>G = (V, T, S, P) , where V is a finite set of objects called variables , T is a finite set of objects called terminal symbols , T 與 alphabet Σ 相似 S  V is a special symbol called the start variable, P is a finite set of productions ( rule ). 其中的 V 與 T 都是 nonempty 且 disjoint
  86. 86. 關於 Grammars <ul><li>前面 grammar 的定義中,最重要的是 production rule 的部份。
  87. 87. 最一般化的 rule 是 </li></ul>x -> y 其中 x 屬於 (V ∪ T) + 而 y 屬於 (V ∪ T) * <ul><li>若 w = uxv , 而 z = uyv ,則 w  z
  88. 88. 重複應用 rules , w 1  w 2  …  w n
  89. 89. 可寫成
  90. 90. 按不同順序來應用 rules 可以產生不同的 strings
  91. 91. 一 grammar 所能產生所有的 strings 所成的集合就是這個 grammar 所定義的語言。 </li></ul>
  92. 92. Definition 1.2 <ul><li>Let G = (V, T, S, P) be a grammar. Then the set </li></ul>is the language generated by G.
  93. 93. Example 1.11 <ul><li>grammar G = ({S}, {a, b}, S, P) 的 production 是 </li></ul>S -> aSb S ->  這個 grammar 會產生什麼樣的 language?
  94. 94. Example 1.11 <ul><li>要證明 G 所產生的語言都屬於 {a n b n : n  0} ,可以用數學歸納法證明。證明所有的 sentential form 都是 a i Sb i 的型式。 </li></ul>
  95. 95. Example 1.12 <ul><li>Find a grammar that generates L = {a n b n+1 : n  0} </li></ul><ul><li>要如何證明 grammar G 可以產生 L 呢?必須證明兩件事 </li></ul><ul><ul><li>L 中的每個字串都必須可以由 G 中的 S 產生
  96. 96. G 產生的每個字串都是 L 中的字串。 </li></ul></ul>
  97. 97. Example 1.13 <ul><li>令 Σ= {a, b} , n a (w) 與 n b (w) 代表字串中 a 與 b 出現的次數。下列 grammar 會產生什麼 language 呢 ? </li></ul>S -> SS S -> λ S -> aSb S -> bSa
  98. 98. Example 1.13 <ul><li>證明 L = {w: n a (w) = n b (w)} 中的每個字串都可以 由這個 grammar 產生,分幾個 cases 討論。字串格式分別如下: </li><ul><li>a??…??b: 應用一次 S->aSb, 由歸納法得證
  99. 99. b??…??a: 應用一次 S->bSa, 由歸納法得證
  100. 100. a??…??a: 須應用 S->SS ,找到中斷點
  101. 101. b??…??b: 須應用 S->SS ,找到中斷點 </li></ul></ul>
  102. 102. 關於 grammar <ul><li>兩個 grammars 若產生的 language 完全相同,則這兩個 grammars 是 equivalence 。
  103. 103. Example 1.14 G 1 = ({A, S}, {a, b}, S, P) ,P 如下 </li></ul>S->aAb |  A->aAb | 
  104. 104. 關於 Automata <ul><li>An automaton is an abstract model of a digital computer. 有:輸入 (input file 、不能改變、從左到右 ) ,輸出,暫時的 storage , internal states ( 有限個 ) , control unit ( 在各個 internal states 間轉換的控制單元 )
  105. 105. automaton 隨時都在某個 internal state 的狀態下,下個時間的 state 由 next-state 或 transition function 決定。而 transition function 則通常是透過目前的 state 、 input 資料與 storage 中的資料來決定下個 state 。
  106. 106. 在 state 的轉換過程可能會產生 output 、或改變 storage 的內容。 </li></ul>
  107. 107. 關於 Automata <ul><li>用 configuration 代表某個 state 、 input file 與 temporary storage ; automaton 從一個 configuration 轉換到下一個 configuration 的過程稱為 move 。 </li></ul>Input file Control unit Output Storage
  108. 108. 關於 Automata <ul><li>前面所說 automata 的型式是一般化的型式,我們會先介紹一些特別的 automata ,並討論不同 automata 之間功能的差異。
  109. 109. 可以分成 deterministic automata 與 nondeterministic automata 兩大類。
  110. 110. Deterministic automata 主要特點是由目前的 state 、 input 、 storage 只能產生一種 next state 。而 non-deterministic automata 則可能有許多種 next state 可以自由選擇。
  111. 111. Accepter : output 只有 yes 或 no 的 automata 。
  112. 112. Transducer : 可產生其他字串的 automata 。 </li></ul>
  113. 113. 1.3 Some Applications <ul><li>這一節中我們會提到幾個應用的例子。
  114. 114. Formal language 、 grammar 與程式語言有很密切的關係;特別是要精確描述程式語言的定義時,像 compiler 要檢查哪些 statements 不符合程式語言的語法時,使用 grammar 來描述是很適當的。
  115. 115. 下面的例子是類似 C 或 Pascal 的變數宣告規則。 </li></ul>
  116. 116. Example 1.15 <id>-><letter><rest> <rest>-><letter><rest>|<digit><rest>|λ <letter>->a|b|…|z <digit>->0|1|…|9 <id>  <letter><rest>  a<rest>  a<digit><rest>  a0<rest>  a0
  117. 117. Example 1.16 <ul><li>可以用 automata 來表示前面的 grammar ;
  118. 118. Automata 可以用 graph 的方式來表示; </li></ul>1 3 Letter Digit Letter or digit Letter or digit 2
  119. 119. Example 1.17 <ul><li>將兩個二進位整數相加,得到一個相加的結果。
  120. 120. x = a 0 a 1 …a n </li></ul>一般二進位數倒過來的表示方式。每次的 input 是 a i 與 b i , 由左至右。 No carry Carry (0,0)/0 (0,1)/1 (1,0)/1 (1,1)/0 (0,0)/1 (0,1)/0 (1,1)/1 (1,0)/0
  121. 121. Exercise 1.3-11 <ul><li>Design a transducer to convert a binary string into octal. For example, the bit string 001101110 should produce the output 156. </li></ul>

×