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

tiểu luận môn lý thuyết tính toán programming techniques for turing machines

15 426 0

Đ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 15
Dung lượng 510,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

BÀI TẬP Bài tập 8.3.3 p.336 Với những kiến thức có được còn hạn chế, trong quá trình nghiên cứu các thành viên của Nhóm 05 đã có nhiều cố gắng tìm hiểu, nghiên cứu nhiều tài liệu khác nh

Trang 1

BỘ GIÁO DỤC & ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG

~~~oOo~~~

TIỂU LUẬN

LÝ THUYẾT TÍNH TOÁN

ĐỀ TÀI

PROGRAMMING TECHNIQUES FOR TURING

MACHINES

NHÓM HỌC VIÊN

ĐÀ NẴNG, 05/2012

Trang 2

Mục lục

MỤC LỤC

GIỚI THIỆU 1

PHẦN I: LÝ THUYẾT CÁC KỸ THUẬT XÂY DỰNG MÁY TURING 2

.I LƯU TRỮ Ở BỘ ĐIỀU KHIỂN HỮU HẠN 2

.II BĂNG NHIỀU RÃNH 4

.III CHƯƠNG TRÌNH CON 6

PHẦN II: BÀI TẬP 10

.IV PHÁT BIỂU BÀI TOÁN 10

.V GIẢI QUYẾT BÀI TOÁN 10

TÀI LIỆU THAM KHẢO 13

Trang 3

GIỚI THIỆU

Nhóm 05 thực hiện việc nghiên cứu tài liệu “Addison-Wesley – Introduction to

Automata Theory, Languages and Computation”, phần 8.3 (p.329 – 336).

Nội dung chính của tiểu luận bao gồm:

PHẦN 1 LÝ THUYẾT

Các kỹ thuật xây dựng máy Turing

• Lưu trữ ở bộ điều khiển hữu hạn

• Băng nhiều rãnh

• Chương trình con

PHẦN 2 BÀI TẬP

Bài tập 8.3.3 (p.336)

Với những kiến thức có được còn hạn chế, trong quá trình nghiên cứu các thành viên của Nhóm 05 đã có nhiều cố gắng tìm hiểu, nghiên cứu nhiều tài liệu khác nhau để bổ sung vào phần tìm hiểu mục 8.3 này Do đó, kết quả nghiên cứu và trình bày không thể tránh khỏi những sai sót, hạn chế Rất mong được sự đóng góp

ý kiến của Thầy PGS, TS PHAN HUY KHÁNH và các bạn cùng lớp

Xin chân thành cảm ơn!

Nhóm 05 – Lớp Khoa học Máy tính K24

Trần Ngọc Chinh

Phùng Thị Ngọc Dung

Võ Văn Thiên

Trang 4

PHẦN I: LÝ THUYẾT CÁC KỸ THUẬT

XÂY DỰNG MÁY TURING

Việc xây dựng máy Turing bằng cách viết (liệt kê) tất cả các hàm chuyển của

nó trên băng nhập có thể là một công việc đơn điệu Để mô tả đầy đủ cách xây dựng máy Turing, ta cần một vài công cụ "cấp cao" hơn Phần này sẽ trình bày một số công cụ tổng quát

Mục đích của phần này cho thấy ý nghĩa của việc một máy Turing (Turing Machine – TM) có thể được sử dụng để tính toán, trong mức độ nào đó không khác

so với với máy tính hiện nay Chúng ta sẽ nghiên cứu những tính toán trên những máy Turing khác nhau Khả năng “nội hàm” này của cả máy Turing và máy tính cho phép chúng ta chứng minh những vấn đề chưa quyết định được

Để minh chứng khả năng của TM một cách rõ ràng, chúng ta sẽ trình bày một

số ví dụ về điều này và phải nghĩ đến băng từ và bộ điều khiển hữu hạn của máy Không một thủ thuật nào mở rộng kiểu cơ bản của TM Chúng ta chỉ sử dụng những

ký hiệu để giả lập các máy TM mở rộng cùng với băng từ nhiều rãnh hơn so với

TM cơ bản

Bộ điều khiển có thể dùng để lưu trữ một lượng hữu hạn thông tin Để làm như thế, ta viết mỗi trạng thái như là một cặp các phần tử: một thành phần để điều khiển, thành phần kia lưu giữ một ký hiệu Chú ý rằng, đây chỉ là một cách mở rộng trên khái niệm chứ không thay đổi định nghĩa máy Turing

Có thể dùng bộ điều khiển hữu hạn không chỉ để chỉ rõ vị trí trong chương trình (đầu đọc trên băng từ) của TM mà còn lưu trữ dữ liệu, hình 1.1 minh hoạ kỹ thuật này (cũng giống như một phương pháp khác: băng nhiều rãnh), hình vẽ cho thấy bộ điều khiển hữu hạn không những chứa một trạng thái điều khiển q mà còn

ba phần tử dữ liệu A, B và C Điều này không phải mở rộng kiểu TM mà đơn thuần

xem trạng thái như 1 bộ Như hình 1 đó là: [q, A, B, C] Đối với nhiều trạng thái,

phương pháp này cho phép mô tả có hệ thống hơn và chương trình TM cũng dễ hiểu hơn.

Trang 5

Tiểu luận môn Lý thuyết tính toán 3

(Hình 1 - TM có bộ điều khiển hữu hạn lưu trữ dữ liệu và nhiều track)

Ví dụ 1.1: Thiết kế một TM

M = (Q, {0, 1}, {0, 1, B}, δ , [q 0 , B], {[q 1 , B]})

Bộ điều khiển hữu hạn sẽ nhận biết ký tự đầu tiên là 0 hoặc 1 và xác định rằng

ký tự này sẽ không xuất hiện bất cứ vị trí nào trong chuỗi nhập Như vậy, M chấp

nhận ngôn ngữ dạng 01* + 10* Việc chấp nhận ngôn ngữ dạng này không cho thấy

được hết khả năng của TM, nhưng là một ví dụ đơn giản về khả năng của TM

Tập hợp các trạng thái Q gồm {q 0 , q 1} ×{0, 1, B}, được biểu diễn từng cặp với

2 thành phần:

a) Phần đầu là trạng thái điều khiển của TM q 0 hoặc q 1 , trạng thái q 0 là trạng

thái khởi đầu mà M chưa đọc ký tự nào, q 1 là trạng thái M đã đọc 1 ký tự

và kiểm tra ký tự này sẽ không xuất hiện bất cứ nơi nào trong câu khi đầu đọc di chuyển về phía phải, nếu gặp ô trắng thì câu được chấp nhận

b) Phần thứ 2 chứa dữ liệu, đó là ký hiệu đầu tiên được tìm thấy (0 hoặc 1),

ký hiệu B xuất hiện trong phần này chứng tỏ M chưa đọc ký tự nào.

δ: hàm chuyển của M:

1.δ ([q 0 , B], a) = ([q 1 , a], a, R) với a = 0 hoặc a = 1 q 0 là trạng thái khởi đầu

và phần lưu dữ liệu của trạng thái là B Ký tự đọc được ghi vào thành phần

Trang 6

Tiểu luận môn Lý thuyết tính toán 4

thứ hai của trạng thái, đầu đọc di chuyển về phía phải và chuyển sang

trạng thái q 1

2.δ ([q 1 , a], a ) = ([q 1 , a], a , R), ở đây nếu a = 0 thì a= 1 và ngược lại Ở

trạng thái q 1 , M sẽ bỏ qua những ký tự đọc được nếu so sánh khác với ký

tự đã đọc lần đầu tiên (đang lưu ở thành phần thứ hai của trạng thái) và di chuyển tiếp về phía phải

3.δ ([q 1 , a], B) = ([q 1 , B], B, R) với a = 0 hoặc a = 1 Nếu M tìm thấy ký tự

trắng sẽ chuyển sang trạng thái kết thúc [q 1 , B].

Chú ý rằng M không được định nghĩa δ ([q 1 , a], a) với a = 0 hoặc a = 1, vì

như vậy sẽ bắt gặp một sự cố khi so sánh ký tự đang đọc và ký tự đã lưu trong bộ

điều khiển hữu hạn tại lần đọc đầu tiên Khi đó M treo và không đi đến trạng thái

kết thúc

.II BĂNG NHIỀU RÃNH

Một cách khác được nghĩ đến là băng của TM chứa nhiều rãnh Mỗi ký tự của băng bao gồm một bộ, mỗi thành phần của bộ nằm trên một rãnh Vì vậy, trong

hình 1.1, mỗi ô được đầu đọc quét qua chứa 1 bộ [X, Y, Z] Kỹ thuật lưu trữ trong bộ

điều khiển hữu hạn sử dụng nhiều rãnh trên băng không phải mở rộng tính năng của

TM, mà đơn giản đó là một phương pháp để dễ quan sát và hình dung

Ví dụ 1.2: Trên băng dùng nhiều rãnh, thông thường một rãnh lưu giữ dữ

liệu, rãnh thứ hai dùng để đánh dấu ký tự đã “duyệt” hoặc có thể lưu trong rãnh một

số ít những vị trí tương ứng với dữ liệu đã “duyệt” Ví dụ đang xét sẽ minh hoạ rõ cách sử dụng rãnh thứ hai để nhận một ngôn ngữ phi ngữ cảnh

L wcw = {wcw | w is in (0 + 1)+ }

TM sẽ được thiết kế:

M = (Q, Σ, Γ, δ , [q 1 , B], [B, B], {[q 9 , B]})

Trong đó:

Q: là tập hợp các trạng thái: {q 1 , q 2 , …, q 9} × {0, 1, B}, gồm những cặp chứa

một trạng thái điều khiển q i và thành phần dữ liệu: 0, 1 hoặc ký tự trắng Chúng

Trang 7

Tiểu luận môn Lý thuyết tính toán 5

ta một lần nữa sử dụng kỹ thuật lưu trữ trong bộ điều khiển hữu hạn, như vậy chúng ta cho phép một trạng thái ghi nhớ một ký tự đầu vào 0 hoặc 1

Γ: Tập hợp các ký tự gồm: {B, ∗} × {0, 1, c, B} Thành phần đầu tiên có thể

là ký tự trắng (B) hoặc đã đánh dấu (∗) Dùng dấu ∗ để đánh dấu những ký tự đã

duyệt qua trong w (gồm chuỗi các ký tự 0 và 1) nằm về hai phía của c có giống

nhau hay không Thành phần thứ hai là một trong những ký tự đã được mô tả ở trên

Nghĩa là nếu chúng ta có ký hiệu [B, X] thì X là một trong các ký tự 0, 1, c hoặc B.

∑: ký tự nhập [B, 0], [B, 1] Như đã đề cập đến, chúng ta định nghĩa tương ứng

với 0 và 1

δ: Hàm chuyển, được định nghĩa bởi các luật sau, trong đó a và b đại diện cho

0 hoặc 1:

1 δ ([q 1 , B], [B, a]) = ([q 2 , a], [, a], R) Ở trạng thái khởi động M tìm thấy ký tự a (có thể là 0 hoặc 1), lưu a vào trong bộ điều khiển hữu hạn, chuyển sang trạng thái q 2 và đánh dấu vị trí vừa đọc bằng cách thay

B bằng ∗, di chuyển về phía phải

2 δ ([q 2 , a], [B, b]) = ([q 2 , a], [B, b], R) M di chuyển về phải, tìm ký

tự c Chú ý rằng a, b có thể hoặc 0 hoặc 1 nhưng không thể là c.

3 δ ([q 2 , a], [B, c]) = ([q 3 , a], [, b], R) M tìm thấy c, chuyển thành trạng thái q 3 và đi tiếp về phía phải

4 δ ([q 3 , a], [, b]) = ([q 3 , a], [, b], R) M di chuyển qua tất cả các

ký tự đã đánh dấu và giữ trạng thái q 3

5 δ ([q 3 , a], [B, a]) = ([q 4 , B], [, a], L) Nếu M gặp ký tự đầu tiên

chưa đánh dấu giống với ký tự đang lưu trong bộ điều khiển hữu hạn thì

đánh dấu ký tự này Chuyển sang trạng thái q 4 đồng thời xoá dữ liệu trong

bộ điều khiển hữu hạn, M chuyển sang trái

6 δ ([q 4 , B], [, a]) = ([q 4 , B], [, a], L) M di chuyển về trái bỏ qua

tất cả các ký tự đã đánh dấu, giữ nguyên trạng thái

7 δ ([q 4 , B], [B, c]) = ([q 5 , B], [B, c], L) Khi M gặp c, chuyển sang

trạng thái q 5 và đi tiếp về phía trái Trong trạng thái q 5 , M gặp và giải

Trang 8

Tiểu luận môn Lý thuyết tính toán 6

quyết các trường hợp: các ký tự trong chuỗi phía trái c chưa đánh dấu hết

hoặc đã đánh dấu xong

Nếu đã đánh dấu xong, vấn đề còn lại là kiểm tra chắc chắn chuỗi

phía phải c cũng đã đánh dấu toàn bộ và đi vào trạng thái kết thúc.

Nếu chưa, M tìm ký tự chưa đánh dấu phía trái nhất, đánh dấu và bắt đầu lặp lại ở trạng thái q 1

8 δ ([q 5 , B], [B, a]) = ([q 6 , B], [B, a], L) Trường hợp xảy ra khi tìm

thấy phía trái c có ký tự chưa đánh dấu, M chuyển trạng thái q 6 và đi tiếp

về phía trái tìm ký tự đã đánh dấu

9 δ ([q 6 , B], [B, a]) = ([q 6 , B], [B, a], L) M tiếp tục về phái trái, bỏ

qua những ký tự chưa đánh dấu

10 δ ([q 6 , B], [, a]) = ([q 1 , B], [, a], R) Tìm thấy ký tự đánh dấu,

M đi vào trạng thái q 1, dịch phải để duyệt ký tự chưa đánh dấu phía trái nhất

11 δ ([q 5 , B], [, a]) = ([q 7 , B], [, a], R) Nếu tìm thấy chuỗi phía trái

c đã được đánh dấu toàn bộ, M dịch phải, chuyển thành trạng thái q 7

12 δ ([q 7 , B], [B, c]) = ([q 8 , B], [B, c], R) Gặp c, M tiếp tục dịch phải

và đi vào trạng thái q 8

13 δ ([q 8 , B], [, a]) = ([q 8 , B], [, a], R) M giữ nguyên trạng thái q 8,

di chuyển qua tất cả các ký tự đã được đánh dấu được tìm thấy

14 δ ([q 8 , B], [B, B]) = ([q 8 , B], [B, B], R) Ở trạng thái q 8 , nếu M gặp

ký tự trắng (B) sẽ đi vào trạng thái q 9 – kết thúc, câu được chấp nhận Nếu

gặp bất kỳ ký tự nào khác, câu không được chấp nhận, M treo.

.III CHƯƠNG TRÌNH CON

Trong những chương trình máy tính nói chung, TM có thể thực thi một tập các thành phần tương tác hay những chương trình con Một chương trình con của TM là một tập các trạng thái được thực thi đầy đủ Trong đó bao gồm trạng thái bắt đầu và một trạng thái khác không có phép chuyển kế tiếp được xem như là trạng thái trở về

Trang 9

Tiểu luận môn Lý thuyết tính toán 7

để giao quyền điều khiển đến một tập trạng thái khác của cùng một TM hay một

TM khác Khi một chương trình con được gọi, trạng thái bắt đầu (q 0) sẽ thi hành Vì

TM không có kỹ thuật để nhớ địa chỉ trở về – trạng thái kế tiếp sau khi nó kết thúc, nên phải thiết kế TM yêu cầu một chương trình con được gọi tại một số trạng thái, tạo ra nhiều bản sao của chương trình con, mỗi bản sao là một tập các trạng thái mới, như vậy mỗi lần gọi là thực thi một bản sao khác nhau của chương trình con

Ví dụ 1.3: Thiết kế một TM thực hiện phép nhân TM khởi động với chuỗi

nhập trên băng 0m10n1 và kết thúc với chuỗi 0mn trên băng Nguyên tắc chung của giải thuật này là:

1 Trên băng, trong trường hợp tổng quát, dạng chuỗi 0i10n10kn với mỗi số k nguyên dương

2 Thay đổi 1 ký tự 0 trong nhóm đầu tiên thành B (blank: ký tự trắng)

và thêm n ký tự 0 nối vào sau chuỗi, lúc này chuỗi có dạng: 0 i-110n10(k+1)n

3 Lặp lại bước 2 m lần, khi đó toàn bộ các ký tự 0 của nhóm đầu được thay bằng ký tự B và mn ký tự 0 được nối thêm vào sau chuỗi.

4 Bước cuối cùng thay nhóm đầu 10n 1 bằng các ký tự B, kết thúc

công việc

Biến ý tưởng giải thuật này thành chương trình con có tên Copy Copy sẽ thực hiện bước 2 trong 4 bước trên Chính xác hơn, chương trình con Copy sẽ chuyển dạng 0m-k 1q 10n10(k-1)n thành dạng 0m-k 1q 50n10kn Hình 2 minh họa sự chuyển

đổi của chương trình con Copy Chương trình con này thay ký tự 0 đầu tiên ở chuỗi

thành X, dịch chuyển sang phải trở thành q 2 và giữ trạng thái này cho đến khi tìm

thấy một ký tự trắng, ghi 0, dịch trái, chuyển thành trạng thái q 3 để tìm X đã đánh dấu Lặp lại chu kỳ trên ở trạng thái q 1 cho đến khi thay toàn bộ 0 phía trái thành X, gặp 1 chuyển thành trạng thái q 4 , dịch trái, thay X trở thành 0 và kết thúc ở trạng thái q 5

Trang 10

Tiểu luận môn Lý thuyết tính toán 8

( Hình 2 - Chương trình con Copy)

TM thực hiện hoàn chỉnh phép nhân bắt đầu ở trạng thái q 0 Đầu tiên trong vài

bước di chuyển từ dạng q 00m10n thành 0m-1 1q 10n1 Những bước chuyển được minh họa ở hình 1.3, bên trái của chương trình con; những bước dịch chuyển này chỉ gồm

trạng thái q 0 và q 6

Bên phải của chương trình con trên hình 1.3, gồm trạng thái q 7 đến q 12 Mục

đích trạng thái q 7 , q 8 và q 9 nắm lấy điều khiển sau khi chương trình con Copy ghi

khối n ký tự 0 và ở trạng thái 0 m-k 1q 50n10kn Cuối cùng, những trạng thái này sẽ đưa

về trạng thái q 00m-k10n10kn Lúc này chu trình bắt đầu lần nữa và chương trình con

Copy được gọi để lặp lại việc chép khối n ký tự 0 vào cuối chuỗi.

Đặc biệt, tại trạng thái q 8 , TM phải tìm thấy toàn bộ m ký tự 0 đã được thay bằng B, trong trường hợp này chuyển sang trạng thái q 10 , trạng thái q 11 sẽ thay chuỗi

10n 1 thành B và đi vào trạng thái dừng q 12 , dạng chuỗi q 120mn

Trang 11

Tiểu luận môn Lý thuyết tính toán 9

( Hình 3 - Chương trình thực hiện phép nhân hoàn chỉnh dùng chương trình con Copy)

Trang 12

Tiểu luận môn Lý thuyết tính toán 10

PHẦN II: BÀI TẬP

.IV PHÁT BIỂU BÀI TOÁN

*Bài tập 8.3.3 (p.336): Thiết kế một chương trình con để di chuyển một đầu

TM từ vị trí hiện tại của mình sang bên phải, bỏ qua tất cả các số 0, cho đến khi gặp một số 1 hoặc một khoảng trống

Nếu vị trí hiện tại không nắm giữ 0, thì TM dừng Giả định rằng có không có

biểu tượng băng khác hơn 0, 1, và B (trống)

Sau đó, sử dụng chương trình con này để thiết kế một TM chấp nhận tất cả các chuỗi 0 và 1 mà không có hai số 1 liên tiếp trong một hàng

.V GIẢI QUYẾT BÀI TOÁN

Chương trình con (GoToRight): Chú ý rằng bởi vì các yêu cầu về kỹ thuật

của chương trình con và vì TM không cho phép đầu đọc của nó đứng yên Khi thấy

1 ký tự khác 0, TM sẽ chuyển sang trạng thái q 3, di chuyển qua phải, và sau đó trở

về bên trái ở trạng thái q 4 , là trạng thái kết thúc của chương trình con.

q1 (q2,0,R) -

-q2 (q2,0,R) (q3,1,R) (q3,B,R)

q3 (q4,0,L) (q4,1,L) (q4,B,L)

Trang 13

Tiểu luận môn Lý thuyết tính toán 11

( Hình 4 - Chương trình con “GoToRight”)

Hình 4 minh họa sự chuyển đổi của chương trình con GoToRight Chương

trình con này ghi ký tự 0 đầu tiên ở chuỗi, dịch chuyển sang phải trở thành q 2 và giữ

trạng thái này cho đến khi tìm thấy một ký tự trắng B (ghi B) hoặc một số 1 (ghi 1), dịch phải, chuyển thành trạng thái q 3 Ở trạng thái q 3 tiến hành dịch trái và kết thúc

ở trạng thái q 4

Chúng ta dùng chương trình con trên để thiết kế một TM bắt đầu ở trạng thái

q 0 Bất cứ khi nào gặp ký tự trống, TM sẽ chấp nhận ở trạng thái q f Tuy nhiên, ở

trạng thái q 0, TM chỉ biết nó không bắt gặp một số 1 bên phải nó Nếu TM quét qua

một số 0, nó phải kiểm tra (ở trạng thái q 5) không có một khoảng trống ngay bên

phải nó; nếu có, TM chấp nhận Nếu nó gặp số 0 ở trạng thái q 5, TM sẽ quay trở lại

số 0 trước đó và gọi chương trình con để bỏ qua ô không phải số 0 tiếp theo Nếu

TM gặp 1 ở trạng thái q 5 , thì nó gặp 01, nó sẽ sử dụng trạng thái q 6 để kiểm tra rằng không có bất kỳ số 1 nào ở bên phía phải

Ngoài ra, TM ở trạng thái q 4 (trạng thái kết thúc của chương trình con) sẽ chấp nhận nếu nó bắt gặp một khoảng trống, và nếu nó gặp một số 1 thì sẽ chuyển sang

trạng thái q 6 để chắc chắn theo sau sẽ là một số 0 hoặc một khoảng trống

Chú ý rằng các trạng thái q 4 và q 5 là thật sự giống nhau, ngoại trừ ở trạng thái

q 4 chúng ta chắc chắn không quét qua một số 0 Hai trạng thái này có thể kết hợp lại thành một trạng thái chung Ngoài ra, chương trình con không phải là một giải pháp

1/1 →

B/B →

0/0 →

0/0→

0/0 ←

B/B ←

1/1 ←

q1 q2

q4 Start

q3

Ngày đăng: 01/02/2015, 00:22

HÌNH ẢNH LIÊN QUAN

Hình 4  minh họa sự chuyển đổi của chương trình con GoToRight. Chương - tiểu luận môn lý thuyết tính toán programming techniques for turing machines
Hình 4 minh họa sự chuyển đổi của chương trình con GoToRight. Chương (Trang 13)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w