Hãy Có máy Turing nào quyết định (tôi không có nghĩa là nhận ra) ngôn ngữ L ∅ không?
Dường như các kỹ thuật tương tự sử dụng để chứng minh rằng nên làm việc ở đây là tốt.
Hãy Có máy Turing nào quyết định (tôi không có nghĩa là nhận ra) ngôn ngữ L ∅ không?
Dường như các kỹ thuật tương tự sử dụng để chứng minh rằng nên làm việc ở đây là tốt.
Câu trả lời:
Bằng cách đánh dấu, bạn có thể có nghĩa là phân tích khả năng tiếp cận - tìm kiếm một đường dẫn từ trạng thái ban đầu đến trạng thái chấp nhận. Thật vậy, ngôn ngữ của một DFA trống rỗng nếu không có con đường như vậy.
Hãy bắt đầu với một ví dụ về lý do tại sao điều này thất bại trong TM. Hãy xem xét một TM rằng, , bỏ qua nó của đầu vào, nhưng viết một trên đó của băng, di chuyển người đứng đầu phải và đi vào trạng thái q 1 , sau đó trong q 1 nó một lần nữa bỏ qua các đầu vào, viết một , di chuyển sang trái và đi đến q 2 . Trong q 2 , nếu nó đọc a , thì nó viết a , di chuyển đầu phải và quay lại q 1 .
Nghĩa là, máy chỉ ghi và xen kẽ giữa hai trạng thái ( q 1 và q 2 ) và luôn có hai chữ a liền kề trên băng.
Bây giờ chúng ta thêm một chuyển đổi từ mà khi đọc b sẽ chuyển sang trạng thái chấp nhận và dừng lại.
Ngôn ngữ của máy này trống rỗng. Thật vậy, việc chạy luôn bị kẹt trong vòng lặp và sẽ không bao giờ đến trạng thái chấp nhận. Tuy nhiên, có một con đường trạng thái đến một trạng thái chấp nhận. Vì vậy, những gì đã đi sai?
Chà, theo trực giác, '`trạng thái' 'của một TM không đủ thông tin để mô tả sự tiếp tục của hoạt động. Để có tất cả thông tin, bạn cần cấu hình của TM, bao gồm trạng thái, vị trí của đầu và nội dung của băng. Nếu bạn tìm thấy một đường dẫn cấu hình (được gọi là chạy ) đến một cấu hình chấp nhận, thì thực sự ngôn ngữ này không trống và đó là một điều kiện iff.
Vấn đề với việc sử dụng phân tích khả năng tiếp cận trên biểu đồ cấu hình, là nó có thể là vô hạn. Đây là lý do tại sao quyết định sự trống rỗng ngôn ngữ là không thể giải quyết được.
Đây cũng là lý do tại sao ngôn ngữ không trống rỗng có thể nhận ra - bạn có thể thực hiện BFS trên biểu đồ cấu hình vô hạn. Nếu có một đường dẫn đến trạng thái chấp nhận, cuối cùng bạn sẽ tìm thấy nó. Tuy nhiên, nếu không có, thì bạn có thể bị mắc kẹt trong một tìm kiếm vô hạn.
là không thể giải quyết được bởi vìĐịnh lý Rice, trong đó nêu rõ rằng các tính chất không tầm thường của các hàm một phần là không thể quyết định được.
Điều này có nghĩa là các hàm được tính bởi các phần tử của có thuộc tính không tầm thường. Do đó A không thể quyết định.
chỉ có thể quyết định theo giả định rằng các DFA được mã hóa theo cách đặc biệt như bảng chuyển đổi trạng thái hoặc v.v. (chúng tôi không thể quyết định liệu TM chỉ chấp nhận ngôn ngữ thông thường hay không, vì Định lý Rice!). Trong trường hợp này lý của bà Rice không áp dụng vì mã hóa đặc biệt của một nguyên tố được yêu cầu để quyết định về E . Vì vậy, chúng tôi không chỉ quyết định các chức năng một phần.
(Điều đó có nghĩa là nếu vấn đề xảy ra, quyết định xem một TM cụ thể là DFA - hay DFA có thể tính toán được - và ngôn ngữ được chấp nhận bởi nó trống rỗng, sẽ không thể xác định được thông qua Định lý Rice. Lưu ý rằng trong trường hợp này A = E .)
Gợi ý khác: Thử giảm vấn đề ngăn chặn để .
(Gợi ý ban đầu là sử dụng định lý của Rice, nhưng trong trường hợp này, một bằng chứng trực tiếp cũng khá đơn giản.)
Bổ đề 1 : Nếu L là không thể giải quyết được thì phần bổ sung của L cũng vậy.
Chúng tôi biết rằng vấn đề tạm dừng, là không thể giải quyết được. Do đó, theo bổ sung Bổ đề 1 của vấn đề tạm dừng, cũng không thể giải quyết được.
=
=
=
Giả sử rằng là quyết định. Chúng tôi sẽ giảm để - nói cách khác, chúng tôi sẽ hiển thị như thế nào để xây dựng một máy Turing rằng quyết định sử dụng TM, rằng quyết định . Điều này cho chúng ta một mâu thuẫn, bởi vì chúng ta biết rằng là không thể giải quyết được, và vì vậy không thể tồn tại Từ giảm bớt đơn giản có nghĩa là giải quyết một vấn đề nhất định bằng cách chuyển đổi nó thành một vấn đề khác mà chúng ta đã biết để giải quyết. Vì vậy, Máy Turing cho có thể được xây dựng như sau:
= “trên đầu vào
1. Xây dựng mã cho TM, thực hiện như sau:
= "trên đầu vào
1. Mô phỏng trên .
2. Chấp nhận nếu dừng lại. "
2. Chạy trên
Việc giảm cho:
E = {| M là một TM và L (M) = Φ}. Là E Turing-nhận ra?
E là ngôn ngữ, để chấp nhận ngôn ngữ E, chúng tôi xây dựng Máy Turing. Giả sử chúng ta tạo Turing EM cho ngôn ngữ E.
EM sẽ được cung cấp làm đầu vào mã hóa cho các máy Turing khác, Nếu máy được nhập M đó chấp nhận một ngôn ngữ trống thì nó sẽ là thành viên của ngôn ngữ E, nếu không nó sẽ không phải là thành viên của ngôn ngữ.
Giả sử chúng ta có Turing Machine M, chúng ta cần kiểm tra xem nó có chấp nhận ngôn ngữ trống không. Turing Machine EM có M và chuỗi eps, a, b, aa, bb, ..... EM sẽ kiểm tra xem M có thể đạt đến trạng thái cuối cùng ít nhất trên một đầu vào không và liệu nó có chấp nhận ít nhất một đầu vào không sẽ bị loại bỏ và không được bao gồm trong ngôn ngữ E. Bây giờ, hãy xem khả năng TM M sẽ vào vòng lặp để M sẽ tiếp tục chạy và chúng tôi không thể quyết định liệu nó có thể chấp nhận hay không thể chấp nhận bất cứ điều gì. Do đó, ngôn ngữ đã cho E này KHÔNG phải là RE.
PS: Tôi nghĩ phần bổ sung của Ngôn ngữ E đã cho này sẽ là RE.