Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
311 KB
Nội dung
Tiểu luận môn Lý Thuyết Tính Toán ĐẠ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 Nhóm 6 Trang 1 ĐÀ NẴNG 05/2012 Tiểu luận môn Lý Thuyết Tính Toán 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: Nhóm 6 Trang 2 Tiểu luận môn Lý Thuyết Tính Toán 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. Nhóm thực hiện báo cáo: Nguyễn Văn Định Hồ Trúc Lâm Đoàn Xuân Lộc Nhóm 6 Trang 3 Tiểu luận môn Lý Thuyết Tính Toán 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 STT Họ và tên thành viên Công việc Mô tả 1 Nguyễn Văn Định Dịch chương 2, phân việc và tổng hợp 2 Hồ Trúc Lâm Dịch chương 2 3 Đoàn Xuân Lộc Dịch chương 1 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 Nhóm 6 Trang 4 Tiểu luận môn Lý Thuyết Tính Toán 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 Nhóm 6 Trang 5 Tiểu luận môn Lý Thuyết Tính Toán 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ì. Nhóm 6 Trang 6 Tiểu luận môn Lý Thuyết Tính Toán II. CÁC CHƯƠNG TRÌNH IN “Hello, World” Ta xét 2 đoạn chương trình sau: và 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: Nhóm 6 Trang 7 Tiểu luận môn Lý Thuyết Tính Toán 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 i n ). 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. Nhóm 6 Trang 8 Tiểu luận môn Lý Thuyết Tính Toán 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. Nhóm 6 Trang 9 Tiểu luận môn Lý Thuyết Tính Toán 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. * Bước kế tiếp: liên quan đến ngôn ngữ chéo hóa L d (diagonalization language), bao gồm các chuỗi w mà máy Turing không chấp nhận. Ở đây, ngôn ngữ L d đó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ữ L d 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ì w i 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à w i . 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à M i . Để biểu diễn máy Turing M=(Q,{0,1},Γ,δ,q 1 ,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). Nhóm 6 Trang 10 [...]... 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, L d không là ngôn ngữ liệt kê đệ qui Nhóm 6 Trang 13 Tiểu luận môn Lý Thuyết Tính To n * Đị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 Nhóm 6 Trang 14 Tiểu luận môn Lý Thuyết Tính To n CHƯƠNG II –BÀI TẬP Bài tập 9.1.1: Sâu chuỗi... nhận L(M) L(M) không là liệt kê đệ quy Nhóm 6 Trang 17 Tiểu luận môn Lý Thuyết Tính To n Tài liệu tham khảo [1] John C Martin, Introduction to languages and the theory of coputation, The McGraw-Hill Companies, Inc, 1997 [2] Phan Huy Khánh, Giáo trình lý thuyết ngôn ngữ hình thức và Ôtômat, Đà Nẵng, 1998 [3] TS Phan Huy Khánh, Lý thuyết tính to n, Đà Nẵng, 1999 Nhóm 6 Trang 18 ... Trang 15 Tiểu luận môn Lý Thuyết Tính To n * 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à L ne, mà theo định lý II.7... wi không là mã hợp lệ cho máy Turing * Định nghĩa: Ngôn ngữ chéo Ld là một tập các chuỗi wi không thuộc 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: Nhóm 6 Trang 12 Tiểu luận môn Lý Thuyết Tính To n 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à.. .Tiểu luận môn Lý Thuyết Tính To n - 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,... 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: Nhóm 6 Trang 16 Tiểu luận môn Lý Thuyết Tính To n Ta có thể phát biểu lại như sau: liệu máy Turing có chấp nhận ngôn ngữ bị đảo ngược không? Cho trước một máy Turing M, ta sẽ xây dựng một máy Turing không tiền định (nondeterministic)... 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) δ (q3, 0) = (q1, 1, R) Nhóm 6 Trang 11 Tiểu luận môn Lý Thuyết Tính To n δ (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... 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 . Tiểu luận môn Lý Thuyết Tính To n ĐẠ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) . Trang 3 Tiểu luận môn Lý Thuyết Tính To n 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. 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