CÁC NGÔN NGỮ ĐỆ QUY VÀ ĐỆ QUY LIỆT KÊ (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)

19 780 1
CÁC NGÔN NGỮ ĐỆ QUY VÀ ĐỆ QUY LIỆT KÊ (TIỂU LUẬN MÔN LÝ THUYẾT TÍNH TOÁN)

Đ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

MỤC LỤC MỤC LỤC 1 PHẦN 1: 2 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY 2 10.2 LIỆT KÊ MỘT NGÔN NGỮ 5 10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY 8 PHẦN 2: BÀI TẬP 16 PHẦN 3: TÀI LIỆU THAM KHẢO 19 PHẦN 1: PHẦN LÝ THUYẾT 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY Chương này chúng ta sẽ tập trung (to concentrate on) vào nhận dạng ngôn ngữ (languagerecognition), một khía cạnh của các máy Turing (TMs) và nghiên cứu chi tiết hơn về các ngôn ngữ có thể được chấp nhận nhờ máy Turing. Chúng ta bắt đầu bằng cách hình thức hóa sự khác biệt giữa thừa nhận (accepting) và nhận ra (recognizing) một ngôn ngữ. Định nghĩa 10.1. Cho L là một ngôn ngữ nào đó. Một máy Turing cùng bộ kí tự nhập được phát biểu là thừa nhận L nếu L(T) = L. Máy Turing T recognizes hoặc decides L nếu T tính được hàm bộ phận (characteristic function XL: . Mặt khác, T đón nhận L nếu T dừng với bất kì chuỗi x nào trong tập , kết quả trả về 1 nếu x L và ngược lại trả về là 0. Một ngôn ngữ L là liệt kê đệ quy (recursively enumerable) nếu có tồn tại một máy Turing T chấp nhận (accept) L và đệ quy nếu có một máy Turing nhận ra L. Mọi ngôn ngữ đệ quy cũng đều là liệt kê đệ quy nếu: T là một máy Turing nào đó nhận ra L thì khi đó một máy bổ sung sẽ crash thay vì trả về kết quả 0 chấp nhận L. Vậy là chúng ta đã nhận diện được vấn đề còn tồn đọng (potential) với hướng đi trái ngược nhau. Nếu T là một máy Turing chấp nhận L thì có thể có các chuỗi không nằm trong L mà T crashes và khi đó sẽ không bao giờ có được câu trả lời. Sau chương này chúng ta sẽ nghiên cứu (investigate) thêm các ngôn ngữ có khả năng không thể loại bỏ (khử) được. Còn bây giờ chúng ta hãy ghi nhận một phần (partial) kết quả mà chúng ta đã đề cập. Định lý 10.1 Nếu L được chấp nhận bởi một máy Turing T không xác định và mỗi bước di chuyển có thể của T cho ra kết quả hoặc là dừng hoặc là crash thì khi ấy L là đệ quy.

Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh ĐẠI HỌC ĐÀ NẴNG TRƯỜ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: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn Tiểu luận môn học LÝ THUYẾT TÍNH TOÁN Đề tài: CÁC NGÔN NGỮ ĐỆ QUY VÀ ĐỆ QUY LIỆT KÊ NHÓM HỌC VIÊN : - TRƯƠNG TIẾN DƯỠNG - NGUYỄN ĐÔNG KỲ - VÕ TRƯƠNG HOÀNG OANH - NGUYỄN THỊ UYÊN THẢO LỚP : Cao học khoá 12 (2009-2011) CBHD : PGS. TS PHAN HUY KHÁNH ĐÀ NẴNG, 05/2010 Trang - - 1 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh MỤC LỤC 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY 3 10.2 LIỆT KÊ MỘT NGÔN NGỮ 6 10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY 9 PHẦN 2: BÀI TẬP 17 PHẦN 3: TÀI LIỆU THAM KHẢO 19 Trang - - 2 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh PHẦN 1: PHẦN LÝ THUYẾT 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY Chương này chúng ta sẽ tập trung (to concentrate on) vào nhận dạng ngôn ngữ (language-recognition), một khía cạnh của các máy Turing (TMs) và nghiên cứu chi tiết hơn về các ngôn ngữ có thể được chấp nhận nhờ máy Turing. Chúng ta bắt đầu bằng cách hình thức hóa sự khác biệt giữa thừa nhận (accepting) và nhận ra (recognizing) một ngôn ngữ. Định nghĩa 10.1. Cho L ∑ ⊆ * là một ngôn ngữ nào đó. Một máy Turing cùng bộ kí tự nhập ∑ được phát biểu là thừa nhận L nếu L(T) = L. Máy Turing T recognizes hoặc decides L nếu T tính được hàm bộ phận (characteristic function X L : }{ 1,0 * → ∑ . Mặt khác, T đón nhận L nếu T dừng với bất kì chuỗi x nào trong tập ∑ * , kết quả trả về 1 nếu x ∈ L và ngược lại trả về là 0. Một ngôn ngữ L là liệt kê đệ quy (recursively enumerable) nếu có tồn tại một máy Turing T chấp nhận (accept) L và đệ quy nếu có một máy Turing nhận ra L. Mọi ngôn ngữ đệ quy cũng đều là liệt kê đệ quy nếu: T là một máy Turing nào đó nhận ra L thì khi đó một máy bổ sung sẽ crash thay vì trả về kết quả 0 chấp nhận L. Vậy là chúng ta đã nhận diện được vấn đề còn tồn đọng (potential) với hướng đi trái ngược nhau. Nếu T là một máy Turing chấp nhận L thì có thể có các chuỗi không nằm trong L mà T crashes và khi đó sẽ không bao giờ có được câu trả lời. Sau chương này chúng ta sẽ nghiên cứu (investigate) thêm các ngôn ngữ có khả năng không thể loại bỏ (khử) được. Còn bây giờ chúng ta hãy ghi nhận một phần (partial) kết quả mà chúng ta đã đề cập. Định lý 10.1 Nếu L được chấp nhận bởi một máy Turing T không xác định và mỗi bước di chuyển có thể của T cho ra kết quả hoặc là dừng hoặc là crash thì khi ấy L là đệ quy. Trang - - 3 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh Chứng minh: chúng ta xây dựng máy Turing T’ sao cho có một sự thay đổi của máy Turing T 2 trong phần chứng minh định lý 9.2. Trong trường hợp đó, T 2 tái tạo mỗi bước di chuyển hữu hạn có thể của T, máy T dừng lại nếu T tìm thấy bước mà gây cho T dừng, và ngược lại máy T sẽ lặp mãi mãi. Máy mà chúng ta cần bây giờ phải khác với hai dấu hiệu này. Trước tiên, nếu và khi T’ tìm thấy một bước di chuyển của T làm cho T dừng thì T sẽ tạo xuất ra 1∆ trên băng 1 trước khi máy T dừng. Thứ 2, sự thay đổi này mới quan trọng hơn. Nếu không có bước di chuyển nào gây cho T dừng thì T’ phải xác định một vài thời điểm và dừng lại với 0∆ trên băng 1. Nhớ lại chứng minh trong định lý 9.2, T 2 theo dõi các bước di chuyển bằng cách dùng một chuỗi các con số trên băng 2, số thứ i chỉ ra sự lựa chọn mà T 2 thực hiện tại bước thứ i. Rõ ràng nếu có một vài số nguyên n sao cho mọi chuỗi có thể của n số trình bày lại tuần tự các bước di chuyển mà dẫn đến crash, vì bất kì một chuỗi số nào dài hơn mà được bắt đầu bằng chuỗi có chiều dài n thì khi ấy chuỗi nhập sẽ không được chấp nhận. Định lý 10.2. Giả sử L 1 và L 2 là các ngôn ngữ liệt kê đệ quy trên ∑ , khi đó L 1 ∪ L 2 và L 1 ∩ L 2 cũng là ngôn ngữ liệt kê đệ quy. Chứng minh: Giả sử rằng T 1 = (Q 1 , ∑ , 1 Γ , q 1 , 1 δ ) và T 2 = ((Q 2 , ∑ , 2 Γ , q 2 , 2 δ ) là các máy Turing chấp nhận L 1 và L 2 . Chúng ta cần xây dựng các máy Turing chấp nhận L 1 ∪ L 2 và L 1 ∩ L 2 . Ý tưởng này giống như chứng minh trong định lý 3.4, khi đó chúng ta kết hợp Fas chấp nhận L 1 và L 2 để có được sự chấp nhận L 1 ∩ L 2 . Chúng ta gom (include in) tập các trạng thái các cặp trong Q 2 x Q 2 . Nên nhớ lại (recall) kỹ thuật này không làm việc với PDAs vì các ngăn xếp. Lý do để máy Turing thực hiện được ở đây là chúng ta thoải mái sử dụng 2 băng trong máy Turing. Chúng ta mô tả giải pháp này cho L 1 ∪ L 2 . Máy Turing 2 băng (two – tape) T = (Q 1 , ∑ , Γ , q 0 , δ ) bắt đầu bằng việc sao chép chuỗi nhập x trên băng 2 và chèn một dấu # để đánh dấu lúc bắt đầu trên mỗi băng. Mô phỏng đồng thời (the simultaneous simulation) máy Turing T 1 trên băng 1 và máy Turing T 2 trên băng 2 thực hiện (to accomplish) bằng cách cho phép các bước di chuyển có thể: Trang - - 4 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh δ ((p 1 ,p 2 ), (a 1 ,a 2 ))=((q 1 ,q 2 ), (b 1 ,b 2 ), (D 1 ,D 2 )) Trong đó: cả hai giá trị của i, i δ (p i , a i ) = (q i , b i , D i ). Các kết quả mô phỏng này có thể là: 1. Cả T 1 và T 2 đều dừng lại trong trường hợp T không bao giờ dừng. 2. Ít nhất một trong hai máy T 1 và T 2 dừng trong trường hợp T dừng 3. Một trong hai máy crash. Nếu cả hai máy crash đồng thời thì T crash. Nếu một máy crash, T cũng bỏ qua mô phỏng này (ví dụ như là bỏ qua băng đó) và tiếp tục với máy khác. Nếu một máy dừng lại do hoặc là crash hoặc là dừng, thì T cũng dừng theo cách đó. Việc xây dựng gây cho T dừng khi và chỉ khi có ít nhất một trong hay máy T 1 và T 2 dừng, có thể bao gồm trường hợp T chấp nhận ngôn ngữ L 1 ∪ L 2 . Ngôn ngữ L 1 ∩ L 2 cũng được xử lý theo cách tương tự, chấp nhận máy Turing có thể crash ngay khi hoặc T 1 crach hoặc là T 2 crash và máy Turing có thể chỉ dừng sau khi cả T 1 và T 2 đã dừng. Giao và hội cũng là thuộc tính riêng của đệ quy. Đối với các ngôn ngữ đệ quy, chúng ta có thể thêm phép tính bù cho danh sách này cũng được. (as well) Định lý 10.3. If L is recurse, so is L’ Chứng minh: Nếu T là máy Turing chấp nhận L, chúng ta có thể tạo ra máy Turing đón nhận L’ bằng sự thay đổi 2 băng xuất. Chứng minh đơn giản này không thích hợp trong (to adapt) bất cứ trường hợp nào rõ ràng trong các ngôn ngữ liệt kê đệ quy. It does not immediatetly follow that the coresponding statement for RE languages is false (although it is); howerver, the next result suggests that it is at least less likely to be true. Định lý 10.4 Nếu L là ngôn ngữ liệt kê đệ quy whose complement is RE thì L là đệ quy. Trang - - 5 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh Chứng minh: Cho T1 và T2 là các máy Turing chấp nhận ngôn ngữ L và L’. Chúng ta xây dựng một máy Turing T hai băng dùng để đón nhận L, bắt đầu việc xây dựng như trong chứng minh định lý 10.2 cho trường hợp hợp của 2 ngôn ngữ. Sự khác nhau ở chỗ là bây giờ chúng ta biết trước (in advance) được bất cứ chuỗi nhập x nào, rõ ràng (precisely) là một trong 2 máy Turing T1 và T2 sẽ dừng lại. Do đó, có đủ khả năng để hiệu chỉnh máy T như sau: Lúc T1 hoặc T2 dừng, T sẽ xóa bỏ trên băng 1 và xuất ra 0 hoặc 1 trước khi dừng, điều này tùy thuộc vào máy dừng chấp nhận L hoặc L’ hay không. 10.2 LIỆT KÊ MỘT NGÔN NGỮ Chúng ta bắt đầu bằng việc mô tả một cách chính xác cách mà một máy Turing liệt kê 1 ngôn ngữ. Điều này có ích khi sử dụng máy Turing có ít nhất hai băng, trong đó một băng được thiết kế như là băng xuất. Định nghĩa 10.2 Cho T là máy Turing k băng, trong đó k >= 2, và cho L ∑ ⊆ * . Chúng ta nói rằng T liệt kê L nếu T hoạt động sao cho các điều kiện sau được thỏa mãn: 1. Băng đầu trên băng đầu tiên không được dịch chuyển sang trái 2. Tại mỗi một thời điểm trong hoạt động của T, băng 1 chứa: x 1 #x 2 # #x n # y , trong đó n ≥ 0, mỗi x i , x i ’ là phân biệt nhau, và y là một tiếp đầu ngữ của phần tử L. 3. Với mọi x ∈ L, x xuất hiện nhưng là một chuỗi x i trên băng 1. Nếu L là một ngôn ngữ hữu hạn, máy Turring theo định nghĩa có thể hoặc là dừng khi tất cả các phần tử L xuất hiện trên băng 1 hoặc là máy Turing tiếp tục thực hiện việc di chuyển mà không cần phải in ra những chuỗi khác trên băng 1. Nếu L là vô hạn, máy T tiếp tục di chuyển mãi mãi. Định nghĩa này rõ ràng là cách thích hợp để hiện thực (to formulate) ý tưởng của máy T là “liệt kê các phần tử của L”. Như chúng ta đã định nghĩa, một ngôn ngữ là liệt kê đệ quy nếu có thể được chấp nhận bởi một số máy Turing. Trang - - 6 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh Mặc khác, nếu chúng ta có một máy Turing T dùng để liệt kê L thì khi đó cho trước một chuỗi nhập x, chúng ta có thể thử (to attempt) kiểm tra xem x đối với phần tử trong L bằng cách chờ xem (waiting to see) x có xuất hiện trên băng xuất của T hay không. Máy Turing T 1 có thực hiện chiến lược này bảo đảm (guarantee) chấp nhận L vì nếu chuỗi x nằm trong L thì cuối cùng x cũng sẽ xuất hiện, còn nếu x không nằm trong L thì x sẽ không xuất hiện (vì thế máy Turing sẽ lặp mãi trừ phi L là hữu hạn) Mặc khác, nếu T là một máy Turing chấp nhận L thì khi đó liệt kê L, chúng ta bắt đầu bằng một vài thứ tự chuẩn của tất cả các chuỗi nằm trong ∑ * , chẳng hạn như thứ tự kinh điển (canonical order) đã được giới thiệu trong phần 9.6. Trong thứ tự này, những chuỗi nào ngắn hơn đến trước (to precede) những chuỗi dài hơn, đồng thời những chuỗi nào có cùng độ dài thì được xếp theo thứ tự alphabe. Chúng ta xét tất cả các chuỗi theo thứ tự này, đồng thời với mỗi chuỗi x chúng ta thử chọn kể cả x trong việc liệt kê của chúng ta. Đây là chỗ mà lý luận cần phức tạp một chút: máy T có thể lặp mãi trên chuỗi nhập x. Chứng minh chính thức của chúng ta có thể sẽ vận dụng (handle) vấn đề này. Định lý 10.5 Một ngôn ngữ L ⊆ ∑ * là liệt kê đệ quy (có thể được chấp nhận bởi một số mát Turing) khi và chỉ khi L có thể được liệt kê bởi một số máy Turing. Chứng minh: Giả sử T là một máy Turing liệt kê L. Một máy T 1 chấp nhận L được xây dựng có hơn 1 băng, băng 1 là băng thêm vào ( tape 1 being the extra tape) có vai trò như là băng xuất. Máy Turing T 1 mô phỏng (simulate) T chấp nhận bất cứ lúc nào dấu # được ghi trên băng 2, mô phỏng máy T dừng khi T 1 đối sánh chuỗi nhập với chuỗi đã được liệt kê phía trước dấu #. Nếu hai chuỗi kết hợp giống nhau thì T 1 dừng. Rõ ràng là T 1 chấp nhận một cách chính xác các chuỗi đã được tạo ra trên băng 2, giả định là các phần tử của L. Chính xác hơn, T 1 có thể kết hợp với các chuyển tiếp của T , xét các băng khác trừ băng 1 của máy T bằng sự thay đổi như sau: mỗi một chuyển tiếp đòi hỏi phải (involve) ghi dấu # trên băng 2 được thay thế bởi tuần tự các chuyển tiếp trong đó các băng ngoại trừ băng 1 và băng 2 được bỏ qua, chuỗi Trang - - 7 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh nhập được so với chuỗi ngay trước dấu # trên băng 2, và nếu không kết hợp T 1 quay trở lại tình trạng mà dẫn đến kết quả từ chuyển tiếp ban đầu. Theo hướng ngược lại (in the converse direction), giả sử T chấp nhận L. Chúng ta xây dựng một máy Turing T 1 ba băng liệt kê ngôn ngữ L. Băng 1 là băng xuất, băng 2 được dùng bởi T 1 để tạo ra các chuỗi trong tập ∑ * và băng 3 là băng T 1 sử dụng để mô phỏng hành động của T trên mỗi chuỗi được tạo. Để tránh khó khăn được thảo luận ở trước, T 1 mô phỏng tuần tự hữu hạn các bước chuyển động của T hơn là cố tiếp tục hoàn thành việc xử lý T trên một chuỗi đơn . Vì lý do này trên băng 2 không chỉ lưu lại các chuỗi được tạo ra cho đến bây giờ (so far) mà số lượng các bước di chuyển của T cũng được thực hiện trên mỗi chuỗi đó. Chúng ta chọn (adopt) thứ tự trên ∑ * . Lấy ví dụ nếu ∑ ={a,b} thì các chuỗi được tạo ra theo thứ tự sẽ là : ∧ , a, b, aa, ab, ba, bb, aaa, aab, …, bbb, aaaa, aaab,… Máy Turing T 1 tạo một dãy các vị trí (pass). Với vị trí đầu tiên, T 1 tạo ra chuỗi ∧ đồng thời mô phỏng một bước di chuyển của T trên chuỗi nhập đó. Ở vị trí thứ 2, T 1 mô phỏng hai bước di chuyển của T trên chuỗi nhập ∧ , rồi tạo ra a đồng thời mô phỏng một bước di chuyển trên chuỗi nhập đó. Trên vị trí thứ ba, T 1 tạo ra 3 bước di chuyển trên ∧ , 2 bước di chuyển trên a và một bước di chuyển trên b. Sau khi vị trí i hoàn thành, băng 2 sẽ trông giống như thế này : 1 1 111 111 11 ∆∆∆∆∆∆∆∆∆ xba Trong đó x là chuỗi thứ i theo thứ tự. Suốt các vị trí tiếp theo T 1 xử lý mỗi chuỗi thứ i trên băng 2 bằng cách thêm vào một số 1 đằng sau chuỗi ∆ , sao chép chuỗi này vào trên băng thứ 3, mô phỏng T trên chuỗi nhập đó cho các bước được chỉ định, đồng thời xóa băng 3. Nếu mô phỏng dừng, T 1 sao chép chuỗi này trên băng 1 và theo sau chuỗi này là dấu #. Bước cuối cùng tại Trang - - 8 i i - 1 i - 2 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh vị trí này là để kết thúc băng 2 phần tử tiếp theo của ∑ * (phần tử này đứng sau x), đặt một chữ 1 sau x đồng thời mô phỏng bước di chuyển của T trên chuỗi nhập đó. Chúng ta không chỉ ra một cách rõ ràng (explicitly) các thiết bị theo dõi mà T cần để thực hiện những bước này, tuy nhiên các bước này hoàn toàn dễ hiểu (straightforward). Rõ ràng mọi chuỗi đều được chấp nhận bởi máy T ngay cả chuỗi được liệt kê trên băng 1 và không có chuỗi được liệt kê. Trong phần chứng minh định lý 10.5, chúng ta nên lưu ý rằng mặc dầu những chuỗi trong ∑ * được tạo theo thứ tự cổ điển trên băng 2, nói chung các chuỗi trong ngôn ngữ L không được liệt kê theo thứ tự trên băng 1. Với các giả định tốt hơn (stronger assumption) về máy T có nghĩa là giả định rằng (amount to assuming) ngôn ngữ L không chỉ là có thể liệt kê đệ quy mà còn đệ quy. Ngược lại, dễ dàng chỉ ra rằng nếu có một máy Turing T liệt kê ngôn ngữ L theo thứ tự cổ điển thì khi ấy L phải là đệ quy. Định lý 10. 6: L là đệ quy khi và chỉ khi có một máy Turing liệt kê ngôn ngữ L theo thứ tự cổ điển. Chứng minh: Chứng minh xem bài tập Exercise 10.7 10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY Các mô hình tính toán đơn giản mà chúng ta vừa xem xét trước đây, Automat hữu hạn (Fas) và Automat đẩy xuống (PDAs) đều có khả năng (capable) chấp nhận một vài kiểu ngôn ngữ. Chúng ta cần chỉ ra được một số máy Turing (TMs) chúng ta chỉ ra cái gì trong cả hai trường hợp này: Có các ngôn ngữ Định nghĩa 10.3: Một tập S là vô hạn đếm được (countably infinite) nếu có một song ánh từ (bijection) từ N đến S, và có thể đếm được (countable) nếu tập S hoặc là vô hạn đếm được hoặc là hữu hạn đếm được. Tập A là vô hạn hạn không đếm được (uncountably infinte) hoặc nói đơn giản là không đếm được nếu tập A này không đếm được. Trang - - 9 Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh Ta nói rằng f: N → S nghĩa là có ba điều cần có: 1. Với mọi số tự nhiên n, f(n) ∈ S 2. Với bất kì 2 số m và n khác nhau, f(m) ≠ f(n) 3. Mọi phần tử của S đều là f(n) đối với một vài số tự nhiên n. Do đó, ta nói rằng S là vô hạn đếm được (kích thước tương tự như N) nghĩa là các phần tử của S có thể được liệt kê chẳng hạn như f(0), f(1), sao cho mọi phần tử của S đều xuất hiện chính xác một lần trên danh sách. Ta nói rằng S đếm được cũng có nghĩa là như vậy, ngoại trừ danh sách này có thể dừng sau một số hữu hạn các số hạng nào đó. Có ít nhất 2 cách mà trong đó cách thứ nhất có thể hiểu sai (misinterpret) cụm từ “có thể được liệt kê”. Dĩ nhiên điều này có thể không bao giờ thực hiện được việc liệt kê tất cả các phần tử của một tập vô hạn bằng vật lý. Ta nói rằng S “có thể được liệt kê” nghĩa là chỉ có duy nhất một hàm f như ở trên sao cho bất kì chuỗi x ∈ S, nếu chúng ta ghi xuống đầy đủ các số hạng (term) f(0), f(1), thì khi đó x xuất hiện như là một trong những số hạng này. Quan trọng hơn nữa, khi chúng ta nói rằng một tập S là vô hạn đếm được, chúng ta không nói có một số giải thuật để liệt kê các phần tử này. Chúng ta chỉ nói rằng “có tồn tại” một song ánh (bijection) f; có thể có hoặc không có một giải thuật nào cho phép chúng ta tìm ra được f(n) đối với một số tự nhiên n đã cho. Lưu ý rằng bất kì 2 tập hữu hạn đếm được nào cũng đều có kích thước tương tự nhau. Nó có thể là trường hợp mà tất cả các tập không đếm được đều có kích thước giống nhau. Nếu trên thực tế (in fact) có các tập vô hạn kích thước khác nhau, tuy nhiên bất cứ một tập không đếm được nào cũng đều lớn hơn một tập có thể đếm được. Mặc dù điều này không được rõ ràng lắm nhưng đây là một kết quả có được ngay tức thì (immediate consequence) của cơ sở lập luận (fact) sau. Trang - - 10 [...]... ∉ A phải đúng và hai phát biểu 1 và 2 nói rằng cả hai có thể là đúng Do đó, 2N không phải là vô hạn đếm được Hệ quả (Corollary) 10.1 : Tập các ngôn ngữ trên {0,1} không phải liệt kê đệ quy là không đếm được Nói một cách cụ thể là có tồn tại ít nhất một ngôn ngữ như thế Chứng minh : Theo hệ quả này của định lý 10.8, khả năng đếm được của tập các ngôn ngữ liệt kê đệ quy và từ cơ sở lập luận (fact) nếu... ngữ, t là 1-1 Vì T đếm được, lý lẽ tương tự mà chúng ta sử dụng ở trên chỉ ra rằng RE cũng là đếm được Ví dụ 10.3 cung cấp một nữa kết quả mà chúng ta tìm kiếm Chúng ta đã chỉ ra tập các ngôn ngữ liệt kê đệ quy là đếm được, chứng minh rằng có nhiều ngôn ngữ không thể đếm được (ví dụ tập các ngôn ngữ không đếm được) sẽ chỉ ra rằng phải có các ngôn ngữ không phải là liệt kê đệ quy Chứng minh nổi tiếng nhất... tất cả các chuỗi trên ∑ là đếm được Chúng ta viết: ∑ ∞ = ∑ n n=0 ∑ chiều dài n Vì ∑ đó đếm được, theo định lý 10.7 thì ∑ cũng đếm được Trong đó ∑ * n là tập các chuỗi trên n là hữu hạn và do * Ví dụ 10.3 Cho T là tập tất cả các máy Turing, và cho RE là tập tất cả các ngôn ngữ liệt kê đệ quy Ở đây chúng ta tuân theo các quy ước (convention) của chúng là tất cả các trạng thái của máy Turing đều là các. .. chúng là tất cả các trạng thái của máy Turing đều là các phần tử của tập Q và tất cả các kí hiệu trên băng đều là các phần tử của tập S Cụ thể là tất cả các ngôn ngữ liệt kê đệ quy bao gồm các kí tự aphabet là các tập Trang - 13 - Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh hợp con của S Có thể sử dụng trực tiếp định lý 10.7 để chỉ ra rằng T đếm được Tuy nhiên thay vì chúng ta sử dụng hàm... 1-1 và do đó một song ánh từ T đến tập hợp con {0,1}* Vì {0,1} đếm được, bất cứ tập con của nó cũng đếm được và do đó T cũng đếm được Điều đơn giản để chỉ ra rằng RE cũng là đếm được Theo định nghĩa, một ngôn ngữ liệt kê đệ quy L có thể được chấp nhận bởi các máy Turing Với mỗi ngôn ngữ L, cho t(L) là một máy Turing Kết quả là một hàm t từ RE đến T, và vì một máy Turing chấp nhận chính xác một ngôn ngữ, ... bởi vì cách chúng ta đã định nghĩa đó là liệt kê các phần tử của tập Dĩ nhiên, ban đầu dường như nghĩ rằng S sẽ lớn hơn N vì S chứa tất cả các phần tử của N và and infinitely many more besides… ∞ Định lý 10.7 Giả sử rằng S0, S1, …là các tập đếm được Khi đó tập S = S n =0 n cũng là đếm được Chứng minh: Chúng ta mô tả một cách liệt kê các phần tử của tập hợp này Xét mảng hai chiều trong đó các phần... 3∉ A2 3∉ A3 … Các phần tử đường chéo của ma trận được gạch dưới ở trong sơ đồ Tập A là tập các phần tử i để cho phần tử đường chéo i ∉ Aj là đúng Chúng ta sẽ xem xét các loại đối số này trong các phần kế tiếp cũng như các phần sau Trang - 16 - Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh PHẦN 2: BÀI TẬP I Để loại bỏ lệnh hoán đổi S trong máy Ram thô sơ để chỉ còn lại các tập lệnh I... tập không thể đếm được là lý luận đường chéo cổ điển (the classic diagonal argument) của nhà toán học Đức Georg Cantor vào thế kỉ thứ 19 chỉ ra tập các số thực là không thể đếm được Định lý 10.8 Nếu S là một tập vô hạn đếm được bất kỳ, khi ấy tập 2 S của tất cả các tập hợp con của S là vô hạn không đếm được Rõ ràng là với bất cứ tập aphabet ∑ không rỗng nào thì tập các ngôn ngữ trên ∑ là không đếm được... n được liệt kê ở hàng thứ n Vì Sn có thể hữu hạn hoặc vô hạn, các dòng giống như là có chiều dài không bằng nhau Giờ xét đường đi được chỉ ra trong hình 10.1 Dễ thuyết phục rằng đường đi này cuối cùng sẽ bắt trúng mỗi phần tử của S ít nhất là một lần Đường đi sẽ bắt trúng hơn một phần tử nếu phần tử đó thuộc Sn Giả sử rằng chúng ta định nghĩa hàm f như sau: Trang - 11 - Tiểu luận Lý thuyết tính toán... ánh từ 2N đến 2S Do đó đủ để nói rằng 2N là không đếm được, khi đó 2S cũng không đếm được Ta chứng minh ngược lại Giả sử 2 N là vô hạn đếm được Thì khi đó các tập con của N có thể được liệt kê như sau : 2N = {A0, A1…} Trang - 14 - Tiểu luận Lý thuyết tính toán GVHD: PGS.TS Phan Huy Khánh Chúng ta định nghĩa tập con A của N bằng công thức sau : A = {i ∈ N | i ∉ Ai} Vì mỗi tập con của N là một trong số . tập đếm được. a 0,0 a 0,1 a 0,2 a 0 ,3 a 0,4 … a 1,0 a 1,1 a 1,2 a 1 ,3 a 1,4 a 2,0 a 2,1 a 2,2 a 2 ,3 a 2,4 a 3, 0 a 3, 1 a 3, 2 a 3, 3 a 3, 4 a 4,0 a 4,1 a 4,2 a 4 ,3 a 4,4 Hình 10.1: liệt kê các phần. phát biểu i ∉ A j . 0 1 2 3 … 0 0 ∉ A 0 0 ∉ A 1 0 ∉ A 2 0 ∉ A 3 … 1 1 ∉ A 0 1 ∉ A 1 1 ∉ A 2 1 ∉ A 3 2 2 ∉ A 0 2 ∉ A 1 2 ∉ A 2 2 ∉ A 3 3 3 ∉ A 0 3 ∉ A 1 3 ∉ A 2 3 ∉ A 3 … Các phần tử đường chéo. 0; } While (R3 <> 0 ) { R3 = R3 – 1 R4 = R2 + R1 R1 = R2 R2 = R4 } • Chương trình Ram thô sơ STT LỆNH RAM Ý NGHĨA J < ;3& gt; (KQ1, TIEP) Nếu R3 = 0 thì KQ1=0 & halt, R3 <> 0

Ngày đăng: 11/11/2014, 15:21

Từ khóa liên quan

Mục lục

  • 10.1 ĐỆ QUY VÀ LIỆT KÊ ĐỆ QUY

  • 10.2 LIỆT KÊ MỘT NGÔN NGỮ

  • 10.3 KHÔNG PHẢI MỌI NGÔN NGỮ ĐỀU LÀ LIỆT KÊ ĐỆ QUY

  • PHẦN 2: BÀI TẬP

  • PHẦN 3: TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan