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 introduction to automata theory, languages, and computation

18 507 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 18
Dung lượng 311 KB

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

Nội dung

CHƯƠNG INHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC Khi đề cập đến máy Turing, ta thường quan tâm đến các lớp ngôn ngữ đơn giản và những cách đơn giản được sử dụng trong giải quyết các vấn đề như

Trang 1

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA



TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN

(Introduction to Automata Theory, Languages, and Computation)

GVHD: PGS.TS PHAN HUY KHÁNH

Nhóm thực hiện: 1.Nguyễn Văn Định

2 Hồ Trúc Lâm

3 Đoàn Xuân Lộc Lớp : Khoa học máy tính –khóa 24

ĐÀ NẴNG 05/2012

Trang 2

LỜI MỞ ĐẦU

Con người có thể chế tạo ra một loại máy tính nào đó có hiểu được con người và thông minh như người hay không? Với thế hệ máy tính ngày nay có thể hiểu được như bộ não của người không? Tìm hiểu chính bản thân mình – đó là niềm khát khao của loài người trong suốt quá trình phát triển Những thành tựu khoa học vang dội gần đây như nhân bản vô tính, giải mã bộ gen người,… phần nào tạo nên ấn tượng con người sắp đạt đến chỗ hiểu được chính mình Như vậy, con người đang đứng trước một câu hỏi lớn: liệu có thể chế tạo ra các máy tính thông minh được không? tức là sẽ có hay không các máy tính biết tư duy như con người?

Công trình của A Turing (1912-1954), nhà toán học người Anh, cũng nằm trong hướng nghiên cứu vấn đề hình thức hoá toán học (theo tinh thần bài toán mà Hilbert đặt ra năm 1928 tại Hội nghị Toán học thế giới) Turing chứng minh rằng, mọi quá trình tính toán tổng quát có thể thực hiện được bởi một

“máy” Máy này gồm có một cuộn băng độ dài vô hạn với các ô vuông, một thiết bị có hữu hạn trạng thái dùng để đọc các kí hiệu trên cuộn băng Dựa trên

kí hiệu ở cuộn băng và trạng thái của thiết bị tại thời điểm hiện tại, máy sẽ thay

kí hiệu đang có trên cuộn băng bởi một kí hiệu khác, đồng thời đổi trạng thái của thiết bị Thiết bị đọc kí hiệu có thể dịch chuyển về bên phải và bên trái.

Trong phạm vi của báo cáo môn học này chúng em xin phép được trình bày một phần rất nhỏ trong việc cấu tạo ra các máy Turing và tổ hợp chúng lại

để thực hiện những mục đích cụ thể Chức năng chính của các máy Turing trong phần này thể hiện trên việc đoán nhận và chấp nhận một ngôn ngữ Trên cơ sở những định nghĩa về ngôn ngữ đệ quy và liệt kê đệ quy để tìm hiểu các tính chất của ngôn ngữ hình thức và tính bất biến của các tính chất đó Đề tài gồm có những nội dung chính:

Trang 3

Chương 1 Những bài toán không thể giải được

Chương 2: Dịch chương 9.1( giáo trình Introduction to Automata Theory, Languages, and Computation)

Chương 3 Bài tập chương 9.1( giáo trình Introduction to Automata Theory, Languages, and Computation)

Qua những phần trên cung cấp cho chúng ta những thông tin về phương diện nhận dạng ngôn ngữ của các máy Turing, khả năng thiết kế các máy Turing chấp nhận ngôn ngữ tổ hợp Tuy việc diễn đạt nội dung chính xác, rõ ràng nhưng vẫn còn hạn chế là phạm vi còn nhỏ hẹp Chúng em mong muốn có những điều kiện tốt hơn để nâng cao chất lượng đề tài.

Trên những cơ sở lý thuyết được học và các tài liệu tham khảo, với sự hợp tác làm việc chuyên cần của các thành viên trong nhóm, chúng em xin được báo cáo công việc đã thực hiện được Kính mong được sự góp ý chân thành của quý thầy và các anh chị học viên trong lớp Chúng em xin chân thành cảm ơn sự

chỉ bảo tận tình của PGS.TS Phan Huy Khánh , và các bạn đã giúp chúng em

hoàn thành báo cáo này.

Hồ Trúc Lâm Đoàn Xuân Lộc

Trang 4

Chương I,Chương II và Chương III được thực hiện trên nền tảng lý

thuyết của cuốn sách " Introduction to Automata Theory, Languages, and Computation " của John C Martin và tham khảo theo lý thuyết của tài liệu

"Lý thuyết tính toán" của PGS TS Phan Huy Khánh.

BẢNG PHÂN CÔNG THỰC HIỆN CÔNG VIỆC TIỂU LUẬN

1 Nguyễn Văn Định Dịch chương 2, phân

việc và tổng hợp

4 Nguyễn Văn Định, Hồ Trúc

Lâm, Đoàn Xuân Lộc

Dịch và giải bài tập

Trang 5

MỤC LỤC

LỜI MỞ ĐẦU 2

MỤC LỤC 5

CHƯƠNG I 6

NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC 6

I CÁC VẤN ĐỀ KHÔNG THỂ GIẢI ĐƯỢC TRÊN MÁY TÍNH 6

II CÁC CHƯƠNG TRÌNH IN “Hello, World” 7

III KẾT LUẬN 8

CHƯƠNG II –DỊCH CHƯƠNG 9.1 9

NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC LIÊN QUAN ĐẾN MÁY TURING 9

I MỘT NGÔN NGỮ KHÔNG THỂ LÀ LIỆT KÊ ĐỆ QUI 9

1 Liệt kê các chuỗi nhị phân 10

2 Tìm các mã cho máy Turing 10

3 Ngôn ngữ chéo hóa 12

4 Chứng minh rằng Ld không là liệt kê đệ qui 13

CHƯƠNG II –BÀI TẬP 15

Tài liệu tham khảo 18

Trang 6

CHƯƠNG I

NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC

Khi đề cập đến máy Turing, ta thường quan tâm đến các lớp ngôn ngữ đơn giản và những cách đơn giản được sử dụng trong giải quyết các vấn đề như: phân tích giao thức, tìm kiếm văn bản hoặc các chương trình phân tích văn

phạm… Trong phần trình bày này, nhóm em sẽ trình bày vấn đề “những ngôn

ngữ nào sẽ không thể giải bằng thiết bị tính toán”, vấn đề này tương đương với

câu hỏi “máy tính có thể làm được những gì?”, việc nhận dạng văn bản trong 1 ngôn ngữ là cách diễn đạt vấn đề này một cách tốt nhất

Ta bắt đầu với một vấn đề sau, bằng cách sử dụng ngôn ngữ lập trình C,

để chỉ ra rằng có một số vấn đề máy tính không thể giải được – đó là những vấn

đề được gọi là “không thể quyết định” hoặc "không thể giải được"

I CÁC VẤN ĐỀ KHÔNG THỂ GIẢI ĐƯỢC TRÊN MÁY TÍNH

Mục đích của phần này là cung cấp 1 ví dụ được viết dựa trên ngôn ngữ C

để chứng minh có những vấn đề mà máy tính không thể giải quyết Đó là đoạn chương trình C in ra dòng “Hello, World”, ở đây ta không quan tâm đến thời gian giải quyết vấn đề mà ta quan tâm đến chương trình đã làm những gì

Trang 7

II CÁC CHƯƠNG TRÌNH IN “Hello, World”

Ta xét 2 đoạn chương trình sau:

Ta có nhận xét:

- Đoạn chương trình 1 sẽ in ra dòng “Hello, World” và dừng

- Đoạn chương trình 2 cũng là một chương trình in ra “Hello, World” nhưng nó cho phép nhập vào số n, sau đó nó sẽ tìm 3 số nguyên dương thỏa mãn điều kiện:

Trang 8

Nếu tìm thấy đoạn chương trình sẽ in ra “Hello, World”, nếu không thì nó

sẽ tiếp tục tìm và không bao giờ in ra “Hello, World” (trong đó hàm exp(int i,n)

là hàm tính in) Qua thực nghiệm, nếu n=2 thì sẽ tìm được các tổ hợp x, y, z thỏa mãn điều kiện

Ví dụ:

- Khi total = 12 thì ta sẽ có x = 3, y = 4 và z = 5

- Do vậy, khi n = 2 đoạn chương trình sẽ in ra “Hello, World”

- Tuy nhiên với n > 2 thì đoạn chương trình sẽ không tìm thấy 3 số nguyên dương thỏa điều kiện trên nên sẽ không bao giờ in ra “Hello, World”

III KẾT LUẬN

Có một số vấn đề mà toán học không thể giải được Dạng bài toán này sẽ được đưa về dạng: “ Có chương trình P, với nhập liệu I cho chương trình P Với giá trị I, chương trình P có giải bài toán được không?” Vậy tại sao vấn đề

“không thể giải được" tồn tại? Chính là do trong thực tế có rất nhiều vấn đề vô hạn trong khi đó con người lại biết rất ít chương trình giải quyết các vấn đề vô hạn

Trang 9

CHƯƠNG II –DỊCH CHƯƠNG 9.1

NHỮNG BÀI TOÁN KHÔNG THỂ GIẢI ĐƯỢC LIÊN QUAN ĐẾN MÁY TURING

Như ta đã biết, các bài toán không thể giải được là do các giới hạn trong thực tế Tuy nhiên những giới hạn này, như không gian địa chỉ của bộ nhớ, không phải là các giới hạn không thể vượt qua do khoa học công nghệ tiến bộ rất nhanh (Đối với máy Turing, các giới hạn này không còn tồn tại)

Cho đến nay, câu hỏi: “Liệu máy Turing có chấp nhận hết các dữ liệu nhập?” vẫn còn tồn tại Để trả lời cho câu hỏi này, ta chia các vấn đề máy Turing có thể giải được thành 2 lớp:

- Lớp các vấn đề có giải thuật (máy Turing sẽ dừng bất kể có chấp nhận hay không chấp nhận dữ liệu đó)

- Lớp các vấn đề có thể giải được bằng máy Turing, nhưng máy Turing không dừng

Lớp thứ 2 được chấp nhận (bởi vì ta không quan tâm đến thời gian máy Turing chạy) là 1 nghi ngờ vì ta không thể biết liệu dữ liệu có được chấp nhận hay không? Nên vấn đề ở đây là: với các bài toán không thể giải được liệu máy Turing có chấp nhận không?

I MỘT NGÔN NGỮ KHÔNG THỂ LÀ LIỆT KÊ ĐỆ QUI

Như ta đã biết, một ngôn ngữ L được xem là có thể liệt kê đệ qui (RE) nếu L = L(M), M là máy Turing Mục tiêu lâu dài là chứng minh ngôn ngữ chứa các cặp (M,w) là không thể giải được, với:

- M là máy Turing (mã nhị phân) với chuỗi nhập là các ký tự {0 và 1}

- w là chuỗi gồm các số 0 và 1

- M chấp nhận w

Trang 10

Như vậy, nếu với dữ liệu nhập là chuỗi số nhị phân mà không thể giải được thì chắc chắn các vấn đề tổng quát hơn sẽ không thể giải được

* Bước đầu tiên là: chuyển câu hỏi này thành câu hỏi quan hệ trong một

ngôn ngữ cụ thể Do vậy, ta phải đưa ra một bộ mã gồm các số 0 và 1 cho máy Turing mà không quan tâm đến số trạng thái Một khi ta có bộ mã này, thì các chuỗi nhị phân được xem như các máy Turing Nếu chuỗi không thể biểu diễn được, thì xem như máy Turing không có di chuyển

language), bao gồm các chuỗi w mà máy Turing không chấp nhận Ở đây, ngôn ngữ Ld đóng vai trò tương đương như chương trình hello, world trong ngôn ngữ

C đã đề cập ở trên, chính xác hơn là ngôn ngữ Ld không được chấp nhận bởi máy Turing

1 Liệt kê các chuỗi nhị phân

Ta sẽ gán mỗi chuỗi nhị phân tương ứng với một số nguyên Nếu w là một chuỗi nhị phân, thì wi cũng được xem như một số nhị phân i, và ta gọi chuỗi w là chuỗi thứ i Nghĩa là, chuỗi rỗng là chuỗi đầu tiên, 0 là chuỗi thứ 2, 1

là chuỗi thứ 3, 00 là chuỗi thứ 4, 01 là chuỗi thứ 5… Điều này tương ứng với các chuỗi được xếp thứ tự theo chiều dài, những chuỗi có chiều dài bằng nhau sẽ

có thứ tự liền kề nhau Ta ký hiệu chuỗi thứ i là wi

2 Tìm các mã cho máy Turing

Mục tiêu của phần này là đưa ra mã nhị phân cho máy Turing sao cho mỗi máy Turing với dữ liệu nhập là các chuỗi gồm các số {0, 1} được xem như là một chuỗi nhị phân Do ta đã biết cách liệt kê các chuỗi nhị phân, nên ta sẽ định danh máy Turing theo các số như: máy Turing thứ i là Mi Để biểu diễn máy Turing M=(Q,{0,1},Γ,δ,q1,B,F)) như một chuỗi nhị phân, đầu tiên ta gán các số nguyên cho các trạng thái, cho các ký hiệu băng và các hướng trái (L) và phải (R)

Trang 11

- Giả sử có các trạng thái là q1, q2,…, qr với r bất kỳ Trạng thái bắt đầu luôn luôn là q1 và q2, và chúng chỉ là trạng thái nhận (không phải là trạng thái chuyển tiếp) Chú ý rằng, do ta giả sử máy Turing dừng bất cứ khi nào nó gặp trạng thái nhận nên không cần nhiều trạng thái nhận

- Giả sử các băng là X1, X2, …, Xs với s bất kỳ X1 là băng 0, X2 là băng 1

và X3 là băng B (băng rỗng), các băng khác được gán cho các Xi còn lại

- Hướng L là D1, Hướng R là D2

Do mỗi máy Turing M có các số nguyên được gán cho các trạng thái và các băng theo các trật tự khác nhau nên sẽ có nhiều hơn một bộ mã cho máy Turing Tuy nhiên, điều này không quan trọng bởi vì ta chỉ cần đưa ra không có

mã nào có thể biểu diễn máy Turing M để:

L(M)=Ld Một khi đã thiết lập một số nguyên biểu diễn cho một trạng thái, một băng

và một hướng, ta có thể mã hoá thành hàm chuyển đổi δ Giả sử rằng một luật chuyển đổi là δ(qi,Xj)=(qk,Xl,Dm) với i, j, k, l và m là các số nguyên Ta sẽ mã hóa luật này bằng chuỗi 0i10j10k10l10m, chú ý rằng do tối thiểu phải có một bộ các i, j, k, l và m nên sẽ không xảy ra tình trạng các số 1 liên tiếp nhau trong bộ

mã khi thực hiện một chuyển đổi đơn

Một mã cho máy Turing tổng quát M sẽ chứa tất cả các mã cho các sự chuyển đổi và chúng được ngăn cách nhau bởi cặp số 11:

C111C211… Cn-111Cn

Với mỗi Ci là mã cho một chuyển đổi của máy Turing M.

Ví dụ 9.1: TM trong câu hỏi là

M = ({ql, q2, q3}, {O, 1} {O, 1, B}, 6, khí, B, {q2})

nơi 6 bao gồm các quy tắc:

δ (qi, 1) = (q3, O, R)

Trang 12

δ (q3, 1) = (q2, 0, R)

δ (q3, B) = (q3, 1, L)

Các mã tương ứng, cho mỗi người trong số các quy tắc này, là:

0100100010100

0001010100100

00010010010100

0001000100010010

Ví dụ, quy tắc đầu tiên có thể được viết là δ (qi, X2) = (q3, X, D2), kể từ khi

1 = X2, 0 = X1, và R D2 = Do đó, mã của nó là 01102103101102,

chỉ ra ở trên Một mã cho M là:

Lưu ý rằng có rất nhiều mã khác có thể cho M Đặc biệt, các mã

cho quá trình chuyển đổi có thể được liệt kê trong bất kỳ của 4! đơn đặt hàng, cho chúng tôi 24 mã cho M

3 Ngôn ngữ chéo hóa

Trong mục 1 ta đã mã hóa các máy Turing theo cách: máy Turing M nào

có mã hóa là wi thì sẽ tương ứng với chuỗi thứ i Có nhiều số nguyên không tương ứng với máy Turing nào, ví dụ như: 11001 không bắt đầu bằng số 0 hoặc

001011101 là không hợp lệ bởi vì nó có 3 số 1 liên tiếp nhau… Nếu wi không là

mã hợp lệ cho máy Turing thì xem như máy Turing Mi có một trạng thái và không có chuyển đổi Điều này có nghĩa là máy sẽ dừng với bất kể nhập liệu nào Do vậy L(Mi) = φ nếu wi không là mã hợp lệ cho máy Turing

L(Mi) (các wi không là mã hợp lệ cho máy Turing)

Lý do Ld được gọi là ngôn ngữ chéo là do hình sau:

Trang 13

Hình 1 Bảng biểu diễn các chuỗi được chấp nhận bởi máy Turing

Hình 1 cho biết máy Turing Mi có chấp nhận nhập liệu wj hay không? 1 là chấp nhận, 0 là không chấp nhận Các giá trị ở đường chéo cho chúng ta biết Turing Mi có chấp nhận nhập liệu wi hay không? Để xây dựng Ld chúng ta sẽ lấy phần bù của đường chéo này, lúc này Ld chỉ chứa w1 mà không chứa các w2,…

Theo như quan sát của hình trên, ta sẽ chứng minh rằng: Không máy Turing nào chấp nhận ngôn ngữ Ld

tập hợp các số 0 và 1 do vậy M sẽ là một danh sách các máy Turing Như vậy, sẽ

có ít nhất một mã mà M=Mi (với i bất kỳ) Ta sẽ kiểm tra liệu wi có nằm trong

Ld hay không:

- Nếu wi thuộc Ld thì Mi sẽ chấp nhận wi Nhưng theo định nghĩa của Ld,

wi không thuộc Ld bởi vì Ld chỉ chứa các wj không được chấp nhận bởi máy Turing

- Tương tự nếu wi không thuộc Ld thì Mi không chấp nhận wi Do định nghĩa của Ld thì wi thuộc Ld

Do wi không thể vừa thuộc Ld và vừa là không thuộc Ld nên ta kết luận rằng: Điều này mâu thuẫn với giả thiết tồn tại máy M Vì vậy, Ld không là ngôn

Trang 14

* Định lý II.1: Ld không là một ngôn ngữ liệt kê đệ qui Có nghĩa là không

có máy Turing nào chấp nhận ngôn ngữ Ld.

Trang 15

CHƯƠNG II –BÀI TẬP

Bài tập 9.1.1: Sâu chuỗi gì đây:

* a) w37?

b) w00?

Bài tập 9.1.2: Viết một mã số có thể cho máy Turing Hình 8.9.

Bài tập 9.1.3: Đây là hai định nghĩa của ngôn ngữ tương tự như các định nghĩa

của Ld, từ ngôn ngữ khác nhau Đối với mỗi người, cho thấy

ngôn ngữ không được chấp nhận bởi một máy Turing, bằng cách sử dụng một

loại diagonalization đối số Lưu ý rằng bạn không thể phát triển một đối số dựa trên đường chéo chính nó, nhưng phải tìm một chuỗi vô hạn các điểm trong ma trận đề nghị Hình 9.1

* A) tập hợp của tất cả các w w không được chấp nhận bởi M21

b) Các thiết lập của tất cả các w rằng W21 không được chấp nhận bởi M,

Bài tập 9.1.4: Chúng tôi đã xem xét chỉ Turing máy có đầu vào

bảng chữ cái {O, 1} Giả sử chúng ta muốn chỉ định một số nguyên cho tất cả các máy Turing, bất kể cái trong bảng chữ cái đầu vào của họ Đó không phải là hoàn toàn có thể bởi vì,trong khi tên của các bang hoặc biểu tượng băng

noninput là tùy ý, phần đầu vào biểu tượng vật chất Ví dụ, các ngôn ngữ {On 1n | n>=1) và {an bn | n >=1}, trong khi tương tự như trong một nghĩa nào đó, không cùng một ngôn ngữ, và họ được chấp nhận bởi khác nhau TMA Tuy nhiên, giả

sử rằng chúng ta có một tập hợp vô hạn các biểu tượng, {ai, a2, .} mà từ đó tất

cả các bảng chữ cái TM đầu vào được lựa chọn Hiển thị làm thế nào chúng ta

có thể chỉ định một số nguyên cho tất cả các TM s có một tập hợp hữu hạn của

Trang 16

* Bài 9.3.4: Như chúng ta biết theo định lý của Rice thì các bài toán sau là

không thể giải được Tuy nhiên, chúng là đệ qui liệt kê (RE) hay không đệ qui liệt kê (non RE)?

a L(M) chứa ít nhất 2 chuỗi

b L(M) là vô hạn

c L(M) là ngôn ngữ phi ngữ cảnh

d L(M) = (L(M))R

* Bài giải:

a L(M) chứa ít nhất 2 chuỗi  L(M) không rỗng, hay là Lne, mà theo định

lý II.7 thì ngôn ngữ Lne là liệt kê đệ quy  L(M) liệt kê đệ quy

b L(M) là vô hạn:

Theo định nghĩa, L được gọi là liệt kê đệ quy nếu có một máy Turing T chấp nhận L Nói cách khác, với mọi w∈L thì T dừng và w sẽ được chấp nhận sau một số dịch chuyển hữu hạn Trong khi đó L(M) là vô hạn  T sẽ không dừng và cũng sẽ không cho biết có chấp nhận L(M) hay không  L(M) không phải là ngôn ngữ liệt kê đệ quy

c L(M) là ngôn ngữ phi ngữ cảnh:

Theo định nghĩa của ngôn ngữ phi ngữ cảnh: A α, với A∈N (tập hữu hạn ký hiệu không kết thúc, đây là một tập chưa rõ) và α∈V*, V* = N∪Σ (tập hữu hạn ký hiệu kết thúc, đây là một tập đã rõ) Như vậy, ngôn ngữ phi ngữ cảnh sẽ dừng sau một thời gian nào đó  có máy Turing chấp nhận nó  ngôn ngữ phi ngữ cảnh là ngôn ngữ liệt kê đệ quy

d L(M) = (L(M))R:

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

HÌNH ẢNH LIÊN QUAN

BẢNG PHÂN CÔNG THỰC HIỆN CÔNG VIỆC TIỂU LUẬN - tiểu luận môn lý thuyết tính toán introduction to automata theory, languages, and computation
BẢNG PHÂN CÔNG THỰC HIỆN CÔNG VIỆC TIỂU LUẬN (Trang 4)
Hình 1. Bảng biểu diễn các chuỗi được chấp nhận bởi máy Turing - tiểu luận môn lý thuyết tính toán introduction to automata theory, languages, and computation
Hình 1. Bảng biểu diễn các chuỗi được chấp nhận bởi máy Turing (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

🧩 Sản phẩm bạn có thể quan tâm

w