1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

24 1,7K 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 443 KB

Nội dung

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 1

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

Trang 2

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

Trang 3

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ô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 4

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 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 5

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á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 7

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

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 8

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á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 9

2 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 10

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ù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 11

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 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 12

khô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.

Ngày đăng: 13/03/2014, 11:22

HÌNH ẢNH LIÊN QUAN

Hình 8.9: Một máy Turing chấp nhận {0 n l n  | n≥ 1} - 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
Hình 8.9 Một máy Turing chấp nhận {0 n l n | n≥ 1} (Trang 10)
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 - 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
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 (Trang 13)
Hình 8.12: Sơ đồ chuyển đổi cho TM của ví dụ 8.4 - 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
Hình 8.12 Sơ đồ chuyển đổi cho TM của ví dụ 8.4 (Trang 15)
Hình 8.11: Một máy Turing tính toán chức năng proper-subtraction - 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
Hình 8.11 Một máy Turing tính toán chức năng proper-subtraction (Trang 15)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w