Chà Chào m i ng i! Lý thuy t tí ính toá án ttính to toán Hello Everyone! (Theory of Computation) PGS.TS Phan Huy Khá Khánh Bonjour Tout le Monde ! khanhph@vnn.vn ! Ch ng M đ u K ! 2/56 2/ 56 M c đí đích môn h c Ki n th c yêu c u Môn h c Lý thuy t tí tính toá toán (Theory of Computation) Computation) cung c p nh ng ki n th c c b n v : Môn h c yêu c u m t s ki n th c tiên quy t : Tin h c đ i c ng Toá Toán r i r c C u trú trúc d li u và gi i thu t Các mô hì hình tí tính toá toán lý thuy t : Các má máy truy c p ng u nhiên Các ôtômat h u h n tr ng thá thái Ngôn ng hình th c và v n ph m Lý thuy t đ ph c t p tí tính toá toán Máy Turing và khái ni m tí tính đ Các hà hàm đ quy Các khái ni m v toá toán, thu t toá toán, tí tính gi i đ tính quy t đ nh Sinh viên n m đ c : Các mô hì hình tí tính toá toán t ng quát Các khái ni m c b n v đ ph c t p tí tính toá toán, ph ng phá pháp ch ng minh hì hình th c Có kh n ng minh ho ho t đ ng c a cá mô hì hình đó b ng thu t toá toán, ch ng trì trình c c, 3/56 3/ 56 4/56 4/ 56 Tài li u tham kh o ánh giá giá k t qu h c t p Yêu c u : Giá Giáo trì trình PPT “Lý thuy t Tí Tính toá toán” http://wwwhttp://www-courses.cs.uiuc.edu/~cs375/ www.cs.berkeley.edu/~vandam/CS172/ Hi u n i dung trì trình bà bày l p Th c hi n cá t p v nhà nhà Kh n ng th c hà hành Tinh th n thá thái đ n ng l c h c t p Keywords to findout on internet (Google): Computation | Computing Theory Computability | Decidability Formal Language | Automata Theory Set | Graph Theory Nghe gi ng, ghi ché chép Tr l i và đ t câu h i Tham kh o tà tài li u, truy c p internet Tham gia h c nhó nhóm, t p th o lu n và thuy t trì trình … Ki m tra cu i k : 5/56 5/ 56 Thi vi t (60 phú phút) 6/56 6/ 56 gi i h n c a Tin h c ? N i dung môn h c Ch ng M đ u : c s c a môn h c Ch ng Ôtômat h u h n Ch ng V n ph m và ôtômat đ y xu ng Ch ng Máy Turing Ch ng Hàm đ quy Ch ng Máy RAM Ch Nghiên c u v toá toán (problem) : L p cá bà toá toán gi i đ L i gi i, hay thu t toá toán , đ gi i bà bà i toá toán L p cá bà toá toán không gi i đ c (resolvability) c (và s không bao gi gi i đ c, dù v i s ti n b c a công ngh thông tin t ng lai) lai) Nghiên c u lý thuy t cá cách gi i cá bà toá toán Mô hì hình tí tính toá toán ? ph c t p tí tính toá toán ? ng Lý thuy t đ ph c t p tí tính toá toán Tính quy t đ nh 7/56 7/ 56 8/56 8/ 56 gi i h n c a Tin h c ? Gi i h n c a V Không t n t Mâu thu n v Nh ng ch đ chí c a Tin h c lý thuy t Nghiên c u cá mô hì hình tí tính toá toán : t lý : i chuy n đ ng v nh c u v ì : i cá đ nh lu t v nhi t đ ng l c h c C ác ngôn ng C ác ôtômat h u h n (Finite Automaton) Má y C ác hình th c (Formal Languages) Turing (Turing Machine) hà hàm đ quy (Recursive Functions) Má y RAM (Random Access Memory Machine) ph c t p tí tính toá toán (Computational Complexity) M t mã h c (Cryptology) Và h ng nghiên c u m i lý thuy t tí tính toá toán M i quan h gi a mô hì hình tí tính toá toán khác Chuy n đ ng v nh c u ( Perpetual Motion) là chuy n đ ng không ng ng, không c n tiêu t n n ng l ng C s đ thi t k MT T (ph n c ng) thu t toá toán (ph n m m) hi n t i và t ng lai… lai… 9/56 9/ 56 Ch 10/56 10/ 56 M t s ki n th c Toá Toán h c c ng m đ u : c s c a môn h c M t s ki n th c Toá Toán h c c s Lôgí Lôgích h c B ng ch câu T p h p, quan h Khá Khái ni m ngôn ng Ánh x hàm Máy tr u t Tính đ m đ ng V n đ bi u di n ngôn ng s c c a cá t p h p vô h n th Phé Phép ch ng minh quy n p Các c u trú trúc r i r c 11/56 11/ 56 12/56 12/ 56 B ng ch Câu b ng ch câu B ng ch (alphabet) : Cho tr m t t p h u h n cá ký t (characters), (characters), hay ký t ng/ ký hi u (symbol), ký hi u b i ch Hy l p Kích th c c a b ng ch s ph n t c a b ng ch đó, ký hi u | ||, hay Card( Card() (Cardinality) c m t b ng ch đó M t câu (phrase, word), hay xâu (string), : m t dãy h u h n cá ph n t c a , ký hi u b i w (hay x, y, u, v ) Ví d m t s b ng ch : {#} { 0, } { , , , } {0, 1, 2, , 9} {I, V, X, L, C, D, M} {aA, bB, cC, , zZ} {, , , , } B ng mã ASCII Các nét vi t ch Hán |=1 | | = | | = Ch s th p phân, || = 10 Ch s La Mã Ch La tinh ch Hi L p dài c a m t câu là s ký t có m t câu, ký hi u là |w| hay length(w length(w) dài câu là h u h n, nh ng không h n ch có ký t M t câu có có th có t đ n n ký t tu ý Câu có có đ dài b ng đ c g i là câu r ng (empty word), ký hi u , ho c e, ho c ho c 13/56 13/ 56 Ví d v câu b ng ch 14/56 14/ 56 Phé Phép ghé ghép ti p cá câu Cho hai câu u và v Ví d B ng ch Câu , 0, 1, 00, 01, 10, 11, 100 { 0, } Phé Phép ghé ghép ti p (Concatenation) c a u và v là câu w = uv Ngh a là câu w g m hai ph n : { a z } a, ab, ab, zt, computer u đgl là ti n t (prefix) { 0, , 7, , , , } 43 2 , 1234, r i đ n v là h u t (postfix) c a w ASCII M t ch ng trì trình C, Pascal, Java, VB Tr ng h p câu w = xuy là ghé ghép ti p c a ba câu x, u, u, y, y, u đgl trung t (infix) c a w Ng i ta g i câu r ng câu đ n v có w = w w = w v i w là m t câu b t k Cho m t câu w có có có |w|=n, |w|=n, ng i ta có có th trí trích t w m t ký t đó có v trí trí xác đ nh ph m vi n Ví d câu w=aaabbaabbba có có |w|=11, có th trí trích cá ký t : w(1) = a, , w(4) = b, , w(11) = a Returning 15/56 15/ 56 16/56 16/ 56 Các phé phép toá toán khác xâu Khá Khái ni m ngôn ng M t ngôn ng hình th c (nó (nói g n ngôn ng ) : Cho cá câu w Phé o ng c (Reversion) m t câu w, ký hi u Phép Là câu w đ c vi t theo th t ng c l i Rõ rà ràng R = wR : wR = w đgl câu đ i x ng : OMO, akitOMOtika akitOMOtika Phé Phép L y th a (power) xâu wn = ww… ww…w (n l n) w0 = v i m i w * ngôn ng g m t p t t c xâu b ng ch k c xâu r ng + ngôn ng g m t p t t c xâu b ng ch KHÔNG CÓ CÓ xâu r ng Quy Quy p h p cá câu c xây d ng cù m t b ng ch cho Ví d : t đ cc ch ch đ đ nh nh m m tt câu câu (denotation) (denotation) Chú ý {} Ví d 17/56 17/ 56 + = * - ngôn ng tr ng (t p tr ng) L1 = {a, ab, abb, bba, bbb} là ngôn ng h u h n {a, b} L2 = {(ab)n | n > 0} là ngôn ng vô h n {a, b} Chú ú ýý :: Ch Chú Ng ùng phé ép ““hình hình th ” (Fomal) Fomal) đđ đđ ii ll pp vv ii ““tt nhiên ddùng ph ((Fomal) Ng ii ta ta dù phép th cc” nhiên (Natural) (Natural) 18/56 18/ 56 Máy tr u t Ch c n ng đoán nh n câu ng (machine) D li u vào Máy đoán nh n câu : D li u Máy Mô hì hình IPO : Gi s d li u vào w*, k t qu r{0, 1}, hay {False, True } T p h p câu vào w đgl ngôn ng (language) nh n d li u vào (data) và cho k t qu (result) Hai cá cách nhì nhìn : Có ba kh n ng cho k t qu : True ho c False M t k t qu khác Không cho k t qu Cách nhì nhìn ch c n ng (functional look) Cách nhì nhìn c u trú trúc (structural look) Phân bi t cá ki u má máy tr u t ng (machine type) theo b n ch t c a k t qu tính toá toán Hai t p h p câu vào ng v i hai kh n ng đ u là bù n u má máy cho k t qu cho m i d li u vào 19/56 19/ 56 20/56 20/ 56 Ch c n ng tính toá toán Cách nhì nhìn c u trú trúc (structural look) Máy đ Máy tí tính toá toán (computation machine) Gi s d li u vào w*, k t qu m t câu r m t b ng ch đó Khi đó, má máy th c hi n tí tính hà hàm f t * vào * : c xá xác đ nh b i m t t p h u h n cá phé phép toá toán M i phé phép toá toán mô t m t ph n c u trú trúc c a má máy Phé Phép toá toán s c p (elementary operation) là phé phép toá toán nh nh t (không chia c t nh h n) n) f : * * Máy th c hi n (execution) m i phé phép toá toán m t kho ng Ngh a là w *, f (w ) * th i gian h u h n và xác đ nh Hàm f đ c g i là hàm toàn ph n (partial function) n u v i m i câu vào w *, má máy đ u cho k t qu f (w)* Ng i ta c ng nói ki u má máy đoán nh n ch tr bi t c a ki u má máy tí tính ng h p đ c Ch ng trình (program) là t p h p cá phé phép toá toán s c p đ gi i m t bà toá toán nà đó M t t ính toá toán (computation) là vi c th c hi n l n l t cá phé phép toá toán s c p theo m t th t xác đ nh tr c 21/56 21/ 56 22/56 22/ 56 Mô hì hình tí tính toá toán M t s thu t ng nh ngh a cá l p má máy có có nguyên lý ho t đ ng ng trì trình đ gi i bà toá toán cù m t má máy mà mà không thay đ i má máy gi i Làm đ có th bi t : Thay đ i ch Mô hì hình tí tính toá toán (computation model), ký hi u T là s mô t : t t c phé phép toá toán s c p nh ng đ i t cách th c hi n ch M t tr ng nà có có th tác đ ng phé phép toá toán ng trì trình má máy Mô hì hình + Ch L p cá hà hàm t ính đ hay Tt ính đ c ? c (recognized), c (computable) L p cá ngôn ng li t kê đ hay Tli t kê đ c ? c (enumerable) So sá sánh hai mô hì hình : T1 m nh h n T2 : N u T2 nh n bi t đ c (tí (tính đ c, li t kê đ c) thì T1 c ng nh n bi t đ c (tí (tính đ c, li t kê đ c) ng h p riêng (instance) c a mô hì hình là máy c th Mô hì hình tí tính toá toán T đ L p ngôn ng đoán nh n đ hay Tnh n bi t đ c ? ng trì trình = Má Máy T1 và T2 t c g i là m t T Tmáy ng đ ng (equivalent) n u T1 m nh h n T2 và ng c l i c n u không t n t i mô T1 và T2 là không th so sá sánh v i đ hình nà đ m nh h n mô hì hình 23/56 23/ 56 24/56 24/ 56 Khá Khái ni m bà toá toán (problem) M t s ví d toá toán (1) Bài toá toá n : D li u: M t s nguyên vi t h 10 Câu h i : S nguyên cho có có s nguyên t hay không ? Bài toá toá n : D li u : M t s nguyên vi t h 10 Câu h i : S nguyên nà nà y đ c vi t d i d ng t ng c a s bình ph ng ? Bài toá toá n : D li u : M t s nguyên vi t d i d ng tí tích c a cá s h ng h 10 Câu h i : S nguyên cho có có s nguyên t hay không ? Bài toá toá n : D li u : M t đ th h u h n G đ c bi u di n b i m t danh sá sách cá đ nh cung, m i đ nh đ c bi u di n b i m t s nguyên h 10 Câu h i : Có t n t i đ ng Hamilton (đi qua h t t t c đ nh c a đ th , m i đ nh qua đú m t l n) đ th cho không ? M t toá toán : Mô t cách bi u di n (h u h n) cá ph n t c a m t t p h p h u h n hay vô h n đ m đ M t phá phát bi u liên quan đ n cá ph n t c a t p h p nà K t qu có th đúng, ng, ho c sai, tùy vi c ch n ph n t Bài toá toán Tin h c lý thuy t : Khá Khác v i khái ni m bà toá toán thông th c ng Toá Toán h c Khá Khác v i bà toá toán hi u theo ngh a thông d ng 25/56 25/ 56 26/56 26/ 56 Bài toá toán t M t s ví d toá toán (2) Bài toá toán : D li u : M t bi u th c chí quy (regular (regular expression) đ c xây d ng m t b ng ch (là (là m t bi u th c nh n đ c t câu w* b i cá c phé é p ho c, phé é p ghé é p c ph ph gh ti p, phé phép * và l y bù bù) Câu h i : Có ph i bi u th c cho ch đ nh ngôn ng tr ng (empty language) ? Bài toá toán 3n+1 (bà (bài toá toán d ng) : ch a có có câu tr l i v tính d ng ng ng Post (Post’ (Post’s correspondence problem) D li u : M t dãy h u h n cá c p câu (u1, v1), (u2, v2) , (uk, vk) Câu h i : T n t i hay không m t dãy ch s i1 , i2 , in cho tho mãn ui1 ui2 uin = vi1 vi2 vin ? Ví d : cho * = {a, {a, b, c } Và dãy cá c p câu : {(ab, {(ab, aba), aba), (ab (ab,, ba), (bab (bab,, ba), ba), (ab (ab,, bab) bab) } function threen(n: integer): integer;{ integer;{ recursive } begin if (n = 1) then else if odd(n odd(n then threen(3*n+1) else threen(n div 2); end; Cho câu : babababab T n t i dãy ch s {3 , 2, 2, 4} cho tho mãn : bab.ab.ab.ab = ba.ba.ba.bab 27/56 27/ 56 M t s khái ni m khác Các phé phép toá toán ngôn ng K t h p bà toá toán P v i ngôn ng đ c tr ng (characteristic language) LP* Ngôn ng LP = { w D * | l i gi i f(w) = true } Ngôn ng m t t p h p đó có th áp d ng cá phé phép toá toán t p h p : i v i cá ph n t : i v i ngôn ng : Cho L1, L2 và L là ngôn ng , cá phé phép toá toán: Phé Phép h p L1 L2 = {w | w L1 ho c w L2} Phé Phép giao L1 L2 L1 L2 = {w | w L1 và w L2} Phé Phép hi u L1 – L2 = {w | w L1 và w L2} L Phé Phép bù bù L’ = {w | w L} ho c L’ L’ = * - L Bài toá toán ng c C P nh n đ c t P b ng cá cách : LP gi nguyên cá cách bi u di n cá d li u * đ t ng c l i câu h i Ngôn ng LCP = { w D * | Không l i gi i, hay f(w) = false } Ví d : Bà Bài toá toán 1’ 1’ : D li u : Cho m t s nguyên vi t h 10 Câu h i : S nguyên nà không ph i là m t s nguyên t ? Máy gi i (solve) bà toá toán P n u và ch n u : w *, má máy cho phé phép xá xác đ nh, m t kho ng th i gian h u h n, n u w LP hay w LCP Phân l p cá bà toá toán tù tù y theo đ ph c t p (complexity) M t bà toá toán là t m th 28/56 28/ 56 ng (trivial) n u LP = ho c n u LCP = 29/56 29/ 56 30/56 30/ 56 Các phé phép toá toán ngôn ng Các phé phép toá toán ngôn ng Phé Phép ghé ghép n i : L1L2 = = {w | w = uv, u L1 và v L2} Phé Phép bao đóng (closure) : L* = L0 L1 … Ln … = Phé Phép ngh ch đ o : LR = {w | wR L} Phé Phép bao đóng d ng : L+ = L1 L2 … Ln … = Phé Phép l y th a : Ln = LL… LL…L (n l n) Li = LLi-1 = Li-1L v i i>0 L0 = { {} Ví d : Ghép n i L1 có m câu, L2 có n câu, đ c ngng có m.n ??? câu Là Là b b n n ss cc aa tích tích êCac êCac (Cartesian (Cartesian Product) Product) Cho L = { tic, tic, tac, tac, toe toe } : L2 = LL = { tictic, tictac, tictoe, tactic, tactac, tactoe, toetic, toetac, toetac, toetoe } L i L i 1 Nh n xé xét : L+ = LL* = L*L L* = L+ { } Ví d : i Cho L = { tic, tic, tac, tac, toe toe } : i Khái Khái ni ni m m hh uu hh n, n, vô vô hh nn đđ cc hi hi uu nh nh th th nào ?? •Liên •Liên quan quan đđ nn các ph ph nn tt cc aa m m tt tt pp hh pp :: khái khái ni ni m m đđ m m (li (li tt kê) kê) đđ cc •Ng •Ng ii ta ta đđ tt song song ánh ánh các ph ph nn tt vv ii ss tt nhiên nhiên •h •h uu hh nn ?? tt pp hh pp có có nn ph ph nn tt ,, nK0 then while OK and i