Mục lục LÝ THUYẾT 1 I. Máy Turning không đơn định 1 II. Máy Turning vạn năng 7 BÀI TẬP ỨNG DỤNG 12 I. Thuật toán 12 II. Chương trình máy RASP 13 TÀI LIỆU THAM KHẢO 15 LỜI MỞ ĐẦU Lý thuyết tính toán là là các từ được sinh ra bởi một văn phạm, tức tập các quy tắc để sinh ra ngôn ngữ. Lý thuyết tính toán không sử dụng các lệnh gán biến và không gây ra hiệu ứng phụ như vẫn gặp trong lập trình mệnh lệnh. Nguyên cứu những phương pháp lập trình này giúp ích rất nhiều cho việc nghiên cứu về kỹ thuật lập trình trong các lĩnh vực trí tuệ nhân tạo, giao tiếp hệ thống, xử lý ký hiệu, tính toán hình thức,…v.v Vận dụng những kiến thức thu nhận trong quá trình học tập, tiểu luận này đề cập đến các vấn đề lý thuyết về “Máy Turning không đơn định và máy Turning vạn năng” và giải quyết bài tập về “Kỹ thuật dịch chuyển RASP”. Chúng tôi chân thành cảm ơn Thầy PGS.TS Phan Huy Khánh đã cung cấp những kiến thức quí báu và hướng dẫn chúng tôi hoàn thành đề tài này. Với kiến thức và kinh nghiệm còn hạn hẹp của cho nên việc trình bày đề tài còn nhiều thiết sót, rất mong nhận được sự góp ý của Thầy và các anh chị trong lớp.
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN Tel. (84-511) 736 949, Fax. (84-511) 842 771 Website: http://dut.ud.edu.vn/itf, E-mail: cntt@edu.ud.vn BÀI TẬP LỚN MÔN LÝ THUYẾT TÍNH TOÁN Đề tài: Lý thuyết về máy Turning không đơn định, vạn năng và bài tập về kỹ thuật dịch chuyển RASP HỌC VIÊN : TẠ THỊ ÁI NHI ĐỖ PHÚ DUY LÊ THANH TÙNG LỚP : KHMT K12 CBHD : PGS.TS. PHAN HUY KHÁNH ĐÀ NẴNG, 05/2010 Mục lục LÝ THUYẾT 1 .I Máy Turning không đơn định 1 .II Máy Turning vạn năng 7 BÀI TẬP ỨNG DỤNG 12 .I Thuật toán 12 .II Chương trình máy RASP 12 TÀI LIỆU THAM KHẢO 15 LỜI MỞ ĐẦU Lý thuyết tính toán là là các từ được sinh ra bởi một văn phạm, tức tập các quy tắc để sinh ra ngôn ngữ. Lý thuyết tính toán không sử dụng các lệnh gán biến và không gây ra hiệu ứng phụ như vẫn gặp trong lập trình mệnh lệnh. Nguyên cứu những phương pháp lập trình này giúp ích rất nhiều cho việc nghiên cứu về kỹ thuật lập trình trong các lĩnh vực trí tuệ nhân tạo, giao tiếp hệ thống, xử lý ký hiệu, tính toán hình thức,…v.v Vận dụng những kiến thức thu nhận trong quá trình học tập, tiểu luận này đề cập đến các vấn đề lý thuyết về “Máy Turning không đơn định và máy Turning vạn năng” và giải quyết bài tập về “Kỹ thuật dịch chuyển RASP”. Chúng tôi chân thành cảm ơn Thầy PGS.TS Phan Huy Khánh đã cung cấp những kiến thức quí báu và hướng dẫn chúng tôi hoàn thành đề tài này. Với kiến thức và kinh nghiệm còn hạn hẹp của cho nên việc trình bày đề tài còn nhiều thiết sót, rất mong nhận được sự góp ý của Thầy và các anh chị trong lớp. Nhóm tác giả BẢNG PHÂN CÔNG CÔNG VIỆC STT Công việc Người thực hiện 1 Máy Turning không đơn định Nhi 2 Máy Turning vạn năng Duy 3 Bài tập ứng dụng Tùng 4 Tổng hợp Nhi Bài tập lớn – Môn: Lý thuyết tính toán CHƯƠNG 1 LÝ THUYẾT .I Máy Turning không đơn định Hình thức không đơn định đóng những vai trò khác nhau trong hai mô hình tính toán đơn giản mà ta đã học ở các chương trước. Nó thuận tiện nhưng không hiệu quả trong trường hợp của các ôtômat đơn định (FAs) và ngôn ngữ pal là một ví dụ của ngôn ngữ phi ngữ cảnh và ngôn ngữ này không thể được thừa nhận bởi một ôtômat đẩy xuống đơn định (Deterministic PDA). Các máy Turning vẫn có đủ khả năng tính toán khi các ôtômat không đơn định thất bại trong việc xử lý. Bất kỳ ngôn ngữ được thừa nhận bởi máy Turning không đơn định thì có thể được thừa nhận bởi một máy Turning đơn định. Những vấn đề chúng ta nghiên cứu ở chương này thì phức tạp hơn chương trước. Tuy nhiên, nền tảng của vấn đề ở đây là bằng chứng cho khả năng của máy Turning trong việc thực hiện các thuật toán phức tạp được xây dựng từ các hoạt động mà chúng ta đã khảo sát trước đó. Một máy Turning không đơn định (NTM) T = (Q, ∑, Г, q 0, δ) được định nghĩa giống như một máy Turning đơn định ngoại trừ các giá trị của hàm dịch chuyển δ là các tập hợp của các phần tử đơn của tập hợp (Q ∪ {h a ,h r }) x (Г ∪ {∆}) x {L, R, S}. Ta không cần nói rằng δ là một hàm cơ bản bởi vì bây giờ δ(q,a) được phép nhận giá trị ø. Diễn giải cho hình trạng máy Turning cũng không thay đổi. (p, xay) |- T (q, wbz) có nghĩa là từ hình trạng đầu tiên, có ít nhất một dịch chuyển đến hình trạng thứ hai. Tương tự, ta có (p, xay) |- T * (q, wbz) nghĩa là có ít nhất một dịch chuyển rỗng hoặc nhiều dịch chuyển thông qua T từ hình trạng thứ nhất đến hình trạng thứ hai. Với định nghĩa này, ta có thể nói rằng một xâu x ∈ ∑* được thừa nhận bởi T nếu tồn tại a ∈ Γ∪{∆} và tồn tại y, z ∈ (Γ∪{∆})* sao cho (q 0, ∆ x) |- T * (h a, y a z) Ý tưởng của output sẽ không được hữu dụng trong trường hợp không đơn định bởi vì một máy Turning không đơn định đã cho, có thể là một tập hợp đơn định của các output có thể. Các máy Turning không đơn định tạo ra output như trong Bài tập 9.29 sẽ được dùng chủ yếu như là các thành phần của các máy lớn hơn. Khi so sánh giữa các máy Turning không đơn định và đơn định, ta sẽ ràng buộc để các máy được dùng như bộ đoán nhận ngôn ngữ. Bởi vì mỗi máy Turning có thể được thông dịch như mà một máy Turning không đơn định hay nói chung một ngôn ngữ được chấp nhận bởi một máy Turning thì có thể được chấp nhận bởi một máy Turning không đơn định. Điều ngược lại là cái chúng ta cần đề cập. Định lý 9.2: Gọi T 1 = (Q 1, ∑, Г 1 , q 1, δ 1 ) là một máy Turning không đơn định, thì tồn tại một máy Turning đơn định T 2 = (Q 2, ∑, Г 2 , q2 , δ2) sao cho L(T 2 ) = L(T 1 ). Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 1 Bài tập lớn – Môn: Lý thuyết tính toán Chứng minh Máy Turning T 2 mà chúng ta đang tìm sẽ có tính chất sao cho bất kỳ x ∈ ∑*, T 2 thừa nhận x nếu và chỉ nếu có một vài dịch chuyển của T 1 với đầu vào x được chấp nhận. Chiến lược cho việc xây dựng T 2 chỉ đơn giản là với mỗi thứ tự của các dịch chuyển của T 1 , thì tại một thời điểm dịch chuyển được chấp nhận nếu và chỉ nếu nó tìm thấy một đường đi làm cho T 1 bị dừng ở trạng thái chấp nhận. Mặc dù có thể có nhiều hình trạng mà T 1 lựa chọn khi dịch chuyển, nhưng một giới hạn trên của số lựa chọn tối đa có thể có cần cố định. Ta giả định rằng giá trị lớn nhất là 2. Trong chứng minh, ta thấy rằng trường hợp này sẽ được tạo một cách dễ dàng. Vì không có nhiều hơn các giả thiết, nên chúng ta đánh nhãn là 0 và 1 (Thứ tự tùy ý và nó có khả năng cho cả hai với cùng một dịch chuyển) Với bất kỳ một xâu x, chúng ta có thể dùng một cây tính toán như Hình 9.15 để thể hiện các bước của việc dịch chuyển T 1 có thể có với x. Các nút trên cây thể hiện các hình trạng của T 1 . Nút gốc là trạng thái khởi tạo tương ứng với xâu x và các nút con N tương ứng với các hình trạng của T 1 có thể dẫn đến hình trạng N tiếp theo. Mỗi nút thì có 2 nút con và một nút lá thể hiện hình trạng dừng. Hình 9.15. Cây tính toán cho máy Turning không đơn định Ta có thể xem rằng nhiệm vụ của T 2 như là một cây tìm kiếm các hình trạng chấp nhận. Bởi vì cây có thể là vô hạn, với chiến lược tìm kiếm breath-first thì T 2 sẽ thử với tất cả các khả năng của một dịch chuyển, tất cả các khả năng của 2 dịch chuyển, 3 dịch chuyển và v.v Máy Turning mà ta xây dựng sẽ không hiệu quả bởi vì với n+1 bước thì sẽ lặp lại n bước trước đó. Thậm chí nếu cây là hữu hạn (nghĩa là với một vài n, mỗi hình trạng có thể có trong T 1 từ xâu x sẽ dẫn đến trạng thái dừng), thì T 2 sẽ lặp vô tận nếu T 1 không bao giờ chấp nhận: Nó sẽ cố gắng để thử tất cả các dịch chuyển và hiệu quả sẽ có nếu nó kết thúc việc lặp các dịch chuyển giống nhau với cùng thứ tự và cứ thế. Tuy Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 2 1 0 1 0 1 0 0 1 … … Bài tập lớn – Môn: Lý thuyết tính toán nhiên, nếu x ∈ L(T 1 ) thì với mỗi n, có một thứ tự của n dịch chuyển làm T 1 thừa nhận x và T 2 sẽ quay vòng việc xử lý thứ tự đó. Ta sẽ lấy ưu điểm của Định lý 9.1 bằng việc đưa ra T 2 với 3 băng. Băng đầu tiên được dùng cho việc lưu trữ xâu ban đầu và nội dung của nó không được thay đổi. Băng thứ hai được dùng cho việc lưu giữ thứ tự của các dịch chuyển của T 1 mà T 1 đang cố gắng để thực thi. Băng thứ ba là băng làm việc tương ứng với băng của T 1 nơi mà T 2 bằng các bước xác định bởi xâu hiện tại trên băng thứ 2. Mỗi lần T 2 bắt đầu với một dịch chuyển mới, băng thứ 3 được xóa và dữ liệu vào sẽ được sao chép lại từ băng T 1 . Các thứ tự dịch chuyển được biểu diễn bằng một xâu nhị phân. Ví dụ xâu 001 thể hiện các dịch chuyển sau: Đầu tiên, dịch chuyển thứ nhất (ví dụ dịch chuyển thứ 0) có 2 lựa chọn, từ hình trạng đầu C 0 chuyển đến hình trạng C 1 bởi T 1 . Kế tiếp, từ C 1 sẽ chuyển đến C 2 . Bởi vì các dịch chuyển 0 và 1 có thể như nhau vì thể có một vài chuỗi số mô tả các bước dịch chuyển giống nhau. Cũng có thể các chuỗi số không tương ứng với thứ tự của sự dịch chuyển bởi vì một vài dịch chuyển đầu tiên làm T 1 dừng. Khi T 1 gặp một số không thích hợp để thực hiện việc dịch chuyển, nó sẽ bỏ qua chuỗi đó. Ta sẽ dùng thứ tự canonical của {0,1}* thì các xâu được sắp xếp như thứ tự Λ, 0, 1, 00, 01, 10, 11, 000, 001, …, 111, 0000, … (Với 2 xâu có chiều dài khác nhau thì xâu ngắn hơn xử lý trước và thứ tự của 2 xâu có cùng chiều dài được đánh số). Cho một xâu α thể hiện các trạng thái dịch chuyển, T 2 tạo ra xâu tiếp theo với thứ tự này bằng việc tích hợp α như xâu nhị phân bằng việc cộng thêm 1. Nếu không α = 1 k với xâu kế tiếp là 0 k+1 . Thật dễ để mô tả cấu trúc chung của T 2 bây giờ. Nó bao gồm 5 máy Turning nhỏ hơn gọi là InitializeTapes2&3, CopyInput, Execute, EraseTape2 và NextSequence trong Hình 9.16 Hình 9.16. Mô phỏng máy Turning không đơn định bởi máy Turning có 3 băng InitalizeTapes2&2 ghi ký hiệu 0 vào ô thứ 1 của băng 2 để thể hiện thứ tự di chuyển trước và thay thế ký hiệu # vào ô thứ 0 của băng 3. Sự đánh dấu này cho phép T 2 phát hiện và phục hồi khi T 1 chuyển đến đầu của băng. CopyInput sao chép xâu ban đầu x từ băng 1 đến băng 3, vì thế băng 2 có nội dung là #∆ x. Execute (chúng ta sẽ thảo luận chi tiết sau) là một máy Turning thực sự mô phỏng hành động của T 1 bằng việc thực hiện các dịch chuyển hiện tại trên băng 2. Tính năng quyết định là nó hoàn thành một ký hiệu s trong ô hiện tại của băng 3 and s = * nếu và chỉ nếu các dịch chuyển được chấp nhận bởi Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 3 (─,─, *) h a (─,─, S) S ≠* InitializeTapes2&3 CopyInput Execute EraseTape3 NextSequence Bài tập lớn – Môn: Lý thuyết tính toán T 1 . Trong trường hợp này thì T 2 chấp nhận và ngược lại nó tiếp tục với EraseTape3. EraseTape3 lưu trữ băng 3 với hình trạng #∆ . Nó có thể hoàn thành hoạt động này bởi vì chiều dài của xâu trên băng 2 giới hạn ký hiệu bên phải nhất không được là ký tự không trống trên băng 3. Cuối cùng, NextSequence là thành phần đã sẵn sàng được đề cập để cập nhật chuỗi số trên băng 2 bằng việc thêm 1 vào chuỗi nhị phân. Hình 9.17 thể hiện một băng của máy Turning thực hiện sự chuyển hóa này với một xâu vào chứa 0 và 1; NextSequence là máy Turning thứ ba mang dịch chuyển đến băng 2, bỏ qua băng 1 và 3. Hình 9.17. Phiên bản một băng của NextSequence Vấn đề của việc xây dựng T 2 được giảm bằng việc xây dựng thành phần Execute, thành phần này cần mô phỏng các dịch chuyển của T 1 từ chuỗi của các số trên băng 2. Để mô tả thành phần này một cách cụ thể thì khó, vì thế thay vì làm việc đó, ta xem xét một phần nhỏ của sơ đồ dịch chuyển cho T 1 như Hình 9.18a và đưa ra sơ đồ cho Execute tương ứng như Hình 9.18b. Các trạng thái của Execute bao gồm các trạng thái của T 1 và những thứ khác. Ta tiếp tục giả định số sự lựa chọn lớn nhất tại bất kỳ vị trí nào của T 1 là 2. Ta đơn giản hóa mọi thứ bằng việc giả định rằng Г 1 = {a} vì thế a và ∆ chỉ là các ký tự trên băng của T 1 . Cuối cùng, vì băng 1 được bỏ qua bởi Execute, nên chúng ta chỉ biểu diễn máy này như là máy 2 băng trong Hình 9.18b. Giả sử rằng Hình 9.18a thể hiện tất cả các dịch chuyển từ trạng thái p. Vì thế, nếu ký tự trên băng hiện tại là a, thì có 2 dịch chuyển. Dịch chuyển chấp nhận được là dịch chuyển 0 và dịch chuyển 1. Nếu ký tự hiện hành là ∆, T 1 sẽ đẩy ra. Việc dịch chuyển không dừng với ký tự a trên băng còn bị đẩy ra khi nó có dịch chuyển về bên trái đầu đọc của băng. Bởi vì Execute không nên đẩy ra, nên chúng ta cần xác định 5 dịch chuyển từ trạng thái p và 1 cho sự kết hợp của 3 ký tự có thể có trên băng 2 (0, 1 và ∆) và 2 trên Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 4 0/0, L 1/1, L 1/0, L 0/1, L 1/0, L ∆/∆, R 0/0, R ∆/∆, L∆/∆, R 0/0, R 1/1, R ∆/0, L 0/0, L h a 0/1, L ∆/∆, S ∆/∆, S Bài tập lớn – Môn: Lý thuyết tính toán băng 3 (Ký hiệu # cũng xuất hiện trên băng 3 nhưng nó sẽ không xuất hiện như là ký hiệu hiện hành trong trạng thái p) Hình 9.18. Một phần cở bản của Execute Dịch chuyển được tạo bởi Execute mô phỏng việc dịch chuyển chấp nhận của T 1 bỏ đi ký hiệu * tại vị trí hiện tại trên băng 3 và làm Execute chấp nhận. Đây là các dịch chuyển đầu tiên được thể hiện từ p đến h trong Hình 9.18b. Chú ý rắng nó loại bỏ các chỉ lệnh để chuyển đầu đọc trên băng 3 sang phải với giả thiết rằng nếu T 1 bị hóc tại vị trí hiện tại trên băng là bất hợp lệ. Hai trạng thái kế tiếp từ p đến h tương ứng với các chuyển tiếp làm T 1 đẩy ra. Hai trạng thái cuối cùng dành cho tình huống khi ký tự trên băng 2 là ∆, xác định rằng dịch chuyển hiện tại được mô phỏng hoàn toàn. Một dịch chuyển khác từ trạng thái p trong Execute là dịch chuyển tương ứng với sự lựa chọn 1. Điều này xuất hiện khi số hiện tại trên băng 2 là 1 và ký hiệu trên băng 2 là a. Lý do dịch chuyển này không trực tiếp chuyển sang trạng thái q là Execute cần kiểm tra trước liệu dịch chuyển này có khả năng với T 1 không. Nó thực hiện bằng việc dịch đầu đọc trên băng 3 sang trái và chuyển đến trạng thái tạm. Từ trạng thái này, bất kỳ ký tự nào trên băng 3 khác # thì xác định rằng T 1 đã dịch chuyển an toàn và Execute có thể chuyển đến trạng thái q ngay khi T 1 có vị trí đầu tiên. Ký hiệu # xác định một va chạm bởi T 1 và Execute dừng bình thường sau khi trả đầu đọc về ô bên phải của #. Mặc dù ví dụ nhỏ này không chỉ ra từng tình huống có thể xuất hiện nhưng nó giúp cho việc chứng mình rằng toàn bộ sơ đồ trạng thái cho T1 có thể được đổi thành một sơ đồ tương ứng cho Execute. Kết luận là T 2 có thể mô phỏng các dịch chuyển xác định có thể có của T 1 . Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 5 h a p a/∆, R q (0) a/a, L (1) h a p (0, a)/(0, *), (R,S) temp (0, ∆)/(0, ∆), (R,S) (1, ∆)/(1, ∆), (R,S) (∆, a)/(∆, a), (S,S) (∆, ∆)/(∆, ∆), (S,S) (1, a)/(1, a), (R,L) q (─, a)/ (─, a), (S,S) (─, ∆)/(─, ∆), (S,S) (─, #)/(─, #), (S,R) (a) (b) Bài tập lớn – Môn: Lý thuyết tính toán Một ví dụ đơn giản của không đơn định Xem xét máy Turning Double làm việc như sau. Việc dùng máy Turning Copy trong ví dụ 9.7 chỉnh sửa một ký hiệu trong ký tự vào, nó tạo ra một bản sao của đầu vào là số. Sau khi xóa các tự trống trong đầu vào ban đầu từ bản sao và trả lại đầu đọc về ô số 0. Giống như tên của nó, nó gấp đôi giá trị của đầu vào. Hình 9.19. Một máy Turning không đơn định đoán nhận xâu có chiều dài 2 i Bây giờ hãy xem xét máy Turning không đơn định T trong Hình 9.19. T dịch chuyển qua xâu vào, thay thế 1 trên băng, tách riêng các ký tự vào bởi ký tự trống và sau đó đặt đầu đọc tại ký tự trống, thự thi Double 0 hoặc nhiều lần trước khi trả đầu đọc về ô thứ 0. Cuối cùng, nó thực thi TM Equal và máy TM này làm việc như sau: Bắt đầu với nội dung trên băng ∆ x∆ y nơi mà x và y là xâu chứa 1, Equal thừa nhận nếu và chỉ nếu x=y (xem ví dụ 9.9) Tính không đơn định trong T sản sinh ra số lần Double không xác định được thực thi. Khi Equal được thực thi hoàn toàn, xâu kế tiếp sau đầu vào trên băng là bội số của 2. Nếu xâu ban đầu là bội số của 2 (2 i ) thì một thứ tự của các lựa chọn mà T có thể tạo ra sẽ làm xâu đó được thừa nhận, Double được thực hiện chính xác i lần. Mặc khác, nếu xâu vào không phải là bội số của 2, nó sẽ không được thừa nhận bởi vì tại bước cuối cùng nó được so sánh với một chuỗi là bội số của 2. Kết luận là T thừa nhận ngôn ngữ {1 2 i | i≥0} Ta không cần tính không đơn định để thừa nhận ngôn ngữ này (Tính không đơn định không bao giờ cần thiết như mô tả ở Định lý 9.2), nó chỉ đơn thuần làm đơn giản hóa sự mô tả. Một cách đơn định để kiểm tra một số nguyên có là lũy thừa của 2 là kiểm tra số nguyên trước xem nó có bằng một hay không, nếu không thực hiện dãy các phép chia hai. Nếu tại bất kỳ bước nào trước khi kết quả là 1, ta có kết quả phần dư khác không, thì ta kết luận là sai. Nếu thương cuối cùng là một mà không có phép chia nào tạo ra phần dư, ta kết luận đúng. Ta thường làm như thế, tuy nhiên phép nhân cho 2 thì dễ hơn phép chia 2. Theo hướng dễ dàng hơn, ta bắt đầu từ 1 và thực hiện một dãy các phép nhân cho 2. Ta có thể so sánh kết quả các phép nhân với giá trị ban đầu, ta thừa nhận nếu số đó bằng với kết quả, hoặc loại bỏ nếu số này lớn hơn số vào hoặc đơn giản tiếp tục vòng lặp vô tận. Cách giải quyết T không đơn định trong Hình 9.19 thì gần với hướng tiếp cận thứ hai ngoại trừ thay vì so sánh đầu vào với các số 2 i , nó đoán giá trị của i và kiểm tra chỉ giá trị đó. Việc khử tính không đơn định nghĩa là thay thế việc đoán nhận bởi một vòng lặp với tất cả các giá trị được kiểm tra, một máy Turning đơn định đã làm sẽ là đơn giản là một phiên bản hiệu quả hơn của máy Turning vì thế Định lý 9.2 kiểm tra tất cả các dãy có thể của các dịch chuyển của T. Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 6 ∆/∆, R∆/∆, R 1/1, R ∆/1, L Double ∆/∆, L 1/1, L Equal ∆ [...]... nó xử lý một 5-tuple trên băng 1 có một phần thứ ba là 0 Trong trường hợp này, sau khi Tu đã thay đổi băng 2 một cách thích hợp, nó xóa băng 1 sao chép băng 2 vào băng 1 và chấp nhận CHƯƠNG 2 Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 11 Bài tập lớn – Môn: Lý thuyết tính toán BÀI TẬP ỨNG DỤNG Yêu cầu: Sử dụng kỹ thuật dịch chuyển các địa chỉ thanh ghi của RASP trong bài giảng lý thuyết, dịch chuyển. .. thúc Thuật toán được biểu diễn theo sơ đồ khối bên dưới Nhập a và b False b !=0 1+ a In giá trị ra màn hình và kết thúc True a/b In giá trị ra màn hình và kết thúc II Chương trình máy RASP Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 12 Bài tập lớn – Môn: Lý thuyết tính toán Chương trình RASP xuất phát P Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 Sau khi dịch chuyển thành P’ 13 Bài tập lớn – Môn: Lý thuyết. . .Bài tập lớn – Môn: Lý thuyết tính toán II Máy Turning vạn năng Cho đến nay trong các cuộc thảo luận của chúng ta, một máy Turing được tạo ra để thực hiện một thuật toán cụ thể Nếu chúng ta có một máy Turing được dùng chỉ để tính toán cho một hàm thì khi ta cần tính toán một hàm khác hoặc thực hiện một số tính toán khác thì cần có một máy Turning khác Ban đầu, máy tính điện tử cũng... học máy tính – Khóa 12 0 14 Bài tập lớn – Môn: Lý thuyết tính toán 32 WRITE 33 0 34 HALT 0 P’ 35 37/38 Nội dung 37 hoặc 38 37 a Chứa giá trị a q +P’-p 38 b Chứa giá trị b P’+1 36 TÀI LIỆU THAM KHẢO [1] Phan Huy Khánh, Giáo trình Lý thuyết tính toán, ĐH Đà Nẵng 1999 Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 15 Bài tập lớn – Môn: Lý thuyết tính toán [2] Phan Huy Khánh, Lý thuyết ngôn ngữ hình thức và. .. Mã hóa một máy Turning đơn giản Xem xét TM trong Hình 9.20 biến đổi một chuỗi đầu vào của a và b của bằng cách thay đổi tận cùng bên trái a, nếu có b Hãy đơn giản hóa những biểu tượng trên băng a và b bằng các số 1 và 2 để s(a)=00 và s(b)=000 và các trạng thái q0, p và r bằng các số 1, 2 và 3 tương ứng Nếu chúng ta có sáu dichj chuyển theo thứ tự chúng xuất hiện, từ trái sang phải, thì dịch chuyển đầu... Turning đã mô tả một máy Turning vạn năng như sau Nó là một TM Tu mà đầu vào bao gồm chủ yếu của chương trình và tập hợp dữ liệu cần thiết để cho chương trình xử lý Chương trình lấy các từ của một chuỗi được xác định bới TM T1, và tập hợp dữ liệu là chuỗi thứ hai z được xem là đầu vào cho T1 Tu sau đó mô phỏng quá trình đoán nhận z bởi T1 Trong phần này chúng tôi sẽ mô máy Turning vạn năng Tu Bước đầu... kiếm hình trong Hình 9.21 cũng tạm dừng bất thường (mặc dù di chuyển đến hr không được hiển thị rõ ràng), bởi vì khi qua 5-tuple cuối cùng trên băng 1 đã thực hiện không thành công, thứ hai của 1 ở cuối Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 10 Bài tập lớn – Môn: Lý thuyết tính toán cùng làm máy trở lại tình trạng ban đầu, và không có di chuyển từ trạng thái đó với 1 trên băng 1 Chúng ta có thể dễ... như vậy, và thay đổi các tính toán sẽ được thực hiện bằng việc mắc lại máy Một bài báo năm 1936 của Turing, với các máy tính với các chương trình được lưu trữ (stored-program) mà bạn quen thuộc Mặc dù một máy tính hiện đại vẫn còn được gắn cứng (hard-wired), nhưng nó khá mềm dẻo để thực hiện các chỉ lệnh được lưu trữ trong bộ nhớ và chúng có thể hiện được bằng bất kỳ thuật toán có khả năng Turning đã... 031011041011031 = 00010100001010001 và toàn bộ TM mã hóa bởi chuỗi 0001 000101000010100011 00001000100001000100011 0000100100000100010011 0000101000001010011 000001000100000100010011 000001010101011 b/b, L b/b, R q ∆/∆, R a/b, L ∆/∆, L p r ∆/∆, S h 0 a Hình 9.20 Mã hóa một máy Turning đơn giản Nhóm 11 - Lớp: Khoa học máy tính – Khóa 12 8 Bài tập lớn – Môn: Lý thuyết tính toán Hãy nhớ rằng phần đầu tiên... di chuyển còn lại của chuỗi được phân cách bằng các khoảng trắng cho dễ đọc Đầu vào của một máy Turning vạn năng Tu sẽ bao gồm một chuỗi dạng e(T)e (z), trong đó T là một TM và z là một chuỗi trên bảng chữ cái đầu vào của T Trong ví dụ 9.11 nếu chuỗi đầu vào của T là baa thì chuỗi đầu vào tương ứng với T u sẽ bao gồm chuỗi các e (T) đưa ra trong ví dụ theo sau là 10001001001 Trên bất kỳ chuỗi đầu vào