Báo cáo môn học : Lý thuyết tính toán (cao học: Khoa học máy tính)Đề tài : Turing Machine
Trang 1MỤ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
Trang 2LỜ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
Trang 3PHẦ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ôngthể 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 khichúng ta thảo luận (chương 10): các vấn đề mặc dù có thể quyết định nhưng lạiyê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à, trongkhi các vấn đề không thể quyết định thường khá rõ ràng như vậy, và giải phápcủa chúng hiếm khi được áp dụng trong thực tế, thì những vấn đề nan giản đangxuất hiện mỗi ngày Hơn nữa, chúng thường mang lại những thay đổi nhỏ trongcá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ườngxuyê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ỏihàng ngày không thể quyết định hay nan giải Kĩ thuật đã được giới thiệu tại mục8.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ánhello-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ôngthể 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ớichươ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ảngiống như các ID của một PDA Trong so sánh, trong khi chương trình C có mộttrạ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
Trang 4hiệ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 trongphầ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ôngthể 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ự, khichú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ườngnhư 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ấymộ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ệnphá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ôngbá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ácchươ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ínhtoá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ảití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 đệ quymộ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ó
Trang 5thể 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átminh (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ặccông nhận các ngôn ngữ giống nhau Giả định không thể chứng minh được rằngbấ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àybao 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áibấ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 đượcchọ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
Trang 6đầ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ểutượ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êucầu một di chuyển, và không cho phép đầu đọc đứng yên một chỗ Hạnchế 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ởituple-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
Trang 72 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
q0: 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ệnban đầu trong tất cả, nhưng số lượng hữu hạn của ô ban đầu giữ biểu tượng đầuvà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ậphợ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ảiphá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ăngdà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ìnhcủ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 dichuyể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ượngcủ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ênphải Trong điều kiện đặc biệt, khi đầu đọc đang quét một đầu băng hoặc dấutrố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ôngtrống của băng cũng phải được bao gồm trong các ID
Trang 8Ngoà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ácchuỗ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áctrạng thái được gọi Vì vậy, chúng ta sẽ sử dụng chuỗi X1 X2 … 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ảikhông trống Như một ngoại lệ, nếu đầu đọc đến bên trái của tận cùngbê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à
Trang 92 Nếu i = n và Y = B, thì ký hiệu B được viết đè lên Xn 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ạncá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ữ{0n1n|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ố 0thành X và sau đó thay đổi số 1 thành Y, cho đến khi tất cả các số 0 và l đã đượcthay đổ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ố 0thành X và di chuyển sang phải qua bất cứ khi nó nhìn thấy số 0 và Y, cho đếnkhi 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,
Trang 10và 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ùngmộ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ẫuhình thức 0nln 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 đổithà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
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
Trang 11nhì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 0nln, 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 q1 M
Trang 12không có di chuyển trên băng biểu tượng B, do đó M ngừng hoạt động và khôngchấ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 Turingmộ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)q,X)=(q,X)=(p,Y,D)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ệncho 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ôngthể đọ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ácvấ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 đổichiề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 (q,X)=(p,Y,D)m n, 0) Cụ thể, m n bằng m
-n -nếu m> -n và bằ-ng số 0 -nếu m<-n.