lý thuyết tính toán

54 116 0
lý thuyết tính toán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TR I H C À N NG NG I H C BÁCH KHOA KHOA CÔNG NGH THÔNG TIN LÝ THUY T TÍNH TOÁN PGS.TS PHAN HUY KHÁNH À N NG 1999 Lý thuy t tính toán III.7 M CL C CH NG NH P MÔN LÝ THUY T TÍNH TOÁN I CÁC I T NG C X LÝ TRONG TIN H C II CÁC MÁY (MACHINES) II.1 Khía c nh ch c n ng (functional look) II.2 Khía c nh c u trúc (structural look) III MÔ HÌNH TÍNH TOÁN IV NH NGH A BÀI TOÁN CH NG CH NG MÔ HÌNH CÁC MÁY TURING 25 I MÔ T VÀ HO T NG C A MÁY TURING 25 I.1 Mô t máy Turing 25 I.2 Ho t đ ng c a máy Turing 26 I.3 C u hình xu t phát c a máy Turing 29 I.4 Máy Turing đ n đ nh 29 II CAC HAM T−TINH D C 30 III L P CÁC HÀM T−TÍNH C 32 III.1 M t s hàm s c p 32 III.1.1 III.1.2 III.2 III.3 III.4 Các hàm k ti p (successor functions) 33 Các hàm k tr c (predecessor functions) 34 S h p thành (composition) 34 III.3.1 III.3.2 III.3.3 III.5 Các máy đ c tiêu chu n hóa 35 Các máy Turing đ c chu n hóa 36 T h p máy Turing 36 L p trình ngôn ng b c cao máy Turing 37 III.4.1 III.4.2 III.6 Các hàm h ng (constant functions) 32 Các hàm chi u (projection functions) 33 C u trúc if then else c u trúc r nhi u nhánh 37 C u trúc while 38 Qu n lý b nh 39 III.5.1 III.5.2 Máy Turing chuy n m t ô qua ph i 39 Máy Turing ch s d ng ph n b ng bên ph i k t v trí đ u tiên c a đ u đ c-ghi 39 PGS.TS PHAN HUY KHÁNH biên so n Sao chép .40 Ki m tra b ng 41 Li t kê câu, c p câu dãy câu .41 Các hàm chi u ng c (antiprojection function) 42 Các hàm giao hoán .42 IV.2.1 IV.2.2 IV.2.3 IV.2.4 IV.2.5 Máy Turing có k b ng 48 Các máy off−line máy có b ng 49 Các máy Turing không đ n đ nh 49 Thu g n m t b ng ch ba ký t 50 Rút g n m t b ng ch hai ký t 52 III.7 Các hàm T-tính đ c ph c t p h n 42 III.8 Nh n xét 43 IV CÁC BI N TH KHÁC C A MÔ HÌNH MÁY TURING 46 IV.1 Mô ph ng m t máy Turing b i m t máy khác 46 IV.2 Các bi n th c a máy Turing .48 MÔ HÌNH CÁC MÁY RAM I CÁC MÁY RAM II MÔ PH NG M T MÁY B I M T MÁY KHÁC 16 III M T MÔ HÌNH THÔ S KI U RAM 19 III.1 Mô ph ng phép toán chu i ký t b i phép toán s nguyên 19 III.2 Thu g n t p h p l nh ng t 20 III.3 Thu g n t p h p l nh s h c 20 IV MÁY RAM V N N NG 22 M t s máy Turing thông d ng 40 III.6.1 III.6.2 III.6.3 III.6.4 III.6.5 IV.3 Các máy Turing có b ng vô h n m t phía 52 V MÁY TURING V N N NG .53 − VI CH I T N T I CAC HAM KHONG LA T TINH D NG LU N C 55 CHURCH 59 S T NG NG GI A CÁC MÔ HÌNH MÁY TURING VÀ MÁY RAM 59 I.1 M i hàm T-tính đ c c ng R−tính đ c 59 I.2 M i hàm R−tính đ c c ng T−tính đ c .60 I.2.1 I.2.2 I.2.3 I.2.4 I.2.5 T ng n i dung ghi n lên .60 Gi m n i dung ghi n 60 a n i dung ghi n v 60 Nh y theo n i dung ghi n 61 Hoán v n i dung hai ghi n m 61 I.3 S khác gi a máy Turing máy RAM 61 II MÔ HÌNH CÁC HÀM QUY 62 II.1 Các hàm đ quy nguyên th y (primitive recursive functions) 62 II.1.1 II.1.2 II.1.3 II.1.4 II.1.5 II.2 II.2.1 II.2.2 II.2.3 II.3 II.3.1 II.3.2 II.3.3 Xây d ng hàm s c p 62 S đ h p thành t ng quát 62 S đ đ quy đ n (simple recurrence) 63 S đ đ quy đ ng th i 63 Các hàm đ c đ nh ngh a b i case 65 Các hàm đ quy 67 S đ t i thi u 67 Các hàm đ quy tr u t ng (abstract recursive functions) 68 M t s ví d 68 Các hàm đ quy đ u T−tính đ c .70 S đ h p thành t ng quát 70 S đ đ quy đ n 70 S đ t i thi u 71 II.4 M i hàm T−tính đ c đ quy b ph n 71 III LU N CHURCH 73 Nh p môn lý thuy t tính toán CH NG CÁC BÀI TOÁN KHÔNG QUY T NH C 77 I CÁC NGÔN NG LI T KÊ QUY VÀ CÁC NGÔN NG QUY 77 II CÁC BÀI TOÁN KHÔNG QUY T NH C 82 III THU T TOÁN RÚT G N M T BÀI TOÁN V BÀI TOÁN KHÁC 83 CH NG PH C T P TÍNH TOÁN 93 I PH C T P V TH I GIAN VÀ V B NH 93 II CÁC L P C A PH C T P 95 II.1 Hi n t ng nén 96 II.2 Các h P, NP P−b nh (P−space) 97 − III RUT G N DA TH C VA CAC BAI TOAN NP D Y D 98 III.1 Khái ni m 98 III.2 Các toán c n 99 III.3 Ví d v rút g n ki u đa th c 100 CH Lý thuy t tính toán ng i ta s p x p câu theo m t th t phân c p (hierechical order), đ u tiên theo đ dài câu, sau theo th t t v ng (lexicography), hay th t ABC Ví d : Cho S = {a, b, c}, v i gi thi t th t phân c p c a ký t a < b < c, ta có th đánh s câu c a S* (k c câu r ng e) b t đ u t tr nh sau : NG Nh p môn lý thuy t tính toán e1 (Introduction to the theory of computation) It’s not bad being the small fish I Các đ i t ng đ cx lý Tin h c Trong Tin h c, đ i t ng (objects) đ c x lý thông th ng nh ng ph n t thu c vào nh ng t p h p vô h n đ m đ c Nh ng ph n t luôn đ c bi u di n (represented) d i m t d ng Ch ng h n ngôn ng t nhiên, s nguyên 1999 đ c bi u di n h đ m c s 10 (h th p phân) g m m t dãy b n ch s th p phân thu c b ng ch s {0, 1, , 9} Vi c x lý (th c hi n phép toán s h c thông th ng) đ i v i s nguyên đ c ti n hành cách bi u di n c s 10 Ví d : Phép c ng hai s 1999 + = 2000 Ng i ta gi thi t r ng đ i t ng đ c x lý nh ng câu (word, hay sentence) đ c xây d ng m t b ng ch (alphabet) h u h n, đ c xem nh s bi u di n c a đ i t ng m t b n ch t khác nh ngh a 1.1 : M t b ng ch S m t t p h p h u h n ch (letters), ký t (symbols, hay characters) S l ng ký t , g i b n s (cardinality) hay l c l ng c a S, đ c ký hi u ||S||, hay |S|, n u không s nh m l n M t câu, hay m t t , b ng ch S cho m t dãy h u h n ký t c a b ng ch S đ c vi t liên ti p dài (length) c a m t câu (trên b ng ch S cho) s l ng ký t có m t câu Câu r ng (empty word), đ c ký hi u e (ω ho c e, ho c l), câu có đ dài không, t c không ch a ký t Ghép (concatenation) c a hai câu đ t k ti p hai câu cho (trên dòng) đ nh n đ c m t câu m i B ng cách ghép liên t c nh v y cho m i ký t , m i câu c a S, ta nh n đ c m t t p h p ch a m i câu có th S, ký hi u S* Ng i ta nói S*là m t c u trúc đ ng đ ng (nonoide), mà ph n t trung hòa (neutral element) câu r ng Cho tr c m t b ng ch S, ng i ta đ nh ngh a m t quan h có th t toàn ph n (total order) S* nh sau : cho m t th t tùy ý ký t c a S, PGS.TS PHAN HUY KHÁNH biên so n a2 aa ab b3 ac ba bb c4 bc 10 ca 11 cb 12 cc 13 aaa 14 aab 15 aac 16 Hình 1.1 Th t phân c p S* II Các máy (machines) II.1 Khía c nh ch c n ng (functional look) M t máy (machine) đ c bi u di n m t cách h th ng nh sau : D li u vào D li u Máy Hình 1.2 Khía c nh ch c n ng c a m t máy l i vào, ng i ta cung c p m t ho c nhi u d li u (data) cho máy, l i ra, i ta nh n đ c k t qu (result) Gi thi t r ng d li u vào có d ng dãy ký t , m t câu m t b ng ch cho (vào t bàn phím ch ng h n) K t qu m t ph n t c a m t t p h p xác đ nh tr c (predefini) Ng i ta phân bi t ki u máy (machine type) tùy theo b n ch t c a t p h p k t qu nh sau : N u t p h p ch có hai ph n t { không, có } hay {0, 1}, máy s chia d li u vào thành ba ph n tùy theo k t qu : T p h p câu b ng ch vào sau đ c x lý s cho m t k t qu có (đúng, true), ho c không (sai, false) T p h p câu mà máy đ a m t k t qu khác T p h p câu b ng ch vào mà máy không cho k t qu ng Nh p môn lý thuy t tính toán Các t p h p t o thành ngôn ng (language) Hai t p h p đ u bù n u v i m i d li u vào, máy đ u cho m t k t qu Ng i ta g i máy đoán nh n (recognition machine) câu N u k t qu m t dãy h u h n ký t , ta nh n đ c m t câu m t b ng ch G Cho S b ng ch vào, máy xác đ nh m t hàm f t S* vào G*, ta vi t : f : S * → G* ngh a v i m t câu vào w ∈ S*, f(w) ∈ G* Ng i ta nói máy th c hi n hàm f N u v i m i câu vào w ∈ S*, máy đ u cho m t k t qu f(w) ∈ G*, f đ c g i hàm toàn ph n (partial function) Ng i ta g i máy tính toán (computation machine) hay máy tính Chú ý r ng ki u máy th nh t (máy đoán nh n) mà v a phân bi t th c ch m t tr ng h p đ c bi t c a ki u máy th hai (máy tính) N u k t qu m t dãy vô h n ký t b ng ch s d ng ch có t i thi u hai ký t , có m t d u phân cách (separator) #, ng i ta nh n đ c k t qu m t dãy liên ti p câu phân cách b i d u #, t o thành m t ngôn ng Ng i ta g i ngôn ng li t kê đ c (enumerated) b i máy II.2 Khía c nh c u trúc (structural look) đây, ta ch quan tâm đ n máy đ c mô t đ y đ v ch c n ng ho t đ ng c a chúng Nh ng máy có thê : Th c hi n phép toán s c p (elementary operation) m t kho ng th i gian h u h n M i phép toán, gi thi t không chia c t nh h n đ c, đ c ch n m t t p h p h u h n phép toán m t ph n mô t c u trúc máy L n l t th c hi n phép toán s c p theo m t th t xác đ nh tr c, t o thành m t ch ng trình (program), m t ph n mô t c u trúc máy M t dãy phép toán s c p đ c máy th c hi n liên ti p đ c g i m t tính toán (computation) c a máy Lý thuy t tính toán III Mô hình tính toán Thay ph i thay đ i l i máy tính m i l n thay đ i toán c n gi i, ng i ta đ nh ngh a l p máy có nguyên lý ho t đ ng chúng ch khác ch ng trình Ng i ta g i mô hình tính toán (model), ký hi u T, s mô t t t c phép toán s c p có th đ c th c hi n nh ng đ i t ng nào, cách tác đ ng lên m i m t chúng nh th nào, mô t cách th c ch ng trình đ c th c hi n (execution) máy M t tr ng h p riêng (instance) c a mô hình m t máy bi t l p đó, g i t t máy, ho t đ ng theo cách mô hình tính toán ch Máy đ c đ nh ngh a b i d li u vào c a ch ng trình : Mô hình + Ch ng trình = Máy M t m t mô hình tính toán T đ v n đ đ t đ có th bi t : c đ nh ngh a, đ − l p ngôn ng đoán nh n đ ho c − l p hàm tính đ c g i T−nh n bi t đ c (recognized), đ c (computable), đ c g i m t T−máy, c g i T−tính đ − l p ngôn ng li t kê đ c (enumerable) đ b i m t máy c a mô hình ? c, c, ho c c g i T −li t kê đ Hai mô hình tính toán đ c, c đ a so sánh v i : m t mô hình T1 đ nói m nh h n so v i m t mô hình T2 n u : − m i ngôn ng T2−nh n bi t đ − m i hàm T2-tính đ c c ng T1−nh n bi t đ c c ng T1−tính đ − m i ngôn ng T2-li t kê đ c c, ho c c, ho c c c ng T1-li t kê đ c Hai mô hình đ c g i t ng đ ng (equivalent) n u m i mô hình m nh h n mô hình ng c l i Hai mô hình không th so sánh v i đ c n u không t n t i mô hình đ m nh h n mô hình Nh p môn lý thuy t tính toán IV nh ngh a toán Trong Tin h c lý thuy t, đ nh ngh a v toán (problem) có vai trò đ c bi t quan tr ng, khác v i khái ni m thông th ng v toán đ c dùng l nh v c Toán h c ho c hi u theo ngh a thông d ng nh ngh a 1.2 : M t toán : − S mô t cách bi u di n (h u h n) ph n t c a m t t p h p h u h n hay vô h n đ m đ c − M t phát bi u liên quan đ n ph n t c a t p h p này, có th đúng, ho c có th sai tùy theo ph n t đ c ch n Sau m t s ví d : Bài toán : D li u: M t s nguyên vi t h 10 Câu h i : S nguyên cho có s nguyên t hay không ? Bài toán : D li u : M t s nguyên vi t h 10 Câu h i : Có ph i s nguyên đ c vi t d i d ng t ng c a s bình ph ng ? Bài toán : D li u : M t s nguyên vi t d i d ng tích c a s h ng h 10 Câu h i : S nguyên cho có s nguyên t hay không ? Bài toán : D li u : M t đ th h u h n đ c bi u di n b i m t danh sách g m đ 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 m t đ 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 ? Bài toán : D li u : M t bi u th c quy (regular expression) đ c xây d ng m t b ng ch S (là m t bi u th c nh n đ c t câu w∈S* b i phép ho c, phép ghép ti p, phép * l y bù) Câu h i : Có ph i bi u th c cho bi u di n (hay ch đ nh) m t ngôn ng tr ng (empty language) hay không ? Bài toán : D li u : M t dãy h u h n 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 ? Lý thuy t tính toán Vi c bi u di n t ng minh d li u m t thành ph n c a toán i u đóng vai trò đ c bi t quan tr ng ng i ta quan tâm đ n đ ph c t p (complexity) c a m t toán M i d li u s t o thành m t tr ng h p cá bi t c a toán, đ c bi u di n b i m t câu m t b ng ch h u h n cho V i m i toán P đ c h p thành t m t bi u di n ph n t c a m t t p h p t m t phát bi u liên quan đ n ph n t này, ng i ta th ng k t h p toán P v i m t ngôn ng , g i ngôn ng đ c tr ng (characteristic language) c a toán, đ c h p thành t t p h p câu bi u di n m t ph n t c a t p h p đ t đó, k t qu c a toán câu tr l i Ng i ta ký hi u LP ngôn ng đ c tr ng c a toán P Cho tr c m t toán P, toán ng c l i CP toán nh n đ c t P b ng cách gi nguyên cách bi u di n d li u nh ng riêng câu h i đ t ng c l i Ví d , toán ng c v i toán s : Bài toán 1’ : D li u : Cho m t s nguyên vi t h 10 Câu h i : S nguyên không ph i m t s nguyên t ? T đó, l i gi i m t toán đ a đ n s nh n bi t c a m t ngôn ng : ngôn ng k t h p v i toán Ng i ta đ a đ nh ngh a hình th c sau : nh ngh a 1.2 : M t máy gi i (solve) m t toán P n u ch n u v i m i câu f bi u di n m t ph n t c a t p h p liên quan đ n toán này, máy cho phép xác đ nh, m t kho ng th i gian h u h n, n u câu thu c v LP hay LCP Ng i ta phân l p toán tùy theo đ khó (difficulty) đ đ a câu tr l i t d li u vào cho M t toán t m th ng (trivial) n u LP = ∅ ho c n u LCP = ∅ Th t v y, tr ng h p này, không c n thi t bi t d li u đ a vào đ đ a câu tr l i Chú ý r ng, nh ng t m th ng, vi c đ a câu tr l i, nh ng có th r t khó đ ch ng minh r ng toán t m th ng theo ngh a Ví d , toán t m th ng Các toán có câu h i, nh ng toán gi i quy t r t d dàng : ch c n đ c qua d li u vào, ng i ta có th đ a k t qu , nhiên toán c n ph i x lý d li u vào Bài toán ph c t p h n : ng i ta ch a bi t ph ng pháp ho t đ ng m t cách đ n đ nh (deterministic) tiêu t n m t l ng th i gian đa th c (polynomial times) đ gi i quy t v n đ đ t i v i toán tính ph c t p l n h n n a : ng i ta bi t r ng m i ph ng pháp đ u ho t đ ng theo th i gian t i thi u l y th a Cu i toán không th gi i đ c theo ngh a đ a Bài toán đ c g i toán t ng ng Post (Post’s correspondence problem) Nh p môn lý thuy t tính toán Bài t p 1) Ch ng minh r ng m t t p h p E h u h n hay vô h n đ m đ c n u t n t i m t đ n ánh t E vào N T ng t , n u t n t i m t toàn ánh (surjection) t Ν vào E 2) Ch ng minh r ng tích ê-cac c a hai t p h p vô h n đ m đ c c ng m t t p h p vô h n đ m đ c 3) Ch ng minh t p h p sau vô h n đ m đ c : N×N, Q, t p h p Ν* g m dãy s nguyên, S*, S*×G*, S*×N, t p h p (S*)* g m dãy câu Th hi n song ánh (bijection) gi a N m i m t t p h p v a nêu 4) Cho S m t b ng ch kích th c (b n s ) n V i m i câu w∈S*, ký hi u |w| đ dài c a w m(w) s th t c a w th t phân c p cho Hãy tìm cách tính m(w) bi t w 5) Ch ng minh r ng NN không ph i vô h n đ m đ c T p h p ch ng trình Pascal có ph i vô h n đ m đ c hay không ? T p h p hàm f: N → N tính đ c nh m t ch ng trình Psacal có vô h n đ m đ c hay không ? T suy r ng t n t i hàm t N vào N không vô h n đ m đ c nh m t ch ng trình Pascal 6) Vi t m t ch ng trình đ li t kê : − c p s nguyên − dãy h u h n s nguyên − câu m t b ng ch h u h n (ch ng h n S={a, b, c}) − c p câu − dãy h u h n câu 10 Lý thuy t tính toán x1 Ch CH ng trình NG Mô hình máy RAM « I like the dreams of the future better than the history of the past » Jefferson I i Máy RAM m t mô hình tính toán r t g n v i máy tính n t ngôn ng assembler Máy RAM có thành ph n đ c tr ng chung nh sau : M t b ng vào, hay d i vào (input tape) đ c chia thành nhi u ô (square hay pigeonhole) liên ti p nhau, m i ô ch a m t s nguyên ho c m t ký t M t đ u đ c (read head) đ c l n l t n i dung t ng ô b ng vào, đ c t trái qua ph i M t b ng (output tape) c ng chia thành nhi u ô liên ti p m t đ u ghi (write head) có th ghi m i l n lên m t ô ti n t trái qua ph i Ng i ta nói r ng đ u đ c (ho c ghi) đ c đ t (t i) m t ô di chuy n qua ph i m i l n m t ô Tr c tiên, ta xem r ng m i ô ch a m t s nguyên có th l n tu ý B ng vào b ng c a máy RAM đ c g i c quan vào/ra Máy RAM có thành ph n bên nh sau : Các ghi (registers) ph n t nh đ c đánh s th t , s l ng ghi có th l n tu ý M i ghi có th l u gi m t s nguyên Các ghi l n l t đ c đ t tên R0, R1, R2, , Rn Ch s i, i = 0, 1, 2, , đ c g i đ a ch (address) c a m i ghi (hay c a b nh ) Riêng R0 m t ghi đ c bi t, đ c g i t ng (ACC − accumulator) hay tích lu M t t p h p đ n v nh đ c đánh s ch a ch ng trình c a máy RAM d i d ng m t dãy l nh s c p (primary instructions) không b thay đ i trình ch y (th c hi n) M i l nh đ c l u tr m t đ n v nh , đ c đánh s t ng ng v i s th t hay nhãn c a l nh (label) M t đ n v nh ch a s th t c a l nh đ c th c hi n, đ c g i đ m l nh (OC − Ordinal Counter) Lúc đ u n i dung c a OC Trong ki u máy này, ng i ta truy c p tr c ti p đ n m i ghi b i đ a ch c a ghi Chính lý mà ki u máy đ c đ t tên Random Access Memory (vi t t t RAM) xn j R0 R1 Ri p Rn B ng vào Thanh t ng Các ghi Thanh đ m l nh y1 Các máy RAM PGS.TS PHAN HUY KHÁNH biên so n x2 y2 y3 B ng Hình 2.1 S đ m t máy RAM M i ch ng trình c a máy RAM g m m t dãy l nh s c p, m i l nh đ thành t thành ph n : mã l nh (operation code) toán h ng (operand) : Mã l nh ct o Toán h ng Các l nh đ c phân thành nhóm theo ch c n ng c a ph n mã l nh nh sau : Nhóm l nh gán : LOAD Operand STORE Operand Nhóm l nh s h c : INCR Operand DECR Operand AD Operand SUB Operand MULT Operand DIV Operand Nhóm l nh nh y (hay l nh ng t, c ng g i l nh chuy n u n) : JUMP Label JGTZ Label JZERO Label HALT Nhóm l nh vào − : READ Operand WRITE Operand Mô hình máy RAM 11 Theo nguyên t c đ a ch , ph n toán h ng đ a ch (address) c a toán h ng tham gia phép toán ch đ nh b i ph n mã l nh Toán h ng có th m t ba ki u sau : Ki u đ a ch Ý ngh a S nguyên n Ch n i dung c a ghi th n (Rn) A: n (A = Absolute) toán h ng s nguyên n I: n (I = Indirection) toán h ng n i dung c a ghi có s th t n i dung c a ghi Rn ây ki u l nh gián ti p N u l nh m t l nh nh y đ a ch s th t c a l nh ch ng trình Các l nh c a máy RAM n hình cho l nh c a ngôn ng assembler Tuy nhiên v ng m t l nh x lý ký t l nh logic nh m đ n gi n cách trình bày Th t th c hi n l nh c a ch ng trình tu n t (on sequence), b t đ u t l nh đ u tiên (có nhãn 1) Ngo i l nh t g p l nh nh y (hay chuy n u n) l nh ti p theo đ c th c hi n có nhãn ch đ nh b i l nh nh y Nguyên t c th c hi n nh sau : OC luôn ch a nhãn c a l nh s đ c th c hi n, lúc đ u n i dung OC Sau th c hi n l nh, n i dung OC đ c t đ ng t ng thêm (increment) n u nh l nh v a th c hi n không l nh nh y N u nh l nh v a th c hi n l nh nh y n i dung c a OC l y nhãn ph n đ a ch c a l nh nh y Sau s d ng m t s quy c đ gi i thích cách th c hi n l nh ← d u gán ; quy c s nguyên i n m bên trái d u gán ch ghi th i Ri, s nguyên i n m bên ph i d u gán ch giá tr s nguyên i Ch n i dung c a ghi Ri Ch n i dung c a ghi có s th t đ c ch a ghi Ri đ i v i ki u l nh gián ti p ACC Ch ghi R0 CO Ch đ m l nh N i dung c a CO Sau b ng l nh RAM ý ngh a s d ng c a chúng 12 Lý thuy t tính toán L nh LOAD LOAD LOAD STORE STORE INCR DECR ADD SUB MULT DIV JUMP JGTZ JZERO n A: n I: n n I: n n n n n n n n n n Ý ngh a ACC ← ACC ← giá tr n ACC ← n ← ← n ← + n ← - ACC ← + ACC ← − ACC ← × ACC ← / CO ← n CO ← n n u ≥ CO ← n n u = C hai tr ng h p trên, n u không th a mãn, CO ← + HALT D ng máy READ n n ← s nguyên ô d i đ u đ c c a b ng, đ u đ c d ch m t ô qua ph i WRITE n N i dung đ c ghi vào ô d i đ u ghi, đ u ghi d ch qua ph i m t ô Ví d 2.1 : Ch ng trình RAM sau đánh giá tr n! READ đ c m t giá nguyên n vào ACC JZERO 10 n u n = 0, nh y đ n nhãn 10, n u không, th c hi n l nh ti p theo STORE R1 ← 4: STORE R2 ← DECR R ← < R1 > − LOAD ACC ← JZERO 12 n u = nh y đ n 12 MULT ACC ← * JUMP CO ← 10: LOAD A: ACC ← STORE R2 ← 12 : WRITE ghi HALT D ng máy Mô hình máy RAM 13 Ví d 2.2 : Ch ng trình RAM tính nn READ R1 ← s nguyên ô c a b ng vào LOAD ACC ← JGTZ n u ≥ 0, nh y đ u WRITE A:0 in JUMP 22 v l nh d ng : LOAD ACC ← STORE R2 ← LOAD ACC ← DECR ACC ← − STORE R3 ← 11 : LOAD ACC ← JGTZ 14 n u ≥ 0, nh y đ n 14 JUMP 21 nh y đ n 21 n u < 14: LOAD ACC ← MULT STORE LOAD DECR STORE JUMP 11 21: WRITE 22: HALT ACC ← * R2 ← ACC ← ACC ← − R3 ← nh y đ n 11 in n i dung d ng Ta có th vi t đo n trình Pascal minh h a trình RAM nh sau : begin read (R1) if R1 < then write (R0) else begin R2:= R1 ; R3:= R1 − ; while R3 > begin R2:= R2*R1 ; R3:= R3–1 end ; write (R2) end end ; Ta th y m t trình RAM xác đ nh m t ánh x t t p b ng vào lên t p b ng ây ánh x b ph n (partial map) m t s ánh x có th không xác đ nh m t s b ng vào, ngh a ch ng trình ng v i b ng vào không d ng Ta có th gi i thích ánh x d i hai d ng : d ng hàm d ng ngôn ng 14 Lý thuy t tính toán D ng hàm f : S* → S* Gi s ch ng trình P đ c đ c t b ng vào n s nguyên x1, x2, , xn ghi lên b ng không m t s nguyên y ô đ u tiên, ta nói P tính hàm f (x1, x2, , xn) = y D ng ngôn ng L ⊆ S* Gi s b ng vào có câu w = a1a2 an v i ô th i, i = n, ô th n+1 ch a # ký t k t thúc dãy Ta nói w đ c th a nh n b i ch ng trình RAM n u đ c đ c h t w, k c ký t #, sau vi t lên ô đ u tiên c a b ng m t ký t k t qu d ng Ta nói máy RAM th a nh n m t ngôn ng L cho n u th a nh n m i câu w∈L N u w∉L máy RAM có th không đ c h t w, ghi ký t k t thúc lên b ng ra, ho c b hóc (crash), ho c không bao gi d ng S khác c b n gi a mô hình máy RAM v a mô t máy tinh n t hi n ch : 1) Ta gi thi t có th s d ng m t s l n tùy ý ghi, nhiên th c t u r t khó th c hi n T ng t , ta gi thi t có th đ t m t s nguyên l n tùy ý vào m t ghi đó, ho c vào m t ô b ng vào, ho c b ng Nh ng u c ng r t khó th c hi n th c ti n 2) Ta gi thi t r ng ch ng trình có s n b nh RAM ch có th đ c (không th b thay đ i ch y ch ng trình), khác v i b nh ki u ghi i u c ng không x y v i máy tính thông d ng S khác chi ti t nh sau : 3) Các l nh s c p đ c ch n h n ch h n so v i ngôn ng assembler Tuy nhiên, ng i ta có th nói r ng v n không làm m t tính t ng quát n u gi m đáng k t p h p l nh s c p 4) Các d li u đ a vào không ph i d i d ng s nguyên đ c đ c toàn b m t l n m t ô, mà d i d ng m t dãy ký t (m t dãy ch s ), t ng t nh v y đ i v i k t qu Ta xem làm cách đ gi i quy t v n đ 4) đ t : Trong máy tính, s nguyên th ng đ c bi u di n theo hai cách phân bi t bi u di n th p phân, ho c bi u di n nh phân Cách bi u di n nh phân có l i th h n ch s d ng hai ch s Máy tính s chuy n đ i chu i ký t bi u di n s nguyên thành bi u di n nh phân đ đ t ghi, sau chuy n đ i k t qu d ng bi u di n nh phân c a s nguyên thành chu i ký t b ng i m 1) có ngh a : m i tr ng h p, kích th c c a toán c n gi i đ bé đ b nh máy tính có th ch a h t d ng nh phân đ n v nh , hay t nh (memory word) Chú ý r ng n u ch làm vi c v i cách bi u di n s nguyên b i chu i ch s không gi thi t s l n tùy ý n a 73 Mô hình máy RAM S(f, k + 1) = ns (S(f, k), C(f, k)) L(f, k+1) = [ L(f, k) ] div n =n × L(f, k) + nc(S(f, k), C(f, k)) n u mh(S(f, k), C(f, k)) = L n u mh (S(f, k), C(f, k)) = R R(f, k + 1) = n × R(f, k) + nc (S(f, k), C(f, k)) =[ R(f, k) ] div n n u mh (S(f, k), C(f, k)) = L n u mh (S(f, k), C(f, k)) = R đây, ta vi t theo cách vi t s h c Tuy nhiên có th d ch đ nh ngh a theo cách vi t câu Các hàm S, L R đ c đ nh ngh a b i phép đ quy đ ng th i nh hàm đ quy nguyên thu , nên chúng đ quy nguyên thu Rõ ràng, trình tính toán c a máy T d li u vào f d ng n u ch n u t n t i m t s nguyên k cho S(f, k) = qN Khi ta có k t qu c a phép tính b ng, ngh a k t qu câu ngh ch đ o c a R(f, k) T đó, ta có: Lý thuy t tính toán đ u ch a cho phép đ nh ngh a m t l p hàm tính đ c r ng h n V i m t s nhà nghiên c u, l p hàm l p l n nh t mà ng i ta có th đ nh ngh a nh m t mô hình tính toán Ni m tin đ i v i l p hàm tính đ c m t cách máy móc (mechanically) đ c th hi n qua lu n đ Church (Church's thesis, hay Church-Turing thesis) phát bi u nh sau : LU N CHURCH M i hàm tính đ c m t cách máy móc Turing-tính đ c ch ng minh lu n đ Church, ta c n so sánh th t c hi u qu ¢ (effective procedure) m t khái ni m tr c giác v i máy Turing m t khái ni m hình th c Do đó, ta c n hình th c hoá khái ni m v th t c hi u qu Nh ng đó, ta l i ph i gi i quy t v n đ có s t ng đ ng gi a ph ng pháp hình th c hoá đ a khái ni m tr c giác hay không ? L i gi i c a v n đ l i n y sinh m t lu n đ Church khác nh v y, ta s đ n m t s truy lùi vô h n Nh ng m t ch p nh n lu n đ Church, t n t i hàm không T-tính đ t n t i hàm không tính đ c m t cách máy móc F(f) = mir (R(f, mk[ S(f, k) = qN ])) V y qu th t F m t hàm đ quy b ph n QED Chú ý: Trong cách xây d ng đây, ta th y r ng n u máy Turing T luôn d ng, giá tr mk[ S(f, k) = qN ] luôn xác đ nh, v y F toàn ph n Cách xây d ng ch r ng t t c hàm đ quy b ph n có th đ cách s d ng m t l n nh t s đ t i thi u 74 c vi t b ng c C ng có th gi thi t r ng ng i ta s d ng m t c ch m i cho phép nh n đ c m t l p hàm l n h n, tính có h n c a vi c mô t ph n t tuân theo c ch s d n đ n m t t p h p đ m đ c hàm tính đ c b i c ch này, b i k thu t đ ng chéo, ng i ta c ng có th ch r ng, hàm r i t p h p Nh v y, ta kh ng đ nh r ng, không th tính toán đ c h t (gi i h t toán) nh máy tính Ch ng sau s ch m t s toán không th gi i đ c b ng máy tính III Lu n đ Church Cho đ n lúc này, ta nghiên c u m t s mô hình tính toán : − Mô hình máy RAM (và máy RASP), r t g n v i ch c n ng c a m t máy tính ch y ngôn ng assembler − Mô hình máy Turing, xa h n mô hình RAM, nh ng đó, ta tìm th y m t s v n đ c a máy th c nh máy x lý d li u, qu n lý b nh , v.v − Mô hình hàm đ quy, t S* → S*, nh ng v n đ v a xét không đ t ra, nh ng l i gi nguyên nh ng v n đ v bi u di n d li u − Cu i ta c ng xét mô hình hàm đ quy tr u t ng thao tác đ i t ng (các b −n c a s nguyên) không đ c bi u di n Ta th y r ng l p hàm tính đ c nh ph n t c a m i m t mô hình luôn nh H n n a, nh ng mô hình khác đ c nghiên c u cho đ n nh : − v n ph m (grammar), − h vi t l i (rewriting system), − thu t toán Markov (Markov algorithm), − phép tính l (l-calculus), − h Post (Post systems), − h L, v.v , Bài t p ng minh r ng hàm sau đ quy nguyên thu : remainder (n, m) = ph n d c a phép chia n cho m power (n, m) = nm factorial (n) = n! divesiontest (n,m) = n u n chia h t m = n u n không chia h t m e) primetest (n) = n u n s nguyên t = n u n không ph i s nguyên t f) prime (n) = s nguyên t th n g) exponent (n, m) = max { k ∈ Ν | mk chia h t cho n } Ta đ nh ngh a s đ t i thi u b ch n mink b i : xu t phát t m t hàm f, mink (f) m t hàm h đ c xác đ nh b i : h(m) = s bé nh t y ≤ k cho f (y, m ) = n u m t s y nh v y t n t i = n u không Ch ng minh r ng n u f m t hàm đ quy nguyên thu , mink (f) c ng hàm đ quy nguyên thu Ch a) b) c) d) ¢ Ta có th đ ng nh t thu t ng v i thu t toán 75 Mô hình máy RAM a) Cho hàm c đ c đ nh ngh a b i : Ch ng minh r ng c m t đ n ánh đ quy nguyên thu t Ν × Ν → Ν Cho d hàm "ng c l i" t Ν → Ν × Ν đ d(p) = (n, m) ⇔ c (n, m) = p c đ nh ngh a b i : c) Ch ng minh r ng A không làm t ng m t hàm Ai khác Hãy ch ng minh r ng d, d1 d2 đ u hàm đ quy nguyên thu b) Phép mã hoá dãy s nguyên d i đ c g i phép đánh s Gdel : g : N* → N đ c đ nh ngh a b i : g (i1, i2, , ir) = i i p i i r v i pi s nguyên t th i Hãy ch ng minh r ng g g-1 hàm đ quy nguyên thu c k Gi s n ánh x t S* → Ν đ đánh s câu Cho S b ng ch có th t kích th theo th t phân c p Ch ng minh r ng hàm sau đ u đ quy nguyên thu : n u i > | n-1 (n) | n u i ≤ | n-1 (n) | - letter (i, n) = letter (i, n) = s th t c a ký t th i c a câu n-1(n) - factor (i, j, n) = s th t c a th a s c a câu n-1(n) b t đ u t ký t th i k t thúc ký t th j n u i ≤ j ≤ | n-1 (n) | = n u n-1(m) m t th a - factortest (m,n) s c a n-1(n) = n u không ph i Cho ri hàm đ quy toàn ph n th i phép đánh s hàm cho Ng i ta c ng đánh s câu theo th t phân c p ký hi u wj câu th j theo th t Ch ng minh hàm toàn ph n f đ c đ nh ngh a b i : f (wi) = successor (ri (wi)) m t hàm đ quy, đ i v i hàm ri f không ph i đ quy Cho h m t hàm, xây d ng t h hàm h~ nh sau: i 0≤ ≤ pi s nguyên t th i Ti p t c đ nh ngh a s đ đ quy t ng quát renrec(f, g) nh sau : xu t phát t hai hàm f g, đ nh ngh a hàm h = renrec(f, g) : h(n, m) = f (m) n un=0 = g (n', h~(n', m), m) n u n = n' + Ch ng minh r ng f m t hàm đ quy nguyên thu , renrec(f, g) c ng hàm đ quy nguyên thu Cho hàm Ackermann t Ν × Ν → Ν: A (0, m) = m + A (n + 1, 0) = A (n + 1) A (n + 1, m + 1) = A (n, A (n + 1, m)) Ng i ta nói r ng hàm g : Ν → Ν làm t ng (increase) hàm f : Νk → Ν n u: ∀x1, x2, , xk : f (x1, x2, , xk) < g (max { x1, x2, , xk }) b) Ch ng minh r ng n u f m t hàm đ quy nguyên thu , t n t i m t s nguyên i cho Ai làm t ng f G i d1 d2 hàm Ν → Ν đ c đ nh ngh a b i : d1(p) = n d2(p) = m ⇔ c (n, m) = p p h (i , m ) + ∏ i n Lý thuy t tính toán G i Ai hàm t Ν → Ν đ c đ nh ngh a b i : Ai (m) = A (i, m) a) Tính giá tr hàm Ai v i i = 0, 1, 2, c(n, m) = 2n + 2n + m + h~ (0, m) = h~ (n + 1, m) = 76 T p h p k hàm đ quy b ph n cho đ m đ c Ký hi u gi hàm th i c a k Hãy ch ng minh đ nh lý Kleene v s tham s hoá (parameterrization) nh sau : ∀ n, p, t n t i hàm đ quy snp : Νn + → Ν cho : ∀x1, x2, , xn+p ∀ i : gi (x1, x2, , xn+p) = gj (xn+1, xn+2, xn+p) v i j = snp (i, x1, x2, , xn) nh lý đ quy c a Kleene : Xét hàm h đ c đ nh ngh a nh sau : n u gj (j) = r xác đ nh h (j, x) = gr (x) = không xác đ nh n u không ph i Cho i s th t c a h, k s th t c a s11 Hãy ki m tra r ng : gi (i, x) = gg (i, j) (x) k gk (i, j) = gs (j) v i s = s11 (k, i) V i m i hàm đ qui f, ng i ta k t h p f v i s nguyên p s th t c a phép h p thành c a f gs, gia s n = gs (p) Ch ng minh r ng ∀x : gn (x) = gf (n) (x) 78 Lý thuy t tính toán Tính toán h p th c không d ng Tính toán h p th c d ng d n đ n m t tr ng thái không thu c A Tính toán h p th c d ng d n đ n m t tr ng thái thu c A CH NG Các toán không quy t đ nh đ c (Undecidable Problems) « Very unlike a divine man would he be who is unable to count one, two, three » Plato I Các ngôn ng li t kê đ quy ngôn ng đ quy Trong m c này, ta s đ nh ngh a ngôn ng li t kê đ quy (recursively enumerable languages) ngôn ng đ quy (recursive languages) nh máy Turing có tr ng thái th a nh n (accepted states) Ta c ng ch đ c m c a chúng d a theo máy li t kê (enumerator machines) nh ngh a 5.1 : M t máy Turing có m t t p h p A tr ng thái tr ng thái th a nh n đ c g i m t máy Turing có tr ng thái th a nh n Lúc máy Turing m t b b n : T = S, Q, P ngh a v i máy Turing thông th ng, A ⊆ Q t p h p tr ng thái th a nh n M t tr ng thái đ c g i lo i b (reject states) n u không ph i tr ng thái th a nh n nh ngh a 5.2 : M t câu f đ c nh n bi t (recognized, accepted) b i m t máy Turing có tr ng thái th a nh n T = n u t n t i m t tính toán h p th c d ng đ chuy n m t c u hình xu t phát có câu vào f b ng v m t c u hình mà tr ng thái c a c u hình thu c A Cho tr c m t câu vào f, x y ba tr ng h p nh sau : Không có m t tính toán h p th c d ng T n t i m t tính toán h p th c d ng t t c tính toán h p th c d ng đ u d n đ n tr ng thái không thu c A T n t i m t tính toán h p th c d ng d n đ n m t tr ng thái thu c A Nh v y, ngôn ng đ c nh n bi t b i m t máy Turing có tr ng thái th a nh n t p h p câu đ c nh n bi t b i máy Trong tr ng h p đ n đ nh, ba tr ng h p đ c phát bi u l i đ n gi n h n nh sau : PGS TS PHAN HUY KHÂNH biên so n 77 M nh đ 5.1 : M t ngôn ng L đ c nh n bi t b i m t máy Turing (không đ n đ nh) có tr ng thái th a nh n (m t cách t ng ng : có m t tính toán d ng cho m i d li u vào) n u ch n u t n t i m t máy Turing đ n đ nh có tr ng thái d ng (m t cách t ng ng : có m t tính toán h p th c d ng d n đ n m t tr ng thái thu c A) th a nh n ngôn ng Ch ng minh : Ta ch c n ch ng minh đ c tr ng c n thi t c a m nh đ Mu n v y, ch c n ki m tra n u T m t máy Turing có tr ng thái d ng không đ n đ nh nh n bi t ngôn ng L, vi c xây d ng m t máy Turing đ n đ nh T’ mô ph ng máy T có tr ng thái th a nh n nh n bi t L Ta c ng ch r ng n u T có m t tính toán d ng cho m i câu vào, T’ c ng có tính toán d ng cho m i câu vào C n c vào m nh đ này, t nay, ta ch c n xem xét máy Turing đ n đ nh mà M nh đ sau có ngh a r ng s nh n bi t (recognition) theo ki u m i (không d ng m t tr ng thái th a nh n) t ng đ ng v i ki u không d ng trình bày ch ng tr c M nh đ 5.2 : M t ngôn ng đ c nh n bi t b i m t máy Turing có tr ng thái th a nh n n u ch n u ngôn ng đ c th a nh n (không d ng) b i m t máy Turing Ch ng minh : “⇒” Cho L ngôn ng đ d ng T = c nh n bi t b i m t máy Turing có tr ng thái Xây d ng t T m t máy Turing T’ = b ng cách thêm vào Q m t tr ng thái m i qv : Q’ = Q ∪ {qv}, thêm vào P t p h p P’ quy t c nh sau : P’ = { qv, x → x, R, qv } ∪ { q, x → x, R, qv } ∀x ∈ S ∀q, x cho (q, x) không v trái c a m t quy t c P q ∉ A Nh th , m i tính toán d ng m t tr ng thái không thu c A đ u có th kéo dài vô h n Các câu r i vào tr ng h p th hai c ng s r i vào tr ng h p th nh t V y L đ c nh n bi t b i T’ (không d ng) “⇐” Ng c l i, n u L đ c nh n bi t (không d ng) b i T = , L s đ nh n bi t b i tr ng thái th a nh n c a T’ = c Các toán không quy t đ nh đ 79 c Có v khác th ng ta đ a vào ki u nh n bi t m i t ng đ ng v i ki u nh n bi t tr c Tuy nhiên, vi c đ a ki u nh n bi t m i đ c ch ng minh r ng ta s nghiên c u ti p theo v máy Turing luôn d ng nh ngh a 5.3 : M t ngôn ng li t kê đ quy n u t n t i m t máy Turing v i tr ng thái d ng nh n bi t M t ngôn ng đ quy n u t n t i m t máy Turing v i tr ng thái d ng có m t tính toán d ng cho m i d li u vào nh n bi t ngôn ng Rõ ràng, n u T = m t máy Turing (đ n đ nh) v i tr ng thái d ng có m t tính toán d ng cho m i d li u vào, v i m t d li u f, s ch có hai tr ng h p sau x y : − Tính toán h p th c d ng d n đ n m t tr ng thái không thu c A − Tính toán h p th c d ng d n đ n m t tr ng thái thu c A C n ph i ý r ng, s ki n m t máy Turing th a mãn hay không th a mãn u ki n có m t tính toán d ng cho m i d li u vào m t đ nh ngh a c a máy Turing Và, không t n t i m t ph ng pháp có tính h th ng (ngh a có hi u l c cho t t c máy Turing) cho phép bi t đ c u ki n có th a mãn hay không Ta s ký hi u RE h t t c ngôn ng li t kê đ quy, ngôn ng đ quy R h t t c M nh đ 5.3 : H R đóng đ i v i phép bù (complement) M nh đ 5.4 : N u m t ngôn ng L ph n bù S*\L c a đ u li t kê đ quy, chúng c ng ngôn ng đ quy Ch ng minh : Cho T m t máy Turing nh n bi t L gi s T’ m t máy Turing nh n bi t S*\L Xu t phát t T T’, xây d ng m t máy Turing th ba T” theo cách sau : Máy Turing T” có hai b ng đ c kh i đ ng b ng cách chép l i d li u vào f t b ng th nh t lên b ng th hai Sau đó, T” mô ph ng cách tính toán c a T b ng th nh t cách tính toán c a T’ b ng th hai b ng cách th c hi n l n l t m t b c tính toán b ng th nh t r i l i m t b c tính toán b ng th hai T” d ng s mô ph ng m t hai máy d n đ n m t c u hình d ng N u T, T” d ng m t tr ng thái qh N u T’, d ng Lý thuy t tính toán M t câu f d li u cho ho c thu c L, ho c thu c S*\L, ho c T, ho c T’ d ng d li u f, v y T” d ng m i d li u vào B ng cách l y qh1 nh m t tr ng thái d ng nh t, T” nh n bi t L m t ngôn ng đ quy T ng t S*\L c ng đ quy : ngôn ng bù đ c nh n bi t b i T” v i m t tr ng thái d ng nh t qh Máy Turing li t kê câu Khi ta có m t máy Turing m t b ng (xem ch ng v máy Turing có b ng ra), máy ghi ký t c a b ng ch S lên b ng i u ch có th có ích n u S ch a nh t hai ký t Trong tr ng h p này, n u ta phân bi t m t ký t # c a S, g i d u phân cách, nh ng đ c ghi b ng dãy câu b ng ch S\{#} đ c đ t cách b i d u # nh ngh a 5.4 : N u T m t máy Turing v i m t b ng ra, T ghi lên b ng ký t c a m t b ng ch S có ch a m t ký t đánh d u #, ng i ta g i ngôn ng đ c li t kê b i T t p h p câu đ c ghi b ng cách b i ký t # M nh đ 5.5 : Ngôn ng L ∈ RE n u ch n u t n t i m t máy Turing li t kê L Ngôn ng L ∈ R n u ch n u t n t i m t máy Turing li t kê L th t phân c p Ch ng minh : Ch ng minh : D th y r ng n u T = m t máy Turing đ n đ nh v i tr ng thái d ng nh n bi t ngôn ng L, T’ = m t máy Turing (đ n đ nh) v i tr ng thái d ng nh n bi t ph n bù c a L m t tr ng thái qh 80 “⇐” (L ∈ RE ⇐ t n t i m t máy Turing li t kê L) Gi s T m t máy Turing li t kê ngôn ng L Xu t phát t T, xây d ng m t máy Turing T’ nh n bi t L theo cách nh sau : T’ có nhi u h n T m t b ng, ghi d li u vào f Còn b ng khác, T’ s d ng nh T s d ng đ mô ph ng ch c n ng c a T, nh ng xem b ng c a T nh m t b ng làm vi c bình th ng T’ li t kê câu c a L, nh ng v i m i câu li t kê (ngh a m i l n T’ vi t ký t đánh d u lên b ng v a thêm), T’ ki m tra câu v a đánh d u khác v i câu f N u khác, T’ ti p t c vi c đánh d u, n u gi ng (ngh a câu v a đánh d u f), T’ d ng Rõ ràng máy T’ v a mô t nh n bi t L “⇐” (L ∈ R ⇐ t n t i m t máy Turing li t kê L th t phân c p) X y hai tr ng h p : - L h u h n, rõ ràng L ngôn ng đ quy - L vô h n, vi c ch ng minh hoàn toàn t ng t Ng i ta đòi h i thêm r ng, T ki m tra n u câu li t kê khác v i câu f xét, n u câu tr l i đúng, T’ s ch ti p t c đánh s n u f có m t, th t Các toán không quy t đ nh đ 81 c phân c p, sau câu li t kê T’ d ng n u f m t m t tr ng thái lo i b (T’ d ng m t tr ng thái d ng x y s b ng nhau) Rõ ràng, máy T’ d ng cho m i d li u nh n bi t L “⇒” (L ∈ R ⇒ t n t i m t máy Turing li t kê L th t phân c p) Cho T m t máy Turing d ng cho m i d li u nh n bi t L T T, xây d ng m t máy Turing T’ li t kê L theo cách nh sau : T’ có nhi u h n T hai b ng Trên m t b ng này, t t c câu c a S* đ c li t kê (trong th t phân c p) Còn b ng dùng làm b ng ra, t t c câu c a L đ c li t kê V i m i câu đ c li t kê f ∈ S*, T’ chép l i câu b ng mà T, b ng ch a d li u Máy T’ s mô ph ng ho t đ ng c a T d li u nà N u T d ng cho d li u f m t tr ng thái th a nh n, T’ ghi câu f lên b ng theo sau ký t đánh d u Trong m i tr ng h p, T’ b t đ u tr l i vi c đánh s câu c a S* V y, rõ ràng máy T’ mô ph ng L th t phân c p “⇒” (L ∈ RE ⇒ t n t i m t máy Turing li t kê L) N u ta s d ng cách ch ng minh v a m i trình bày s không nh n đ c k t qu , r ng máy Turing nh n bi t L không d ng cho m t câu b lo i b s không cho phép chuy n qua câu ti p theo, mà câu có th ∈ L Nh th , ta ph i s d ng cách ch ng minh ph c t p h n nh sau : Cho T m t máy Turing nh n bi t L T T, xây d ng m t máy Turing T’ li t kê L theo cách nh sau : T’ có nhi u h n T hai b ng Trên m t b ng này, li t kê t t c c p (f, n) f m t câu ∈ S* n m t s nguyên Còn b ng dùng làm b ng ra, li t kê t t c câu c a L V i m i câu f li t kê ∈ S*, T’ chép câu lên b ng mà T, b ng ch a d li u T’ mô ph ng n b c tính toán c a T d li u N u T d ng v i d li u f sau n b c tính toán, T’ ghi câu f lên b ng phía sau ký t đánh d u, m i tr ng h p, T’ l i ti p t c đánh s c p D dàng ki m ch ng r ng máy T v a mô t li t kê L th t phân c p M nh đ 5.5 : Ngôn ng Lu sau không đ quy : Lu = { | máy Turing có mã w d ng d li u vào f } ∈ RE\R Ch ng minh : K t qu đ c ch d i m t d ng khác ch ng Ta nh l i r ng máy Turing v n n ng Tu th a mãn cho ∀i ∀f : Tu (i#f) = gi (f) v i gi hàm đ c tính b i máy Turing th i M t d ng khác c a máy Turing v n n ng Tu" th a mãn m i mã w c a máy Turing th i, v i m i câu f : 82 Lý thuy t tính toán v i gi hàm đ c tính b i máy Turing th i M t khác, ta c ng nh l i r ng hàm th, xác đ nh m i c p s nguyên i, j, cho b i đ nh ngh a sau không T-tính đ c : th (i, j) = n u máy Turing th i d ng d li u j th (i, j) = n u không ph i Do mi n xác đ nh c a hàm đ c tính b i máy Turing v n n ng Tu" Lu, nên Tu" Tu" () = gi (f) s nh n bi t L V y, Lu ∈ RE M t khác, ta có th d dàng suy r ng hàm th không T−tính đ c Lu ∉ R Th t v y, n u không ph i nh th , b ng ph n ch ng, xu t phát t m t máy Turing T có tr ng thái d ng d ng cho m i d li u vào nh n bi t Lu, ta xây d ng m t máy Turing T’ th c hi n hàm th Ch c n m r ng tính toán c a T thành hàm v i tr ng thái d ng : n u tr ng thái thu c v t p h p tr ng thái th a nh n c a T, phép tính toán đ c m r ng b ng cách xóa k t qu c a T r i ghi thành h ng N u không ph i nh v y xóa k t qu c a T r i ghi thành h ng 0.QED B đ 5.1 : T n t i ngôn ng không li t kê đ quy Th t v y, n u không ph i nh v y ngôn ng Lu s li t kê đ quy, ph n bù c a Lu S*\Lu s đ quy, nh ng u không QED II Các toán không quy t đ nh đ c (Undecidable problems) Ta nh l i r ng m t toán đ c c u thành b i hai y u t : Mô t cách bi u di n (h u h n) ph n t c a m t t p h p D h u h n ho c vô h n đ m đ c M i ph n t c a D đ c g i m t câu M t phát bi u d a vào t p h p D này, có th đúng, ho c có th sai tùy theo ph n t (câu) đ c l a ch n t D V i m i toán♣ P, đ c h p thành t câu c a t p h p D xét t m t phát bi u d a theo D, ta xét m t ngôn ng đ c tr ng LP c a P Ngôn ng LP đ c c u thành t t p h p câu c a D có l i gi i T ng t nh v y, ng i ta xét ngôn ng đ c tr ng LCP c a toán ng c CP nh n đ c t P b ng cách gi nguyên cách bi u di n d li u nh ng phát bi u theo ngh a trái ng c (l i gi i có giá tr sai - contrary) Nh v y, l i gi i c a m t toán d n đ n s nh n bi t c a m t ngôn ng : m t máy gi i m t toán P n u ch n u v i m i câu w ∈ D (là bi u di n m t ph n t c a D cho toán này), máy cho phép xác đ nh, m t kho ng th i gian h u h n, n u w ∈ LP hay w ∈ LCP ♣ Ta đ ng nh t hai thu t ng v n đ toán (problem) Các toán không quy t đ nh đ 83 c N u ta th a nh n lu n đ Church, vi c gi i m t toán vi c đ a m t máy Turing cho phép xác đ nh, m t kho ng th i gian h u h n, n u qu th t câu w ∈ LP hay w ∈ LCP Nh v y, t n t i m t máy Turing d ng cho m i d li u nh n bi t LP T ta có đ nh ngh a sau nh ngh a 5.5 : M t toán P đ LP đ quy Bài toán P đ đ quy c g i quy t đ nh đ c g i không quy t đ nh đ c (decidable) n u ngôn ng đ c tr ng 84 Lý thuy t tính toán Bi u di n d li u c a toán A LP A M t nh ng k t qu quan tr ng nh t c a Tin h c c b n t n t i nh ng toán không quy t đ nh đ c Ch ng h n, toán say không quy t đ nh đ c : D li u : M t c p (w, f), w mã c a m t máy Turing f m t câu Câu h i : Máy Turing có mã w có d ng d li u f hay không ? Th t v y, ngôn ng đ c tr ng LP c a toán Lu mà ta ch r ng, Lu không ph i ngôn ng đ quy Bài toán đ c g i toán d ng (halting problem) c a máy Turing D i đây, ta s ch đ c tr ng không quy t đ nh đ c c a nhi u toán khác nh ng có th đ a v toán m t cách tr c ti p ho c gián ti p III Thu t toán rút g n m t toán v toán khác nh ngh a 5.6 Ta nói r ng toán A đ c rút g n theo m t thu t toán (g i t t rút g n) v toán B n u t n t i m t máy Turing d ng cho m i d li u th c hi n tính hàm f, ánh x t t p h p bi u di n c a d li u c a toán A vào t p h p bi u di n c a d li u c a toán B, th a mãn : w ∈ LA ⇔ f (w) ∈ LB Trong đ nh ngh a này, câu theo m t thu t toán (algorithmically) có ngh a nh m t thu t toán, theo lu n đ Church, t c nh m t máy Turing Ng i ta nói r ng máy Turing nh v y rút g n toán A v toán B LP B Anh c a f t bi u di n d li u c a toán A f S*\L PA c (undecidable) n u LP không ph i Ng i ta g i m t toán P n a quy t đ nh (semi−decidable) n u ngôn ng đ c tr ng LP li t kê đ quy (không đ quy) f S*\LP B Bi u di n d li u c a toán B Hình 5.1 Rút g n toán A v toán B Ta có m nh đ sau : M nh đ 5.7 : N u m t toán A đ c rút g n thành toán B, n u B toán quy t đ nh đ c, A c ng toán quy t đ nh đ c Ch ng minh : Th t v y, gi s T m t máy Turing luôn d ng nh n bi t LB, T’ m t máy Turing th c hi n vi c rút g n t toán A v toán B Rõ ràng, máy Turing T’ next T m t máy Turing luôn d ng nh n bi t LA Th c t , ng i ta s d ng m nh đ trái l i nh sau : M nh đ 5.8 : N u toán A đ c rút g n thành toán B, n u A m t toán không quy t đ nh đ c, B c ng m t toán không quy t đ nh đ c Ví d 5.1 : Bài toán d ng đ u (uniform halting problem) c a máy Turing Ng i ta g i toán d ng đ u c a máy Turing toán nh sau : D li u : M t máy Turing M Câu h i : M có d ng cho m i d li u vào ? Bây gi ta rút g n toán d ng c a máy Turing v toán m i Gi s T m t máy Turing f m t câu, h p thành m t tr ng h p cá bi t (instance) c a toán d ng c a máy Turing Xu t phát t (T, f), xây d ng m t máy Turing M đ c d li u c a T d ng m t tr ng thái lo i b n u d li u không ph i câu f Sau đó, n u d li u f, M b t ch c cách tính toán c a T d li u f Rõ ràng, T d ng d li u f n u ch n u M d ng m i d li u Sau rút g n m t toán không quy t đ nh đ c v toán d ng đ u c a máy Turing, ng i ta suy r ng toán d ng đ u c a máy Turing không quy t đ nh đ c Các toán không quy t đ nh đ c 85 Chú ý : Cho A m t toán, n u thay đ i cách bi u di n d li u nh ng v n gi nguyên câu h i, ta nh n đ c toán A’ N u cách bi u di n d li u đ c thay đ i nh sau : - T n t i m t máy Turing T, xu t phát t cách bi u di n c a ph n t c a toán A, tr v m t bi u di n c a ph n t c a toán A’ - T n t i m t máy Turing T’, xu t phát t cách bi u di n m t ph n t c a toán A’, tr v m t bi u di n c a ph n t c a toán A Thì đó, A A’ đ ng th i quy t đ nh đ c ho c không quy t đ nh đ c Th t v y, toán A đ c rút g n theo m t thu t toán v toán A’ t ng ng v i máy Turing A, ng c l i A’ đ c rút g n v A t ng ng v i Turing T’ c tr ng quy t đ nh đ c hay không quy t đ nh đ c c a m t toán v n không thay đ i thay đ i, ph m vi h p lý, s bi u di n c a d li u Ng i ta th ng sai l m ch đ nh m t toán ch b i câu h i mà Do v y c n ph i tránh sai l m Khi ng i ta xét đ n đ ph c t p (complexity) c a m t toán, s bi u di n d li u t đ i c n thi t đ đánh giá đ ph c t p Bây gi ta ti p t c xét toán không quy t đ nh đ c Chúng r t nhi u nh đ nh lý Rice sau kh ng đ nh nh lý Rice : M i tính ch t không t m th ng c a ngôn ng li t kê đ quy không quy t đ nh đ c Ta nh l i r ng m t tính ch t đ c nói t m th ng (trivial) n u t t c ph n t c a t p h p xét đ u có tính ch t này, ho c không m t ph n t chúng có tính ch t c nh lý Rice có ngh a n u P m t tính ch t không t m th ng, toán sau toán không quy t đ nh đ c : D li u : M t máy Turing (nh n bi t m t ngôn ng li t kê đ quy) Câu h i : Ngôn ng có tính ch t P không ? Ch ng minh Cho P m t tính ch t không t m th ng J h ngôn ng li t kê đ quy có tính ch t P Ta có th luôn gi thi t r ng ngôn ng tr ng (∅) không thu c J Khi đó, t n t i nh t m t ngôn ng L ≠ f L ∈ J, L đ c nh n bi t b i m t máy Turing TL Xu t phát t m t d li u , w mã c a m t máy Turing T f m t d li u cho máy này, xu t phát t TL, xây d ng m t máy Turing T’ th c hi n phép toán sau : m i d li u g, T’ mô ph ng tính toán c a T f, đ c l p v i d li u g, r i thành công, T’ th c hi n tính toán c a TL d li u g 86 Lý thuy t tính toán Rõ ràng T’ nh n bi t đ c ho c ngôn ng tr ng, n u T không d ng f, ho c ngôn ng L, n u T d ng f Do đó, ngôn ng nh n bi t b i T’ J n u ch n u T có m t tính toán d ng d li u f N u ta gi thi t r ng tính ch t xét quy t đ nh đ c, ta có m t máy Turing luôn d ng xác đ nh n u ngôn ng nh n bi t b i T’ thu c J T suy t n t i m t máy Turing luôn d ng và, xu t phát t m t d li u , w mã c a m t máy Turing T, máy xác đ nh n u T d ng ho c không d ng d li u vào f Tuy nhiên, ta bi t r ng m t máy Turing nh v y (d ng m i d li u nh n bi t Lu) không t n t i QED Ngoài toán không quy t đ nh đ c này, theo đ nh lý Rice, r t nhi u toán khác đ n t mi n xác đ nh khác nhau, đ u không quy t đ nh đ c Chính v y mà khái ni m v toán không quy t đ nh đ c đóng vai trò quan tr ng tin h c lý thuy t Bây gi ta đ a b n ví d c n M i l n đ a m t toán không quy t đ nh đ c, ta tìm cách rút g n v toán xét Ví d 5.2 : Bài toán t ng ng Post (Post’s correspondence problem) D li u : M t dãy c p câu (u1, v1), , (uk, vk) m t b ng ch S (S có nh t ký t ) Câu h i : T n t i hay không m t câu w∈ S* th a nh n hai phân tách t ng ng v i : w = ui ui ui = vi v i v i ? r Trong i1 , i2 , , ir ∈ { 1, 2, , k } r 1bis Bài toán t ng ng Post c i biên (Post’s correspondence problem) D li u : M t dãy c p câu (u1, v1), , (uk, vk) m t b ng ch S (S có nh t ký t ) Câu h i : T n t i hay không m t câu w∈ S* th a nh n hai phân tách t ng ng v i ph n t đ u tiên c p đ u tiên : w = u1ui ui = v1vi vi ? r r Gi s cho S = {a, b, c} cho dãy c p câu S : ((ab, aba), (ab, ba), (bab, ba), (ab, bab)) D dàng th y r ng câu babababab đ c phân tách thành hai cách : bab.ab.ab.ab = ba.ba.ba.bab t ng ng v i Tuy nhiên, câu đ c phân tách thành hai cách t ng ng v i ph n t đ u tiên c p đ u tiên Nh v y, v i d li u (là dãy c p câu cho), toán t ng ng Post th a nh n (ít nh t) m t l i gi i Th nh ng, c ng v i d li u này, toán Post c i biên l i l i gi i Các toán không quy t đ nh đ 87 c Bây gi ta s ch ng minh r ng c hai toán đ u không quy t đ nh đ c b ng cách b t đ u t toán th hai Gi s T = < S, Q, P> m t máy Turing tiêu chu n hóa (rormalized) có m t tr ng thái d ng qh nh t Xu t phát t T, ta đ nh ngh a m t t p h p F1 c p câu y = S ∪ Q ∪ {฀}, v i ฀ m t ký t m i, đ FT = { (qxz, yq’z) | z ∈ S ∪ { (qx฀, yq’#฀) | c c u thành nh sau : q, x → y, R, q’ } q, x → y, R, q’ }, FT = { (zqx, q’zy) | z ∈ S q, x → y, L, q’ } ∪ { ฀qx, ฀q’#y) | q, x → y, L, q’ }, FT = { (z, z) | z∈S} FT = { (zqh, qh), (qh, qhz) | , z ∈ S } ∪ { (฀qh฀, ฀) } ng v i m i tr ng h p cá bi t c a toán d ng c a máy Turing, ngh a v i m i d li u c a toán này, đ c c u thành t T máy Turing tiêu chu n hóa theo gi thi t f câu xu t phát b ng vào c a T, ta có th k t h p m t d li u FT, f cho toán t ng ng Post c i biên đ c c u thành t c p đ u tiên (฀, ฀q1f฀) c p c a FT Ta s ch r ng tr ng h p cá bi t c a toán t ng ng Post c i biên có m t l i gi i n u ch n u T có m t tính toán d ng d li u f N u T có m t tính toán d ng d li u f, tính toán đ c vi t nh sau : co = q1f, c1, , cn = g1qhg2 Ta xét câu sau : w = ฀q1f฀c1฀ ฀cn-1฀g1qhg2฀g’1qhg2฀ ฀qhg2฀qhg’2฀ ฀qh฀ câu g1 b c t c t m t ký t cu i cùng, sau m i ký t ฀ ; ti p đ n g2 b c t c t m t ký t phía đ u, sau m i ฀ D dàng th y r ng câu w có hai cách phân tách t ng ng v i Ng c l i, n u ta có hai cách phân tách m t câu cho t ng ng v i v i đ u câu c p đ u tiên, d dàng th y r ng n u ci m t c u hình, n u c hai cách phân tách mà c u hình theo u có đ dài h n c u hình theo v c a thành ph n ci฀, phân tách theo u cho đ n g p ฀ ti p theo, c u hình có đ dài l n h n c u hình theo v c a thành ph n ci+1฀ H n n a, tham đ i s c p v s ký t ฀ ch r ng c p cu i s d ng (฀qh฀, ฀) D dàng th y r ng qh xu t hi n l n đ u tiên câu thu c v hai cách phân tách, qh đ c bao b i câu ฀g1 g2฀ cho n u t n t i m t tính toán h p th c T : q1f Ã−* g1qhg2 88 Lý thuy t tính toán Do tính toán h p th c d n đ n tr ng thái qh, T s d ng Nh v y, ta rút g n toán d ng c a máy Turing v toán t ng ng Post c i biên Bây gi gi s (u1, v1), , (uk, vk) dãy c p câu m t b ng ch S, t o thành m t d li u cho toán t ng ng Post c i biên Gi s a m t ký t m i V i m i câu f ∈ S*, ta k t h p câu p(f) d(f) đ c đ nh ngh a b i : n u f = x1, x2 xr, p(f) = ax1ax2 , axr d(f) = x1ax2a , xra V i m i d li u cho toán t ng ng Post c i biên, ta k t h p t p h p U g m c p nh sau : U = { (p(u1), d(v1)), , (p(uk), d(vk)), (p(u1)a, d(v1)), , (p(uk)a, d(vk)), (p(u1), ad(v1)) } t o thành m t d li u cho toán t ng ng Post N u w = u1ui ui = v1vi vi m t l i gi i c a toán t r ng ng Post c i r biên xu t phát, rõ ràng, câu p(w)a = ad(w) có hai cách phân tách t ng ng v i theo U : p(w)a = p(u1)p(ui ) p(uir)a = ad(v1) d (vi ) d (vi ) 2 r Ng c l i m t cách t ng ng, n u m t câu m có hai cách phân tách t ng ng v i theo U, c p đ u tiên s d ng đ n s ch có th c p : (P (u1), ad (v1)) B ng cách xóa t t c ch a m hai phân tách c a m, ta nh n đ c câu w hai phân tách c a w t ng ng v i d a theo dãy xu t phát c a toán t ng ng Post c i biên, v i thành ph n đ u tiên c p đ u tiên Nh v y, toán t ng ng Post c i biên đ c rút g n v toán t ng ng Post Bài toán zero ma tr n x h s Z D li u : M t t p h p h u h n M ma tr n h s 3´3 Z Câu h i : T n t i hay không m t tích h u h n M = Mi M i Mi ma tr n c a r M cho ph n t (3, 2) c a M b ng ? Cho b ng ch có th t S v i |S| = n, v i m i câu f ∈ S*, ta ký hi u nh sau : el (f) = n|f| (|f| đ dài c a câu f) nu (f) = s th t c a f th t phân c p Rõ ràng, v i m i câu f, g ∈ S*, ta đ u có : el (fg) = el (f) × el (g) nu (fg) = nu (f) × el (g) + nu (g) Bây gi xét ánh x j t S* × S* vào t p h p ma tr n h s 3´3 Z đ xác đ nh nh sau : c Các toán không quy t đ nh đ c 89 el (v) - el (u) ⎤ ⎡ el (u) ⎢ j (u, v) = ⎢ el(v) ⎥⎥ ⎣⎢nu (u) nu (v) - nu (u) 1⎥⎦ Ta có th d dàng ch ng minh r ng j m t đ n ánh đ ng c u, ph n t (3, 2) c a j (u, v) b ng n u ch n u u = v Bây gi gi s (u1, v1), , (uk, vk) m t dãy c p câu b ng ch S t o thành m t d li u vào cho toán t ng ng Post T ng ng v i tr ng h p cá bi t này, ta đ a vào m t t p h p h u h n M ma tr n h s 3×3 Z : M = {j (u1, v1), , j (uk, vk)} Rõ ràng toán Post có l i gi i n u ch n u t n t i m t tích h u h n ma tr n c a M cho ph n t (3, 2) c a M b ng Nh v y ta rút g n toán t ng ng Post v toán zero ma tr n h s 3´3 Z Bài toán v s h i t c a m t dãy ph n t c a Z Ng i ta nói m t dãy cho xác đ nh đ quy (recursively defined sequence) n u v i m i s nguyên n, có th tìm đ c m t cách hi u qu , ph n t th n c a dãy Bài toán v s h i t c a m t dãy ph n t c a Z đ c phát bi u nh sau : D li u : M t dãy ph n t c a Z xác đ nh đ quy Câu h i : H i r ng dãy m t máy Turing f m t d li u vào c a T Gi s T = m t máy Turing f m t d li u vào c a T Ta đánh s Z ô c a b ng làm vi c c a T b t đ u t ô n m d i đ u đ c t i v trí xu t phát c a T Xu t phát t T f, xác đ nh dãy (un) v i un s th t c a ô d i đ u đ c sau n b c tính toán c a T d li u f Theo quy c, n u vi c tính toán d ng sau p tr c ô có s th t 1, t t c h ng c a dãy có v trí l n h n p s có giá tr Nh v y, u0 = 0, kho ng cách (đ l ch) gi a un un+1 b ch n b i theo tr t đ i ch có th b ng n u máy T d ng sau t i đa n tr c tính toán M t khác, dãy xác đ nh đ quy V l i, dãy h i t n u ch n u dãy không đ i (stationary) Nh v y, dãy h i t n u ch n u vi c tính toán c a máy Turing T d ng d li u f Nh v y ta rút g n toán d ng c a máy Turing v toán h i t c a m t dãy Bài toán v tính k t h p c a m t lu t c u thành D li u : M t lu t c u thành bên c a m t t p h p, đ quy hoàn toàn Câu h i : Có ph i lu t k t h p ? Gi s T = m t máy Turing f m t d li u c a T 90 Lý thuy t tính toán T ng t toán xét, ta đánh s Z ô c a b ng làm vi c c a T k t ô n m d i đ u đ c t i v trí xu t phát c a T Xu t phát t T f, xây d ng hàm ϕ s nh sau : ϕ:Ν→Z s:Z→N V i ϕ(n) s th t c a ô n m d i đ u đ c sau n b c tính toán c a T d li u vào f Theo quy c, n u vi c tính toán d ng sau p b c ô có đánh s th t 1, t t c h ng c a dãy có s th t l n h n p s có giá tr s(z) = μn [ϕ(n) = z] ngh a s(z) s b c tính toán c n thi t nh nh t đ th m ô có s th t z Hàm s hàm b ph n : m t s ô b ng có th không bao gi đ c đ u đ c đ n th m Cu i cùng, ta đ nh ngh a ánh x ⊕ t N × N → N nh sau : ⊕ (n, m) = s (j (n) + j (m)) =0 n u s xác đ nh n u s không xác đ nh Ánh x ⊕ m t lu t c u thành bên c a N đ quy hoàn toàn Nh v y, ta có th d dàng ch ng minh đ c r ng, n u : Imϕ = [-k, +k] v i k ≥ 1, ⊕ tính k t h p, c ng ch ng minh đ c r ng, n u : Imϕ = [-∞, +∞], ⊕ có tính k t h p Bây gi ta xem xét m t d li u cho toán d ng c a máy Turing, ngh a m t máy T m t câu f Xu t phát t T, ta xây d ng m t máy T’ th c hi n phép tính sau : m t cách t ng h , T’ mô ph ng m t b c tính toán c a máy T, r i thì, không làm thay đ i n i dung c a b ng, T’ t trái qua ph i đ n m t ô khác mà T’ ch a x lý b c tr c Nh v y, f, n u vi c tính toán c a T, c ng c a T’, mà d ng, ô đ c th m b i T’ tính toán s có s th t [-k, +k] Còn n u nh vi c tính toán v a xét không d ng, s th t s [-∞, +∞] B ng cách áp d ng vào T’ f đ xây d ng m t lu t ⊕ nh v a mô t đây, ta nh n đ c k t qu lu t ⊕ có tính k t h p n u ch n u T có m t tính toán d ng d li u f Nh v y, ta rút g n toán d ng c a máy Turing v toán tìm tính k t h p c a m t lu t c u thành Ngoài toán trên, toán sau c ng không quy t đ nh đ c : - Bài toán th 10 c a Hilbert (m t đa th c nhi u bi n có nghi m nguyên không ?) - Tính đ n (truthfulness) c a công th c s h c b c m t - Bài toán Thue n a−Thue v câu có c u trúc đ i s b t k Các toán không quy t đ nh đ c 91 - Bài toán v tính b ng (equality) c a ngôn ng đ c sinh b i hai v n ph m đ i s (algebra grammars), hay toán v tính nh p nh ng (ambiguity) c a m t v n ph m đ i s − v, v 92 Lý thuy t tính toán Bài t p Ch ng minh r ng ngôn ng L RE n u ch n u L nh c a N b i m t hàm đ quy b ph n Xu t phát t m t máy Turing T nh n bi t m t ngôn ng L cho t m t máy Turing T’ nh n bi t ph n bù S*\L, xây d ng m t máy Turing không đ n đ nh đ n gi n cho phép nh n bi t L ho c S*\L tùy theo m t tr ng thái th a nh n ch n T suy m t cách ch ng minh m i r ng n u L S*\L ngôn ng li t kê đ quy, chúng c ng ngôn ng đ quy Phát bi u toán d ng c a m t máy RAM Ch ng minh toán không quy t đ nh đ c Ch ng minh r ng toán sau không quy t đ nh đ c : D li u : M t máy RAM M đ c xác đ nh b i ch ng trình c a nó, m t d li u vào f cho máy RAM m t s nguyên j Câu h i : Vi c tính toán c a M f có s d ng đ n l nh th j không ? Ch ng minh r ng toán sau không quy t đ nh đ c : D li u : M t máy RAM M đ c xác đ nh b i ch ng trình c a m t s nguyên j Câu h i : T n t i hay không m t d li u f đ vi c tính toán c a M f s d ng đ n l nh th j ? G i gi hàm đ c tính b i máy Turing th i Các toán sau có quy t đ nh đ c hay không ? a) D li u : Cho tr c m t s nguyên i Câu h i : gi có ph i m t hàm không ? b) D li u : Cho tr c ba s nguyên i, j, k Câu h i : gi (j) = k ? c) D li u : Cho tr c hai s nguyên i, k Câu h i : Có t n t i hay không m t s nguyên j cho gi (j) = k ? d) D li u : Cho tr c hai s nguyên i, j Câu h i : Có ph i gi = gj ? e) D li u : Cho tr c m t s nguyên i Câu h i : Có ph i hàm gi có m t nh h u h n 94 Lý thuy t tính toán T ng t , ta xét m t máy Turing off-line đ n đ nh có k b ng d ng v i m i d li u T m t c u hình xu t phát (1, q1, f), máy có m t tính toán f d ng Trong trình tính toán, máy Turing di chuy n đ u đ c-ghi c a nó, m i m t đ u đ c-ghi đ n th m m t s ô phân bi t CH Bây gi ta xét t p h p Ln c a t t c câu f có m t đ dài n V i m i s nguyên n, ta cho k t h p v i s nguyên : NG ph c t p tính toán S (n) = Maxf∈L n (Computational Complexity) « Better one safe way than a hundred on which you cannot reckon » Aesop Trong ch ng trình này, ta t p trung xem xét nh ng v n đ liên quan đ n toán quy t đ nh đ c N u t n t i m t thu t toán gi i m t toán cho, có th x y r ng ch a ch c tri n khai đ c thu t toán m t máy tính, lý đ ph c t p tính toán Trong th c t , đ ph c t p c a m t thu t toán b t ngu n t th i gian tính toán b nh c n s d ng đ n có th r t l n Nh nh ng l p lu n đ n gi n, ta s ch làm cách đ có th phân l p toán quy t đ nh đ c thành nh ng toán nhi u ph c t p h n, không ph thu c vào hi n tr ng c a công ngh Tin h c Có nhi u cách đo đ ph c t p tính toán đ c nghiên c u, đ ph c t p trung bình, đ ph c t p tr ng h p x u nh t, v v D i đây, ta s ch xét đ ph c t p tính toán tr ng h p x u nh t I ph c t p v th i gian v b nh Ng i ta th ng đ a vào khái ni m đ ph c t p cho ngôn ng c a m t toán đ ph c t p c a ngôn ng đ c tr ng cho toán ph c t p Ta xét m t máy Turing đ n đ nh có k b ng d ng m i d li u Xu t phát t m t c u hình ban đ u (1, q1, f), máy Turing có m t tính toán d ng đ dài m Ta xem r ng t p h p Ln c a t t c câu f có m t đ dài nh n N u Ln khác r ng, v i m i s nguyên n, ta cho k t h p v i s nguyên : T(n) = Maxf∈L n { đ dài tính toán nh n bi t f } N u Ln = ∅ (t p h p tr ng), ta đ t T (n) = s ô đ c th m b ng làm vi c tính toán đ nh n bi t f N u Ln = ∅, ta đ t S (n) = Hàm S : N → N v a đ nh ngh a xác đ nh đ ph c t p v b nh (space complexity) S(n) c a máy Turing 0ff-line k b ng Ng i ta nói r ng ngôn ng đ c nh n bi t b i máy Turing có m t đ ph c t p v b nh nhi u nh t S(n) Chú ý r ng xét đ ph c t p v b nh , ng i ta không xét không gian nh s d ng b ng đ c : không gian nh b ng đ dài n c a câu c n nh n bi t Vì n u không, ng i ta s không th nh n đ c hàm S(n) Sau đây, ký hi u I (x) ph n nguyên c a x, ta vi t : T (n) = f (n) hàm T (n) đ c t ng lên max { n+1, I (f (n)) + } S (n) = f (n) hàm S (n) đ c t ng lên max { 1, I (f (n) + } Ví d 6.1 : Cho L = { w฀wR | w∈ {0, 1}* wR câu đ o c a w } T n t i m t máy Turing T1 có hai b ng nh n bi t ngôn ng L v i chi phí v th i gian T(n) = n + Máy chép lên b ng th hai ký t đ c b ng th nh t cho đ n g p ký t ฀ r i ki m tra s b ng t ng ng c a ký t ti p theo b ng th nh t v i ký t ghi b ng th hai nh ng theo chi u ng c l i Rõ ràng, th i gian tính toán b ng đ dài c a câu c ng thêm m t th i gian đ c ký t # đ k t thúc T n t i m t máy Turing T2 có hai b ng nh n bi t ngôn ng L có chi phí v b nh S (n) = log2 (n) Máy tính ghi theo h nh phân b ng th hai s ký t đ c b ng th nh t cho đ n g p ký t C, sau ki m tra s ký t k ti p ký t ฀ b ng th nh t b ng s ký t v a ghi b ng th hai b ng cách gi m d n t ng ký t Hàm T : N → N v a đ nh ngh a xác đ nh đ ph c t p v th i gian (time complexity) T(n) c a máy Turing k b ng (ta quy c m i b c tính toán kéo dài m t kho ng th i gian b ng đ n v ) Tr ng h p thành công, máy ki m tra t ng đôi ký t gi ng cho t i m t kho ng cách i c a ký t # m i phía, ki m tra t t c giá tr i c n thi t Các giá tr liên ti p đ c ghi d i d ng nh phân b ng th hai Ng i ta c ng nói r ng ngôn ng đ t p v th i gian nhi u nh t T (n) Rõ ràng, không gian nh s d ng b ng th hai đ c t ng thêm m t l đ dài c a câu d ng nh phân, logarit c s c a s nguyên PGS TS PHAN HUY KHÂNH biên so n c nh n bi t b i máy Turing có m t đ ph c 93 ng 95 ph c t p tính toán Nh v y, đ i v i máy Turing không đ n đ nh, có th đ nh ngh a theo cách t ng t đ ph c t p tính toán không đ n đ nh v th i gian đ ph c t p tính toán không đ n đ nh v b nh Ch c n đ nh ngh a hàm T (n) S (n), cho tr ng h p Ln ≠ ∅, nh sau: T (n) = Maxf∈L { đ dài c a tính toán ng n nh t đ nh n bi t f } S (n) = Maxf∈L { s ô đ n n c th m b ng tính toán m t cách ti t ki m nh t đ nh n bi t f } Rõ ràng, đ nh ngh a đ a tr ng h p máy Turing đ n đ nh ch tr ng h p đ c bi t c a đ nh ngh a v tính ch t không đ n đ nh II Các l p c a đ ph c t p (Complexity classes) Trong m c tr c, ta đ nh ngh a đ ph c t p c a m t ngôn ng cho tr Ng c l i, bây gi ta có th xem xét h ngôn ng có m t đ ph c t p cho Gi s f m t hàm t ng, ta có đ nh ngh a sau : Ký hi u Ý ngh a DSPACE (f (n)) NSPACE (f (n)) DTIME (f (n)) NTIME (f (n)) H H v H H v T t c h đ suy r ng : DSPACE (f (n)) DTIME (f (n)) ngôn ng có đ ph ngôn ng có đ ph b nh S (n) = f (n) ngôn ng có đ ph ngôn ng có đ ph th i gian T (n) = f (n) c t p v b nh S (n) = f (n) c t p không đ n đ nh c t p v th i gian T (n) = f (n) c t p không đ n đ nh c g i l p c a đ ph c t p T đ nh ngh a trên, ta ⊆ NSPACE (f (n)) ⊆ NTIME (f (n)) DSPACE (g (n)) NSPACE (g(n)) DTIME (g (n)) NTIME (g(n)) đ c cho ví d tr L ∈ DTIME (n) ∩ DSPACE (log2 (n)), nh ng ta c ng có : L ∈ DTIME (n2) ∩ NTIME ( n) ∩ DSPACE (n) Lý thuy t tính toán II.1 Hi n t ng nén Gi s T m t máy Turing có đ ph c t p v b nh S(n) = f(n), b ng cách s d ng m t b ng ch đó, m i ký t bi u di n k ký t liên ti p c a b ng ch c a T, ta có th xây d ng m t máy Turing T’ nh n bi t ngôn ng có đ ph c t p v b nh f(n)/k Máy T’ mã hóa b ng ch m i thông tin ghi m i m t b ng làm vi c (nh r ng không k không gian nh dùng đ ghi d li u vào) Rõ ràng, nh ph ng pháp này, b ng cách s d ng m t th a s c không đ i, ta có th gi m b t đ ph c t p v b nh đ nh n bi t m t ngôn ng cho N u T m t máy Turing off-line có k b ng, ta có th nh n bi t m t ngôn ng b ng cách s d ng m t máy Turing off−line ch có m t b ng, s d ng m t ph ng pháp đ không s d ng không gian nh nhi u h n T i v i đ ph c t p v b nh , vi c ta gi m b t s l ng b ng làm vi c ngh a, cho nên, t nay, ta ch xét đ n máy Turing off−line có m t b ng, th m chí, tr ng h p S(n) = n, ta ch xét máy Turing có m t b ng mà không thêm n a Ta c ng có th áp d ng ph ng pháp nén v a trình bày đ i v i đ ph c t p v th i gian Tuy nhiên ph ng pháp không mi n đ c d li u, mà c n m t th i gian n + đ đ c d li u có đ dài n Nh v y, ta có th gi m b t nh m t th a s không đ i c T(n)/n có khuynh h ng t ng vô h n Bây gi ta xem xét hi u qu c a đ ph c t p v th i gian gi m b t s l ng b ng làm vi c Khi gi m b t m t b ng, phân tích ph ng pháp trình bày ch ng đ chuy n t k b ng v m t b ng, ta ch ng minh đ c : L ∈ DTIME (T (n)) ⇒ L đ c th a nh n b i m t máy Turing m t b ng v i chi phí th i gian T2(n) Khi c n th c hi n vi c chéo, ta có th chuy n t m t b ng sang hai b ng nh m làm gi m đáng k s b c tính toán Ta ch ng minh đ c r ng vi c rút g n hai b ng thay ch m t b ng làm t i u rõ r t chi phí v th i gian : L ∈ DTIME (T (n)) ⇒ L đ c th a nh n b i m t máy Turing có hai b ng v i th i gian T (n).log2(T (n)) và, n u f ≤ g, thì: DSPACE (f (n)) ⊆ NSPACE (f (n)) ⊆ DTIME (f (n)) ⊆ NTIME (f (n)) ⊆ Gi s L ngôn ng c 96 Tuy nhiên, đ tr l i câu h i : V i chi phí th i gian nhi u h n (t ng ng : nhi u b nh h n) ng nh n bi t đ c th c s nhi u ngôn ng h n không ? ta có m nh đ sau : c đây, ta có: i ta có M nh đ 6.1 : V i m i hàm đ quy toàn ph n f, t n t i m t ngôn ng đ quy L không thu c h DTIME (f (n)) (m t cách t ng ng : không thu c h DSPACE (f (n))) Ch ng minh : S d ng k thu t đ ng chéo cho ngôn ng : L = { wi | Ti không th a nh n câu wi sau f (|wi|) b c tính toán } Th t v y, L m t ngôn ng đ quy không thu c h DTIME (f (n)) 97 ph c t p tính toán Gi a phép đo đ ph c t p tính toán khác này, ta có th thi t l p m i quan h M t s quan h d dàng nh n đ c nh sau : L ∈ DTIME (f (n)) ⇒ L ∈ DSPACE (f (n)) Th t v y, máy Turing th m m t ô t i m i b x y t t c ô đ u khác c tính toán Tr Lý thuy t tính toán P−b nh = NP−b nh Và ta có bao hàm sau : DSPACE (log2 (n)) ⊆ P ⊆ NP ⊆ P−b nh = NP−b nh ng h p x u nh t L ∈ DSPACE (f (n)) f (n) = log2 (n) ⇒ L ∈ DTIME (cf (n)) Th t v y, n u f (n) = log2 (n), t n t i m t h ng c cho cf(n) l n h n s c u hình phân bi t có đ dài t i đa f (n) c a m t máy Turing cho L ∈ NTIME (f (n)) ⇒ L ∈ DTIME (cf (n)) Th t v y, quan h đ n t vi c t ng thêm s c u hình phân bi t đ i v i m t d li u có đ dài n Th i gian t ng thêm cf (n) Sau m t quan h đ c cho b i đ nh lý Savitch nh lý Savitch WJ : L ∈ NSPACE (f (n)) f (n) = log2 (n) 98 ⇒ L ∈ DSPACE (f2 (n)) II.2 Các h P, NP P−b nh (P−space) Trong th c t , ng i ta cl ng m t toán : − x lý đ n u toán thu c l p P − không x lý đ n u toán không thu c l p P c (tractable), hay gi i đ c (workable) c (untractable), hay không gi i đ c (unworkable) Vì v y, ng i ta gi i quy t nh ng toán c n m t l ng th i gian b nh d ng đa th c có b c l n h n s làm t ng đ ph c t p tính toán III Rút g n đa th c toán NP−đ y đ III.1 Khái ni m Rút g n đa th c (polynomial reduction) làm m n (refinement) khái ni m rút g n s h c đ nh ngh a ch ng Ta v l i s đ rút g n s h c nh sau : Các l p c a đ ph c t p tính toán sau đ quan tr ng đ có tên riêng : P = U DTIME (ni), U NTIME (ni) i ≥1 NP = Bi u di n d li u c a toán A LP f A S*\L Nh v y : PA P l p ngôn ng đ c nh n bi t b i m t máy Turing đ n đ nh c n m t l ng th i gian b c đa th c, NP l p ngôn ng đ c nh n bi t b i m t máy Turing không đ n đ nh c n m t l ng th i gian b c đa th c Ta đ a vào l p P−b nh (P−space) NP−b nh (NP−space) nh sau : nh = U DSPACE (ni), U NSPACE (ni) i ≥1 NP−b nh = i ≥1 P−b nh NP−b nh B f i ≥1 P−b LP Anh c a f t bi u di n d li u c a toán A l p ngôn ng đ c nh n bi t b i m t máy Turing đ n đ nh c n m t l ng b nh b c đa th c, l p ngôn ng đ c nh n bi t b i m t máy Turing không đ n đ nh c n m t l ng b nh b c đa th c Rõ ràng ta có đ ng th c : S*\LP B Bi u di n d li u c a toán B Hình 6.1 Rút g n toán A v toán B nh ngh a 6.1 Ng i ta nói toán A đ c rút g n ki u đa th c v toán B n u t n t i m t máy Turing d ng cho m i d li u th c hi n tính hàm f h t m t l ng th i gian đa th c (polynomial time) Hàm f đ c xác đ nh t t p h p bi u di n d li u c a toán A vào t p h p bi u di n d li u c a toán B, th a mãn : w ∈ LA ⇔ f (w) ∈ LB Ng i ta nói r ng máy Turing th c hi n ki u đa th c (polynomially work) vi c rút g n toán A v toán B T đó, ta có m nh đ sau : M nh đ 6.2 : N u toán A đ c rút g n ki u đa th c v toán B, n u B m t toán thu c l p P (m t cách t ng ng : thu c l p NP), A c ng m t toán thu c l p P (m t cách t ng ng : thu c NP) Ng i ta c ng nói r ng l p P NP đóng đ i v i phép rút g n đa th c ph c t p tính toán 99 Ch ng minh : Th t v y, gi s T m t máy Turing luôn d ng nh n bi t ngôn ng LB m t l ng th i gian đa th c Gi s T’ m t máy Turing th c hi n vi c rút g n h t m t l ng th i gian đa th c t toán A v toán B Rõ ràng, máy Turing T’ next T luôn d ng nh n bi t ngôn ng LA m t l ng th i gian đa th c M t cách t Lý thuy t tính toán Câu h i : Có th s p x p vi c cho t ng s hình ph t nh h n ho c b ng k ? Nói cách khác, v i m i hoán v P c a n s nguyên đ u tiên, ta k t h p m t s nguyên : ⎧= ⎪ Pp = ⎨ Ta có m nh đ sau : M nh đ 6.3 : L p P đóng đ i v i phép rút g n s d ng b nh logarit Vi c chuy n m t ch ng trình RAM thành m t ch ng trình c a m t máy Turing đ c th c hi n cho th i gian ch y c a máy Turing đ c tính theo s b c tính toán, m t đa th c theo th i gian ch y ch ng trình c a máy RAM đ c tính theo s l nh (instructions) th c hi n T ng t , vi c chuy n m t công th c m t ngôn ng b c cao thành m t công th c c a m t máy RAM đ c th c hi n cho th i gian ch y công th c c a máy RAM đ c tính theo s l nh c a RAM th c hi n, m t đa th c v th i gian ch y công th c ngôn ng b c cao, đ c tính theo s l nh th c hi n T đó, vi c đ nh ngh a l p P NP đ c d a mô hình máy Turing nh ng không ph thu c xác vào mô hình này, đ đ m b o r ng m t ngôn ng thu c m t hai l p này, ch c n đ m s l ng phép toán m t cách đ n gi n Các toán c n Sau sáu toán c n Tin h c Bài toán tô màu đ nh c a m t đ th D li u : M t đ th G = m t s nguyên k Câu h i : Ta có th tô m i đ nh c a đ th m t màu cho c hai đ nh c a đ th đ c n i v i b i m t cung không đ c tô màu đ c ch n s k màu ? Bài toán l p k ho ch làm vi c D li u : Cho n vi c m t s nguyên k, m i vi c đ c đ c tr ng b i b ba s nguyên (ti, di, pi), v i ti, di, pi l n l t bi u di n th i gian th c hi n, th i gian k t thúc hình ph t ng v i vi c th i ∑ j = 1, n ⎡ Pp (j) ⎤ ⎣ ⎦ ⎪= ⎩ ng t , ta đ nh ngh a khái ni m rút g n s d ng b nh logarit nh ngh a 6.2 : Ng i ta nói toán A đ c rút g n v toán B c n m t l ng b nh logarit n u t n t i m t máy Turing luôn d ng cho m i d li u th c hi n tính hàm f s d ng m t l ng b nh theo logarit Hàm f đ c xác đ nh t t p h p bi u di n d li u c a toán A vào t p h p bi u di n d li u c a toán B, th a mãn : w ∈ LA ⇔ f (w) ∈ LB III.2 100 ng nãu ú ∑ r = 1, j t p(r) > d p(j) nãú u khäng i ta tìm m t hoán v P n u hoán v P t n t i cho Pp = k Bài toán s p x p thùng ch a D li u : Cho s nguyên c (dung l ng c a thùng), n v t đ c tr ng b i kích th c s1, s2, , sn v i < si ≤ c m t s nguyên k Câu h i : Có th đ t n v t vào nhi u nh t k thùng ch a đ c không ? Bài toán ba-lô (rucksack) D li u : Cho m t s nguyên c (kích th c ba-lô) n v t có kích th c l n l t s1, s2, , sn Câu h i : Có th b đ y hoàn toàn ba-lô b i m t s v t l y t n v t cho ? Bài toán th a mãn bi u th c boolean d ng chu n h i D li u: M t bi u th c boolean d ng chu n h i Câu h i : Có th gán giá tr cho bi n làm bi u th c th a mãn ? Bài toán đ ng Hamilton D li u: M t đ th G = < S, V> Câu h i : T n t i hay không m t đ đ th cho ? ng Hamilton (đi qua t t c đ nh) III.3 Ví d v rút g n ki u đa th c Bây gi ta xét m t ví d : rút g n ki u đa th c toán ba-lô v toán s p đ t vi c có hình ph t Gi s I = (s1, s2, , sn; c) m t d li u vào cho toán ba-lô - N u ∑ sj < c j = 1, n câu tr l i không Khi đó, ta xét toán s p đ t vi c có hình ph t đ ti = 2, di = pi = k = v i câu tr l i không - N u trái l i, c đ nh ngh a b i ∑ s j ≥ c câu tr l i tho mãn j = 1, n Ta xét toán s p đ t vi c có hình ph t đ di = c v i ∀i = n, k = ∑ c đ nh ngh a b i ti = pi = si sj − c j = 1, n Bây gi ta ki m tra tr ng h p cá bi t I c a toán ba-lô có m t l i gi i n u ch n u toán s p đ t vi c có hình ph t mà ta s đ a v c ng có m t l i gi i : ph c t p tính toán 101 N u toán ba-lô có m t l i gi i, t n t i m t t p h p J thu c kho ng { 1, , n } cho ∑j∈J sj = c Ta ch n m t hoán v P cho t t c vi c có ch s J đ c ch n tr c vi c khác C || J || vi c đ u đ c làm xong tr c ngày k t thúc c a chúng, đó, vi c khác đ c làm xong sau ngày k t thúc, t sinh m t hình ph t: ∑J = || J|| + 1, npP (J) = ∑J = || J|| + 1, n sP (J) = ∑J = 1, n J ∈J = ∑J = 1, n sJ - c = k Nh v y, vi c đ c làm xong v i m t hình ph t nh h n ho cb ng k, gi s m s nguyên l n nh t cho m vi c đ u tiên đ c làm xong tr c ngày k t thúc chung c a chúng c Nh v y, ta có: ∑J 1, m tP(J) ≤ c hình ph t : ∑J = m + 1, n PP(J) ≤ k Do ti = Pi = si, ta có ∑J - 1, m tP(J)z + ∑J - m + 1, n PP(J) = ∑J - 1,n sJ = c + k Do đó, c hai b t đ ng th c đ u b ng v t có ch s P(j) v i j = m s làm đ y ba-lô Ta c n ki m ch ng r ng vi c rút g n theo th i gian đa th c, ngh a ch có m t phép tính nh t tính giá tr ∑J - 1, n sJ - c Rõ ràng phép tính đòi h i m t th i gian đa th c Vi c xây d ng toán s p đ t vi c có hình ph t s có th i gian h ng n u s nguyên âm, có th i gian n tính n u s nguyên d ng Cho đ n lúc này, ta ch a bi t có toán sáu toán thu c vào l p không P Tuy nhiên, ng i ta d dàng ch ng minh đ c r ng chúng đ u thu c l p NP Ví d Bài toán tô màu đ nh c a m t đ th thu c l p NP Th t v y, máy Turing không đ n đ nh sau nh n bi t ngôn ng k t h p v i toán v th i gian n tính (và v y, đa th c) : th i gian đ u, máy Turing th c hi n tô cho m i đ nh, m t cách không đ n đ nh, m t màu s k màu Sau đó, máy Turing ki m tra vi c tô màu th a mãn ch a, ngh a ki m tra t i mút c a cung xem đ nh có m t tô m t màu không ? Bây gi ta ch ng minh r ng th c t t t c sáu toán đ u có th rút g n ki u đa th c t toán T đó, c sáu toán đ u thu c l p P n u ch n u m t chúng thu c P Ta có đ nh ngh a sau : nh ngh a 6.3 M t toán NP-c ng (NP - Comlete) n u l p NP Rõ ràng, đ nh ngh a có ích t n t i nh ng toán NP-đ y đ nh v y 102 Lý thuy t tính toán nh ký Cook - 1971 (Stephen Cook) : Bài toán v tính th a mãn c a bi u th c boolean d toán NP -đ y đ Ta không ch ng minh đ nh lý i d ng chu n h i m t B đ C sáu toán đ u NP-đ y đ Ta có m nh đ sau: M nh đ P = NP n u ch n u t n t i ngôn ng L ∈ P cho L NP-đ y đ Bài t p Xét ngôn ng L = { wcw’ | w ∈ { a, b }* w ≠ w’ } Ch ng minh r ng L ∈ NTIME (n) ∩ DSPACE (log2 (n)) Ch ng minh r ng c sáu toán nêu đ u có th rút g n ki u đa th c t toán v toán M t đ th đ c g i đ y đ n u có hai đ nh b t k đ c n i v i b i m t c nh th đ c g i k-đ y đ n u t n t i m t đ th có k đ nh đ y đ Bài toán đ y đ k-đ y đ nh sau: D li u : M t đ th G m t s nguyên k Câu h i : G có ph i k-đ y đ ? Ch ng minh r ng toán đ th k-đ y đ toán NP đ y đ Nh ng toán sau thu c l p NP, thu c l p P, thu c l p NP-b nh ? Bài toán NP-đ y đ ? a) D li u : M t câu w bi u di n m t bi u th c Boolean Câu h i : Câu w có ph i m t h ng (tautology) không ? b) D li u : M t máy Turing T b ng ch { a, b } Câu h i : Có t n t i không m t câu w ∈ S* có đ dài n cho máy Turing T nh n bi t w h t m t l ng th i gian nh h n bo c b ng n ? c) D li u : M t máy Turing b ng ch { a, b } Câu h i : T n t i hay không m t câu có đ dài n cho T nh n bi t câu v b nh nh h n ho c b ng n ? d) D li u : M t c p đ th (G, G’) Câu h i : th G’ có đ ng c u (isomorphic) v i m t đ th c a G hay không ? [...]... mô ph ng vi c tính toán đ y đ c a máy Turing Church «The greatest ocean of truth lay all undiscovered before me» Sir Isaac Newton I S t ng đ ng gi a các mô hình máy Turing và máy RAM đ Trong m c này, ta s ch ra r ng m t hàm là T -tính đ c n u và ch n u hàm đó là tính c nh m t máy RAM (hàm tính đ c nh m t máy RAM đ c g i là R tính đ c) I.1 Lý thuy t tính toán M i hàm T -tính đ c c ng là R tính đ đây, v... x g Lý thuy t tính toán trên b ng th ba, ta li t kê t t c các dãy s th t c a các quy t c đã dùng đ n đ tính toán c a máy Turing T (trong các dãy s này có các dãy s th t c a các quy t c đ c dùng cho các tính toán h p th c) Phép tính th c hi n trên b ng th hai nh sau : áp d ng các quy t c c a T cho d li u vào đã đ c chép t b ng m t, n u đ c, thì dãy quy t c này đ c li t kê trên b ng th ba N u phép tính. .. ng : n Bin_FivnG : (G*) → G* nh ngh a 3.1 : M t hàm b ph n φ t S* → S* đ c g i là tính đ c b i máy Turing (Turing −computable), vi t t t T tính đ c, n u t n t i m t máy Turing đ n đ nh tính đ c hàm này Rõ ràng, v i m i hàm T tính đ c, s có vô s các máy Turing tính nó Chú ý r ng quan đi m tính đ c trong lý thuy t tính toán đ c nêu ra liên quan ch t ch đ n s nh n bi t (cognition) : 32 đây sao cho m i... T2 next TU next while T give qNo : T1 next T2 next T _ cho phép th c hi n f.฀ 46 Lý thuy t tính toán IV Các bi n th khác c a mô hình máy Turing Theo quan ni m c a lý thuy t tính toán, hai mô hình đ c g i là t ng đ ng n u nh ng gì tính đ c (m t cách t ng ng : nh n bi t đ c, li t kê đ c) trong m t mô hình này thì c ng có th tính đ c (m t cách t ng ng : nh n bi t đ c, li t kê đ c) trong mô hình kia Trong... mô hình tính toán mô ph ng ho t đ ng c a t t c các ph n t c a mô hình nh v a xét đ c g i là m t máy RAM v n n ng (universal) 24 Lý thuy t tính toán Bài t p 1 Vi t ch ng trình c a m t máy RAM tính nn v i s nguyên n cho tr c 2 Vi t ch ng trình c a m t máy RASP tính giá tr bình quân nguyên c a dãy n s nguyên cho tr c, v i n l 3 Vi t ch ng trình c a m t máy RASP không s d ng ki u gián ti p đ tính gi ng... : 7 ~ 198 × 28 Lý thuy t tính toán III.2 III M t mô hình thô s ki u RAM 198 20 + 7 Hình 2.4 Ghép hai s nguyên Ng c l i, các phép toán s h c có th đ c th c hi n trên bi u di n các s nguyên b i các chu i ký t , đó là các phép tính s c p Chú ý r ng khi ng i ta ti n hành các phép toán trên các s nguyên theo cách bi u di n nh phân, ng i ta đã x lý trên các câu c a b ng ch {0, 1}, và phép toán đ c th c thi... c u các k thu t cho phép xây d ng l p các hàm T tính đ c nh phép h p thành 35 Mô hình các máy RAM III.4.1 Các máy đ c tiêu chu n hóa M t máy Turing đ c g i là đã tiêu chu n hóa (standadized) n u, khi tính toán xong, đ u đ c-ghi đ c đ t t i v trí khác ký t tr ng # c n trái nh t c a ph n h u ích trên b ng ### a q Hình 3.3 Máy Turing đ Lý thuy t tính toán III.4.2 Các máy Turing đ c chu n hóa Cho máy... n hàm f1 Nh v y m t hàm T tính đ c ph i không ph thu c vào cách bi u di n l a ch n, mi n r ng cách bi u di n này v n còn h p lý Ngh a là ng i ta có th chuy n t cách bi u di n này qua cách bi u di n khác nh m t máy Turing 44 Lý thuy t tính toán Chính vì v y mà ng i ta th ng nói theo cách l m d ng (excessively) v hàm mà không ch rõ cách bi u di n l a ch n Ch ng h n, t n t i T tính đ c phép c ng các s... đã cho c, t n t i duy nh t m t phép tính h p l có th Ng i ta g i máy Turing nh v y là đ n đ nh (deterministic) Ta d nh n th y tính đ n gi n c a các máy Turing đ n đ nh v i quan ni m nh sau : m t câu f ∈ S* không đ c th a nh n ngay khi phép tính h p l xu t phát t (e, q1, f) không d ng Trong tr ng h p này, ch ng trình P c a máy Turing : P⊆Q´S´S´M´Q 30 Lý thuy t tính toán là m t hàm b ph n (partial function)... ra r ng, l p các hàm T tính đ r ng t n t i các hàm không là T tính đ c III L p các hàm T tính đ c là r t l n, tr c khi ch ra c Trong m c này, ta s xét m t s hàm T -tính đ c r t s c p (elementary functions), đ t đó, ta xây d ng các hàm ph c t p h n nh phép h p thành Ta c ng tìm cách m r ng kh n ng ho t đ ng c a các máy Turing III.1 M t s hàm s c p Ta xây d ng máy Turing đ tính toán m t s hàm r t s c ... (x) 78 Lý thuy t tính toán Tính toán h p th c không d ng Tính toán h p th c d ng d n đ n m t tr ng thái không thu c A Tính toán h p th c d ng d n đ n m t tr ng thái thu c A CH NG Các toán không... ta s ch r ng m t hàm T -tính đ c n u ch n u hàm tính c nh m t máy RAM (hàm tính đ c nh m t máy RAM đ c g i R tính đ c) I.1 Lý thuy t tính toán M i hàm T -tính đ c c ng R tính đ đây, v n đ c n ch... n u t n t i m t tính toán h p th c T : q1f Ã−* g1qhg2 88 Lý thuy t tính toán Do tính toán h p th c d n đ n tr ng thái qh, T s d ng Nh v y, ta rút g n toán d ng c a máy Turing v toán t ng ng Post

Ngày đăng: 07/12/2015, 03:44

Tài liệu cùng người dùng

Tài liệu liên quan