BỘ GIÁO DỤC & ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG
TIỂU LUẬN MÔN HỌC
Đề tài:
HÀM CỤC BỘ, KẾT HỢP CÁC MÁY TURING,
BIẾN TẤU CỦA MÁY TURING và CHƯƠNG TRÌNH
RAM CHUẨN, RAM THÔ SƠ TÌM NGHIỆM HỆ
PHƯƠNG TRÌNH TUYẾN TÍNH BẬC NHẤT
Giáo viên hướng dẫn: PGS.TS. Phan Huy Khánh
Nhóm Học viên: Nguyễn Khánh
Nguyễn Phong
Lương Khánh Tý
Phạm Thị Trinh
Lớp: Khoa học máy tính - K12
Đà Nẵng, tháng 05 năm 2010.
GIỚI THIỆU
Khi thiết kế và cài đặt một phần mềm tin học cho một vấn đề nào đó, ta cần
phải đưa ra phương pháp giải quyết mà thực chất đó là thuật toán giải quyết vấn đề
này. Rõ ràng rằng, nếu không tìm được một phương pháp giải quyết thì không thể lập
trình được. Chính vì thế, thuật toán là khái niệm nền tảng của hầu hết các lĩnh vực
của tin học. Ta có thể hiểu khái niệm thuật toán như sau. Nếu cho trước một bài toán
thì một cách giải bài toán được phân định ra thành một số hữu hạn bước, có kết thúc
cuối cùng và đạt được kết quả mong muốn gọi là thuật toán.
Về mặt lịch sử, trong những năm 30 của thế kỷ trước, khi khoa học và công
nghệ phát triển, nhân loại đã nêu ra nhiều bài toán mà không tìm thấy lời giải. Có
nghĩa là không tìm được thuật toán để giải chúng. Người ta đã phải tìm cách định
nghĩa chính xác khái niệm thuật toán. Năm 1936 A. Turing đã đưa ra một công cụ rất
tốt để mô tả thuật toán mà ngày nay người ta gọi là máy Turing. Để ghi nhớ công lao
này, Hội Tin học Mỹ (ACM) đã đặt ra giải thưởng Turing trong tin học. Cho đến nay,
giải thưởng Turing là giải thưởng tin học lớn nhất thế giới. Tiếp theo Turing, một số
nhà khoa học khác đã đưa ra các công cụ chính xác hoá khái niệm thuật toán. Đó là
các khái niệm hàm đệ quy, thuật toán Marcop, văn phạm sinh của N. Chomsky.
Những khái niệm này là cơ sở phát triển của việc nghiên cứu và ứng dụng thuật toán.
Mặt khác chính nhờ các khái niệm này, người ta cũng xác định được những bài toán
không thể giải được bằng thuật toán.
A. Turing đã đề xuất khái niệm máy Turing nhằm chính xác hoá khái niệm
thuật toán. Thực tế đã chứng tỏ rằng máy Turing là một công cụ rất tốt để mô tả
thuật toán. Trải qua nhiều thập niên, lý thuyết về máy Turing đã phát triển không
ngừng bởi sự đóng góp công sức của nhiều nhà khoa học, trong đó có những công
trình nền tảng của Hartmanis, Lewis, Stearns, Minsky, Blum, Hopcroft, Ullman.
Thực chất, máy Turing là một mô hình máy. Nó phân rã toàn bộ quá trình hoạt
động ra thành các bước thao tác rất đơn giản. Bản thân máy Turing là một mô hình
khái quát và đơn giản có thể mô hình hoá một quá trình tính toán bất kỳ.
Máy Turing có thể xem là một máy với bộ nhớ ngoài có dung lượng được xem
như vô hạn. Trong bộ nhớ ngoài, các giá trị được bố trí sao cho có thể truy cập, đọc
và sửa đổi được.
Ta có thể xem máy Turing như là một máy đoán nhận một ngôn ngữ gọi là
ngôn ngữ đếm được đệ quy. Đồng thời được sử dụng để mô tả một lớp hàm quan
trọng, gọi là các hàm có thể tính được. Chương này cũng mô tả một máy Turing phổ
dụng mà nó có thể bắt chước hoạt động của tất cả các máy Turing khác. Từ đó ta đi
đến khái niệm bài toán không giải được bằng thuật toán.
MỤC LỤC
CHƯƠNG 1: LÝ THUYẾT MÁY TURING 4
a. Mô hình máy Turing 4
.I.1. Mô tả TM 4
.I.2. Định nghĩa 5
b. Hàm cục bộ của máy Turing 7
c. Kết hợp các máy Turing 11
13
d. Biến tấu của máy Turing: Multitape TMs 15
CHƯƠNG 2: BÀI TẬP 19
Lớp Khoa Học Máy Tính- K12
3
Tiểu luận môn học: Lý Thuyết Tính Toán
CHƯƠNG 1: LÝ THUYẾT MÁY TURING
a. Mô hình máy Turing
Một mô hình hình thức cho một thủ tục hiệu quả sẽ có những đặc tính cụ thể.
Đầu tiên, mỗi thủ tục sẽ được mô tả một cách hữu hạn. Tiếp đó, thủ tục sẽ được
phân thành một số bước độc lập, mà mỗi bước thực thi một vấn đề.
Nguyên tắc này cũng được hình thức trong mô hình máy Turing. Máy Turing
có một băng nhớ, dùng để ghi mọi loại dữ liệu (dữ liệu nhập, dữ liệu dùng cho việc
điều khiển tương tự như một chương trình máy tính và các kết quả trung gian khi làm
việc). Với một bộ điều khiển chứa một số hữu hạn trạng thái, TM cũng như các
ôtômát khác, làm việc theo lối "ngắt quãng" theo từng bước chuyển.
.I.1. Mô tả TM
Máy Turing có rất nhiều dạng đồng khả năng, nghĩa là có nhiều mô hình và
định nghĩa khác nhau cho máy Turing nhưng tất cả chúng đều tương đương nhau.
Song, nói chung mô hình cơ bản của một máy Turing gồm :
− Một bộ điều khiển hữu hạn.
− Một băng được chia thành các ô.
− Một đầu đọc-viết, mỗi lần đọc có thể duyệt qua một ô trên băng để đọc hay
viết ký hiệu.
Mỗi ô có thể giữ được một ký hiệu trong số hữu hạn các ký hiệu băng (các ký
hiệu được phép viết trên băng). Khởi đầu xem như n ô bên trái của băng (n ≥ 0) giữ
chuỗi nhập (input), chuỗi nhập là một chuỗi các ký tự được chọn từ một tập hợp con
của tập hợp các ký hiệu băng, tập hợp con này gọi là tập các ký hiệu nhập. Phần còn
lại của băng coi như có vô hạn khoảng trống, ký hiệu B (Blank), B là một ký hiệu đặc
biệt của băng nhưng không phải là ký hiệu nhập.
a
1
a
2
a
3 …
a
i
B B B ….
Mô tả một TM
Mỗi bước chuyển của máy Turing, phụ thuộc vào ký hiệu do đầu đọc đọc được
trên băng và trạng thái của bộ điều khiển, máy sẽ thực hiện các bước sau :
1) Chuyển trạng thái
Nhóm 6- Lớp Khoa Học Máy Tính- K12 4
Bộ điều khiển
Tiểu luận môn học: Lý Thuyết Tính Toán
2) In một ký hiệu trên băng tại ô đang duyệt (nghĩa là thay ký hiệu đọc được trên
băng bằng ký hiệu nào đó)
3) Dịch chuyển đầu đọc-viết (sang trái (L), sang phải (R) hoặc đứng yên(∅))
.I.2. Định nghĩa
Một cách hình thức, ta định nghĩa một máy Turing (TM) như sau :
Định nghĩa: TM là một hệ thống M (Q, Σ, Γ, δ, q
0
, B, F), trong đó:
− Q : tập hữu hạn các trạng thái.
− Σ: bộ ký hiệu nhập.
− Γ : tập hữu hạn các ký tự được phép viết trên băng.
− B : ký hiệu thuộc Γ dùng chỉ khoảng trống trên băng (Blank).
− δ : hàm chuyển ánh xạ : Q × Γ → Q × Γ × {L, R, ∅}
(δ có thể không xác định với một vài đối số).
− q
0
∈
Q là trạng thái bắt đầu.
− F
⊆
Q là tập các trạng thái kết thúc.
Một hình thái của máy Turing M được cho bởi α
1
qα
2
trong đó q là trạng thái hiện
hành của M; α
1
α
2
∈
Γ
*
là nội dung của băng tính từ đầu băng cho tới ký hiệu khác
Blank bên phải nhất của băng. Giả sử Q và Γ rời nhau: đầu đọc đang đọc ký hiệu bên
trái nhất của α
2
hoặc nếu α
2
= ε thì đầu đọc đọc Blank.
Hàm chuyển
Ta định nghĩa một phép chuyển trạng thái của TM như sau:
Đặt X
1
X
2
X
i-1
q X
i
X
n
là một ID.
Giả sử δ(q, X
i
) = (p, Y, L), trong đó:
− Nếu i - 1 = n thì X
i
là B.
− Nếu i =1 thì không có ID, nghĩa là đầu đọc không được phép vượt qua cận
trái của băng.
− Nếu i > 1 ta viết :
X
1
X
2
…X
i-1
…X
n
├
M
X
1
X
2….
X
i-2
pX
i-1
YX
i+1
…X
n
Tương tự δ(q, X
i
) = (p, Y, R) thì ta viết:
X
1
X
2
…X
i-1
…X
n
├
M
X
1
X
2….
X
i-1
Y
p
X
i+1
…X
n
Tương tự δ(q, X
i
) = (p, Y, ∅) thì ta viết:
X
1
X
2
…X
i-1
…X
n
├
M
X
1
X
2….
X
i-1
pYX
i+1
…X
n
Chú ý rằng: nếu i - 1 = n thì chuỗi X
i
X
n
là rỗng và vế phải dài hơn vế trái,
nghĩa là TM M mở rộng chuỗi ký hiệu trên băng.
Nhóm 6- Lớp Khoa Học Máy Tính- K12 5
Tiểu luận môn học: Lý Thuyết Tính Toán
Nếu hai ID được quan hệ nhau bởi ⊢
M
thì ta nói ID thứ hai là kết quả của ID
thứ nhất bằng một lần chuyển, một bước áp dụng hàm chuyển (hoặc nói cái thứ hai
thu được từ cái thứ nhất bằng một lần chuyển). Nếu một ID thu được từ ID khác bằng
một số lần chuyển (có thể bằng 0) thì ta ký hiệu quan hệ là ⊢M
*
. Ta cũng có thể bỏ đi
ký hiệu M trong cách viết các quan hệ trên nếu không có nhầm lẫn.
Ngôn ngữ được chấp nhận bởi TM
Ký hiệu L(M): tập hợp các chuỗi trong Γ* là nguyên nhân đưa TM M đi vào trạng
thái kết thúc khi đã thực hiện việc thay thế từ bên trái các ký hiệu trên băng của M
với trạng thái bắt đầu q
0
. Một cách hình thức, ta định nghĩa tập hợp ngôn ngữ được
chấp nhận bởi TM M (Q, Σ, Γ, δ, q
0
, B, F) là tập
L(M) = { w| w
∈
Γ
*
và q
0
w ⊢
M
*
α
1
pα
2
với p
∈
F, còn α
1
α
2
∈
Γ
*
}
Cho TM nhận diện một ngôn ngữ L là cho lần lượt các từ của L vào TM xem
TM có chấp nhận từ đó hay không TM sẽ dừng và đi vào một trong những trạng thái
kết thúc
∈
F (không có phép chuyển kế tiếp) khi từ được chấp nhận, nhưng nếu TM
không chấp nhận một từ nào đó thì TM có thể ngừng ở một trạng thái ∉ F hoặc cũng
có thể nó chạy mãi mà không dừng lại.
Ví dụ: Thiết kế TM chấp nhận ngôn ngữ L = { 0
n
1
n
| n ≥ 1}
Khởi đầu TM chứa 01 bên trái nhất trên băng sau đó là vô hạn khoảng trống Blank. TM
lặp lại quá trình sau
− M thay 0 bên trái nhất bằng X rồi chuyển sang phải tới 1 trái nhất, TM thay
1 này bằng Y rồi dịch chuyển về bên trái cho tới khi gặp X phải nhất nó
chuyển sang phải một ô (tới 0 trái nhất) rồi tiếp tục lặp một chu trình mới.
− Nếu trong khi dịch chuyển sang phải để tìm 1 mà TM gặp Blank thì TM
dừng và không chấp nhận input. Tương tự, khi TM đã thay hết 0 bằng X và
kiểm tra còn 1 trên băng thì TM cũng dừng và không chấp nhận input.
− TM chấp nhận input nếu như cũng không còn ký hiệu 1 nào nữa trên băng.
Đặt TM M (Q, ∑, Γ, δ, q
0
, B, F) với các thành phần :
Q = {q
0
, q
1
, q
2
, q
3
, q
4
}; ∑= {0, 1}; Γ = {0, 1, X, Y, B} và F = {q
4
}.
Ta có thể hình dung mỗi trạng thái là một câu lệnh hoặc một nhóm các câu
lệnh trong chương trình. Trạng thái q
0
là trạng thái khởi đầu và nó làm cho ký hiệu 0
bên trái nhất thay bằng X. Trạng thái q
1
được dùng để tiến sang phải bỏ qua các số 0
và Y để tìm 1 bên trái nhất. Nếu M tìm thấy 1 nó thay 1 bằng Y rồi đi vào trạng thái
q
2
. Trạng thái q
2
đưa M tiến sang trái cho tới X đầu tiên và đi vào trạng thái q
0
, dịch
chuyển sang phải để tới 0 bên trái nhất và tiếp tục một chu trình mới. Khi M tiến
sang phải trong trạng thái q
1
, nếu B hoặc X được tìm thấy trước 1 thì input bị loại bỏ
(không chấp nhận) vì có chứa nhiều ký hiệu 0 hơn 1 hoặc input không có dạng 0
*
1
*
.
Trạng thái q
0
còn có vai trò khác. Nếu trạng thái q
2
tìm thấy X bên phải nhất và ngay
sau đó là Y thì các số 0 đã được xét hết, do đó ở trạng thái bắt đầu một chu trình mới
q
0
không tìm thấy ký hiệu 0 nào để thay thành X mà chỉ gặp Y thì TM đi vào trạng
Nhóm 6- Lớp Khoa Học Máy Tính- K12 6
Tiểu luận môn học: Lý Thuyết Tính Toán
thái q
3
duyệt qua các Y để kiểm tra có hay không có ký hiệu 1 còn lại. Nếu theo ngay
sau các Y là B, nghĩa là trên băng nhập không còn ký hiệu 1 nào nữa thì TM sẽ đi
vào q
4
(trạng thái kết thúc) để chấp nhận input. Ngược lại input bị loại bỏ.
Hàm chuyển δ được cho trong bảng sau :
δ
Trạng thái
Ký hiệu
0 1 X Y B
q
0
(q
1
, X, R) - - (q
3
, Y, R) -
q
1
(q
1
, 0, R) (q
2
, Y, L) - (q
1
, Y, R) -
Q
2
(q
2
, 0, L) - (q
0
, X, R) (q
2
, Y, L) -
Q
3
- - - (q
3
, Y, R)
(q
4
, B, ∅)
Q
4
- - - - -
Các phép chuyển hình thái của TM M trên input 0011:
q
0
0011 Xq
1
011 ⊢ X0q
1
11 ⊢ X q
2
0Y1 ⊢ q
2
X0Y1 ⊢ X q
0
0Y1 ⊢ XXq
1
Y1 ⊢ XXY
q
1
1 ⊢ XX q
2
YY ⊢ X q
2
XYY ⊢ XX q
0
YY ⊢ XXYq
3
Y ⊢ XXYYq
3
⊢ XXYYq
4
Nhận xét: Như vậy, ta có thể dễ dàng thấy, TM khác với một ôtômát hữu hạn ở chỗ
đầu đọc-viết có thể dịch chuyển tự do trên băng, không những đọc mà còn có khả
năng viết trên băng và vùng làm việc còn có thể mở rộng theo yêu cầu phát sinh. TM
khác với ôtômát đẩy xuống ở chỗ nó không dùng thêm Stack như một bộ giữ nhớ mà
viết các ký hiệu cần ghi nhớ ngay trên băng.
b. Hàm cục bộ của máy Turing
Bất kỳ chương trình máy tính nào cũng đều tạo xâu ra của các xâu vào bởi hợp
hàm tính toán của các xâu khác. Giống như máy Turing T với bảng chữ vào
∑
có thể
tính toán hàm ƒ trên miền
*∑
, xâu
x
nằm trong miền ƒ, bất cứ khi nào T khởi tạo cấu
hình tương ứng của xâu
x
, T sẽ dừng và xuất ra xâu ƒ(
x
) trên băng.
TMs ở mục 9.1, bất kỳ ngôn ngữ nào cũng được chấp nhận, việc đơn giản của
chúng là dừng và chấp nhận trạng thái dừng hoặc lỗi thực thi, phụ thuộc xâu vào mà
ngôn ngữ được chấp nhận. Nội dung băng cuối của phép tính không quan trọng.
Trường hợp hàm tính toán ƒ của máy TM, nhấn mạnh xâu ra của xâu vào trên miền ƒ.
Chúng có thể đọc xâu vào không thuộc miền ƒ, kết quả là những tính toán không liên
quan. Tuy nhiên, TM tính toán chính xác hàm ƒ, không phải các hàm khác ở miền lớn
hơn. Vì vậy, chúng xác định xâu vào
x
không thuộc miền ƒ, TM không chấp nhận
xâu vào
x
. Theo tiến trình tính toán các hàm, máy TM chấp nhận ngẫu nhiên ngôn
ngữ, miền của hàm.
Nó tiện ích về những thay đổi nhỏ của các chương sau, và nói về các hàm cục
bộ trên
∑
*
, đúng hơn là những hàm con trong
*∑
. Vấn đề lớn là môi trường, không
loại trừ các vấn đề khác. Hàm cục bộ ƒ trên
*∑
có thể không được xác định; nếu xảy
ra trường hợp ƒ xác định bất kỳ đâu trên
*∑
, và quan trọng khi xem hàm ƒ như hàm
Nhóm 6- Lớp Khoa Học Máy Tính- K12 7
Tiểu luận môn học: Lý Thuyết Tính Toán
tổng quát. Để máy Turing tính toán ƒ, nó thích hợp với giá trị ƒ của xâu với các bảng
chữ trên máy.
ATM có thể quản lý giá trị các hàm. Nếu xâu vào được biểu diễn bởi k- băng
(x
1
, x
2
, …., x
k
)
∈
(
*∑
)
k
, chỉ yêu cầu những quy tắc thay đổi không đáng kể đối với
TM, và khởi tạo băng từ chứa k xâu, tách rời ký tự trống.
Định nghĩa 9.3: Hàm của máy TM
Máy Turing T = (Q,
∑
,
Γ
, q
0
,
δ
), và lấy ƒ là hàm cục bộ trên
*∑
với giá trị
trên
Γ
*
, với mỗi x
*∑∈
, ƒ xác định
(q
0
,
∆
x) ├
*
T
(h
a
,
∆
ƒ(x))
Nếu hàm ƒ cục bộ trên (
∑
*
)
k
có giá trị trên
Γ
*
, T tính ƒ với mỗi k- băng (x
1
, x
2
,
…, x
k
), ƒ xác định
(q,
∆
x
1
∆
x
2
∆
…
∆
x
k
) ├
*
T
(h,
∆
ƒ(x
1
, x
2
,…, x
k
))
Với 2 bảng chữ
∑
1
và
∑
2
, k nguyên, hàm cục bộ ƒ: (
∑
*
1
)
k
→
∑
*
2
là khả
năng tính toán của máy Turing, hoặc những tính toán đơn giản nếu máy Turing thực
hiện tính toán ƒ.
Điều đó không chỉ đúng với máy Turing tính toán với một hàm. Ví dụ: Nếu T
tính toán hàm ƒ: (
∑
*
)
2
→
Γ
*
, sau đó T tính toán ƒ
1
:
∑
*
→
Γ
*
xác định bởi ƒ
1
(x) =
ƒ(x,
Λ
). Tuy nhiên, với bất kỳ k và bất kỳ
C
⊆
Γ
*
, TM tính toán ít nhất là một hàm
với giá trị k.
Hàm có các đối số cũng có thể được tính toán bởi máy Turing, mỗi lần chúng
lựa chọn cách để biểu diễn các con số cho xâu chữ, hạn chế trong số tự nhiên, chúng
sử dụng “đơn phân ” (unary) để biểu diễn, số tự nhiên n được biểu diễn xâu 1
n
=
11…1.
Định nghĩa 9.4: Tính toán với hàm số tự nhiên
Lấy máy Turing T = (Q, {1},
Γ
, q
0
,
δ
), nếu hàm cục bộ ƒ trên
N
, tập hợp các
số tự nhiên, T tính ƒ với mọi n, ƒ xác định
(q
0
,
∆
1
n
) ├
*
T
(h
a
,
∆
1
f(n)
)
Và với các số khác số tự nhiên n, T lỗi nếu chấp nhận xâu vào 1
n
. Tương tự,
nếu ƒ là hàm cục bộ từ
N
k
đến
N
, T tính ƒ trên k- băng (n
1
, n
2
,…,n
k
), ƒ xác định
(q
0
,
∆
1
n1
) ├
*
T
(h
a
,
∆
1
f(n)
)
Và cho mọi số tự nhiên n, T lỗi và chấp nhận chuỗi nào 1
n
. Tương tự, nếu ƒ là
hàm cục bộ trên
N
k
đến
N
, T tính ƒ với mọi k- băng (n
1
, n
2
, …, n
k
), ƒ xác định
(q,
∆
1
n
1
∆
1
n
2
∆
…
∆
1
n
k
) ├
*
T
(h
a
,
∆
1
f(n
1
, n
2
,…,n
k
)
)
T lỗi khi chấp nhận xâu vào trên bất kỳ đầu vào ở k- băng, nơi mà ƒ không xác
định.
Ví dụ 9.4: Đảo xâu ww
R
Hàm đảo:
rev: {a, b}
*
→
{a, b}
*
Máy TM giới thiệu ở hình 9.6 để tính hàm đảo của xâu vào bằng cách dịch
chuyển từ cuối lên trước, ở mỗi bước thì đổi ký tự và nhảy đến ký tự trước. Để tiến
đến các rãnh ở xa hơn, các ký tự được thay bằng chữ hoa. Vượt qua trạng thái ban
đầu q
1
, gặp ký tự chữ thường thì thay bằng ký tự chữ hoa và ghi nhớ nó rồi dịch
chuyển đầu đọc sang phải. Khi máy TM tiến đến q
3
hoặc q
5
, nếu gặp ký tự hoa thì ghi
nhớ ký tự hoa rồi dịch đầu đọc sang trái. Đầu đọc dịch chuyển sang trái, bắt gặp chữ
hoa đầu tiên, thay đổi và dịch chuyển sang phải. Với những xâu có độ dài chẳn, TM
Nhóm 6- Lớp Khoa Học Máy Tính- K12 8
Tiểu luận môn học: Lý Thuyết Tính Toán
quay về q
1
, ở q
8
máy kêt thúc tiến trình. Trường hợp xâu có độ dài lẻ, ở trạng thái q
3
và q
5
, nếu gặp ký tự thường thì dịch trái. Đầu đọc dịch chuyển đến cuối xâu, và kết
thúc bằng dịch trái, đổi chữ hoa thành chữ thường.
A/A, R
B/A, R a/a,R
∆∆/
,L
b/b,R A/A,L
B/B,L a/A,L a/a,L
b/b,L
A/A,R b/A,L
a/A,R B/A,R
∆∆
/
, R A/A,R A/A,R
B/A,R B/B,R
∆∆/
,R
∆∆/
,L a/B,L
∆∆/
,S A/A,R
a/a,L
b/B,R A/a,L B/B,R b/b,L
B/b,L
b/B,L
∆∆/
,L
a/a,R A/A,L A/B, R
b/b,R B/B,L B/B, R
Hình 9.6. Đảo xâu
Máy TM hình 9.6 với độ dài lẻ abb và độ dài chẳn baba.
(q
0
,
abb∆
) ├ (q
1
,
bba∆
)├ (q
2
,
bbA∆
)├ (q
2
,
bAb∆
)
├ (q
2
,
∆∆Abb
)├ (q
3
,
bAb∆
)├ (q
7
,
AbA∆
)
├ (q
7
,
bAA∆
)├ (q
1,
AbB∆
)├ (q
4
,
ABB∆
)
├ (q
5
,
ABB∆
)├ (q
8
,
ABB∆
)├ (q
8
,
∆∆BBA
)
├ (q
9
,
ABB∆
)├ (q
9
,
aBB∆
)├ (q
9
,
baB∆
)
├ (q
9
,
bba∆
)├ (h
a
,
bba∆
)
(q
0
,
baba∆
)├ (q
1
,
abab∆
) ├ (q
4
,
baaB∆
)├ (q
4
,
abBa∆
)
├ (q
4
,
aBab∆
)├ (q
4
,
∆∆Baba
)├ (q
5
,
aBab∆
)
├ (q
6
,
BbBa∆
)├ (q
6
,
baBaB∆
)├ (q
6
,
BabaB∆
)
├ (q
1
,
bBaA∆
)├ (q
2
,
BbAA∆
)├ (q
2
,
BAbA∆
)
├ (q
3
,
BbAA∆
)├ (q
7
,
ABAA∆
)├ (q
1
,
BABA∆
)
├ (q
8
,
BABA∆
)├ (q
8
,
∆∆ABAB
)├ (q
9
,
BABA∆
)
├
*
(q
9
,
abab∆
)├ (h
a
,
abab∆
)
1/1,R
L,/1 ∆
R,/∆∆
,
L,/∆∆
R,/∆∆
L,1/∆
Nhóm 6- Lớp Khoa Học Máy Tính- K12 9
q
0
q
1
q
2
q
4
h
a
q
8
q
3
q
5
q
6
q
7
q
9
q
0
h
a
Tiểu luận môn học: Lý Thuyết Tính Toán
L,/1 ∆
S,/∆∆
Hình 9.7. Máy Turing tính n chia dư cho 2
Ví dụ 9.5: n chia dư cho 2
Phép chia dư của n cho 2 có thể được tính toán bằng những dịch chuyển từ
cuối xâu vào, dịch chuyển từ phải sang trái, gặp 1 thì xoá, nhảy đến 1 khác. Những
tính toán của máy TM được mô tả ở hình 9.7
Ví dụ 9.6 : Hàm đặc trưng cho tập hợp
Bất kỳ ngôn ngữ L
∑⊆
*
Hàm đặc trưng của L là hàm
χ
L
:
1} {0,*→∑
được xác định bởi công thức:
χ
L
(x) =
∈
otherwise
Lxif
0
1
Tính toán của hàm
χ
L
tương tự như xác nhận ngôn ngữ L; thay vì phân biệt
xâu thuộc L hay xâu không thuộc L được xác nhận hay không được xác nhận, TM
chấp nhận mọi xâu vào và phân biệt 2 kiểu kết thúc của xâu dạng (h
a
,
1∆
) ở trường
hợp này và dạng (h
a
,
0∆
) ở trường hợp khác.
Nếu TM T tính toán
χ
L
, chúng chứa xác nhận L. T thay đổi để xuất ra 0, thay
h
a
bằng h
r
. Thỉnh thoảng có cách khác, ví dụ đơn giản là ngôn ngữ L giống nhau trên
{a, b} (ví dụ 9.2). Máy TM xác nhận L biểu diễn trên hình 9.2 và máy TM tính toán
χ
L
được biểu diễn trên hình 9.8.
Như đã thấy ở mục 9.1, TM có thể xác nhận ngôn ngữ L và dịch chuyển được
hay không hay lặp vô cùng.
a/a,R
b/b,R
Lb
La
,/
,/
∆
∆
Lb ,/∆
L,/ ∆∆
L,/∆∆
Ra ,/∆
La ,/∆
L,/∆∆
Nhóm 6- Lớp Khoa Học Máy Tính- K12 10
q
0
h
a
Tiểu luận môn học: Lý Thuyết Tính Toán
a/a,L
Ra,/∆
R,/∆∆
b/b,L
Rb ,/∆
Lb ,/∆
L,/∆∆
La ,/∆
L,/∆∆
a/a,R
L,/∆∆
L,0/∆
b/b,R
La ,/∆
L,1/∆
L,/∆∆
L,/∆∆
Hình 9.8. Tính
χ
L
c. Kết hợp các máy Turing
Một trong những mục đích của chương này là đưa ra những gợi ý tiềm năng
tạo ra các máy Turing kết hợp. Suốt quá trình máy Turing thực hiện những tính toán
thông thường hay thực hiện các vòng lặp chính là thực hiện dịch chuyển đầu đọc
băng từ bắt đầu từ một hướng nào đó của xâu chữ hoặc xoá một phần băng từ. Nếu
chúng cần mô tả mỗi monolithical của máy Turing, biểu diễn một cách chi tiết nhất,
hạn chế độ phức tạp của các vấn đề để chúng có thể giải quyết được. Thông thường,
máy Turing phức tạp (phức tạp về thuật toán hoặc là phức tạp về phần mềm) được
tạo ra từ những máy đơn giản hơn, những thứ có thể dùng lại được.
Block Diagram
Input Output
Trường hợp đơn giản nhất, chúng ta có thể xây dựng máy Turing thực thi trên
máy Turing đầu và thực thi cả trên các máy Turing khác nữa. Nếu nối T
1
với T
2
thì
được TMs, cùng với việc tách tất cả các trạng thái không dừng và các hàm dịch
chuyển δ
1
và δ
2
, theo thứ tự chúng ta viết T
1
T
2
để tạo ra máy TMs này. Thiết lập các
trạng thái là hợp của hai trạng thái. T
1
T
2
khởi tạo trạng thái đầu T
1
và thực hiện việc
dịch chuyển của T
1
( dùng hàm δ
1
) lên trên, nơi mà T
1
có thể dừng, bất kỳ dịch
chuyển nào khiến cho T
1
dừng thì trạng thái được chấp nhận. T
1
T
2
thực hiện trên
cùng một dịch chuyển, ngoại trừ nó khởi tạo trạng thái T
2
thay cho dịch chuyển này.
Tại mọi điểm, đầu đọc băng từ có vị trí xác định, nơi mà T
1
dừng. Từ vị trí này, sự
dịch chuyển của T
1
T
2
là sự dịch chuyển của T
2
(dùng hàm δ
2
). Nếu là T
1
hoặc T
2
dừng
trong quá trình xử lý thì T
1
T
2
cũng vậy, và T
1
T
2
chấp nhận khi và chỉ khi T
2
chấp
nhận.
Để dùng máy này trong ngữ cảnh lớn hơn, bằng cách tươ ng tự là chuyển đổi
lược đồ nhưng không kèm biểu diễn trạng thái rõ ràng, chúng ta có thể viết
T
1
→
T
2
Nhóm 6- Lớp Khoa Học Máy Tính- K12 11
Turing
Machine
Ra ,/
∆
h
a
Tiểu luận môn học: Lý Thuyết Tính Toán
Có thể thêm các điều kiện, phụ thuộc những biểu tượng trên băng từ hiện tại
khi mà T
1
dừng, và có thể viết
T
1
→
α
T
2
Để cho máy biên dịch T
1
T’T
2
, T’ được mô tả ở lược đồ hình 9.9. Máy biên
dịch này có thể thực hiện mô tả thông thường như: Nó thực hiện TM T
1
( dừng nếu T
1
dừng và lặp nếu T
1
lặp ), khi và chỉ khi T
1
được
chấp nhận, nó thực hiện T
2
nếu ký tự
hiện tại là a và từ chối các trường hợp khác.
a/a, S
Hình 9.9.
Thật dễ để hiểu điều này, tại sao chúng ta nói là không phải TM luôn luôn
chấp nhận khởi tạo đầu đọc ở phía trái nhất của đầu đọc. Khi TM thực hiện một vài
nhiệm vụ đặc biệt tức là đã dùng những công cụ của máy TM lớn hơn, giống như gọi
các phép toán trung gian, khi đầu đọc ở trên băng từ, nơi mà nó cần thực hiện nhiệm
vụ. Cũng có thể là máy TM chỉ nhằm mục đích là thay đổi nội dung băng từ and/or
để theo dõi.
Một vài TMs chỉ dừng ở trạng thái reject ( từ chối ) thì xem như là chính máy
đó đã thành công trong việc kết nối với các máy khác ( máy TM thực hiện thuật toán
“di chuyển đầu đọc băng từ một lần từ trái qua ”). Trong trường hợp khác, máy TM
thường dừng khi chạy một cách độc lập và sau đó dừng khi đã sử dụng hết khả năng
của máy, được cung cấp nhờ băng từ đã chuẩn bị sẵn trước khi dùng. Ví dụ một máy
TM T chờ để đoán nhận xâu vào s cần bắt đầu cấu hình dạng
( )
zyq ∆,,
. Cũng giống
như T dừng khi xử lý đầu vào z theo cách thông thường, không phụ thuộc vào y ( lý
do là nếu như T dừng khi bắt đầu cấu hình
( )
zq ∆,
, sau đó T sẽ không bao giờ dịch
chuyển đầu đọc băng từ sang bên trái của ký tự trống , thay vào đó, bắt đầu cấu hình
),( zyq ∆
, T sẽ không bao giờ thực sự thấy bất kỳ ký hiệu nào của y). Thực thi của T
đúng, tuy nhiên phụ thuộc vào băng từ bị trống ở bên phải của z trừ khi được xem
như là không gian cần cho việc tính toán z.
Để có thể mô tả việc biên dịch TMs mà không phải mô tả các thao tác nguyên
thuỷ (primitive) như việc phát sinh máy TM, nó cũng thỉnh thoảng trở nên có ích khi
trộn các ký hiệu với nhau nhưng không phải tất cả các trạng thái của máy TMs đều
đựơc biểu diễn. Ví dụ lược đồ ở hình 9.10a, viết gọn lại ở hình 9.10b, hiển nhiên
được xem là đúng.
Nếu ký hiệu hiện tại là a, TM thực hiện T; nếu là b, dừng và ở trạng thái chấp
nhận (accept), và nếu là bất kỳ ký hiệu nào khác đều bị từ chối (reject)
a T
a/a,S T
b/b,S b/b,S
Nhóm 6- Lớp Khoa Học Máy Tính- K12 12
h
Tiểu luận môn học: Lý Thuyết Tính Toán
(a) (b)
Hình 9.10.
Trong trường hợp đầu, thừa nhận T dừng, lặp lại các thao tác của T để T đọc
thêm các ký hiệu khác của a, nếu băng từ đọc ký hiệu là b thì dừng và từ chối các ký
hiệu khác ( máy có thể từ chối quá trình lặp đi lặp lại của T, và có thể lặp vô hạn, vì
hoặc T lặp hoặc là T dừng với băng từ hiện tại có ký hiệu a )
Mặc dù việc kết nối chính xác các máy TMs là phức tạp, nó khá rõ trong
những ví dụ mà chúng ta đã theo dõi. Có khả năng nguồn bị xáo trộn, tuy nhiên các
ký hiệu đã được đoán nhận. Máy TM T có dạng T
1
→
α
T
2 .
Nếu T
1
đọc ký hiệu
không rõ (khác a) thì T từ chối.Tuy nhiên, bình thường nếu T
2
dừng, T cũng dừng và
băng từ không đọc ký hiệu nào cả. Có thể tránh những mâu thuẫn bên ngoài bằng
cách cho rằng, bình thường nếu T
1
dừng đọc ký hiệu khác a, T dừng, không kể đến T
có thể sau đó không còn tương đương với sự biên dịch của T
1
T’T
2
đã mô tả ở trên,
đây là điều không mong muốn. Trong ký hiệu của chúng, lần thực thi cuối cùng của
mỗi máy TM con là biên dịch cho máy TM kế tiếp, sau một vài sự lựa chọn để xác
định chính xác sự biểu diễn, giống như hình 9.11a và 9.11b.
Cơ bản để xây dựng một máy TM, giống như dịch chuyển một loạt các vị trí
của đầu đọc một cách trực tiếp hoặc gián tiếp, viết những ký hiệu ở nơi hiện tại, và
tìm kiếm trực tiếp hoặc gián tiếp cho các ký hiệu, dễ hiểu và không cần phải giải
thích rõ ràng. Chúng nhận ra được cả những điểm nhỏ trong quá trình thực thi.
T
1
α
T
2
T
1
α
T
2
b b
b/b, S
(a) (b)
Hình 9.11.
Ví dụ 9.7: Sao chép một xâu chữ w
∆
w
Vẽ một máy TM copy xâu chữ đọc vào, tạo ra xâu giống với xâu gốc ở bên
phải xâu gốc nhưng giữa hai xâu cách nhau ký tự trống. Tốt nhất là phải chú ý đến vị
trí cuối của đầu đọc, và nói rằng, nếu như khởi tạo cấu hình dạng (q
0
,
x∆
),
x
là xâu
chữ không có ký tự trống, và cấu hình cuối có dạng (h
0,
xx∆∆
). Máy TM sẽ chép ký
tự đầu tiên, ghi nó và dịch sang phải, đến ký tự thứ hai, ghi nó vào Nó đánh dấu
những ký tự đã đọc bằng cách ghi những ký tự đó bằng chữ hoa. Chúng hiểu ký tự
đọc vào là {a, b}; tất cả những điều đó là cần thiết cho việc tạo ra chính xác vị trí
(“chữ hoa”) của mỗi ký tự ở bảng chữ đọc vào. Khi việc ghi chép hoàn thành, ký tự
viết hoa sẽ thay đổi lại giống bản gốc. Máy TM biểu diễn ở hình 9.12.
a/a,R a/a,R
b/b,R b/b,R
Nhóm 6- Lớp Khoa Học Máy Tính- K12 13
h
a
h
a
q
0
h
a
Tiểu luận môn học: Lý Thuyết Tính Toán
R,/∆∆
La,/∆
a/a,L a/a,L
b/b,L b/b,L
a/A,R
R,/∆∆
L,/∆∆
b/B,R
R,/∆∆
Lb,/∆
L,/∆∆
a/a,R a/a,R
b/b,R b/b,R
A/A,R
B/B,R
S,/∆∆
A/a,L
B/b,L
Hình 9.12. Máy Turing copy xâu chữ
Ví dụ 9.8: Xoá ký tự
Thường dùng để xoá ký tự của xâu. Máy Turing làm điều này bằng cách thay
đổi nội dung băng từ từ
zay
thành
zy
, với y
∈
*)}{( ∆∪∑
,
}{∆∪∑∈a
và
*∑∈z
để
tránh trường hợp thừa nhận xâu vào là [a,b]. Máy TM thực hiện xoá ký tự và thay thế
bằng ký tự trống. Nó dịch chuyển sang phải đến cuối cùng gặp z thì dịch chuyển sang
trái, cứ tiếp tục dịch chuyển sang trái đến lúc gặp ký tự trống. Quá trình dịch chuyển
được mô tả ở hình 9.13. Trạng thái q
a
và q
b
là để nó ghi nhớ giữa những lần nó xoá
và ghi lúc dịch chuyển sang trái. Tất nhiên trước khi nó viết một ký tự là nó đã đọc
ký tự đó và xác định trạng thái tiếp theo.
a/a,R a/a,L
La ,/∆
b/b,R
Lb ,/∆
La ,/∆
Sa,/∆
L,/∆∆
L,/∆∆
b/a,L a/b,L
Lb ,/∆
Sb,/∆
b/b,L
S,/∆∆
Nhóm 6- Lớp Khoa Học Máy Tính- K12 14
q
a
q
b
h
a
q
∆
h
a
q
0
Tiểu luận môn học: Lý Thuyết Tính Toán
Hình 9.13. Máy Turing Delete xâu chữ
Chèn ký tự a vào hoặc thay đổi nội dung băng từ thành
zy
từ
zay
, xác nhận ký tự
và tiến từ trái sang phải, dịch chuyển dừng và thay a bởi ∆.
Để xoá, máy chuyển từ
zay
thành
zy
. Nếu những gì được gọi khi nội dung băng
từ không phải là
zay
y mà là
wzay ∆
, ở đây w có phải là chuỗi các ký hiệu hay
không? Trước hết, có thể xem máy TM được thiết kế để thực thi cho
wzy ∆
trên băng
từ, tuy nhiên sự biểu diễn đó không hợp lý. Trừ khi chúng biết những tính toán đã
thực hiện trước đó, hoặc trừ khi đánh nhãn ký tự trống bên phải nhất để nhận biết,
nếu không chúng không có cách nào để biết được. Lời chỉ dẫn “dịch chuyển đầu đọc
đến ký tự trống bên phải nhất ”, thông thường không được thực hiện bằng máy TM
(bài tập 9.12). Nói chung, máy Turing được thực hiện một cách lý thuyết. Cho rằng
nó chắc chắn có cấu hình nếu nó dừng sau một vài cấu hình đặc biệt. Về mặt kỹ thuật
có thể nói rằng, kết quả có được nếu như máy TM có một vài cấu hình khác nhau.
Máy được thoã mãn về kỹ thuật, và không đoán nhận, có lẽ dừng ở h
r
hoặc lặp vô
hạn.
Ví dụ 9.9: Một cách xác nhận khác
Cho rằng Copy ở máy TM hình 9.12 và đảo ngược ở hình 9.6. Máy TM bắt đầu
thực hiện như sau: Bắt đầu băng từ
yx∆∆
, với x, y
∈
{a,b}
*
, Equal xảy ra khi và chỉ
khi x = y. Sau đó, hợp các máy TM biểu diễn ở hình 9.14 xác nhận ngôn ngữ bởi {a,
b} bằng cách so sánh xâu vào với xâu đảo của nó và được chấp nhận khi chúng bằng
nhau.
a/a,R a/a,L
b/b,R b/b,L
Copy
R,/∆∆
Reverse
L,/∆∆
∆
Equal
Hình 9.14. Cách xác nhận khác
d. Biến tấu của máy Turing: Multitape TMs
Các phiên bản của máy Turing được giới thiệu ở mục 9.1. Ở đây có vài sự
khác biệt về những quy ước nhỏ, quan tâm đến cấu hình khởi tạo, dịch chuyển được
phép, giao thức chấp nhận xâu…Thêm vào đó, mô hình máy TM có thể được cải tiến
theo một vài cách thông thường. Trong mục này, chúng ta đề cập đến một số cái khác
nhau và đưa ra các phiên bản cải tiến.
TM thân thiện hơn với người dùng, như băng thêm vào, dễ dàng hơn để mô tả
thuật toán: có thể chia nhỏ dữ liệu và lưu trữ trong các băng từ khác nhau, tránh
những sai lầm về kỹ thuật, và thành công nếu như tất cả dữ liệu được lưu trữ và truy
xuất từ một băng từ đơn. Vì vậy, có sự cải tiến ở những phiên bản sau. Tuy nhiên,
mặc dù có sự thay đổi về môi trường nhưng vẫn không có sự thay đổi lớn về mặt tính
toán. Cuối cùng là trong mục này sẽ đưa ra những ví dụ hữu ích về cách tạo ra loại
máy tính có thể bắt chước các máy khác.
Để so sánh hai lớp trong máy trừu tượng với việc tính toán, bắt đầu từ những
hạn chế. Ở đây, chúng ta không quan tâm đến tốc độ, năng suất hay môi trường, chỉ
quan tâm đến cách mà 2 loại máy giải quyết cùng một vấn đề và có cùng câu trả lời.
Nhóm 6- Lớp Khoa Học Máy Tính- K12 15
Tiểu luận môn học: Lý Thuyết Tính Toán
Bất kỳ máy Turing nào cũng cho ra một câu trả lời, trước hết là chấp nhận hay không
chấp nhận, thứ hai là có cho ra cùng kết quả khi nó ở trạng thái dừng. Điều này có
nghĩa là nếu như muốn biểu diễn máy B có cùng khả năng như máy A, chúng cần
phải biểu diễn cho bất kỳ máy T
A
của loại A, máy T
B
của loại B để chấp nhận cùng
xâu vào là T
A
và cùng một xâu ra là T
A
bất cứ khi nào nó ở trạng thái dừng.
Trước hết, chúng ta đề cập ngắn gọn về sự khác biệt của các mô hình cơ bản,
chúng có những hạn chế nhất định. Một khả năng có thể xảy ra là yêu cầu đầu đọc
dịch chuyển sang phải hoặc sang trái. Trong phiên bản này, giá trị của hàm dịch
chuyển δ gồm phần tử (Q
∪
{h
a,
h
r
}) x (Г
∪
{∆} ) x {L, R, S}. Khả năng thứ hai là
ghi ký hiệu hoặc đọc ký hiệu nhưng không phải là cả hai. Trong trường hợp này, δ
lấy giá trị trong (Q
∪
{h
a,
h
r
}) x (Г
∪
{∆}
∪
{L, R}), L, R được thừa nhận không
phải là phần tử của Г. Cả 2 trường hợp này cho thấy rằng, những hạn chế không làm
giảm khả năng của máy.
Xác định sự khác nhau giữa các máy Turing và máy tính là máy TM có băng
từ 1 thứ nguyên với kết thúc trái. Một cách để làm tăng khả năng của máy, đó là có
thể giảm những hạn chế: tạo ra băng từ 2 thứ nguyên, hoặc bỏ bớt kết thúc trái và tạo
ra băng từ có khả năng điều khiển cả hai. Cách khác, nên bắt đầu với các quy tắc, đó
là máy có thể thực thi, quy ước đối với những xâu vào và xâu ra. Tóm lại, khả năng
của máy thay đổi không đáng kể khi có sự thêm vào khác.
Đúng hơn là xác định một băng, chúng có thể thay thế bằng cách ghép thêm
các băng khác nữa. Chúng quyết định đầu đọc băng từ đơn hay không, vị trí chính
xác của các băng, hoặc là đầu đọc trên mỗi băng từ dịch chuyển độc lập với những
cái khác. Chúng có hai lựa chọn, máy Turing n băng từ được xác định bởi 5 thành
phần T = (Q, ∑, Г, Q
o
, δ), nó dịch chuyển trên cơ sở là trạng thái hiện thời và n- băng
đã khảo sát của băng từ, từ đó, đầu đọc dịch chuyển một cách độc lập, được biểu diễn
bởi hàm dịch chuyển sau:
δ = Q x (Г
∪
{∆})
n
→ (Q
∪
{h
a
, h
r
}) x (Г
∪
{∆})
n
x {R,L,S}
n
Quan tâm mô hình tổng quát đơn giản, mô hình máy TM n- băng từ được xác
định bởi (n + 1)- băng
(q, x
1
a
1
y
1
, x
2
a
2
y
2
, …, x
n
a
n
y
n
)
Với x
i
y
i
có cùng giới hạn
Chúng khởi tạo cấu hình cho xâu vào
x
là
(q
o
,
∆
x,
∆
, …,
∆
)
Với những từ khác, trước hết băng từ đọc vào. Chúng xuất ra TM n- băng là
nội dung cuối của băng 1. Băng 2, thông qua n, được dùng để làm không gian làm
việc phụ, và khi máy TM dừng thì nội dung của nó bị bỏ qua. Liên quan đến hàm ƒ
của máy tính, bất cứ khi nào bắt đầu với xâu vào
x
nằm trong miền ƒ, nó dừng ở một
vài cấu hình dạng (h
a
, ∆ƒ(
x
)), ở đây nội dung băng 2 là bất kỳ, trường hợp khác thì
báo lỗi.
Hiển nhiên là với bất kỳ n ≥ 2, TM n- băng ít nhất cũng có những khả năng
như một băng. Để bắt chước máy TM, máy TM n- băng đơn giản hoạt động như trên
băng 1 và chuyển đến các ký tự trống khác. Và chúng biểu diễn ngược lại.
Định lý 9.1:
Với n ≥ 2 và cho máy Turing n- băng T
1
= {Q
1
, ∑, Г
1
, q
1
,
δ
1
}. Thì máy TM 1-
băng T
2
= {Q
2
, ∑, Г
2
, q
2
,
δ
2
}, với Г
1
⊆
Г
2
, thoã mãn 2 điều kiện sau:
Nhóm 6- Lớp Khoa Học Máy Tính- K12 16
Tiểu luận môn học: Lý Thuyết Tính Toán
1. L(T
2
) = L(T
1
), với bất kỳ x
∈
∑
*
, T
2
chấp nhận xâu vào
x
nếu và chỉ nếu T
1
chấp nhận xâu vào
x
.
2. Bất kỳ x
∈
∑
*
, nếu
(q
1
,
∆
x,
∆
, …,
∆
) ├
*
T1
(h
a
, y
a
z, y
2
a
2
z
2
, …, y
n
a
n
z
n
)
(cho a, a
i
∈
Г
1
∪
{∆}) và y, z, y
i
, z
i
∈
(Г
1
∪
{∆})
*
) thì
(q
2
,
∆
x
) ├
*
T2
(h
a
, y
a
z)
Nếu như T
1
chấp nhận xâu vào
x
, thì T
2
cũng chấp nhận xâu vào
x
và cho xâu ra
giống với T
1
.
Chứng minh:
Chứng minh với n = 2. Dễ thấy điều này trong các trường hợp mở rộng
Xây dựng máy TM 1- băng, có khả năng bắt chước theo máy 2- băng, nó hoạt
động như máy 2- băng. Cách lấy băng đơn giống như băng 2, để dùng cho băng
chữ phức tạp. Nếu thêm ký tự ít hơn chữ, có thể nảy sinh những vấn đề về kỹ
thuật trong việc bắt chước, tìm vị trí rãnh đầu đọc đã chia nhỏ.
Bảng chữ Г
2
chứa các ký tự
1. Ký tự trong Г = Г
1
∪
{∆}. Đúng vì xâu vào và xâu ra có cùng dạng.
2. Phần tử của Г x Г , (X, Y) có thứ tự, biểu diễn X theo thứ tự i ở băng từ đầu
tiên, Y ở băng tần thứ 2. Băng từ có 2 rãnh, tương ứng với 2 băng từ của T
1
. 2
rãnh không có ngay lúc đầu, mà được tạo ra từ từ khi T
2
dịch chuyển đầu đọc
của nó sang phải.
3. Phần tử của (Г x Г
’
)
∪
(Г
’
x Г)
∪
(Г
’
x Г
'
), ở đây Г
’
chứa các ký tự như Г . Bất
cứ lúc nào bắt chước, ký tự được đầu đọc chỉ định phù hợp với băng T
1
. Biểu
diễn cặp ký tự trên đầu đọc T
1
trên cùng băng.
4. Thêm ký tự trống, chèn vào bên trái của thứ tự, nó dễ tìm thấy điểm bắt đầu
của đầu đọc khi cần.
Tiếp theo T
2
, sau khi chèn ký tự trống, thay đổi ký tự trống, trên băng 1 là ký tự
(∆
’
, ∆
’
), nghĩa là đầu đọc của mỗi rãnh bây giờ trên băng 1, và sau đó tất nhiên đầu
đọc lùi về 0. Từ đó, 2 rãnh sẽ mở rộng ra như T
2
và đầu đọc dịch chuyển sang phải,
bất cứ khi nào phù hợp với băng cha, nó chuyển từ ký tự đơn sang ký tự đôi.
Bắt đầu bắt chước, T
1
dịch chuyển dạng
δ(b, a
1
, a
2
) = (q, b
1
, b
2
, D
1
, D
2
)
a
1
, a
2
là ký tự có thứ tự của băng từ tương ứng. Vì T
2
chỉ có một đầu đọc, nó
phải xác định bước dịch chuyển tiếp theo của ký tự trên rãnh băng từ của nó, tạo ra
những biến đổi dịch chuyển thích hợp trên rãnh, gồm cả những ký tự mới được tạo ra
để phù hợp với bất kỳ sự thay đổi vị trí trên đầu đọc T
1
.
Có thể dùng T
2
để nhớ trạng thái hiện tại của T
1
. Với khả năng này, có thể mô
tả T
2
bắt chước những dịch chuyển đơn của T
1
, bắt đầu từ bên trái nhất của băng từ.
1. Dịch chuyển đầu đọc sang phải đến khi tìm thấy cặp (a
1
’
, c) và ghi nhớ a
1
.
Dịch chuyển lùi lại đến ký tự # ở đầu.
2. Đầu đọc ở cùng rãnh thứ 2, bằng cách tìm đến cặp (d, a
’
2
).
3. Nếu dịch chuyển của T
1
xác định dạng (q, b
1
, b
2
, D
1
, D
2
), ghi nhớ trạng thái
q, thay đổi (d, a
’
2
) thành (d, b
2
), dịch chuyển đầu đọc theo chỉ thị D
2
.
4. Nếu vị trí hiện tại có chứa #, từ chối, T
1
kết thúc bằng cách dịch chuyển
đầu đọc sang băng 2. Nếu không và nếu vị trí hiện tại không chứa cặp ký
tự,chuyển ký tự a đó đến cặp (a, ∆
’
), nếu chứa cặp (a, b) thì chuyển sang (a,
b
’
), đầu đọc bắt đầu dịch chuyển.
Nhóm 6- Lớp Khoa Học Máy Tính- K12 17
Tiểu luận môn học: Lý Thuyết Tính Toán
Định vị cặp (a
1
’
, c) ở bước 1, thay đổi thành (b
1
, c) và dịch chuyển đầu đọc theo chỉ
thị D
1.
Ở bước 4, từ chối những cái khác và thay đổi ký tự a thành cặp (a
’
, ∆), hoặc thay đổi
cặp (a, b) thành cặp (a
’
, b), quay lại băng từ đầu.
Lược đồ dưới minh họa phép lặp đơn giản.
∆
0
’
∆
0
# 1
∆
0 1 0 1
’
∆
0
’
∆
0 1
#
∆
0 1 0 0
'∆
'∆
∆
∆
0 1
#
∆
0 1 0 0
'∆
Ký hiệu a
1
, a
2
là 0 và 1, b
1
, b
2
là ∆ và 0, D
1
, D
2
là L và R , tương ứng có dịch
chuyển bắt chước là s
δ
(p, 0, 1) = (
RLq ,,0,,∆
)
Dòng thứ 2 trình diễn sau bước 4, ký hiệu 1 được thay bằng cặp ký hiệu, ký
hiệu thứ 2 là kết quả dịch chuyển của đầu đọc trên băng thứ 2. Dòng thứ 3 trình diễn
cấu hình sau bước 6.
Không tiến đến trạng thái kết thúc h
a
, lặp lại bước 6 để T
2
bắt chước dịch chuyển của
T
1
. Khi trạng thái mới là h
a
, T
2
thêm bước dịch chuyển để có cấu hình đúng.
7. Dịch chuyển qua băng, chuyển đến cặp (a, b) cho ký hiệu a
8. Xoá #, những ký hiệu còn lại là 0.
9. Dịch chuyển đầu đọc đến ký tự có độ ưu tiên, thay đổi ký tự tương ứng và dừng
đầu đọc ở trạng thái h
a
.
Hệ quả 9.1: Bất kỳ ngôn ngữ nào chấp nhận máy TM n- băng thì cũng có thể thực
hiện với máy TM thông thường.
Chứng minh: Được chứng minh từ định lý 9.1
Nhóm 6- Lớp Khoa Học Máy Tính- K12 18
Tiểu luận môn học: Lý Thuyết Tính Toán
CHƯƠNG 2: BÀI TẬP
Viết chương trình RAM chuẩn và RAM thô sơ tìm nghiệm của hệ phương
trình tuyến tính.
=+
=+
feydx
cbyxa
Thuật toán:
Đọc các giá trị a, b, c, d, e, f từ bàn phím
Gán: D = a*e – b*d;
Dx = c*e – b*f;
Dy = a*f – c*d;
Nếu (dt <> 0) thì hệ phương trình có 2 nghiệm
=
=
DDyy
DDxx
/
/
Ngược lại
Nếu (dx <> 0) thì hệ phưong trình vô nghiệm
Nếu (dy <> 0) thì hệ phương trình vô định
Ghi chú: Thanh ghi 1 chứa a, thanh ghi 2 chứa b, thanh ghi 3 chứa c, thanh ghi 4 chứa d,
thanh ghi 5 chứa e, thanh ghi 6 chứa f, thanh ghi 7 chứa a*e, thanh ghi 8 chứa b*d, thanh
ghi 9 chứa hiệu của thanh ghi 7 và thanh ghi 8, thanh ghi 10 chứa c*e, thanh ghi 11 chứa
b*f, thanh ghi 12 chứa hiệu của thanh ghi 10 và thanh ghi 11, thanh ghi 13 chứa a*f, thanh
ghi 14 chứa c*d, thanh ghi 15 chứa hiệu của thanh ghi 13 và thanh ghi14, thanh ghi 16 chứa
nghiệm x, thanh ghi 17 chứa nghiệm y.
Đoạn chương trình giả ngữ minh hoạ
Nhóm 6- Lớp Khoa Học Máy Tính- K12 19
Tiểu luận môn học: Lý Thuyết Tính Toán
PROGRAM MAYRAM;
{He phuong trinh bac nhat
ax + by = c
ax + by = d
Tinh
D =a*e - b*d
Dx=c*e - b*f
Dy=a*f - d*c
Bien luan
D<>0 : He co mot nghiem x=Dx/D, y=Dy/D
D=0 : Neu Dx<>0 va Dy<>0 He vo nghiem
: Nguoc lai He vo so nghiem
}
{uses crt;}
var
{Gia lap R0 -> R12 la cac thanh ghi
R0 luu ACC
R1 luu a
R2 luu b
R3 luu c
R4 luu d
R5 luu e
R6 luu f
}
R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12:integer;
procedure RAMCHUAN;
label L1,L2,L3,L4;
begin
{Nhap du lieu vao}
write('Nhap a='); read(R1); {R1 <- a}
write('Nhap b='); read(R2); {R2 <- b}
write('Nhap c='); readln(R3); {R3 <- c}
write('Nhap d='); read(R4); {R4 <- d}
write('Nhap e='); read(R5); {R5 <- e}
write('Nhap f='); readln(R6); {R6 <- f}
{Tinh D,Dx,Dy}
R0 := R1; {ACC <- R1}
R0 := R0*R5; {ACC <- <ACC>*R1 //a*e}
R7 := R0; {R7 <- <ACC>}
R0 := R4; {ACC <- R4}
R0 := R0*R4; {ACC <- <ACC>*R4 //b*d}
R8 := R0; {R8 <- <ACC>}
R0 := R7; {ACC <- R7}
R0 := R0-R8; {ACC <- <ACC>-R8 //D=(a*e - b*d)}
R7 := R0; {R7 <- <ACC> //D}
R0 := R3; {ACC <- R3}
R0 := R0*R5; {ACC <- <ACC>*R5 //c*e}
R8 := R0; {R8 <- <ACC>}
R0 := R6; {ACC <- R6}
R0 := R0*R2; {ACC <- <ACC>*R2 //b*f}
Nhóm 6- Lớp Khoa Học Máy Tính- K12 20
Tiểu luận môn học: Lý Thuyết Tính Toán
R9 := R0; {R9 <- <ACC>}
R0 := R8; {ACC <- R8}
R0 := R0-R9; {ACC <- <ACC>-R9 //Dx=(c*e - b*f )}
R7 := R0; {R8 <- <ACC> //Dx}
R0 := R1; {ACC <- R1}
R0 := R0*R6; {ACC <- <ACC>*R6 //a*f}
R9 := R0; {R9 <- <ACC>}
R0 := R4; {ACC <- R4}
R0 := R0*R3; {ACC <- <ACC>*R3 //cd}
R10:= R0; {R10 <- <ACC>}
R0 := R9; {ACC <- R9}
R0 := R0-R10; {ACC <- <ACC>-R10 //Dy=(a*f - c*d)}
R9 := R0; {R9 <- <ACC> //Dy}
{Bien luan}
R0 := R7; {ACC <- R7 //D}
IF R0=0 THEN GOTO L1; {JZER0 L1 D=0}
R0 := R8; {ACC <- R8 //Dx}
R0 := R0 DIV R8; {ACC <- <ACC>/R8 //Dx/D}
R1 := R0;
write('He co mot nghiem x = ',R1,' ');
R0 := R9; {ACC <- R9 //Dy}
R0 := R0 div R7; {ACC <- <ACC>/R7 //Dy/D}
R1 := R0;
writeln('y = ', R1); {JUMP}
goto L3;
L1:
R0 := R8; {ACC <- R8 //Dx}
IF R0=0 THEN GOTO L2; {JZERO}
R0 := R9;
IF R0=0 THEN GOTO L2; {JZERO}
R0 := 0;
R1 := R0;
writeln('He vo nghiem');
GOTO L3; {JUMP}
L2:
R0 := -1;
R1 := R0;
writeln('He vo so nghiem');
L3:
end;
procedure RAMTHOSO;
label L11,L12,L13,L14,L15,L16,L17,L18;
label L21,L22,L23,L24,L25,L26,L27,L28;
label L31,L32,L33,L34,L35,L36,L37,L38;
label L41,L42,L43,L44,L45,L46,L47,L48;
label L51,L52,L53,L54,L55,L56,L57,L58;
label L61,L62,L63,L64,L65,L66,L67,L68;
label L1,L2,L3,L4,L5,L6,L7,L8,L9;
label L_S11,L_S12,L_S13,L_S21,L_S22,L_S23,L_S31,L_S32,L_S33;
begin
Nhóm 6- Lớp Khoa Học Máy Tính- K12 21
Tiểu luận môn học: Lý Thuyết Tính Toán
{Nhap du lieu vao}
write('Nhap a='); read(R1); {R1 <- a 1}
write('Nhap b='); read(R2); {R2 <- b 2}
write('Nhap c='); readln(R3); {R3 <- c 3}
write('Nhap d='); read(R4); {R4 <- d 4}
write('Nhap e='); read(R5); {R5 <- e 5}
write('Nhap f='); readln(R6); {R6 <- f 6}
{Tinh D,Dx,Dy}
{Tinh a1*b2}
{IF}
IF R1=0 THEN {J <1> (L17,L11)}
GOTO L17
ELSE
GOTO L11;
L11:
IF R5=0 THEN {J <5> (L17,L12)}
GOTO L17
ELSE
GOTO L12;
L12:
R0 := R1;
R7 := R0;
R0 := R5;
R10:= R0;
L13:
R10:=R10-1; {D <10>}
IF R10=0 THEN
GOTO L16
ELSE
GOTO L14;
L14:
R0 := R1; {a1}
R11:= R0;
L15:
R7 :=R7+1;
R11:=R11-1;
IF R11=0 THEN
GOTO L13
ELSE
GOTO L15;
L16:
R0 := 0;
IF R0=0 THEN
GOTO L18
ELSE
GOTO L18;
L17:
R0 := 0;
R7 := R0;
L18:{writeln('a*e=',R7); {R7=a*e}
Nhóm 6- Lớp Khoa Học Máy Tính- K12 22
Tiểu luận môn học: Lý Thuyết Tính Toán
{Tinh d*b}
{IF}
IF R4=0 THEN {J <4> (L27,L21)}
GOTO L27
ELSE
GOTO L21;
L21:
IF R2=0 THEN {J <2> (L27,L22)}
GOTO L27
ELSE
GOTO L22;
L22:
R0 := R4;
R12:= R0;
R0 := R2;
R10:= R0;
L23:
R10:=R10-1; {D <10>}
IF R10=0 THEN
GOTO L26
ELSE
GOTO L24;
L24:
R0 := R4; {a2}
R11:= R0;
L25:
R12:=R12+1;
R11:=R11-1;
IF R11=0 THEN
GOTO L23
ELSE
GOTO L25;
L26:
R0 := 0;
IF R0=0 THEN
GOTO L28
ELSE
GOTO L28;
L27:
R0 := 0;
R12:= R0;
L28:{writeln('d*b=',R12); {R12=d*b}
{Tinh a1*b2 - a2*b1}
IF R12=0 THEN
GOTO L_S11
ELSE
IF R12>0 THEN
GOTO L_S12
ELSE
GOTO L_S13;
Nhóm 6- Lớp Khoa Học Máy Tính- K12 23
Tiểu luận môn học: Lý Thuyết Tính Toán
L_S12:
R12:= R12-1;
R7 := R7-1;
IF R12=0 THEN
GOTO L_S11
ELSE
GOTO L_S12;
L_S13:
R12:=R12+1;
R7 :=R7+1;
IF R12=0 THEN
GOTO L_S11
ELSE
GOTO L_S13;
L_S11:{writeln('a*e-d*b=',R7); {R7=a*e - d*b}
{Tinh c*e}
{IF}
IF R3=0 THEN {J <3> (L37,L31)}
GOTO L37
ELSE
GOTO L31;
L31:
IF R5=0 THEN {J <5> (L37,L32)}
GOTO L37
ELSE
GOTO L32;
L32:
R0 := R3;
R8 := R0;
R0 := R5;
R10:= R0;
L33:
R10:=R10-1; {D <10>}
IF R10=0 THEN
GOTO L36
ELSE
GOTO L34;
L34:
R0 := R3; {c1}
R11:= R0;
L35:
R8 :=R8+1;
R11:=R11-1;
IF R11=0 THEN
GOTO L33
ELSE
GOTO L35;
L36:
R0 := 0;
IF R0=0 THEN
Nhóm 6- Lớp Khoa Học Máy Tính- K12 24
Tiểu luận môn học: Lý Thuyết Tính Toán
GOTO L38
ELSE
GOTO L38;
L37:
R0 := 0;
R8 := R0;
L38:{writeln('c*e=',R8); {R8=c*e}
{Tinh f*b}
{IF}
IF R6=0 THEN {J <6> (L47,L41)}
GOTO L47
ELSE
GOTO L41;
L41:
IF R2=0 THEN {J <2> (L47,L42)}
GOTO L47
ELSE
GOTO L42;
L42:
R0 := R6;
R12:= R0;
R0 := R2;
R10:= R0;
L43:
R10:=R10-1; {D <10>}
IF R10=0 THEN
GOTO L46
ELSE
GOTO L44;
L44:
R0 := R6; {c2}
R11:= R0;
L45:
R12:=R12+1;
R11:=R11-1;
IF R11=0 THEN
GOTO L43
ELSE
GOTO L45;
L46:
R0 := 0;
IF R0=0 THEN
GOTO L48
ELSE
GOTO L48;
L47:
R0 := 0;
R12:= R0;
L48:{writeln('f*b=',R12); {R12=f*b}
{Tinh c*e - f*b}
Nhóm 6- Lớp Khoa Học Máy Tính- K12 25