Máy Turing MT gồm một bộ điều khiển với tập hữu hạn thạng thái Q và một đầu đọc/ghi R/W, chuyển động trên một băng vô hạn cả về hai phía.. CƠ SỞ LÝ THUYẾT Mục tiêu của mục này là nhằm
Trang 1CÁC KỸ THUẬT XÂY DỰNG MÁY TURING
QUẢNG BÌNH, THÁNG 12 NĂM 2012
BẢO VỆ ĐỀ TÀI MÔN HỌC LÝ THUYẾT TÍNH TOÁN
Trang 2MỞ ĐẦU
giao đề thực hiện đề tài : Các kỹ Thuật Xây Dựng Máy Turing Nhóm xin trình bày như sau :
Trang 3NỘI DUNG CHÍNH CỦA ĐỀ TÀI
PHẦN I : CƠ SỞ LÝ THUYẾT
PHẦN II : BÀI TẬP
Trang 4PHÂN CÔNG VÀ CÁCH THỰC HIỆN
Tất cả các thành viên trong nhóm đều thực hiện việc nghiên cứu lý thuyết của môn học lý thuyết tính toán
Làm việc theo cả nhóm cùng trao đổi và đưa ra các phương án giải quyết bài toán.
Trang 5CƠ SỞ LÝ THUYẾT
I.Mô hình máy Turing.
Máy Turing là mô hình toán học cho máy tính tổng quát, là nền tảng của quá trình xử lý của máy tính hiện đại.
Máy Turing MT gồm một bộ điều khiển với tập hữu hạn thạng thái Q và một đầu đọc/ghi (R/W), chuyển động trên một băng vô hạn cả về hai phía Băng được chia thành từng ô, mỗi ô chứa một ký hiệu thuộc một bảng
ký hiệu hữu hạn , bao gồm cả ký hiệu trắng B (Blank).
Ví dụ một mô tả hoạt động của máy Turing như hình 1.
Trang 7 B: ký hiệu thuộc , ký hiệu trắng (Blank) trên băng.
∑: tập các ký tự đầu vào và là tập con của , B .
: hàm chuyển: Q Q {L, R, L, R, }
q0 Q là trạng thái bắt đầu
F Q là tập các trạng thái kết thúc.
Trang 8CƠ SỞ LÝ THUYẾT
II.BIỂU DIỄN MÁY TURING
Máy Turing có thể được mô tả theo ba cách: Máy Turing có thể
Các mô tả hiện trạng
Bảng chuyển trạng
Biểu đồ (đồ thị) chuyển trạng.
Trang 9CƠ SỞ LÝ THUYẾT
Mục tiêu của mục này là nhằm đưa ra khả năng phán đoán làm thế nào mà một máy Turing có thể được dùng
để tính toán theo một cách thức không giống như loại máy tính thông thường
Máy Turing đúng ra có sức mạnh như một máy tính thông thường.
Đặc biệt là chúng ta sẽ học đựợc máy Turing có thể thực hiện phân loại các sự tính toán dựa trên những máy Turing khác
Khả năng xem xét cả hai loại máy Turing và các chương trình máy tính khác là những gì chúng ta có thể chứng minh cho các bài toán không thể giải quyết được
Trang 10CƠ SỞ LÝ THUYẾT
Để xây dựng một máy Turing ta có thể thực hiện theo sự hướng dẫn dưới đây:
– Mục tiêu của việc đọc ký hiệu của đầu R/W là
cần biết xem “cái gì” máy Turing cần thực hiện ở bước tiếp theo Máy phải ghi lại những ký hiệu
đã đọc qua.
– Số các trạng thái phải là cực tiểu Điều này thực
hiện được bằng cách chỉ thay đổi trạng thái khi
có sự thay đổi ký tự cần ghi vào băng hoặc khi
có sự thay đổi hướng chuyển dịch của đầu R/W.
Trang 11+ Thành phần lưu giữ điều khiển
+ k-1 thành phần còn lại lưu giữ trạng thái
Trang 12CƠ SỞ LÝ THUYẾT
Một máy Turing được xem như có bộ điều khiển cho phép lưu trữ nhiều trạng thái trên đầu đọc và nhiều
rãnh trên băng
Trang 13CƠ SỞ LÝ THUYẾT
Ví dụ : Xét máy Turing M nhận vào ký hiệu đầu tiên trên chuỗi nhập (viết trên bộ chữ cái {L, R, 0, 1}), lưu trữ vào bộ điều khiển và kiểm tra rằng ký hiệu này không có xuất hiện ở vị trí nào khác trên chuỗi nữa hay không ?Chúng ta sẽ thiết
kế một máy Turing
Ta xây dựng TM M (Q, {L, R, 0, 1}, {L, R, 0, 1, B}, , [qq0, B], B, F}) với
với hàm chuyển hàm chuyển như sau:
1) ([qq0, B], 0) = ([qq1, 0], 0, R)
([qq0, B], 1) = ([qq1, 1], 1, R)
Bắt đầu từ trạng thái [qq0, B], TM đọc và lưu trữ ký hiệu đầu tiên trên băng vào thành phần thứ hai trong bộ điều khiển.
Trang 14CƠ SỞ LÝ THUYẾT
Nếu các ký hiệu được đọc tiếp theo không giống với
ký hiệu đang lưu trữ thì tiếp tục di chuyển sang phải.
Trang 15
CƠ SỞ LÝ THUYẾT
III.2 Nhiều rãnh trên băng (Multiple tracks)
Với kỹ thuật này băng của TM được chia thành k thành phần, với k > 1 và hữu hạn Một ký hiệu trên băng được xét là một bộ gồm k ký hiệu, mỗi
ký hiệu nằm trên một rãnh.
Ví dụ : Thiết kế TM nhận vào một số nguyên n
(viết ở dạng nhị phân) và kiểm tra xem đó có phải
là số nguyên tố hay không ?
Trang 16CƠ SỞ LÝ THUYẾT
TM với băng 3 rãnh
rãnh 1 dưới dạng nhị phân, TM đang thực hiện phép chia
47 cho 5 Nó đã trừ 2 lần số 5 vào số 47, vậy ở rãnh 3 hiện đang có số 37
Trang 17CƠ SỞ LÝ THUYẾT
III.3 Đánh dấu ký hiệu (Checking off symbols)
Kỹ thuật đánh dấu thường dùng để nhận diện các ngôn ngữ được định nghĩa bằng cách lặp lại chuỗi chẳng hạn như {L, R, ww w *}; {wcy }; {L, R, wcy w, y *}; {wcy , w y} hoặc {L, R, wwR w *}; {wcy } hoặc các ngôn ngữ có độ dài các chuỗi con cần được so sánh, như {L, R, aibi i 1} hoặc {L, R, aibjck i = j hoặc j = k}
Ta dùng một rãnh mở rộng trên băng để giữ ký hiệu đánh dấu Ký hiệu xuất hiện khi ký hiệu trên rãnh ngay bên dưới nó đã hoặc đang được xét bởi TM
Trang 18CƠ SỞ LÝ THUYẾT
III.4 Chương trình con (Subroutines)
Cũng giống như một chương trình máy tính hiện đại, máy Turing có thể đóng vai trò tương tự như bất kỳ một kiểu chương trình con nào trong ngôn ngữ lập trình bao gồm thủ tục đệ qui hoặc có tham số
Ý tưởng chung là ta viết một phần chương trình của TM như là một chương trình con Nó sẽ được thiết kế có chứa một trạng thái khởi đầu và một trạng thái trở về, trạng thái trở về là trạng thái không có phép chuyển kế tiếp và nó sẽ đóng vai trò là trạng thái khởi đầu của một TM khác hoặc là một trạng thái nào đó trong một TM khác Nghĩa
là từ trạng thái trở về của TM này ta tiếp tục các phép chuyển của một
TM khác, sự kiện này có ý nghĩa như là gọi một chương trình con khác hoặc tiếp tục thực hiện chương trình cấp trên
Lưu ý, các trạng thái của chương trình con phải phân biệt với chương trình cấp trên của nó
Trang 19PHẦN II : BÀI TẬP
Trang 20BÀI TẬP
Bài tập 8.3.1 Thiết kế lại máy Turing trong bài tập
8.2.2 để nắm những ưu điểm của các kỹ thuật xây dựng TM đã được thảo luận trong phần 8.3
a Thiết lập máy Turing đón nhận chuỗi w Với w là chuỗi với các ký tự 0 và 1 sao cho số ký tự 0 và số
ký tự 1 có trong chuỗi luôn luôn bằng nhau.
b Thiết lập máy Turing đón nhận chuỗi {L, R, anbncn │n
≥1}
c {L, R, WWR │w là chuỗi bất kỳ của 0 và 1}
Trang 21BÀI TẬP
Bài tập 8.3.2 Một thao tác chung trong kỹ thuật xây dựng
máy Turing cần phải "Dịch qua" (Shifting over) Một cách lý tưởng chúng ta tạo ra một ô phụ ở vị trí đầu từ hiện tại, ở
đó chúng ta có thể chứa nhiều ký tự hơn Tuy nhiên chúng
ta không thể soạn thảo trên băng từ theo phương pháp
này Hơn nữa, chúng ta phải di chuyển nội dung của ô đến bên phải của vị trí đầu từ đang đứng hiện tại vào một ô bên phải và rồi tìm chúng theo cách lui lại từ vị trí hiện tại của đầu đọc, cách trình bày với hệ thống này định nghĩa : cho phép dùng một ký tự đặc biệt để đánh dấu vị trí mà đầu từ phải quay trở lại.
Trang 22Bài tập 8.3.1
Câu a: Thiết lập máy Turing đón nhận chuỗi w Với w là chuỗi với các ký : Thiết lập máy Turing đón nhận chuỗi w Với w là chuỗi với các ký
tự 0 và 1 sao cho số ký tự 0 và số ký tự 1 có trong chuỗi luôn luôn bằng nhau
Trang 24Bài tập 8.3.1
Câu b :
Thiết kế MT đoán nhận ngôn ngữ L = {L, R, anbncn n 1}.
Biểu diễn MT dưới dạng cơ bản :
Trang 26Bài tập 8.3.1
Vận dụng kỹ thuật xây dựng MT theo kỹ thuật chương
trình con (Subroutines):
Trước khi xây dựng MT, chúng ta hãy tìm thủ tục để xử
lý dãy aabbcc Sau khi xử lý xong, chúng ta muốn MT ở hiện trạng BBBBBBq7 Thủ tục đó được thực hiện như sau:
1. Từ trạng thái khởi đầu q1, đầu R/W đọc và thay a bằng
B, chuyển dịch sang phải, đồng thời chuyển sang q2
Trong trạng thái q2 nếu ký tự ở đầu R/W là a thì nó
chuyển sang phải
2. Đọc ký tự b trái nhất, đầu R/W đọc và thay b bằng B,
chuyển dịch sang phải, đồng thời trạng thái chuyển sang
q3 Trong trạng thái q3 nếu ký tự ở đầu R/W là b thì nó chuyển sang phải.
Trang 27Bài tập 8.3.1
tự ở đầu R/W là c thì nó chuyển sang phải
đến khi gặp a trái nhất
bằng B
Dãy tính toán của MT để xử lý aabbcc là:
q1aabbcc Bqaabbcc Bq⊢xq⊢xq 2abbcc Baqabbcc Baq⊢xq⊢xq 2bbcc BaBqbbcc BaBq⊢xq⊢xq 3bcc BaBbqbcc BaBbq⊢xq⊢xq 3cc
Trang 29Bài tập 8.3.1
Câu c:
Nếu xét dạng cơ bản của máy Turing thì rất phức tạp bởi vì đầu đọc sẽ dịch chuyển liên tục và đồng thời sẽ không nhớ được ký tự đang xét Cho nên trong trường hợp thiết kế máy Turing để đón nhận L trên thì ở đây nên dùng
cả hai kỹ thuật kết hợp :
- Nhiều rãnh trên băng.
- Đánh dấu ký hiệu.
w (0,1)} với các thành phần như sau :
phần thứ hai của các trạng thái dùng để lưu trữ ký hiệu nhập)
= {L, R, [qB, d] d = 0, 1} (ký hiệu nhập [qB, d] được xác định bởi d)
= {L, R, [qX, d] X = B hoặc ; d = 0, 1 hoặc B}.
q 0 = [qq 1 , B]
B = [qB, B] được định nghĩa là B, ký hiệu Blank
Trang 32Ví dụ : Xây dựng TM M(Q, , , , q0, B, F) dịch toàn bộ các ký hiệu không trống trên băng sang phải 2 ô
Ta giả sử không có Blank giữa các ký hiệu không trống, vì vậy khi đầu đọc gặp Blank thì nó đã dịch xong các ký hiệu khác trống trên băng Tập các trạng thái Q chứa các phần tử dạng [qq, A1, A2] với q = q1 hoặc
q2 và A1, A2 Gọi X là một ký hiệu đặc biệt được chấp nhận trên băng của M, nó không được sử dụng với mục đích nào khác ngoài
Trang 33M chuyển ký hiệu ở thành phần thứ 3 sang thành phần thứ 2, lưu trữ
ký hiệu đọc được vào thành phần thứ 3, viết X vào ô đang đọc rồi dịch sang phải
3) ([qq1, A1, A2], A3) = ([qq1, A2, A3], A1, R)
Bắt đầu từ bước chuyển này, M lần lượt đọc vào một ký hiệu, ghi nó vào thành phần thứ 3, chuyển ký hiệu được ghi trước đó ở thành phần thứ 3 sang thành phần thứ 2, chép lại ký hiệu ở thành phần thứ
2 vào ô đang đọc rồi dịch sang phải
Trang 34về đầu băng) để thực hiện một chức năng khác.
Trang 35KẾT LUẬN
-TM khác với một ôtômát hữu hạn ở chỗ đầu đọc-viết có thể dịch chuyển tự
do trên băng, không những đọc mà còn có khả năng viết trên băng và vùng làm việc còn có thể mở rộng theo yêu cầu phát sinh TM khác với ôtômát đẩy xuống ở chỗ nó không dùng thêm Stack như một bộ giữ nhớ mà viết các ký hiệu cần ghi nhớ ngay trên băng
-Việc áp dụng các kỹ thuật xây dựng máy Turing mang lại những hiệu quả nhất định trong việc thiết kế máy Turing để đoán nhận ngôn ngữ : Giảm trạng thái chuyển so với mô hình máy Turing cơ bản
-Ứng dụng của các kỹ thuật thiết kế máy Turing đã nêu ở trên có thể xây dựng các máy Turing khác như :
+ Máy Turing với băng vô hạn hai chiều
+ Máy Turing với nhiều băng vô hạn hai chiều
+ Máy Turing không đơn định
+ Máy Turing nhiều chiều