1. Trang chủ
  2. » Khoa Học Tự Nhiên

lý thuyết tính toán

54 116 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 54
Dung lượng 0,95 MB

Nội dung

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

w