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.
Trang 1TRƯỜ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
Trang 2LÝ 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
Trang 3Lý 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ả
Trang 4STT 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
Trang 5CHƯƠ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 ).
Chứng minh
Trang 6Má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
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ự đó
1
0 1
0
…
…
Trang 7Ta 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 α = 1k với xâu kế tiếp là 0k+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
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
(─,─, *)
h
a
(─,─, S)
S ≠*
InitializeTapes2&3 CopyInput Execute
EraseTape3 NextSequence
Trang 8trố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
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
∆/∆, S
Trang 9bă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
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)
Trang 10Mộ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 2i
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 (2i) 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ố 2i , 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.
∆/∆, R
∆/∆, R
1/1, R
∆/1, L
Double
∆/∆, L
1/1, L
Equal
∆