CÁC MÁY MACHINES.... Các hàm h ng constant functions.... Các hàm chi u projection functions .... Các hàm đ quy nguyên th y primitive recursive functions...62 II.1.1... CÁC BÀI TOÁN KHÔNG
Trang 1I H C À N NG
KHOA CÔNG NGH THÔNG TIN
LÝ THUY T TÍNH TOÁN
PGS.TS PHAN HUY KHÁNH
À N NG 1999
Trang 2biên so n 1
M C L C
CH NG 1 NH P MÔN LÝ THUY T TÍNH TOÁN 1
I CÁC I T NG C X LÝ TRONG TIN H C 1
II CÁC MÁY (MACHINES) 2
II.1 Khía c nh ch c n ng (functional look) 2
II.2 Khía c nh c u trúc (structural look) 3
III MÔ HÌNH TÍNH TOÁN 4
IV NH NGH A BÀI TOÁN 5
CH NG 2 MÔ HÌNH CÁC MÁY RAM 9
I CÁC MÁY RAM 9
II MÔPH NG M TMÁYB IM TMÁYKHÁC 16
III M TMÔHÌNHTHÔS KI U RAM 19
III.1 Mô ph ng các phép toán trên chu i ký t b i các phép toán trên các s nguyên 19
III.2 Thu g n t p h p các l nh ng t 20
III.3 Thu g n t p h p các l nh s h c 20
IV MÁY RAM V N N NG 22
CH NG 3 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 Các hàm h ng (constant functions) 32
III.1.2 Các hàm chi u (projection functions) 33
III.2 Các hàm k ti p (successor functions) 33
III.3 Các hàm k tr c (predecessor functions) 34
III.4 S h p thành (composition) 34
III.3.1 Các máy đ c tiêu chu n hóa 35
III.3.2 Các máy Turing đ c chu n hóa 36
III.3.3 T h p các máy Turing 36
III.5 L p trình trên ngôn ng b c cao máy Turing 37
III.4.1 C u trúc if then else và c u trúc r nhi u nhánh 37
III.4.2 C u trúc while 38
III.6 Qu n lý b nh 39
III.5.1 Máy Turing chuy n m t ô qua ph i 39
III.5.2 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
2 Lý thuy t tính toán III.7 M t s máy Turing thông d ng 40
III.6.1 Sao chép 40
III.6.2 Ki m tra b ng nhau 41
III.6.3 Li t kê các câu, các c p câu và dãy các câu 41
III.6.4 Các hàm chi u ng c (antiprojection function) 42
III.6.5 Các hàm giao hoán 42
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
IV.2.1 Máy Turing có k b ng 48
IV.2.2 Các máy off−line và các máy có b ng ra 49
IV.2.3 Các máy Turing không đ n đ nh 49
IV.2.4 Thu g n m t b ng ch còn ba ký t 50
IV.2.5 Rút g n m t b ng ch còn hai ký t 52
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 T N T I CAC HAM KHONG LA T−TINH D C 55
CH NG 4 LU N CHURCH 59
I 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 là R−tính đ c 59
I.2 M i hàm R−tính đ c c ng là T−tính đ c 60
I.2.1 T ng n i dung thanh ghi n lên 1 60
I.2.2 Gi m 1 n i dung thanh ghi n 60
I.2.3 a n i dung thanh ghi n v 0 60
I.2.4 Nh y theo n i dung thanh ghi n 61
I.2.5 Hoán v n i dung hai thanh ghi n và m 61
I.3 S khác nhau gi a máy Turing và 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 Xây d ng các hàm s c p 62
II.1.2 S đ h p thành t ng quát 62
II.1.3 S đ đ quy đ n (simple recurrence) 63
II.1.4 S đ đ quy đ ng th i 63
II.1.5 Các hàm đ c đ nh ngh a b i case 65
II.2 Các hàm đ quy 67
II.2.1 S đ t i thi u 67
II.2.2 Các hàm đ quy tr u t ng (abstract recursive functions) 68
II.2.3 M t s ví d 68
II.3 Các hàm đ quy đ u T−tính đ c 70
II.3.1 S đ h p thành t ng quát 70
II.3.2 S đ đ quy đ n 70
II.3.3 S đ t i thi u 71
II.4 M i hàm T−tính đ c là đ quy b ph n 71
III LU N CHURCH 73
Trang 3Nh p môn lý thuy t tính toán 3
CH NG 5 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 6 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 và 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 bài toán c đi n 99
III.3 Ví d v rút g n ki u đa th c 100
Trang 4biên so n 1
Nh p môn lý thuy t tính toán
(Introduction to the theory of computation)
It’s not bad being the small fish
Trong Tin h c, các đ i t ng (objects) đ c x lý thông th ng là 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 này luôn luôn
đ c bi u di n (represented) d i m t d ng nào đó
Ch ng h n trong ngôn ng t nhiên, s nguyên 1999 đ c bi u di n trong 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 các phép toán s h c thông th ng) đ i v i
các s nguyên đ c ti n hành trên cách bi u di n c s 10 này
Ví d : Phép c ng hai s 1999 + 1 = 2000
Ng i ta gi thi t r ng các đ i t ng đ c x lý là nh ng câu (word, hay
sentence) đ c xây d ng trên m t b ng ch (alphabet) h u h n, đ c xem nh là
dài (length) c a m t câu (trên b ng ch S đã cho) là s l ng các ký t có
m t trong câu Câu r ng (empty word), đ c ký hi u là e (ω ho c e, ho c l), là
câu có đ dài không, t c không ch a ký t nào
Ghép (concatenation) c a hai câu là đ t k ti p hai câu đã cho (trên cùng
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 trên 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) chính là 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) trên S* nh sau : cho m t th t tùy ý trên các ký t c a S,
ng i ta s p x p các câu theo m t th t phân c p (hierechical order), đ u tiên là
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 các ký t là a < b < c, ta
có th đánh s các câu c a S* (k c câu r ng e) b t đ u t 1 tr đi nh sau :
Hình 1.1 Th t phân c p trong 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 :
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, thì l i ra,
ng i ta nh n đ c k t qu (result)
Gi thi t r ng các d li u vào có d ng là dãy các ký t , là m t câu trên m t
b ng ch nào đó đã cho (vào t bàn phím ch ng h n) K t qu là 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 các ki u máy (machine type) tùy theo b n ch t c a t p h p k t qu này nh sau :
1 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ác câu trên b ng ch vào sau khi đ c x lý s cho ra m t k t
qu là có (đúng, true), ho c không (sai, false)
Trang 5Nh p môn lý thuy t tính toán 3
Các t p h p này t o thành các ngôn ng (language) Hai t p h p đ u là bù
nhau 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 đó là
máy đoán nh n (recognition machine) câu
2 N u k t qu là m t dãy h u h n các ký t , ta nh n đ c m t câu trên m t
b ng ch G nào đó
Cho S là 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 là 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*,
thì f đ c g i là hàm toàn ph n (partial function) Ng i ta g i đó là 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à chúng ta v a phân bi t
th c ra ch là m t tr ng h p đ c bi t c a ki u máy th hai (máy tính)
3 N u k t qu là m t dãy vô h n các ký t và b ng ch đang s d ng ch có
t i thi u hai ký t , trong đó có m t d u phân cách (separator) #, thì ng i ta
nh n đ c k t qu là m t dãy liên ti p các câu phân cách nhau b i d u #,
t o thành m t ngôn ng Ng i ta g i ngôn ng này là 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 các máy đ c mô t đ y đ v ch c n ng ho t
đ ng c a chúng Nh ng máy này có thê :
Th c hi n các phép toán s c p (elementary operation) trong 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 trong m t t p h p h u h n các phép toán là m t ph n mô t c u
trúc máy
L n l t th c hi n các 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), là m t ph n mô t c u trúc máy
M t dãy các phép toán s c p đ c máy th c hi n liên ti p đ c g i là m t
tính toán (computation) c a máy
III Mô hình tính toán
Thay vì ph i thay đ i l i máy tính m i l n thay đ i bài toán c n gi i, ng i ta
đ nh ngh a các l p máy có cùng nguyên lý ho t đ ng và chúng ch khác nhau
ch ng trình
Ng i ta g i mô hình tính toán (model), ký hi u T, là s mô t t t c các phép toán s c p có th đ c th c hi n trên nh ng đ i t ng nào, cách tác đ ng lên
m i m t trong chúng nh th nào, và mô t cách th c ch ng trình đ c th c
hi n (execution) trên máy
M t tr ng h p riêng (instance) c a mô hình là m t máy bi t l p nào đó, g i
t t là máy, ho t đ ng theo cách mô hình tính toán đã ch ra Máy này đ c đ nh ngh a b i d li u vào c a ch ng trình :
− l p các ngôn ng li t kê đ c (enumerable) đ c g i là T −li t kê đ c,
b i m t máy nào đó c a mô hình này ? Hai mô hình tính toán đ c đ a ra so sánh v i nhau : m t mô hình T1 đ c
nói là 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 đ c c ng là T1−nh n bi t đ c, ho c
− m i hàm T2-tính đ c c ng là T1−tính đ c, ho c
− m i ngôn ng T2-li t kê đ c c ng là T1-li t kê đ c
Hai mô hình đ c g i là t ng đ ng (equivalent) n u m i mô hình m nh
h n mô hình kia và ng c l i
Hai mô hình là không th so sánh v i nhau đ c n u không t n t i mô hình
nào ít ra đ m nh h n mô hình kia
Trang 6Nh p môn lý thuy t tính toán 5
Trong Tin h c lý thuy t, đ nh ngh a v bài 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 bài toán đ c dùng trong 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 bài toán là :
− S mô t cách bi u di n (h u h n) các 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 các ph n t c a t p h p này, có th là đúng,
ho c có th là sai tùy theo ph n t đ c ch n
Câu h i : Có t n t i m t đ ng đi Hamilton (đi qua h t t t c các đ nh c a
đ th , m i đ nh đi qua đúng m t l n) trong đ th đã cho không ?
Bài toán 5 :
D li u : M t bi u th c chính quy (regular expression) đ c xây d ng trên
m t b ng ch S (là m t bi u th c nh n đ c t các câu w∈S* b i
các phép ho c, phép ghép ti p, phép * và 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 ?
c a bài toán, đ c bi u di n b i m t câu trên m t b ng ch h u h n đã cho
V i m i bài toán P đ c h p thành t m t bi u di n các ph n t c a m t t p
h p và t m t phát bi u liên quan đ n các ph n t này, ng i ta th ng k t h p
bài toán P v i m t ngôn ng , g i là ngôn ng đ c tr ng (characteristic language)
c a bài toán, đ c h p thành t t p h p các câu bi u di n m t ph n t c a t p
h p đ t đó, k t qu c a bài toán là câu tr l i đúng Ng i ta ký hi u LP là ngôn ng đ c tr ng c a bài toán P
Cho tr c m t bài toán P, bài toán ng c l i CP là bài toán nh n đ c t P
b ng cách gi nguyên cách bi u di n các d li u nh ng riêng câu h i thì đ t
ng c l i Ví d , bài toán ng c v i bài toán 1 s là :
Bài toán 1’ :
D li u : Cho m t s nguyên vi t trong h 10
Câu h i : S nguyên này không ph i là m t s nguyên t ?
T đó, l i gi i m t bài 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 bài toán này Ng i ta đ a ra đ nh ngh a hình th c sau đây :
nh ngh a 1.2 :
M t máy gi i (solve) m t bài toán P n u và 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 bài toán này, máy cho phép xác đ nh,
trong m t kho ng th i gian h u h n, n u câu này thu c v LP hay LCP
Ng i ta phân l p các bài toán tùy theo đ khó (difficulty) đ đ a ra câu tr
l i t d li u vào đã cho
M t bài toán là t m th ng (trivial) n u LP = ∅ ho c n u LCP= ∅
Th t v y, trong tr ng h p này, không c n thi t bi t d li u đ a vào đ đ a ra câu tr l i Chú ý r ng, nh ng gì là t m th ng, đó là vi c đ a ra câu tr l i,
nh ng có th r t khó đ ch ng minh r ng bài toán là t m th ng theo ngh a này
Ví d , bài toán 2 là t m th ng
Các bài toán 1 và 3 có cùng câu h i, nh ng bài toán 3 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 ra k t qu , tuy nhiên trong bài toán 1 thì c n ph i x lý d li u vào Bài toán 4 ph c t p h n : ng i ta ch a bi t
ph ng pháp nào 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 ra
Trang 7Nh p môn lý thuy t tính toán 7
Bài t p
1) Ch ng minh r ng m t t p h p E là 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 là m t
t p h p vô h n đ m đ c
3) Ch ng minh các t p h p sau đây là vô h n đ m đ c : N×N, Q, t p h p Ν*
g m các dãy s nguyên, S*, S*×G*, S*×N, t p h p (S*)* g m các dãy các
câu Th hi n các song ánh (bijection) gi a N và m i m t t p h p v a nêu
4) Cho S là 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|
là đ dài c a w và m(w) là s th t c a w trong th t phân c p đã cho Hãy
tìm cách tính m(w) khi bi t w
5) Ch ng minh r ng N N không ph i là vô h n đ m đ c T p h p các ch ng
trình Pascal có ph i là vô h n đ m đ c hay không ? T p h p các hàm f: N →
N tính đ c nh m t ch ng trình Psacal có là vô h n đ m đ c hay không ?
T đó suy ra r ng t n t i các hàm t N vào N không là vô h n đ m đ c nh
Trang 8biên so n 9
Mô hình các máy RAM
« I like the dreams of the future better than
the history of the past »
Jefferson
I Các máy RAM
Máy RAM là m t mô hình tính toán r t g n v i máy tính đi n t và ngôn ng
assembler Máy RAM có cá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 ô trên b ng vào, đ c t trái
qua ph i
M t b ng ra (output tape) c ng chia ra thành nhi u ô liên ti p nhau và m t
đ u ghi (write head) có th ghi m i l n lên m t ô và ti n t trái qua ph i
Ng i ta nói r ng đ u đ c (ho c ghi) đ c đ t trên (t i) m t ô và 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 và b ng ra c a máy RAM đ c g i là các c quan vào/ra
Máy RAM còn có các thành ph n bên trong nh sau :
Các thanh ghi (registers) là các ph n t nh đ c đánh s th t , s l ng
các thanh ghi có th l n tu ý M i thanh ghi có th l u gi m t s nguyên
Các thanh ghi l n l t đ c đ t tên là R0, R1, R2, , Rn
Ch s i, i = 0, 1, 2, , đ c g i là đ a ch (address) c a m i thanh ghi (hay
c a b nh ) Riêng R0 là m t thanh ghi đ c bi t, đ c g i là thanh t ng (ACC −
accumulator) hay thanh tích lu
M t t p h p các đ 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 các l nh s c p (primary instructions) không b thay đ i
trong quá trình ch y (th c hi n) M i l nh đ c l u tr trong 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 đang đ c th c hi n, đ c g i là
thanh đ m l nh (OC − Ordinal Counter) Lúc đ u n i dung là c a OC là 1
Trong ki u máy này, ng i ta truy c p tr c ti p đ n m i thanh ghi b i đ a ch
c a thanh ghi đó Chính lý do này mà ki u máy này đ c đ t tên là Random
Access Memory (vi t t t RAM)
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 còn g i là l nh chuy n đi u khi n) :
JUMP Label JGTZ Label JZERO Label HALT
Nhóm l nh vào − ra :
READ Operand WRITE Operand
đ m l nh
y1 y2 y3 B ng ra
Ch ng trình
x1 x2 xn B ng vào
Trang 9Mô hình các máy RAM 11
Theo nguyên t c đ a ch , ph n toán h ng là đ 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 là m t trong ba
ki u sau :
Ki u đ a ch Ý ngh a
S nguyên n Ch n i dung c a thanh ghi th n (Rn)
A: n (A = Absolute) toán h ng chính là s nguyên n đó
I: n (I = Indirection) toán h ng là n i dung c a thanh ghi có s th
t là n i dung c a thanh ghi Rn ây là ki u l nh gián ti p
N u l nh là m t l nh nh y thì đ a ch chính là s th t c a l nh trong ch ng
trình Các l nh trên đây c a máy RAM đi n hình cho các l nh c a ngôn ng
assembler Tuy nhiên đây v ng m t các l nh x lý ký t và các l nh logic nh m
đ n gi n cách trình bày
Th t th c hi n các l nh c a ch ng trình là tu n t (on sequence), b t đ u
t l nh đ u tiên (có nhãn 1) Ngo i l duy nh t là khi g p l nh nh y (hay chuy n
đi u khi n) thì l nh ti p theo đ c th c hi n có nhãn ch đ nh b i l nh nh y này
Nguyên t c th c hi n nh sau : OC luôn luôn ch a nhãn c a l nh s đ c
th c hi n, lúc đ u n i dung OC là 1 Sau khi th c hi n l nh, n i dung OC đ c
t đ ng t ng thêm 1 (increment) n u nh l nh v a th c hi n không là l nh nh y
N u nh l nh v a th c hi n là l nh nh y thì n i dung c a OC l y nhãn là ph n
đ a ch c a l nh nh y này
Sau đây 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 thanh ghi
th i là Ri, s nguyên i n m bên ph i d u gán ch giá tr chính là s
nguyên i đó
<i> Ch n i dung c a thanh ghi Ri
<<i>> Ch n i dung c a thanh ghi có s th t đ c ch a trong thanh ghi
Ri đ i v i ki u l nh gián ti p
ACC Ch thanh ghi R0
CO Ch thanh đ m l nh
<CO> N i dung c a CO
Sau đây là b ng các l nh RAM và ý ngh a s d ng c a chúng
ADD n ACC ← <ACC> + <n>
SUB n ACC ← <ACC> − <n>
MULT n ACC ← <ACC> × <n>
DIV n ACC ← <ACC> / <n>
đ u ghi d ch qua ph i m t ô
Ví d 2.1 : Ch ng trình RAM sau đây đánh giá tr n!
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 1 R1 ← <ACC>
4: STORE 2 R2 ← <ACC>
DECR 1 R1 ← < R1> − 1 LOAD 1 ACC ← <R1>
JZERO 12 n u <ACC> = 0 nh y đ n 12
MULT 2 ACC ← <ACC> * <R2>
10: LOAD A: 1 ACC ← 1 STORE 2 R2 ← <ACC>
12 : WRITE 2 ghi ra <R2>
Trang 10Mô hình các máy RAM 13
Ta th y m t trình RAM xác đ nh m t ánh x t t p các b ng vào lên t p các
b ng ra ây là ánh x b ph n (partial map) vì m t s ánh x có th không xác
đ nh trên m t s b ng vào, ngh a là ch ng trình ng v i b ng vào đó không
m t ký t k t qu và 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 thì 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 nhau c b n gi a mô hình máy RAM v a mô t trên và các máy tinh đi n t hi n nay là ch :
1) Ta đã gi thi t có th s d ng m t s l n tùy ý các thanh ghi, tuy nhiên trong th c t đi u này 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 thanh ghi nào đó, ho c vào m t ô nào đó trên b ng vào, ho c trên b ng ra Nh ng đi u này c ng r t khó th c hi n trong th c ti n
2) Ta đã gi thi t r ng ch ng trình có s n trong b nh RAM ch có th đ c (không th b thay đ i khi ch y ch ng trình), khác v i các b nh ki u thanh ghi i u này c ng không x y ra v i các máy tính thông d ng
S khác nhau chi ti t nh sau : 3) Các l nh s c p đ c ch n h n ch h n so v i các 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 các l nh s c p
4) Các d li u đ a vào không ph i d i d ng các s nguyên đ c đ c toàn b
m t l n trong m t ô, mà d i d ng m t dãy ký t (m t dãy các ch s ),
t ng t nh v y đ i v i các k t qu ra
Ta hãy xem làm cách nào đ gi i quy t v n đ do 4) đ t ra : Trong các máy tính, các s nguyên th ng đ c bi u di n theo hai cách phân bi t là 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 vì 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 trong các thanh ghi, sau đó chuy n đ i k t qu đang d ng bi u di n nh phân c a s nguyên thành chu i ký t trên b ng ra
i m 1) trên đây có ngh a : trong m i tr ng h p, kích th c c a bài toán c n
gi i là đ bé đ b nh máy tính có th ch a h t d ng nh phân trong các đ 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 các ch s thì không còn gi thi t s l n tùy ý n a
Trang 11Mô hình các máy RAM 15
Cu i cùng, s khác nhau đi m (2) đ a đ n vi c xây d ng m t mô hình
t ng t mô hình RAM, nh ng ch ng trình đ c đ t trong các thanh ghi (và do
v y có th b thay đ i), đ c g i là mô hình các máy RASP (Random Access
with Stored Program) S khác nhau c b n v i các máy RAM là vùng nh l u
gi ch ng trình c a RASP hoàn toàn không khác gì so v i các vùng nh khác
Máy RASP
thu n ti n cách trình bày, ta quy c r ng m i l nh RASP chi m ch hai
thanh ghi liên ti p nhau : thanh ghi đ u ch a tr ng toán h ng, thanh ghi th hai
ch a tr ng đ a ch c a l nh
Hình 2.2 S đ m t máy RASP
Trong máy RASP, thanh t ng luôn luôn là R0, thanh ghi R1 dùng đ l u gi
trung gian n i dung c a thanh t ng
Các thanh ghi t 2 p (v i p là m t s nguyên l ) ch a ch ng trình c a máy
RASP, và các thanh ghi ti p theo, t p + 1 tr đi, là các thanh ghi còn tr ng
S khác nhau c b n v i mô hình máy RAM là có th thay đ i m t thanh ghi
i
y1 y2 y3 B ng ra
x1 x2 xn B ng vào
II Mô ph ng m t máy b i m t máy khác
T đây tr đi, ng i ta th ng ph i mô ph ng m t máy b i m t máy khác : máy mô ph ng s b t ch c hay nh i l i (mime) m i m t l nh c a máy đ c mô
ph ng, b ng cách th c hi n nhi u l nh (nói chung) đ đi đ n cùng m t k t qu
Khi có m t máy RAM M có ch ng trình P ch y và s d ng đ n thanh ghi 0
và các thanh ghi t 1 đ n p (giá tr c a p thay đ i tùy theo d li u), ng i ta nói
r ng m t máy RAM M’ có ch ng trình P’ mô ph ng ch c n ng c a máy RAM
M n u :
T n t i m t ánh x I t N vào N mà bi n 0 thành 0
M i l nh c a P đ c thay th b i m t l nh c a P’ sao cho, m i l n th c
hi n ch ng trình P (ngh a là v i m i d li u), n i dung m i thanh ghi I (r)
c a M’ sau khi th c hi n dãy các l nh c a P’ là gi ng nh n i dung c a thanh ghi R c a M sau khi th c hi n các l nh t ng ng c a P
Ví d 2.3 : D ch chuy n các đ a ch thanh ghi
Xu t phát t m t máy RAM có ch ng trình P khi ch y s d ng thanh ghi 0
và các thanh ghi t 1 đ n p, ta có th xây d ng m t máy RAM khác có ch ng
đ n, b ng cách thêm giá tr k (nh l nh ADD A:k) vào n i dung c a thanh ghi
liên quan (đ t sau I) đ th c hi n ki u gián ti p
Các máy RASP c ng có th đ c mô ph ng và có th x lý ki u l nh gián
ti p
D ch chuy n các đ a ch thanh ghi c a RASP
Nh ng gì mà m t máy RAM làm đ c thì m t máy RASP c ng có th đ c làm đ c Th t v y, n u ch ng trình c a RASP đ c l u gi trong các thanh ghi t 2 đ n p, ch c n th c hi n m t s bi n đ i c a p lên t t c các s c a thanh ghi s d ng b i máy RAM t ng ng
Tuy nhiên trong mô hình c a RASP, ki u l nh gián ti p đ c x lý nh sau :
Gi s m t ch ng trình P c a máy RASP đ c l u gi t thanh ghi s 2 đ n
p và khi ch y s d ng đ n các thanh ghi t p + 1 đ n q Ta s xây d ng m t
ch ng trình m i mô ph ng P đ c l u gi trong các thanh ghi t 2 đ n p’
Khi ch y, ch ng trình s d ng đ n các thanh ghi t p’ + 1 đ n q + p’ − p,
b ng cách thay th m i l nh ki u gián ti p b i 6 l nh không là ki u gián ti p, sao cho k t qu c a 6 l nh này là t ng t trên m i thanh ghi s p’ + i v i k t qu
c a l nh đ c mô ph ng trên m i thanh ghi s p + i
Trang 12Mô hình câc mây RAM 17
M t câch c th h n, p’ − p có giâ tr 2 × (6 − 1) × s = 10s v i s lă t ng s
l nh ki u giân ti p c a ch ng trình
Gi s ta c n mô ph ng m t trong câc l nh MULT I: n c a ch ng trình
RASP c n mô ph ng, đ c l u gi trín câc thanh ghi 30 vă 31 c a mây xu t
phât mô ph ng, ta c n t o ra nhóm 6 l nh chi m 12 liín ti p, gi s t thanh
ghi s 50 đ n 61, v i gi thi t ch ng trình có trín hai l nh ki u giân ti p L nh
đ u tiín c a nhóm 6 l nh năy lă l u gi n i dung c a thanh t ng văo thanh ghi
R1 :
50 STORE
L nh th hai n p văo thanh t ng n i dung c a thanh ghi n + p’ − p (t ng ng
v i thanh ghi n trong ch ng trình xu t phât) :
52 LOAD
53 n + p’- p ACC ← <Rn> + (p’ − p)
L nh th ba t ng n i dung c a thanh t ng lín p’ − p đ lúc năy thanh t ng
ch a đ a ch c a thanh ghi ch a giâ tr c n nhđn :
đđy, lúc b t đ u th c hi n ch ng trình, x lă m t giâ tr năo đó, vă m i l n
th c hi n, n u thanh ghi n c a mây xu t phât ch a s nguyín a, thì x s có giâ tr
lă a + p’ - p t i th i đi m th c hi n l nh đ t trong câc thanh ghi 60 vă 61 Nh
v y, khi mô ph ng trình P thănh P’ đ t trong câc thanh ghi RASP, P’ đê b thay
b a b
b a a
nếu
nếu 1
Trang 13Mô hình các máy RAM 19
III M t mô hình thô s ki u RAM
Trong ph n này, ta s ch ra r ng có th thu g n v m t t p h p l nh s c p r t
nh c bi t, ta s ch ra r ng có th x lý ký t và x lý các s nguyên
Tr c h t, ta quay l i cách bi u di n các s nguyên Trong máy tính, có hai
cách bi u di n : bi u di n nh phân cho phép l u tr m t s nguyên trong m t
thanh ghi làm ti t ki m ch và tính toán nhanh chóng nh ng có nh c đi m là đ
l n c a s nguyên ph thu c vào kích th c th c t c a thanh ghi (h u h n)
Cách bi u di n th hai là s d ng m t dãy ch s trên b ng ch {0 9} Th c
t , ngay c khi ng i ta có th bi u di n trong m t thanh ghi nhi u ký t (th ng
không quá 4), thì đ bi u di n m t s nguyên c ng đòi h i có nhi u thanh ghi
M c dù d i s nguyên có th bi u di n đ c là khá l n, nh ng do s l ng các
thanh ghi trong máy tính hi n nay b h n ch nên cách bi u di n này c ng ch a
ph i t i u
III.1 Mô ph ng các phép toán trên chu i ký t b i các
phép toán trên các s nguyên
M i ký t đ c mã hóa b i m t dãy các ch s nh phân {0, 1} (ch ng h n 8
ch s cho m t ký t ) M t chu i bit nh v y có th dùng đ bi u di n các s
nguyên nh th c hi n các phép toán trên các s nguyên
Ch ng h n, ghép 198 và 7, d n đ n phép nhân s nguyên bi u di n chu i 198
v i 28 r i c ng thêm s nguyên bi u di n chu i 7 vào tích s nh n đ c :
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 trên các ký t
LOAD 1 <ACC> ← R1sau đó thay th l nh nh y b i :
STORE 1 R1 ← <ACC>
JZERO n’ goto n’, if <ACC> = 0 Trong đó n’ là nhãn c a l nh STORE 1 đ t tr c ngay l nh có nhãn n trong máy xu t phát
Bài t p : M t cách t ng t , xây d ng l i l nh JGTZ (nh y n u k t qu d ng)
III.3 Thu g n t p h p các l nh s h c
Có th chuy n đ i các l nh s h c (c ng, tr , nhân, chia) v hai ki u l nh là INCR (t ng 1) và DECR (gi m 1)
Ch ng h n, l nh nhân MULT n s đ c chuy n đ i b ng cách thêm <n> l n
n i dung c a thanh t ng S d ng các thanh ghi t 1 đ n 3 làm trung gian, ta có
th thay l nh nhân b i các l nh sau :
STORE 1 LOAD n STORE 2
STORE 3
JZERO lab DECR 2 LOAD 1 ADD 1 STORE 3 JUMP return
M t cách t ng t , l nh ADD n t ng thêm 1 (INCR) đúng <n> l n n i dung
c a thanh t ng nh các l nh STORE, LOAD, JGTZ, DECR
Trang 14Mô hình các máy RAM 21
T đó, ng i ta có th thu h p v m t mô hình tính toán, g i là mô hình RAM
thô s , ch có t p h p các l nh t i thi u sau :
L nh Ý ngh a
I <n> T ng thêm 1 n i dung c a thanh ghi n
D <n> Gi m b t 1 n i dung c a thanh ghi n
Z <n> t n i dung c a thanh ghi n v 0
S <n, m> Hoán đ i n i dung các thanh ghi n và m
J <n> (i, j) N u n i dung c a thanh ghi n là 0, nh y đ n l nh có nhãn i,
n u không nh y đ n l nh có nhãn j HALT D ng máy
V i t p h p các l nh trên, ch ng trình c ng là m t dãy l nh có mang nhãn
N u <n> ch đ nh n i dung c a thanh ghi n, thì <<n>> ch đ nh n i dung c a
N u các thanh ghi 1 và 2 ch a l n l t các s nguyên n và p, thì máy d ng l i
khi hai thanh ghi này ch a l n l t n + p và 0
IV Máy RAM v n n ng
Trong ph n này, chúng ta s ch ra cách xây d ng m t máy ki u RAM có th
mô ph ng b t k máy RASP nào không s d ng ki u gián ti p Nguyên lý mô
ph ng nh sau : lúc đ u, ng i ta đ c ch ng trình c a máy RASP, ch ng trình này đ c l u gi trong các thanh ghi t 4 đ n p c a máy RAM Thanh ghi R1
dùng làm đ a ch gián ti p ; thanh ghi R2 dùng đ mô ph ng thanh đ m l nh c a RASP Thanh ghi R3 dùng đ mô ph ng thanh t ng c a RASP Sau đó, th c hi n
m t vòng l p trên các phép toán đ c mô t d i đây, m i l n l p là m t l n mô
− Phân tích mã phép toán c a l nh này và tùy theo mã đã phân tích mà nh y
đ n dãy l nh t ng ng v i nó Ví d , n u x là mã c a phép chia DIV và y
là nhãn c a dãy phép toán mô ph ng DIV, n u z là mã c a phép nh y
d ng JGTZ và t là nhãn c a dãy phép toán mô ph ng JGTZ :
JZERO y ADD A: x
JZERO t ADD A: z
Sau đó, t nhãn y, th c hi n mô ph ng phép toán chia DIV :
− T ng n i dung R2 lên 1 đ R2 ch a đ a ch c a thanh ghi ch a toán h ng : INCR 2
− Gán đ a ch này cho thanh ghi R1 :
Trang 15Mô hình các máy RAM 23
− T ng n i dung thanh ghi R2 lên 1 đ R2 ch a đ a ch c a thanh ghi đ u tiên
trong hai thanh ghi ch a l nh ti p theo c n mô ph ng :
− N u k t qu âm, t ng n i dung c a R2 lên 2 đ R2 ch a đ a ch c a thanh
ghi đ u tiên trong hai thanh ghi ch a l nh ti p theo c n mô ph ng và quay
l i đ u vòng l p :
INCR 2
INCR 2
JUMP loop
− N u k t qu d ng, t nhãn lab, t ng n i dung thanh ghi R2 lên 1 đ R2
ch a đ a ch c a thanh ghi ch a toán h ng :
Nh v y m i phép toán s c p c a RASP đ c mô ph ng b i m t dãy các l nh
l p c a máy RAM Máy RAM v a mô ph ng có d li u là ch ng trình P c a m t
máy RASP b t k , theo sau là m t d li u D cho ch ng trình P Máy RAM có k t
qu là k t qu c a P trên d li u D Máy RAM mô ph ng ho t đ ng c a m i máy
RASP
M t cách t ng t , ng i ta có th xây d ng m t máy RAM mô ph ng ho t
đ ng c a t t c máy RAM M t máy RAM d a trên 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)
Bài t p
1 Vi t ch ng trình c a m t máy RAM tính n n 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 bài 2
4 Vi t ch ng trình c a m t máy RAM thô s tính :
a Ph n d c a phép chia m cho n, v i m và n cho tr c
b S nguyên t th n, v i n cho tr c
5 Ch ng t r ng có th rút l nh hoán đ i : S <n, m> trong máy RAM thô s
6 Hãy tìm cách mô ph ng các phép toán logic s c p trong m t máy RAM, trong m t máy RASP và trong m t máy RAM thô s
7 Hãy cho bi t t p h p các phép toán s c p đ x lý ký t Hãy tìm cách mô
ph ng chúng trong m t máy RAM, trong m t máy RASP và trong m t máy RAM thô s
8 Vi t ch ng trình c a m t máy RAM v n n ng
Trang 16biên so n 25
Mô hình các máy Turing
« If the human brain was so simple that we could understand it, then we would be so simple that we could not »
(L Watson)
Mô hình các máy Turing (Turing machines model) là m t trong trong nh ng
mô hình đ c s d ng r t r ng rãi trong lý thuy t tính toán Trong ch ng này,
chúng ta s t p trung mô t hình th c các máy Turing, ch c n ng đoán nh n ngôn
ng và tính hàm c a chúng T đó chúng ta s nghiên c u các tính ch t c a l p
các hàm T−tính đ c Ph n cu i ch ng trình bày các bi n th khác c a mô hình
các máy Turing và các máy Turing không đ n đ nh
I Mô t và ho t đ ng c a máy Turing
I.1 Mô t máy Turing
M t máy Turing g m :
M t b ng vô h n c hai phía trái và ph i đ c chia thành các ô liên ti p
nhau M i ô ch a m t thông tin h u h n (finite information) nào đó đ c
bi u di n b i m t ch cái (letter) hay ký t T p h p các ch cái (hay ký t )
này t o ra b ng ch c a máy Turing, đ c đ nh ngh a đ ng th i v i máy
Turing
M t đ u đ c−ghi đ đ c hay ghi (làm thay đ i) n i dung t ng ô c a b ng,
và m i l n ch di chuy n, qua ph i ho c qua trái, m t v trí t ng ng v i
m t ô Nh v y, t i m i th i đi m, ch duy nh t m t ô đ c đ c, ho c đ c
ghi mà thôi
M t b nh ph h u h n có th ti p c n t i m i th i đi m, có th bi t đ c
n i dung và thay đ i đ c T t c các n i dung có th c a b nh ph này
đ c li t kê h t lúc đ nh ngh a máy Turing, đ c ch đ nh b i m t s th
t , g i là tr ng thái c a máy Turing
M t ch ng trình là m t t p h p h u h n các quy t c ch ra s thay đ i các
thông tin trên b ng và n i dung c a b nh ph
M t cách hình th c, máy Turing đ c đ nh ngh a t các thành ph n sau đây :
M t b ng ch S có t i thi u hai ký t , m t trong chúng là m t ký t tr ng,
ký hi u # (ho c B) Trên b ng c a máy Turing, m i ô ch a m t ký t c a
C p (q, x) là v trái c a quy t c, cho bi t đi u ki n đ áp d ng quy t c
B ba (y, m, p) là v ph i c a quy t c, cho bi t các thay đ i khác nhau khi
áp d ng quy t c, theo m t th th c s trình bày d i đây
Ng i ta th ng bi u di n m t quy t c c a P d i d ng s đ nh sau :
Hình 3.1 Bi u di n d ng s đ m t quy t c c a máy Turing
Nh v y, m t máy Turing là m t b ba T = <S, Q, P> đ c đ c t m t cách
h u h n Tr c khi gi i thích h at đ ng c a m t máy Turing, ta có nh n xét r ng
t n t i nhi u cách đ nh ngh a máy Turing M c dù nh ng đ nh ngh a này không làm nh h ng đ n hi u l c c a mô hình, nh ng đ u có các nh c đi m
Mô hình đ c ch n đ nh ngh a đây c ng có nh ng đi u b t ti n ó là cách
mô t các ô c a b ng vô h n đây ta đã quy c r ng các máy Turing luôn luôn
có vô h n các ô ch a ký t tr ng # v phía bên trái và v phía bên ph i, ch có
m t ph n c a b ng g m m t s h u h n ô (nh ng không b gi i h n) là h u ích,
g i là ph n h u ích (usable part)
Dãy ký t ch a trong ph n h u ích này là m t câu f trên b ng ch S, n m gi a
hai ký t # Ng i ta vi t f#f
Chú ý r ng m t s tài li u xem ký t tr ng không thu c b ng ch S, # ∉ S
I.2 Ho t đ ng c a máy Turing
Ng i ta g i c là c u hình (configuration) c a m t máy Turing T =<S, Q, P>
là m t b ba :
c = (f, q, xg) ∈ S* ´ Q ´ SS*sao cho câu fxg t o thành ph n h u ích c a b ng vô h n Tr ng thái q ch đ nh n i
dung c a b nh ph u đ c−ghi đ c đ t trên ô ch a ký t x
x | y, m
q p
Trang 17Mô hình các máy RAM 27
M t máy Turing và m t c u hình c a máy cho phép mô t đ y đ h th ng
Cho máy Turing T = <S, Q, P>, và c = (f, q, xg) là m t c u hình nào đó, ta nói
r ng t n t i m t chuy n ti p (transition) hay d ch chuy n t c u hình c thành c u
Trong c hai tr ng h p, chuy n ti p làm thay đ i n i dung c a ô n m d i
đ u đ c−ghi, và d ch đ u đ c−ghi qua trái ho c qua ph i tu theo giá tr ch
h ng c a m (L ho c R) Cu i cùng chuy n ti p làm thay đ i n i dung c a b
nh ph , chuy n t tr ng thái q thành tr ng thái q’
Hình 3.2 Máy Turing trong c u hình c = (f, q, xg)
Cho máy Turing T = <S, Q, P>, và c là m t c u hình, ta nói r ng t n t i m t
phép tính h p l (valid computation) có đ dài n ≥ 0 d n t c u hình c đ n c u
Nh v y, trong m t s c u hình, khi không còn t n t i m t chuy n ti p nào có
th , ng i ta nói r ng máy Turing d ng (halt) t i nh ng c u hình đó
M t phép tính h p l d n đ n m t c u hình nh v y s không th kéo dài
Ng i ta có th nói v phép tính h p l t i đa trong tr ng h p này Ký hi u :
c Ã−
T c’
là s ki n t n t i m t phép tính h p l gi a các c u hình c và c’ và không m t chuy n ti p nào có th k t c u hình c’
Ng c l i, xu t phát t m t s c u hình, t n t i các phép tính h p l không bao gi d ng T đó ng i ta có th chia t p h p các câu f ∈ S* thành hai ph n :
Trang 18Mô hình các máy RAM 29
T p h p các câu f sao cho xu t phát t c u hình (e, q 1 , f), máy Turing có ít
nh t m t phép tính h p l d ng, g i là L(T)
T p h p các câu f sao cho t c u hình (e, q 1 , f), máy Turing không có m t
phép tính h p l nào d ng
I.3 C u hình xu t phát c a máy Turing
Bây gi , ta c n xem xét nh ng y u t b t ti n c a mô hình máy Turing Ta d
nh n th y r ng không th bi t đâu là đi m b t đ u và đâu là đi m k t thúc c a d
li u trên b ng B i vì ph n h u ích không phân bi t đ c v i ph n còn l i trên
b ng kh c ph c đi u b t ti n này, ng i ta đ a vào các quy c đ i v i các
Lúc đ u, đ u đ c−ghi đ c đ t trong ph n h u ích đ ch đ nh ph n này
M t khác, ng i ta c ng quy c thêm nh sau :
Tr ng thái xu t phát ph i luôn luôn là q 1 , g i là tr ng thái đ u (initial)
u đ c−ghi đ t t i ký t khác # và sát bên trái nh t c a ph n h u ích
M t câu f ∈ S* đ c g i là đ c th a nh n (accepted) b i máy Turing n u,
xu t phát t c u hình ban đ u (e, q1 , f), máy Turing đã th c hi n m t phép tính
h p l và d ng Ngôn ng L(T) g m t p h p các câu đ c th a nh n, đ c g i là
ngôn ng đ c th a nh n (accepted language) b i máy Turing
Trong ví d trên, ngôn ng đ c th a nh n là các câu ch a m t s l s 1 :
L(T) = { f ∈ S * | f g m m t s l ch s 1 }
I.4 Máy Turing đ n đ nh
i m b t ti n th hai trong mô hình máy Turing là có th th c hi n nhi u
phép tính khác nhau t i m i th i đi m N u v i m i c p (q, x) ∈ Q ´ S, t n t i
nhi u nh t m t quy t c c a máy Turing có (q, x) là ph n bên trái, khi đó t m t
c u hình đã 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, q 1 , 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
là m t hàm b ph n (partial function) c a Q ´ S vào S ´ M ´ Q, d dàng đ c
phân tách thành ba hàm b ph n khác nhau có cùng mi n xác đ nh (domain)
Trang 19Mô hình các máy RAM 31
Bây gi xét các c u hình c 1 = (e, q 1 , 10100) và c 2 = (e, q 1, 100111) T n t i
phép tính t i đa d n c đ n c u hình (g, q3 , h) sao cho, n u f là bi u di n nh phân
c a s nguyên n, thì câu gh là bi u di n nh phân c a s nguyên n + 1
Ng i ta nói máy Turing T 1 đã th c hi n hàm tính s nguyên k ti p
(successor) trên m t bi u di n nh phân c a s nguyên
nguyên bi u di n theo quy c này đ c đ t cách nhau m t ký t tr ng #, khi đó,
d dàng nh n th y r ng máy Turing T 2 th c hi n hàm tính t ng hai s nguyên
cho k t qu là m t bi u di n đ n nguyên Ch ng h n :
(ε, q1, 11 # 111) Ã−
T (##1111, q 4, 111)
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 đây
liên quan ch t ch đ n s nh n bi t (cognition) :
Trang 20Mô hình các máy RAM 33
Hàm h ng r t d tri n khai và có th xây d ng b t k hàm h ng nào
III.1.2 Các hàm chi u (projection functions)
Xét hàm chi u :
Proj n, iG : (G*)n → G*
sao cho v i m i b −n các câu c a G*, hàm chi u tr v câu th i c a dãy này
Ví d 3.5 :
Gi s G = {0, 1}, n = 4 và i = 2, xây d ng máy Turing th c hi n hàm chi u
Proj 4, 2G đ tr v k t qu là câu th hai trong d li u vào là dãy b n câu nh sau :
Ta nh n th y r ng hàm chi u c ng r t d tri n khai nh hàm h ng và có th
xây d ng b t k ki u hàm chi u nào
III.2 Các hàm k ti p (successor functions)
sao cho v i m i câu f∈G*, hàm PredG tr v câu k tr c c a f trong th t đã
cho c a b ng ch S hàm PredG là toàn ph n, ta c n quy c r ng câu đ ng
tr c câu r ng c ng chính là câu r ng
Bài t p : Xây d ng m t máy Turing th c hi n hàm k tr c
Nhi u hàm đ c đ nh ngh a t nhi u hàm khác h p thành Ta s nghiên 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
Trang 21Mô hình các máy RAM 35
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
Hình 3.3 Máy Turing đ c tiêu chu n hóa
M nh đ 3.1 :
N u T là m t máy Turing, thì có th xây d ng t T m t máy turing T’ khác
đ c tiêu chu n hóa cùng th c hi n m t ch c n ng (tính hàm) nh T
Bài t p : Ch ng minh m nh đ 3.1
M nh đ 3.2 :
Có th luôn luôn gi thi t đ c r ng tr ng thái đ u (tr ng thái xu t phát)
không n m trong b t k m t v ph i nào c a quy t c
Ch ng minh :
Th t v y, n u q 1 là tr ng thái đ u, ta thêm vào Q m t tr ng thái m i q’1 và
thêm vào P m i quy t c d ng :
q’1, x → y, m, q i
sao cho quy t c :
q 1 , x → y, m, q i
là m t quy t c c a máy Turing đang xét V y ng i ta ch n l i q’1 là tr ng thái
đ u Nh v y, máy Turing v a thêm q’ 1 th c hi n cùng m t ch c n ng v i máy
Turing c và th a mãn đi u ki n c a gi thi t
Lúc này, ng i ta có th bi u di n máy Turing có tr ng thái đ u th a mãn
Cho máy Turing T =<S, Q, P> có m t t p h p con A các tr ng thái thõa mãn :
1 Không m t tr ng thái nào c a A n m trong v trái c a quy t c
2 V i m i tr ng thái q∈Q\A và m i ký t x∈S, t n t i m t quy t c c a P có (q, x) là v trái
M t máy Turing nh v y đ c g i là đã đ c chu n hóa (normalized) Nói cách khác, máy Turing là đ c chu n hóa n u v i m t t p h p tr ng thái
A, m t phép tính d ng n u và ch n u máy Turing r i vào m t tr ng thái c a A
M t tr ng thái c a A đ c g i là m t tr ng thái d ng (halt state)
Hình 3.5 Máy Turing T đ c chu n hóa
N u ti n hành đ ng th i c hai cách xây d ng v a nêu, chúng ta s nh n đ c
m t máy Turing v a đ c tiêu chu n hóa, v a đ c chu n hóa
III.4.3 T h p các máy Turing
Cho T là m t máy Turing chu n hóa có m t tr ng thái d ng duy nh t q h , và T’
là m t máy Turing b t k nào đó Ta đ nh ngh a máy Turing t h p t T và T’, ký
hi u T next T’, b ng cách đánh s l i các tr ng thái c a T’ đ nh n đ c các
tr ng thái tách r i (disjoint) v i các tr ng thái c a T và l y tr ng thái d ng c a T
làm tr ng thái đ u c a T’ :
Hình 3.6 Máy Turing T next T’
Chú ý r ng n u T’ đ c tiêu chu n hóa (m t cách t ng ng, đ c chu n hóa) thì máy Turing T next T’ c ng đ c tiêu chu n hóa (đ c chu n hóa)
Rõ ràng r ng, n u T đ c tiêu chu n hóa và th c hi n hàm f và n u T’ th c
hi n hàm f’, thì máy Turing T next T’ th c hi n hàm ghép f’°f
= q’1
Trang 22Mô hình các máy RAM 37
III.5 L p trình trên ngôn ng b c cao máy Turing
M t cách t ng t , ta có th xây d ng máy Turing cho phép d i đ u đ c−ghi
qua ph i (hay qua trái) đ n v trí (ngay tr c, ho c ngay sau) ký t th n trong G
là m t t p h p con c a S
Ta c ng có th xây d ng m t s máy Turing ti n ích khác đ th c hi n các
ch c n ng nh : chuy n thành h ng, phép chi u, k ti p, k tr c, và các hàm
m i nh sao chép, hoán v
Sau đây, ta s m r ng ph ng ti n th hi n các máy Turing b ng cách đ a
vào các c u trúc đi u khi n và ch ra cách ho t đ ng c a chúng
III.5.1 C u trúc if then else và c u trúc r nhi u nhánh
Cho T là m t máy Turing chu n hóa d ng các tr ng thái q h1 , q h2 , , q hk và
T 1 , T 2 , , T k là nh ng máy Turing b t k , ng i ta đ nh ngh a phép t h p t ng
quát (generalized combinator) t phép t h p next b i :
T next if h 1 : T 1 , if h 2 : T 2 , , if h k : T k
là máy Turing nh n đ c b ng cách đánh s l i các tr ng thái c a Tiđ nh n
đ c các tr ng thái tách r i nhau gi a chúng và tách r i các tr ng thái c a T,
b ng cách l y tr ng thái d ng q h1 c a T làm tr ng thái đ u c a T 1, l y tr ng thái
d ng q h2 c a T làm tr ng thái đ u c a T 2, , l y tr ng thái d ng qhk c a T làm
tr ng thái đ u c a Tk
N u máy Turing T d ng v i m i d li u vào, T s th c hi n phép r nhánh
theo các tr ng h p khác nhau (v i if then else là m t tr ng h p đ c bi t)
Ch ng h n v i k = 2, máy Turing T th c hi n l nh if then else :
Hình 3.7 Máy Turing T next if h1 : T 1 , if h2 : T 2
III.5.2 C u trúc while
Cho T là máy Turing chu n hóa có hai tr ng thái d ng q h1 và q h2 , và T’ là
m t máy Turing chu n hóa có duy nh t m t tr ng thái d ng q’h Gi thi t r ng T
và T’ có các tr ng thái r i nhau Ng i ta đ nh ngh a while T do qh : T’ là máy
Turing nh n đ c t T và T’ b ng cách l y tr ng thái d ng qh2 c a T làm tr ng
thái đ u c a T’ và l y tr ng thái d ng c a T’ làm tr ng thái đ u q1 c a T
Máy Turing while T do q h : T’ đ c v nh sau :
Hình 3.8 Máy Turing while T do h2 : T’
Ng i ta nh n th y r ng, các tr ng thái c a m t máy Turing có th đ c xem
nh là các nhãn (label) c a ch ng trình c a chính máy này Do v y, các quy t c
trong P d ng q, x → y, m, p có th đ c vi t d i d ng :
q : if x then y, m next goto p
và b ng cách nhóm t t c các quy t c có cùng tr ng thái q là v trái, lúc này ch
c n vi t q quy t c đ u tiên liên quan
Ch ng trình tìm ph n t k ti p ví d 3.7 bây gi đ c vi t l i nh sau :
q 1 : if 0 then 0, R next goto q 1
if 1 then 1, R next goto q1
if 2 then 2, R next goto q1
if # then #, L next goto q2
q 2 : if 0 then 1, R next goto q 3
q 1 T
T 1 q
h1
T 2 q
Trang 23Mô hình các máy RAM 39
if 1 then 2, R next goto q3
if 2 then 0, L next goto q2
if # then #, R next goto q3
q 3 : halt
III.6 Qu n lý b nh
Khi xây d ng các máy Turing th c hi n các hàm ph c t p, ng i ta g p ph i
v n đ qu n lý b nh , ngh a là kh n ng t ch c l i n i dung các ô trên b ng
Ta đ a vào các kh n ng qu n lý b nh cho máy Turing nh sau :
III.6.1 Máy Turing chuy n m t ô qua ph i
Vi c chuy n m t ký t sang bên ph i đ c th c hi n đ i v i m t b ng ch có
ba ký t là S = {#, 0, 1} nh máy Turing có t p h p P g m các quy t c nh sau :
Máy Turing này d ng l i khi g p hai ký t # liên ti p T cách xây d ng này,
d dàng xây d ng đ c các máy Turing chuy n k ô qua ph i (ho c qua trái)
III.6.2 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
N u T =< S, Q, P > là m t máy Turing th c hi n hàm f, có th xây d ng m t
máy Turing khác mô ph ng T sao cho đ u đ c−ghi không bao gi v t qua bên
trái v trí ban đ u
Gi s T 1 là máy Turing đ t m t d u h v trí đ u tiên c a đ u đ c−ghi và di
chuy n n i dung câu vào m t ô qua bên ph i Gi s T 2 là máy Turing cho phép
di chuy n n i dung m t ô qua bên ph i xu t phát t v trí đ u tiên c a đ u
đ c−ghi (và đ t m t ô ký t tr ng # t i v trí ô đ u tiên đã di chuy n)
Nh v y, có bao nhiêu tr ng thái trong máy T thì có b y nhiêu máy sao chép
c a T 2 và gi thi t chúng đ u đã đ c tiêu chu n hóa và chu n hóa Ký hi u T2i
là b n sao t ng ng v i tr ng thái q i , còn p i1 là tr ng thái đ u và pih là tr ng thái
cu i c a T 2i
Xây d ng t máy T m t máy m i T 3 có t t c các quy t c c a T và các quy t c
c a t t c các máy T 2i , ngoài ra, P 3 còn có thêm các quy t c sau :
P 3 = { q i , h → h, R, p i1
p ih , x → x, L, q i } v i x ∈ S là ký t b t k
V i các đi u ki n trên, T1 next T 3 là máy th a mãn yêu c u đ t ra
Sau đây ta s xét m t s máy Turing th c hi n các ch c n ng ph c t p h n
III.7.1 Sao chép
Xây d ng hàm :
CopyG : G* → (G*)2sao cho ∀ câu f ∈ G*, v i G = {0, 1}, hàm CopyG tr v câu f #f ∈ (G*)2
Gi s T 1 là máy Turing đ c m t ký t và thay th ký t đó b i ký t đánh
d u a, sau đó di chuy n qua ph i đ vi t l i ký t này t i v trí c a ký t tr ng #
đ u tiên g p ph i, sau đó quay tr l i ký t đánh d u a đ thay th nó b i ký t
ban đ u Máy T1 d ng ngay l p t c bên ph i v trí này
Trang 24Mô hình các máy RAM 41
Xây d ng T 2 là máy Turing :
while < t i tr ng thái q 1 không đ c ký t b > : T1
Xu t phát t câu vào fb#, T 2 cho k t qu là fbf# V y T 2 là máy sao chép c n
xây d ng
III.7.2 Ki m tra b ng nhau
C n xây d ng máy Turing so sánh hai câu cho tr c có b ng nhau không
Mu n v y, ta xây d ng máy Turing có hai tr ng thái d ng q Yes và q No sao cho
khi cho câu vào f#g, máy d ng tr ng thái qYesn u f = g và máy d ng tr ng
thái q No n u f ≠ g
Máy ho t đ ng nh sau : thay đ i câu vào f#g thành fagb v i a và b là hai ký
t đánh d u Sau đó, trong khi f và g còn khác r ng, thay th các ký t cu i c a f
và g b i a và b t ng ng r i ghi nh chúng N u sau khi thay th , chúng khác
nhau, máy d ng tr ng thái q No N u không, ti p t c quá trình Cho t i khi đ ng
th i c f và g đ u r ng thì máy d ng tr ng thái thái qYes, n u không ph i, máy
d ng tr ng thái q No
III.7.3 Li t kê các câu, các c p câu và dãy các câu
Vi c li t kê các câu c a S* r t đ n gi n : ng i ta li t kê câu đ u tiên c a S*
(là m t h ng), sau đó l n l t li t kê câu k ti p c a câu tr c đó đã li t kê
Vi c li t kê các c p câu đ c ti n hành nh sau : gi s máy Turing T1 đã có
trên b ng vào m t c p câu, gi s f#g, T 1 th c hi n vi c chép k ti p m t c p câu,
g m câu đ u tiên c a S*, là f, và câu k ti p c a câu kia, là succ(g) Sau đó T 1 l p
đi l p l i vi c chép c p câu ti p theo b ng cách l y câu k ti p c a thành ph n th
nh t, là succ(f), và câu k tr c c a thành ph n th hai, là pred(succ(g)), khi mà
thành ph n này không ph i là câu đ u tiên c a S*
Gi s máy Turing T 2 có c p câu vào x#y trên b ng, T 2 th c hi n chép m t
c p câu, g m câu k ti p c a câu đ u tiên, là succ(x), và câu còn l i, là y Sau đó,
T 2 th c hi n l p đi l p l i vi c chép c p câu ti p theo b ng cách l y câu k tr c
c a thành ph n th nh t, là pred(succ(x)), khi mà thành ph n này không ph i là
câu đ u tiên c a S*, và l y câu k ti p c a thành ph n th hai, là succ(y)
Máy Turing c n tìm th c hi n chép m t c p câu g m hai câu đ u tiên c a S*, sau đó l p đi l p l i th c hi n T1 next T 2
Bài t p : Mô t máy Turing li t kê dãy các câu trên S*
Xét hàm chi u ng c :
Antiproj n, iG : (G*)n → (G*)n-1sao cho bi n m i b −n là dãy n câu c a G* thành b −(n−1) câu, b ng cách l y đi câu th i c a dãy n câu
Máy Turing th c hi n hàm chi u ng c đ c mô t nh sau : sau khi đ t đ u
đ c−ghi ngay tr c câu th i (t i ký t # th i c a d li u vào), máy Turing đánh
d u a t i v trí này và xóa (thay th b i #) câu th i cho đ n khi g p ký t # đ t
tr c câu th i+1 Sau đó, máy th c hi n l p đi l p l i phép d i qua trái m t ô cho ph n các câu còn l i (t i + 1 đ n n) cho đ n khi g p ký t đánh d u a Máy
d ng l i sau khi đã xóa ký t đánh d u a
III.7.5 Các hàm giao hoán Hàm giao hoán (permutation function) :
ngh a là câu th i đ i ch cho câu th j và ng c l i
Máy Turing th c hi n hàm giao hoán đ c xây d ng b ng cách t h p cách máy sao chép và máy chi u ng c
III.8 Các hàm T -tính đ c ph c t p h n
Bây gi ta s xây d ng các máy Turing th c hi n các phép tính s h c d a trên các công c đã có
Phép c ng : Ta c n th c hi n phép c ng hai s nguyên h 2 : Gi s m và n là
hai s nguyên đ c bi u di n b i hai câu u và v trên b ng ch {0, 1} G i d li u
là u#v và ta c n chuy n nó thành uabv, v i a và b là hai ký t đánh d u
Trang 25Mô hình các máy RAM 43
t đ u đ c−ghi t i ký t cu i cùng c a v, ti p theo, trong khi ký t đ c đ c
(d i đ u đ c−ghi) ch a là b thì ghi nh b ng cách xóa ký t đ c đ c (0 hay 1)
và đi đ n ngay tr c ký t a đây, tùy theo ký t đã đ c (0 hay 1 ho c ký t
tr ng # đ c x lý hoàn toàn t ng t 0), tùy theo ký t đã ghi nh , và theo m t
s nguyên 0 hay 1 c ng đã ghi nh (ph n nh do 1 + 1), lúc đó đã đ c kh i
đ ng giá tr 0, vi t ký t a theo sau 0 ho c 1 tùy theo k t qu (ngh a là s đ i
chi u c a t ng 3 ch s này), và ghi nh ph n nh 0 ho c 1 (tùy theo có hay
không ít ra là hai ch s 1 trong 3 ch s này) Ti p t c quay l i ngay tr c ký t
tr ng # đ u tiên bên ph i, r i l i quay đ n ngay tr c ch a và trong khi ph n
nh là 1, thay đ i ký t đ c đ c và d i m t ô qua bên trái : 1 đ c thay th b i
0, v i ph n nh v n gi , và 0 đ c thay th b i 1, v i ph n nh thay đ i thành 0
T đó nh n đ c câu fagb v i fg là bi u di n nh phân c a m + n
Máy Turing xây d ng theo cách trên có th th c hi n đ c phép c ng các s
nguyên bi u di n trong m t h đ m b t k
Bài t p : Xây d ng máy Turing th c hi n phép tr , phép nhân và phép chia c a
hai s nguyên bi u di n trong h 2, h 10 ho c trong m t h đ m b t k
III.9 Nh n xét
Nh đã trình bày, nh các máy Turing, ta có th th c hi n đ c m t l p r ng
các hàm x lý các phép tính s h c Tuy nhiên, nh ta s th y v sau, l p các
hàm T−tính đ c không ch a t t c m i hàm Nh v y, ta không th xây d ng
b t c m i hàm nh các máy Turing Vì v y, trong nh ng ph n sau, ta c n
h đ m nào đó thì ng i ta nói r ng phép c ng các s nguyên là T−tính đ c
M i quan h h p gi a các ngôn ng và các hàm đ c ch rõ qua các m nh đ sau
«Ch khi» : Cho T là máy Turing th c hi n hàm f, ta c n ch ng minh r ng đ
th Gf c a nó đ c nh n bi t b i m t máy Turing nào đó
N u T là máy Turing th c hi n hàm f : f → f( f) = g, có th gi thi t r ng T
đ c chu n hóa và tiêu chu n hóa, đ u đ c−ghi c a T s không bao gi v t qua
bên trái v trí xu t phát
xây d ng máy Turing nh n bi t Gf, ta xây d ng hai máy Turing b tr :
− T 1 hoán v hai câu vào (f#g tr thành g#f) và d i đ u đ c-ghi v v trí
b t đ u c a câu th hai (câu m i),
− T 2 so sánh hai câu vào g#g và s không bao gi d ng trong tr ng h p không b ng nhau
T đây, máy Turing : T1 next T next T 2 có th nh n bi t Gf.
«Khi» : Cho T là m t máy Turing nh n bi t ngôn ng Gf,, ta c n ch ng minh
r ng có th xây d ng đ c m t máy Turing th c hi n hàmf
Gi s T là máy Turing nh n bi t ngôn ng (hay đ th c a φ) Gf ⊂ S*,
Gφ = { f # g | f ∈ Dom(φ) và g = φ(f) }
Ta xây d ng m t máy Turing T’ th c hi n hàm f theo cách sau : n u f là m t
d li u vào c a T’, máy T’ s li t kê t t c các c p (g, n_ ) có th , v i g là m t câu,
g ∈S* và n là đ dài c a phép tính (hay quá trình đoán nh n) đ i v i d li u f #g
c a máy T đã cho N u T d ng trên f #g, thì T’ c ng d ng sau m i c p li t kê
Trang 26Mô hình các máy RAM 45
đây, n_ là m t bi u di n nào đó c a s nguyên n T nay v sau, ta quy c
r ng m i s nguyên có g ch d i ch đ nh bi u di n nh phân c a s nguyên đó
C th , xu t phát t máy T, đ u tiên ta xây d ng m t máy T U sao cho v i m i
d li u f#g và m i s nguyên n, máy T U th c hi n đ i v i d li u f#g#n _ và d ng
khi g p tr ng thái q
Yes n u T th c hi n phép tính đ i v i d li u f#g d ng đ dài n, và d ng tr ng thái q
No n u T không d ng Ta c ng gi thi t r ng, đ u đ c
c a T U không bao gi qua trái k t v trí xu t phát, và, trong tr ng h p th t b i
(d ng tr ng thái q No ), T U xóa h t n i dung trên b ng vào c a nó
Ti p theo, ta xây d ng máy các máy Turing :
− T 1 nh n d li u vào f#g#n _ đ tr v k t qu là f#g’#n _ ’, v i (g’, n’) là c p
câu theo sau c p (g, n)
− T 2 th c hi n sao chép f#g#n _ thành f#g#n _ #f#g#n _ và đ t đ u đ c−ghi v trí
b t đ u câu f th hai
− T 0 chép qua bên ph i f c p (g, n) đ u tiên đ nh n đ c f#g#n _
T đó, máy Turing T’ đ c xây d ng nh sau :
T 0 next T 2 next T U next while T give q
No : T 1 next T 2 next T_ cho phép th c hi n f.
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 c này, ta s ch ra r ng các mô hình
bi n th (variant model) c a mô hình các máy Turing tiêu chu n hoá đã xét tr c đây c ng ch là nh ng mô hình t ng đ ng v i chúng
Nh khái ni m v phép mô ph ng (simulation), tr c h t ta c n ch ra r ng các máy Turing nhi u b ng và các máy Turing không đ n đ nh có th đ c mô
ph ng b i các máy Turing tiêu chu n hoá Sau đó, ta s xem xét v n đ v b n s
gi i h n (s l ng ký t ) c a m t b ng ch
IV.1 Mô ph ng m t máy Turing b i m t máy khác
nh ngh a 3.3 :
M t máy Turing T đ c mô ph ng b i m t máy T’ n u xây d ng đ c m t
phép đ n ánh i t các c u hình c a T vào các c u hình c a T’, sao cho, n u cÃ−
c’ trong T, thì i(c) Ã−* i(c’) trong T’ Máy T’ d ng k t m t c u hình xu t phát
Cho T =<S, Q, P> là máy Turing th c hi n hàm f, xây d ng máy T’ trên b ng
ch S ∪ {a, b}, v i a và b là hai ký t m i Máy T’ s mô ph ng máy T sao cho
Trang 27Mô hình các máy RAM 47
IV.2 Các bi n th c a máy Turing
Bi n th quan tr ng nh t và thông d ng nh t là máy Turing không đ n đ nh
(non-deterministic) Tuy nhiên v n còn các bi n th khác v i nh ng thay đ i không l n Ta s nghiên c u các máy Turing không đ n đ nh ch ng cu i khi nghiên c u các l p đ ph c t p
IV.2.1 Máy Turing có k b ng
Máy Turing lo i này có k b ng vô h n v c hai phía, m i b ng có đ u
đ c−ghi riêng M i quy t c lúc này có d ng :
q, x 1 , x 2 , , x k → y1 , m 1 , y 2 , m 2 , , y k , m k , q’
v i x i là ký t n m d i đ u đ c-ghi, yi là ký t thay th cho x i , và m i ∈{L, R} ch
h ng (qua trái ho c qua ph i) c a đ u đ c-ghi t ng ng t i b ng th i, i=1 k
Gi s T =<S, Q, P> là máy Turing có k b ng nh đã mô t , ta mô ph ng T
b i m t máy Turing T’ ho t đ ng trên b ng ch :
trình tính toán do ký t <#, #, , #> gây ra Rõ ràng, máy Turing T’ m t b ng đã
mô ph ng máy Turing T có k b ng