Tiểu luận môn học Lý Thuyết Tính Toán
MỤC LỤC
MỤC LỤC 1
LỜI MỞ ĐẦU 2
PHẦN 1. LÝ THUYẾT MÁY TURING 3
8.2.1 NHIỆM VỤ GIẢI QUYẾT CÁC CÂU HỎI TOÁN HỌC 4
8.2.2 KÝ PHÁP CHO MÁY TURING 5
8.2.3 MÔ TẢ TỨC THỜI CHO MÁY TURING 7
8.2.4 NHỮNG SƠ ĐỒ CHUYỂN TIẾP CHO MÁY TURING 12
8.2.5 NGÔN NGỮ CỦA MÁY TURING 16
8.2.6 MÁY TURING VÀ TRẠNG THÁI DỪNG 17
PHẦN 2. BÀI TẬP 18
2.1. BÀI 8.2.1 18
2.2. BÀI 8.2.3 21
TÀI LIỆU THAM KHẢO 24
Lớp KHMT Khoá 26 Trang 1
Tiểu luận môn học Lý Thuyết Tính Toán
LỜI MỞ ĐẦU
Nhóm chúng em thực hiện việc nghiên cứu tài liệu “Introduction to
Automata Theory, Languages, and Computation”, phần 8.2 (tr. 316 – 328).
Rất mong được sự đóng góp ý kiến của Thầy PGS. TS. Phan Huy Khánh.
Xin chân thành cảm ơn!
Lớp KHMT Khóa 26
Trần Thanh Liêm
Nguyễn Trọng Nguyên
Nguyễn Minh Quỳnh
Lớp KHMT Khoá 26 Trang 2
Tiểu luận môn học Lý Thuyết Tính Toán
PHẦN 1. LÝ THUYẾT MÁY TURING
Mục đích của các lý thuyết về các vấn đề trên (8.1) không chỉ để thể hiện sự
tồn tại của chúng - một ý tưởng thú vị về mặt trí tuệ theo đúng nghĩa của nó –mà
còn cung cấp hướng dẫn cho các lập trình viên về những gì họ có thể hoặc không
thể thực hiện bằng cách lập trình. Lý thuyết này có tác dụng thực tiễn rất lớn khi
chúng ta thảo luận (chương 10): các vấn đề mặc dù có thể quyết định nhưng lại
yêu cầu lượng lớn thời gian để giải quyết chúng. Những vấn đề này, được gọi là
vấn đề nan giải, có xu hướng trình bày khó khăn hơn cho các lập trình việc và
các nhà thiết kế hệ thống so với các vấn đề không thể quyết định. Lý do là, trong
khi các vấn đề không thể quyết định thường khá rõ ràng như vậy, và giải pháp
của chúng hiếm khi được áp dụng trong thực tế, thì những vấn đề nan giản đang
xuất hiện mỗi ngày. Hơn nữa, chúng thường mang lại những thay đổi nhỏ trong
các yêu cầu hoặc các giải pháp heuristic. Vì vậy, những người thiết kế thường
xuyên phải đối mặt với việc phải quyết định có hay không một vấn đề nan giải,
và phải làm gì với nó nếu có.
Chúng ta cần các công cụ mà cho phép chúng ta chứng minh các câu hỏi
hàng ngày không thể quyết định hay nan giải. Kĩ thuật đã được giới thiệu tại mục
8.1 rất hữu ích cho các câu hỏi ứng phó với các chương trình, nhưng nó không hề
dễ dàng. Ví dụ, chúng ta sẽ giảm được độ khó của các câu hỏi trong bài toán
hello-world cho dù ngữ pháp là mơ hồ.
Kết quả là, chúng ta cần phải xây dựng lại cơ sở lý thuyết về vấn đề không
thể quyết định, không dựa trên các chương trình bằng C hoặc ngôn ngữ khác, mà
dựa trên một máy tính có mô hình rất đơn giản được gọi là máy Turing. Thiết bị
này thực chất là máy tự động hữu hạn có một băng đơn dài vô hạn mà trên đó nó
có thể đọc và ghi dữ liệu. Một trong những ưu điểm của máy Turing so với
chương trình có thể được tính là máy Turing đủ đơn giản để chúng ta có thể diễn
tả cấu hình của nó một cách chính xác, bằng cách sử dụng một ký hiệu đơn giản
giống như các ID của một PDA. Trong so sánh, trong khi chương trình C có một
trạng thái, liên quan đến tất cả các biến theo trình tự của lời gọi hàm được thực
Lớp KHMT Khoá 26 Trang 3
Tiểu luận môn học Lý Thuyết Tính Toán
hiện, các cú pháp mô tả các trạng thái này quá phức tạp để chúng ta có thể hiểu
và chứng minh.
Sử dụng ký pháp máy Turing, chúng ta sẽ chứng minh bài toán không thể
quyết định được không liên quan đến lập trình. Một ví dụ, chúng ta sẽ thấy trong
phần 9.4, một câu hỏi đơn giản liên quan đến hai danh sách các chuỗi, là không
thể quyết định được, và vấn đề này làm cho nó dễ dàng đưa ra câu hỏi về ngữ
pháp, chẳng hạn như sự mơ hồ, là không thể quyết định được. Tương tự, khi
chúng tôi giới thiệu các vấn đề khó, chúng ta sẽ thấy rằng một số câu hỏi, dường
như khó áp dụng các phương pháp tính toán (ví dụ như công thức của boolean).
8.2.1 Nhiệm vụ giải quyết các câu hỏi toán học
Bước vào thế kỷ 20, nhà toán học D. Hilbert đã hỏi rằng liệu có thể tìm thấy
một thuật toán để xác định sự chính xác hay là sai lầm của bất kỳ lời tuyên bố
toán học nào. Đặc biệt, ông hỏi có cách nào để xác định xem một công thức bất
kỳ là đúng. Kể từ khi các phép tính toán các số nguyên đủ mạnh mẽ để thể hiện
phát biểu như "ngữ pháp này là mơ hồ," hoặc "chương trình này in hello world"
thì Hilbert đã thành công, có những vấn đề sẽ có thuật toán mà đến bây giờ
chúng ta biết không tồn tại.
Tuy nhiên, vào năm 1931, K. Godel công bố định lý bất toàn nổi tiếng của
ông. Ông đã xây dựng một công thức trong tính toán áp dụng cho số nguyên,
khẳng định rằng công thức đó có thể không cần được chứng minh và cũng không
bác bỏ trong các tính toán. Kỹ thuật của Godel tương tự như việc xây dựng các
chương trình mâu thuẫn H2 tại mục 8.1.2, nhưng với các chức năng trên số
nguyên, chứ không phải với các chương trình C.
Tính toán vị từ không chỉ là khái niệm chỉ các lý thuyết liên quan đến tính
toán. Trong tính toán vị từ thực tế, các thành phần được khai báo chứ không phải
tính toán, phải hoàn tất với một loạt các ký hiệu, bao gồm cả chức năng đệ quy
một phần, giống một ký hiệu hơn là ngôn ngữ lập trình và những ký hiệu tương
tự khác. Năm 1936, A. M. Turing đề xuất các máy Turing như là một mô hình có
Lớp KHMT Khoá 26 Trang 4
Tiểu luận môn học Lý Thuyết Tính Toán
thể tính toán bất kỳ. Mô hình này giống như máy tính hơn là chương trình, mặc
dù điện tử, hoặc thậm chí máy tính điện tử thì nhiều năm sau đó mới được phát
minh (Turing đã tự mình tham gia vào xây dựng máy trong suốt chiến tranh thế
giới thứ II).
Điều thú vị là tất cả các đề xuất quan trọng cho một mô hình tính toán đều
có quyền như nhau, đó là chúng tính toán các chức năng tương tự nhau hoặc
công nhận các ngôn ngữ giống nhau. Giả định không thể chứng minh được rằng
bất kỳ cách thức chung để tính toán sẽ cho phép chúng ta tính toán chỉ có hàm đệ
quy một phần (hoặc tương đương máy Turing, các máy tính hiện đại ngày nay có
thể tính toán) được biết đến như giả thuyết của Church hoặc luận đề Church-
Turing.
8.2.2 Ký pháp cho máy Turing
Chúng ta có thể hình dung một máy Turing như trong hình 8.8. Máy này
bao gồm một điều khiển hữu hạn, thuộc một tập hợp hữu hạn của các trạng thái
bất kỳ. Có một băng được chia thành các ô vuông hoặc các ngăn, mỗi ngăn có
thể chứa bất kỳ một trong số hữu hạn biểu tượng.
Hình 8.8
Ban đầu, đầu vào (là một chuỗi hữu hạn chiều dài của các ký hiệu được
chọn từ bảng chữ cái đầu vào) được đặt trên băng. Tất cả các ô khác của băng mở
rộng vô hạn đến bên trái và phải, ban đầu chứa một ký hiệu đặc biệt gọi là ký
hiệu rỗng. Ký hiệu rỗng là một ký hiệu của băng, nhưng không phải là ký hiệu
Lớp KHMT Khoá 26 Trang 5
Tiểu luận môn học Lý Thuyết Tính Toán
đầu vào, và có thể có các ký hiệu băng khác, bên cạnh những ký hiệu đầu vào và
ký hiệu rỗng.
Một đầu băng là ô ở vị trí thứ nhất của băng. Máy Turing có thể quét các ô
trên băng. Ban đầu, đầu băng ở ô ngoài cùng bên trái chứa dữ liệu đầu vào.
Di chuyển của máy Turing là một hàm của trạng thái về kiểm soát hữu hạn
và biểu tượng của băng quét. Trong mỗi di chuyển, máy Turing sẽ:
1. Thay đổi trạng thái. Trạng thái tiếp theo tùy chọn có thể là tương tự như
trạng thái hiện tại.
2. Viết một biểu tượng băng trong ô quét. Biểu tượng băng này thay thế
biểu tượng đã có trong ô. Tuy nhiên, biểu tượng có thể giống như biểu
tượng hiện có.
3. Di chuyển đầu băng sang trái hoặc phải. Sau mỗi trạng thái, chúng ta yêu
cầu một di chuyển, và không cho phép đầu đọc đứng yên một chỗ. Hạn
chế này không không hạn chế những gì một máy Turing có thể tính toán.
Ký hiệu chính thức mà chúng ta sẽ sử dụng cho một máy Turing (TM) là
tương tự như sử dụng automát hữu hạn hoặc PDA. Chúng ta mô tả một TM bởi
tuple-7:
M = (Q, ∑, Γ, δ, q0, B, F)
Các thành phần có ý nghĩa như sau:
Q: tập hữu hạn của các trạng thái kiểm soát hữu hạn.
∑: tập hợp hữu hạn các ký hiệu đầu vào.
Γ: bộ hoàn chỉnh các biểu tượng băng; E luôn là một tập hợp con của Γ.
δ: Hàm chuyển đổi. Những tham số của hàm δ(q, X) là một trạng thái q và
một ký hiệu băng X. Giá trị của hàm δ(q, X), nếu nó được định nghĩa, là một bộ
ba (p, Y, D), trong đó:
1. p là trạng thái tiếp theo, trong Q.
Lớp KHMT Khoá 26 Trang 6
Tiểu luận môn học Lý Thuyết Tính Toán
2. Y là biểu tượng, trong Γ, được viết trong ô được quét, thay thế
biểu tượng đã có.
3. D là một hướng, hoặc L hoặc R, là viết tắt của chữ "left" hoặc
"right", và cho chúng ta biết hướng di chuyển đầu đọc/ghi.
q
0
: Trạng thái bắt đầu, là một phần tử của Q, trong đó kiểm soát hữu hạn
được tìm thấy ban đầu.
B: Biểu tượng rỗng. Biểu tượng này là trong Γ nhưng không phải trong ∑,
nghĩa là, nó không phải là một biểu tượng đầu vào. Biểu tượng rỗng xuất hiện
ban đầu trong tất cả, nhưng số lượng hữu hạn của ô ban đầu giữ biểu tượng đầu
vào.
F: tập hợp các trạng thái cuối cùng hay trạng thái chấp nhận, là một tập
hợp con của Q.
8.2.3 Mô tả tức thời cho máy Turing
Để mô tả chính thức những gì một máy Turing (TM) làm, chúng ta cần phải
phát triển một ký pháp cho các cấu hình hoặc mô tả tức thời (ID), giống như các
ký hiệu chúng ta phát triển cho PDA. Từ một TM, về nguyên tắc, có một băng
dài vô tận, chúng ta có thể tưởng tượng rằng nó là không thể mô tả các cấu hình
của một TM một cách ngắn gọn. Tuy nhiên, sau bất kỳ số lượng hữu hạn các di
chuyển, TM có thể chỉ có một số hữu hạn của các ô đã truy cập, mặc dù số lượng
của các ô truy cập cuối cùng có thể phát triển xa hơn bất kỳ giới hạn hữu hạn.
Như vậy, trong mỗi ID, có một tiền tố và hậu tố vô hạn của các ô không bao giờ
được truy cập. Tất cả những ô này phải giữ một trong hai khoảng trống hoặc một
số hữu hạn các ký hiệu đầu vào. Do đó chúng ta thấy trong một ID chỉ có các ô
giữa tận cùng bên trái và bên phải ngoại trừ những khoảng trống ngoài cùng bên
phải. Trong điều kiện đặc biệt, khi đầu đọc đang quét một đầu băng hoặc dấu
trống, một số hữu hạn các khoảng trống bên trái hoặc bên phải của phần không
trống của băng cũng phải được bao gồm trong các ID.
Lớp KHMT Khoá 26 Trang 7
Tiểu luận môn học Lý Thuyết Tính Toán
Ngoài ra để biểu diễn băng, chúng ta phải biểu diễn cho điều khiển hữu hạn
và vị trí đầu băng. Để làm như vậy, chúng ta nhúng các trạng thái trong băng, và
ngay lập tức đặt nó tới bên trái của các ô đã được quét. Để phân biệt với các
chuỗi băng cộng với trạng thái, chúng ta phải chắc chắn rằng chúng ta không sử
dụng bất kỳ một ký hiệu trạng thái nào cũng là một ký hiệu băng. Tuy nhiên, thật
dễ dàng để thay đổi tên của các trạng thái vì thế chúng không có gì chung với các
ký hiệu băng, kể từ khi hoạt động của TM không phụ thuộc vào những gì các
trạng thái được gọi. Vì vậy, chúng ta sẽ sử dụng chuỗi X
1
X
2
… X
i-1q
X
i
X
i+1
X
n
để biểu diễn cho một ID, trong đó:
1. q là trạng thái của máy Turing.
2. Đầu đọc băng quét các ký hiệu thứ i từ bên trái.
3. X
1
X
2
… X
n
là một phần của băng giữa tận cùng bên trái và bên phải
không trống. Như một ngoại lệ, nếu đầu đọc đến bên trái của tận cùng
bên trái không trống hoặc đến bên phải của tận cùng bên phải không
trống, thì một số tiền tố hoặc hậu tố của X
1
X
2
X
n
sẽ được để trống, và
i sẽ là 1 hoặc n, tương ứng.
Chúng ta mô tả di chuyển của một máy Turing M = (Q, E, Г,δ, qo, B, F)
bằng các ký hiệu được sử dụng cho PDA. Khi TM M này được hiểu, chúng
ta sẽ sử chỉ cần dụng để phản ánh di chuyển. Như thường lệ, hoặc sẽ
được dùng để chỉ 0, 1 hoặc nhiều di chuyển của máy Turing M.
Giả sử δ(q, Xi) = (p, Y, L), động thái tiếp theo là dịch chuyển sang trái. Khi
đó:
1 2 1 1 1 2 2 1 1
i i i n i i i n
X X X qX X X X X X pX YX X
− + − − +
>
Chú ý động thái này phản ánh sự thay đổi trạng thái p và thực tế rằng đầu
đọc băng bây giờ ở tại vị trí ô (i – 1). Có hai trường hợp ngoại lệ quan trọng:
1. Nếu i = 1, thì M di chuyển vào chỗ trống bên trái của X
1
. Trong trường
hợp đó:
Lớp KHMT Khoá 26 Trang 8
M
Tiểu luận môn học Lý Thuyết Tính Toán
2. Nếu i = n và Y = B, thì ký hiệu B được viết đè lên X
n
tham gia vào chuỗi
vô hạn các khoảng trống theo sau và không xuất hiện trong các ID tiếp theo. Vì
vậy:
Bây giờ, giả sử δ(q,Xi) = (p,Y,R), hướng di chuyển tiếp theo là hướng về
bên phải. Khi đó:
Ở đây, sự di chuyển này phản ánh thực tế rằng đầu đọc đã chuyển đến ô (i +
1). Một lần nữa, có hai trường hợp ngoại lệ quan trọng:
1. Nếu i = n thì ô thứ (i + 1) giữ một khoảng trống, và ô này không phải là
một phần của ID trước. Vì vậy, thay vào chúng ta có:
2. Nếu i = 1 và Y = B, ký hiệu B viết đè lên X1 tham gia vào chuỗi vô hạn
các khoảng trống đầu hàng và không xuất hiện trong các ID tiếp theo. Vì vậy:
Ví dụ 8.2: Chúng ta thiết kế một máy Turing và xem nó hoạt động như thế
nào trên một đầu vào chuẩn. Các TM chúng ta xây dựng sẽ chấp nhận ngôn ngữ
{0
n
1
n
|N≥1}. Ban đầu, nó cho 1 chuỗi hữu hạn các số 0 và l trên băng của nó,
trước và sau là vô hạn của khoảng trống. Cách khác, TM sẽ thay đổi từ số 0
thành X và sau đó thay đổi số 1 thành Y, cho đến khi tất cả các số 0 và l đã được
thay đổi phù hợp.
Chi tiết hơn, bắt đầu từ đầu bên trái của đầu vào, nó liên tục thay đổi từ số 0
thành X và di chuyển sang phải qua bất cứ khi nó nhìn thấy số 0 và Y, cho đến
khi nó đến số 1. Nó thay đổi số 1 thành Y và di chuyển sang trái, qua Y và số 0,
cho đến khi nó tìm thấy X. Vào thời điểm đó, nó lập tức cho số 0 ngay bên phải,
Lớp KHMT Khoá 26 Trang 9
Tiểu luận môn học Lý Thuyết Tính Toán
và nếu tìm thấy số 1, nó thay đổi thành X và lặp đi lặp lại các quy trình, thay đổi
số 1 thành Y.
Nếu đầu vào không trống không thuộc 0*1*, thì TM cuối cùng sẽ không có
một sự di chuyển tiếp theo và sẽ ngừng hoạt động mà không có sự chấp nhận.
Tuy nhiên, nếu nó hoàn thành việc thay đổi tất cả các số 0 thành các X trên cùng
một vòng, thay đổi số 1 cuối cùng thành Y, thì nó đã tìm thấy đầu vào của mẫu
hình thức 0
n
l
n
và chấp nhận. Đặc điểm chính của TM M là:
δ được cho bởi bảng trong hình. 8.9.
M thực hiện tính toán của nó, các phần của băng nơi đầu băng của M đã
truy cập, sẽ luôn luôn là một chuỗi các biểu tượng được mô tả bởi các biểu thức
chính quy X*0*Y*1*. Đó là, sẽ có một số các số 0 được thay đổi thành các X,
tiếp theo là một số các số 0 chưa được thay đổi thành các X. Sau đó có một số
các số l đã được thay đổi thành các Y, và một số các số l chưa được thay đổi
thành các Y. Có thể có hoặc có thể không có các số 0 và các số 1 theo sau.
Hình 8.9: Một máy Turing chấp nhận {0
n
l
n
| n≥ 1}
Trạng thái qo là trạng thái ban đầu, và M cũng nhập vào trạng thái qo mỗi
khi nó trở về số 0 còn lại tận cùng bên trái. Nếu M là ở trạng thái qo và quét một
số 0, các quy tắc ở góc trên bên trái của hình 8.9 “nói” để nó đi đến trạng thái q1,
thay đổi từ số 0 thành X và di chuyển sang phải. Một khi ở trạng thái q1, M di
chuyển trên tất cả số 0 và Y mà nó tìm thấy trên băng còn lại ở trạng thái q1. Nếu
M thấy X hoặc B, nó sẽ ngừng hoạt động. Tuy nhiên, trong trạng thái q1 nếu M
Lớp KHMT Khoá 26 Trang 10
Tiểu luận môn học Lý Thuyết Tính Toán
nhìn thấy số 1, nó thay đổi số 1 thành Y, đi đến trạng thái q2, và bắt đầu di
chuyển sang trái.
Trong trạng thái q2, M di chuyển sang trái trên các số 0 và các Y. Khi M
đến X ngoài cùng bên phải, đánh dấu sự kết thúc của các khối số 0 mà đã được
thay đổi thành X, M trở về trạng thái qo và di chuyển sang bên phải. Có hai
trường hợp:
1. Nếu M bây giờ nhìn thấy một số 0, thì nó lặp đi lặp lại chu kỳ phù hợp
với chúng ta vừa mô tả.
2. Nếu M thấy một Y, thì nó thay đổi tất cả các số 0 thành các X. Nếu tất cả l
đã được thay đổi thành Y, thì đầu vào là một dạng của 0
n
l
n
, và M phải chấp nhận.
Như vậy, M đi đến trạng thái q3, và bắt đầu di chuyển sang bên phải, qua các Y.
Nếu biểu tượng khác so với Y thì M nhìn thấy đầu tiên là một khoảng trống, thì
thực sự đã có một số lượng của số 0 bằng số lượng của l, do đó, M đi vào trạng
thái q4 và chấp nhận. Mặt khác, nếu M gặp số khác 1 thì có quá nhiều số 1, khi
đó M ngừng hoạt động mà không chấp nhận. Nếu nó gặp một số 0 thì đầu vào
của các hình thức sai, và M cũng ngừng hoạt động.
Đây là một ví dụ của một tính toán chấp nhận bởi M. Đầu vào của nó là
0011. Ban đầu, M là trạng thái qo, quét số 0 đầu tiên, nghĩa là, ID ban đầu của M
là q
0
0011. Trình tự toàn bộ di chuyển của M là:
Ví dụ khác, hãy xem xét M nhập vào 0010, đó không phải là ngôn ngữ
được chấp nhận.
Các hành vi của M trên 0010 giống như các hành vi trên 0011, cho đến khi
trong ID XXYq
1
0 M quét số 0 cuối cùng cho lần đầu tiên. M phải di chuyển sang
phải, ở trong trạng thái q1, đưa đến ID XXY0q
1
B. Tuy nhiên, ở trạng thái q
1
M
Lớp KHMT Khoá 26 Trang 11
Tiểu luận môn học Lý Thuyết Tính Toán
không có di chuyển trên băng biểu tượng B, do đó M ngừng hoạt động và không
chấp nhận đầu vào.
8.2.4 Những sơ đồ chuyển tiếp cho máy Turing
Chúng ta có thể biểu diễn cho quá trình chuyển đổi của một máy Turing
một cách hình tượng, như chúng ta đã làm cho các PDA. Một sơ đồ chuyển đổi là
quá trình bao gồm một tập hợp các nút tương ứng với các trạng thái của TM. Một
vòng cung từ trạng thái q đến trạng thái p được dán nhãn bởi một hoặc nhiều mục
của mẫu X/YD, trong đó X và Y là biểu tượng băng, và D là một định hướng (L
hay R). Bất cứ khi nào δ(q,X)=(p,Y,D), chúng ta tìm thấy các nhãn X/YD trên
vòng cung từ q đến p. Tuy nhiên, trong sơ đồ của chúng ta, hướng D được mô tả
bởi ← cho “bên trái” và → cho “bên phải”.
Đối với các loại biểu đồ dịch chuyển, chúng ta sử dụng “Start” để đại diện
cho trạng thái bắt đầu và một mũi tên vào trạng thái đó. Trạng thái chấp nhận
được chỉ định bởi vòng tròn kép. Như vậy, thông tin duy nhất về một TM không
thể đọc trực tiếp từ biểu đồ là biểu tượng được sử dụng cho khoảng trống. Chúng
ta giả định rằng biểu tượng này là B trừ các trạng thái khác.
Ví dụ 8.3: Hình 8.10 cho thấy sơ đồ chuyển tiếp cho máy Turing ở ví dụ
8.2, có chức năng chuyển đổi đã được đưa ra trong hình 8.9.
Ví dụ 8.4: Trong khi ngày nay chúng ta thấy thật thuận tiện để nghĩ rằng
máy Turing như một bộ nhận dạng ngôn ngữ, hoặc tương đương, giải quyết các
vấn đề, quan điểm ban đầu của máy Turing là một máy có chức năng tính giá trị
là số nguyên. Trong chương trình của mình, các số nguyên được biểu diễn ở dạng
đơn nguyên, như các khối của một đơn ký tự, và máy tính bằng cách thay đổi
chiều dài của các khối hoặc bởi việc xây dựng khối mới ở nơi khác trên băng.
Trong ví dụ đơn giản này, chúng ta sẽ xem chức năng tính toán một máy
Turing được thực hiện như thế nào, đây được gọi là phép trừ monus hoặc proper
subtraction và được xác định bởi m n = max (m - n, 0). Cụ thể, m n bằng m -
n nếu m> n và bằng số 0 nếu m<n.
Lớp KHMT Khoá 26 Trang 12
Tiểu luận môn học Lý Thuyết Tính Toán
Một TM thực hiện hoạt động này được quy định cụ thể:
Lưu ý rằng, kể từ khi TM này không được sử dụng để chấp nhận đầu vào,
chúng ta đã bỏ qua thành phần thứ bảy, là các thiết lập của các trạng thái đang
chấp nhận. M sẽ bắt đầu với một băng gồm 0
m
10
n
bao quanh bởi khoảng trống. M
tạm dừng với 0
m n
trên băng của nó, bao quanh bởi các khoảng trống.
Hình 8.10: sơ đồ chuyển tiếp cho một TM chấp nhận chuỗi hình thức 0
n
1
n
M lặp lại việc tìm kiếm số 0 còn lại tận cùng bên trái của nó và thay thế
bằng một khoảng trắng. Sau đó tìm kiếm số 1 ở bên phải. Sau khi tìm thấy một
số 1, nó vẫn tiếp tục tìm bên phải cho đến khi nó đến số 0 thì thay thế số 0 bởi
một số 1. M sau đó trở về bên trái, tìm kiếm số 0 tận cùng bên trái mà nó xác
định khi lần đầu tiên nó gặp một khoảng trống và sau đó di chuyển một ô đến bên
phải. Quá trình lặp kết thúc nếu thỏa mãn một trong hai trường hợp:
1. Tìm kiếm số 0 bên phải, M gặp một khoảng trống. Sau đó tất cả n số 0
trong 0
m
10
n
đều được thay đổi thành số 1, và n + 1 của m số 0 được thay đổi
thành B. M thay thế n+1 số 1 bằng một số 0 và n B, để lại m - n số 0 của băng.
Khi m ≥ n trong trường hợp này, m - n =m n.
Lớp KHMT Khoá 26 Trang 13
Tiểu luận môn học Lý Thuyết Tính Toán
2. Bắt đầu chu kỳ, M không thể tìm thấy một số 0 để thay đổi thành một
khoảng trống, bởi vì m số 0 đầu tiên đã được thay đổi thành B. Sau đó, n ≥ m, vì
vậy m n = 0. M thay thế tất cả các số 1 và số 0 bởi B và kết thúc với một băng
hoàn toàn trống.
Hình 8.11 cho các quy tắc của chức năng chuyển đổi δ, và chúng ta cũng có
đại diện δ như là một sơ đồ quá trình chuyển đổi trong hình 8.12. Sau đây là một
bản tóm tắt vai trò mỗi trạng thái trong 7 trạng thái:
q0: Trạng thái này bắt đầu chu kỳ, và cũng thoát khỏi chu kỳ khi thích hợp.
Nếu M đang quét một số 0, chu kỳ lặp lại. Số 0 được thay thế bằng B, đầu đọc di
chuyển sang phải, và trạng thái q1 được nhập vào. Mặt khác, nếu M đang quét số
1 thì có thể phù hợp tất cả các số 0 giữa hai nhóm trên băng đã được thực hiện,
và M đi vào trạng thái q5 để làm cho băng trống.
q1: Trong trạng thái này, M tìm kiếm bên phải, thông qua các khối số 0 ban
đầu, tìm kiếm số 1 tận cùng bên trái. Khi tìm thấy, M đi đến trạng thái q2.
q2: M di chuyển sang phải, bỏ qua các số 1, cho đến khi nó tìm thấy một số
0. Nó thay đổi số 0 đó thành 1, quay về bên trái, và vào trạng thái q3. Tuy nhiên,
nó cũng có thể không có số 0 bên trái sau khối của số 1. Trong trường hợp đó, M
ở trạng thái q2 bắt gặp một khoảng trống. Chúng ta có trường hợp (1) mô tả ở
trên, n số 0 của khối thứ hai được sử dụng để hủy bỏ n của m số 0 trong khối đầu
tiên, và phép trừ được hoàn tất. M vào trạng thái q4, có mục đích là để chuyển
đổi các số 1 trên băng thành khoảng trống.
q3: M di chuyển sang trái, bỏ qua các số 0 và các số 1, cho đến khi nó tìm
thấy một khoảng trống. Khi nó tìm thấy B, nó di chuyển sang phải và trở lại trạng
thái q0, bắt đầu lại chu kỳ.
q4: Ở đây, phép trừ hoàn tất, nhưng có một 0 trong khối đầu tiên chưa được
thay đổi thành một B. Do đó M di chuyển sang trái, thay đổi các số 1 thành các
B, cho đến khi nó gặp một B trên băng. Nó thay đổi đó B trở về 0, và đi vào trạng
thái q6, trong đó M tạm dừng.
Lớp KHMT Khoá 26 Trang 14
Tiểu luận môn học Lý Thuyết Tính Toán
q5: Trạng thái q5 được chuyển từ q0 khi nó tìm thấy tất cả các số 0 trong
khối đầu tiên đã được thay đổi thành B. Trường hợp này được mô tả trong (2) ở
trên, kết quả của phép trừ thích hợp (proper subtaction) là 0. M thay đổi tất cả
các số 0 và các số 1 còn lại thành B và đi vào trạng thái q6.
q6: Mục đích duy nhất của trạng thái này là cho phép M dừng khi nó đã
hoàn tất nhiệm vụ của mình. Nếu phép trừ là một chương trình con của một số
hàm phức tạp hơn thì q6 sẽ bắt đầu bước tiếp theo của tính toán lớn hơn.
Hình 8.11: Một máy Turing tính toán chức năng proper-subtraction
Hình 8.12: Sơ đồ chuyển đổi cho TM của ví dụ 8.4
Lớp KHMT Khoá 26 Trang 15
Tiểu luận môn học Lý Thuyết Tính Toán
8.2.5 Ngôn ngữ của máy Turing
Chúng ta đã thấy cách mà máy Turing chấp nhận một ngôn ngữ một cách
trực quan. Chuỗi đầu vào được đặt trên một băng từ và đầu đọc bắt đầu từ ký tự
đầu tiên tận cùng bên trái. Nếu máy Turing cuối cùng chấp nhận trạng thái thì
đầu vào được chấp nhận, ngược lại thì không.
Thông thường, đặt M=(Q,
Σ
,
Γ
,
δ
, q
0
, B, F) vào một máy Turing. Thiết lập
L(M)
1
là tập hợp của chuỗi w trong Σ
*
chẳng hạn như q
0
w
α
p
β
cho trạng
thái p trong F và một đầu đọc bất kỳ chuỗi
α
và
β
. Định nghĩa này được giả định
rằng khi chúng ta thảo luận về máy Turing ở ví dụ 8.2, chấp nhận chuỗi dạng
0
n
1
n
.
Tập hợp các ngôn ngữ có thể dùng với máy Turing được gọi là các ngôn
ngữ suy diễn được hay ngôn ngữ RE. Thuật ngữ “suy diễn được” hình thành từ
các hệ hình thức có khả năng tính toán trước khi có máy Turing nhưng lại được
định nghĩa như một lớp ngôn ngữ tương tự hoặc các chức năng số học. Chúng ta
thảo luận về nguồn gốc thuật ngữ này trong một phần của 9.2.1.
KÝ HIỆU QUY ƯỚC CHO MÁY TURING
Các ký hiệu chúng ta thường sử dụng cho máy Turing tương tự như các loại thiết
bị tự động khác mà chúng ta đã được biết.
1. Các ký tự chữ thường bắt đầu bảng chữ cái được dùng cho ký hiệu đầu
vào.
2. Các ký tự hoa, thông thường là cuối bảng chữ cái thường được dùng cho
các ký hiệu băng, có thể hoặc không là biểu tượng đầu vào. Tuy nhiên B
thông thường được dùng như biểu tượng trắng.
3. Các ký tự thường gần cuối bảng chữ cái là các chuỗi của biểu tượng đầu
vào.
1
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 q0
Lớp KHMT Khoá 26 Trang 16
*
Tiểu luận môn học Lý Thuyết Tính Toán
4. Các ký tự Hy Lạp là chuỗi của biểu tượng băng.
5. Các ký tự như q, p và các ký tự gần đó dùng để chỉ trạng thái.
8.2.6 Máy Turing và trạng thái dừng
Còn có một khái niệm “chấp nhận” thường được sử dụng cho máy Turing:
chấp nhận bằng cách dừng. Ta nói một máy Turing “dừng” nếu nó vào trạng thái
q, quét biểu tượng băng X và không có một sự dịch chuyển trong điều kiện này.
Ví dụ,
δ
(q, X) không được định nghĩa.
Ví dụ 8.5: Một máy Turing M trong ví dụ 8.4 không được thiết kế để chấp
nhận một ngôn ngữ; thay vì vậy ta xem nó như là như máy tính để tính các hàm
số học. Tuy nhiên máy M dừng với tất cả chuỗi của 0 và 1, vì M không tìm thấy
chuỗi nào trên băng.
Chúng ta luôn luôn giả định một máy Turing ở trạng thái dừng nếu nó chấp
nhận. Do đó, không có sự thay đổi đối với một ngôn ngữ được chấp nhận. Chúng
ta có thể tạo
δ
(q, X) không xác định bất cứ khi nào q là một trạng thái được chấp
nhận. Nói chung:
• Chúng tôi giả định rằng một máy Turing luôn luôn tạm dừng khi nó
trong một trạng thái được chấp nhận.
Không may, không phải lúc nào cũng có thể yêu cầu rằng một máy Turing
dừng ngay nếu nó không được chấp thuận. Những ngôn ngữ với máy Turing
dừng lần cuối, bất kể được hay không được chấp nhận, được gọi là đệ quy, và
chúng ta sẽ xem xét các thuộc tính quan trọng của nó bắt đầu trong mục 9.2.1.
Máy Turing luôn luôn dừng không phân biệt có hay không được chấp nhận, là
một mô hình tốt của thuật toán. Nếu thuật toán giải quyết được một vấn đề tồn
tại, thì ta gọi vấn đề đó là “decidable”, vì vậy máy Turing luôn có số dừng quan
trọng trong lý thuyết quyết định ở Chương 9.
Lớp KHMT Khoá 26 Trang 17
Tiểu luận môn học Lý Thuyết Tính Toán
PHẦN 2. BÀI TẬP
2.1. Bài 8.2.1
* Yêu cầu: Cho biết ID của máy Turing được mô tả trong hình 3 nếu đầu
vào của nó là: 000111
Trạng thái
Ký hiệu
0 1 X Y B
q
o
(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, R)
q
4
- - - - -
Máy Turing chấp nhận {0
n
1
n
| n ≥ 1}
Giải:
Ta mô tả một TM: M=(Q,
Σ
,
Γ
,
δ
,q
0
,B,F)
Thành phần trên có nghĩa sau:
Q: Tập hữu hạn của các trạng thái của sự điều khiển có giới hạn.
Σ
: Tập hữu hạn của các ký hiệu đầu vào.
Γ
: Tập so sánh của các ký hiệu băng,
Σ
luôn luôn là một tập con của
Γ
.
δ
: Hàm chuyển trạng thái. Đối số của
δ
(q,X), nếu nó được định nghĩa, là
một bộ ba (p,Y,D):
Lớp KHMT Khoá 26 Trang 18
Tiểu luận môn học Lý Thuyết Tính Toán
1. p là trạng thái tiếp theo, trong Q.
2. Y là ký hiệu, trong
Γ
, được viết trong ô được quét, thay thế bất
cứ ký hiệu nào ở đó.
3. D là một sự điều khiển, cả L hay R, đang dứng bên “trái” hay
“phải”, và điều khiển đầu di chuyển.
q
0
: Trạng thái bắt đầu, một phần tử của Q, trong sự điều khiển có giới
hạn được tìm thấy lúc đầu.
B: Ký hiệu rỗng. Ký hiệu này trong
Γ
nhưng không trong
Σ
; ví dụ, nó là
một ký hiệu đầu vào. Ký hiệu rỗng xuất hiện lần đầu trong tất cả nhưng số
hữu hạn của các ô lúc đầu giữ các ký hiệu đầu vào.
F: Tập của các trạng thái cuối hoặc trạng thái chấp nhận, một tập con của
Q.
Cho biểu đồ 8.9, TM M được mô tả cụ thể như sau:
M= ({q
0
,q
1
,q
2
,q
3
,q
4
),{0,1},{0,1,X,Y,B},
δ
,q
0
,B,{q
4
})
δ
được cho trong biểu đồ 8.9.
Biểu đồ trạng thái cho một TM thừa nhận các chuỗi dạng 0
n
1
n
như biểu đồ
8.9 là:
Trạng thái q0 là trạng thái khởi tạo, và M cũng đi đến trạng thái q0 mỗi khi
nó quay lại bên trái nhất giữ số 0. Nếu M ở trạng thái q0 và đang quét một số 0,
qui luật trong góc trái-trên của hình 8.9 nói lên rằng để đi đến trạng thái q1, thay
số 0 thành X, và di chuyển sang phải. Một khi đang trong trạng thái q1, M giữ
việc di chuyển sang phải khắp tất cả các ô số 0 và Y mà nó tìm thấy trong băng,
giữ nguyên trạng thái q1. Nếu M gặp một X hoặc một B, nó dừng. Tuy nhiên, nếu
M gặp một số 1 khi trong trạng thái q1, nó thay đổi 1 thành Y, đi đến trạng thái
q2, và bắt đầu việc di chuyển sang trái.
Trong trạng thái q2, M di chuyển sang trái qua các ô số 0 và Y, giữ nguyên
trạng thái q2. Khi M đến bên phải nhất của X, vị trí đánh dấu kết thúc bên phải
Lớp KHMT Khoá 26 Trang 19
Tiểu luận môn học Lý Thuyết Tính Toán
của khối các ô số 0 đã được chuyển thành X, M trở về trạng thái q0 và di chuyển
sang phải. Có hai trường hợp:
1. Nếu M gặp số 0, thì nó lặp chu kỳ so khớp mà chúng ta vừa mô tả.
2. Nếu M gặp Y, thì nó đã thay đổi tất cả các ô số 0 thành X. Nếu tất cả các ô
số 1 đã được chuyển thành Y, thì đầu vào là mẫu 0
n
1
n
, và M sẽ chấp nhận.
Vì vậy M đi đến trạng thái q3, và bắt đầu việc di chuyển sang phải, qua
các ô Y. Nếu ký hiệu đầu tiên khác với một Y mà M gặp là một ô rỗng, thì
dẫn đến có sự bằng nhau của các ô số 0 và các ô số 1, vì thế M đi đến
trạng thái q4 và chấp nhận. Theo cách khác, nếu M bắt gặp số 1 khác, thì
có quá nhiều ô số 1, vì thế M dừng mà không chấp nhận. Nếu nó bắt gặp
một số 0, thì đầu vào là trong hình thức sai và M cũng dừng.
Theo qui luật trên, với đầu vào là 000111, ID của máy Turing M được
trình bày như sau:
- Khởi tạo máy Turing M ở trạng thái q
0
- ID khởi tạo của M là: q
0
000111
- Toàn bộ dãy mô tả M là:
Lớp KHMT Khoá 26 Trang 20
q
0
q
1
q
2
q
3
q
4
Y / Y →
0 / 0 →
Y / Y ←
0 / 0 ←
1 / Y ←
0 / X →
X / X →
Y / Y →
B / B →
Y / Y →
Start
Tiểu luận môn học Lý Thuyết Tính Toán
q
0
000111 Xq
1
00111 X0q
1
0111 X00q
1
111 X0q
2
0Y11 Xq
2
00Y11
q
2
X00Y11 Xq
0
00Y11 XXq
1
0Y11 XX0q
1
Y11 XX0Yq
1
11 XX0q
2
YY1
XXq
2
0YY1 Xq
2
X0YY1 XXq
0
0YY1 XXXq
1
YY1 XXXYq
1
Y1
XXXYYq
1
1 XXXq
2
YYY XXq
2
XYYY XXXq
0
YYY XXXYq
3
YY
XXXYYq
3
Y XXXYYYq
3
B XXXYYYBq
4
B
Như vậy TM M đã được thừa nhận chuỗi 000111.
2.2. Bài 8.2.3
* Yêu cầu: Thiết kế một máy Turing với dữ liệu đầu vào là N và sau đó thực
hiên cộng 1 vào N (ở dạng nhị phân). Băng từ khởi tạo sẽ chứa bởi ký tự $ theo
sau là số N được biểu diễn ở dạng nhị phân. Đầu đọc ở trạng thái khởi tạo là q0
đang quét ở ký tự $. Máy Turing sẽ thiết kế sẽ dừng sau khi thực hiện N+1 (trạng
thái qf). Bạn có thể xoá ký tự $ trong khi tạo ra N+1 nếu cần.
Lấy ví dụ q0$10011 $qf10100, và q0$11111 $qf100000
1. Đưa ra sự chuyển đổi máy Turing của bạn và giải thích mục đích của mỗi
trạng thái.
2. Hãy đưa ra các dãy biến đổi liên tiếp của máy Turing đó khi xâu vào là
$111
Bài giải Chuyển đổi của máy Turing
Lớp KHMT Khoá 26 Trang 21
*
*
q
1
q
2
q
5
q
3
q
4
1→1/R
0→0/R
B→B/L
0→1/L
0→0/L
1→0/L
1→0/L
$→1/L
0→1/L
1→1/L
$→$/R
q
01
$→$/R
Tiểu luận môn học Lý Thuyết Tính Toán
Giải thích mục đích của mỗi trạng thái
- Trạng thái q
0
: Đọc $ ghi $, đưa đầu đọc sang phải ($ là ký tự đầu tiên
của chuỗi dữ liệu vào) và chuyển sang trạng thái q
1
- Trạng thái q
1
: Đưa đầu đọc đến vị trí cuối cùng của dữ liệu vào (cực
phải – rightmost) có nghĩ tùy thuộc vào dữ liệu vào mà
trạng thái đọc 1 ghi 1, đưa đầu đọc sang phải hoặc đọc
0 ghi 0, đưa đầu đọc sang phải được thực hiện một số
lần cho đến lúc gặp rỗng (B – Blank) thì đọc rỗng ghi
rỗng, đưa đầu đọc sang trái và chuyển sang trạng thái
q
2
- Trạng thái q
2
: Tùy thuộc vào dữ liệu vào mà ở trạng thái này q
2
thực
hiện một trong hai công việc sau:
+ Đọc 0 ghi 1, đưa đầu đọc sang trái và chuyển sang trạng thái q
3
. Hoặc
+ Đọc 1 ghi 0, đưa đầu đọc sang trái và chuyển sang trạng thái q
4
- Trạng thái q
3
: Đưa đầu đọc về lại vị trí đầu tiên của dữ liệu vào (cực
trái – leftmost) có nghĩ tùy thuộc vào dữ liệu vào mà
trạng thái đọc 1 ghi 1, đưa đầu đọc sang trái hoặc đọc
0 ghi 0, đưa đầu đọc sang trái được thực hiện một số
lần cho đến lúc gặp $ thì đọc $ ghi $, đưa đầu đọc
sang phải và chuyển sang trạng thái q
5
Trạng thái q
4
: Chuyển tất cả ký tự 1 liên tiếp theo sau thành ký tự 0, có
nghĩ là bao giờ đầu đọc còn ở vị trí của ký tự 1 thì còn
máy Turing còn đọc 1 ghi 0 và đưa đầu đọc sang trái.
Nếu ký tự tiếp theo là 0 thì đọc 0 ghi 1, đưa đầu đọc
sang trái và chuyển sang trạng thái q
3
. Ngược lại, nếu
ký tự tiếp theo là $ (ký tự cực trái của sâu vào) thì đọc
$ ghi $, đưa đầu đọc sang trái và chuyển sang trạng
thái q
5
.
Lớp KHMT Khoá 26 Trang 22
Tiểu luận môn học Lý Thuyết Tính Toán
b/ Các dãy biến đổi liên tiếp của máy Turing đó khi xâu vào là $111
q
0
$111 $q
1
111 $1q
1
11 $11q
1
1 $111q
1
B $11q
2
1B $1q
4
10B
$q
4
100B Bq
4
$000B q
3
B1000B q
5
1000B
Lớp KHMT Khoá 26 Trang 23
Tiểu luận môn học Lý Thuyết Tính Toán
TÀI LIỆU THAM KHẢO
[1] John E. Hopcroft, Rajeev Motwani, Jefferey D. Ullman, Introduction
to Automata Theory, Languages, and Computation, Addison Wesley,
2001.
[2] Phan Huy Khánh, Giáo trình Lý thuyết tính toán, ĐH Đà Nẵng, 1999.
[3] Phan Huy Khánh, Lý thuyết ngôn ngữ hình thức và ôtômat, ĐH Đà
Nẵng, 1997.
[4] Các tài liệu khác + tham khảo Internet.
Lớp KHMT Khoá 26 Trang 24