Máy Turing có thể quyết định ngôn ngữ


11

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?

L={MM is a Turing Machine and L(M)=}.

L

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.{AA is a DFA and L(A)=}


1
Bạn đã thử những gì? Ví dụ, bạn có thể nghĩ về một DFA cho ngôn ngữ trống không? Hãy nhớ rằng DFA có thể được coi là TM rất hạn chế.
Shaull

1
Chắc chắn rồi. Từ trạng thái bắt đầu, chuyển sang trạng thái "dừng từ chối", bất kể những gì trên băng đầu vào. Điều này rõ ràng chấp nhận mọi chuỗi trong ngôn ngữ và từ chối mọi chuỗi không có trong ngôn ngữ.
Patrick87

8
@mahdisaeedi: Câu hỏi sau là một câu hỏi hoàn toàn khác! Bạn đang hỏi liệu có thể quyết định liệu một TM cụ thể có nhận ra ngôn ngữ trống hay không - và câu trả lời là không, xem Định lý Rice
Shaull 29/03/13

Câu trả lời:


9

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 .q0aq1q1aq2q2aaq1

Nghĩa là, máy chỉ ghi và xen kẽ giữa hai trạng thái ( q 1q 2 ) và luôn có hai chữ a liền kề trên băng.aq1q2a

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.q2b

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?q1q2

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.


Hàm chuyển đổi của TM giống như thế này: F (Q T) -> (Q T * {L, R}). Bạn có thể viết hàm cho bỏ qua đầu vào?
msn

Đúng. Trong trường hợp này, , F ( q 1 , a ) = F ( q 1 , b ) = ( q 2 , a , L ) , F ( q 2 , a ) = (F(q0,a)=F(q0,b)=(q1,a,R)F(q1,a)=F(q1,b)=(q2,a,L) F ( q 2 , b ) = ( q a c c , a , L ) (nhưng cái sau không bao giờ đạt được). F(q2,a)=(q1,a,R)F(q2,b)=(qacc,a,L)
Shaull

9

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.A

  1. Có một TM không chấp nhận bất kỳ chuỗi nào. (Mà trực tiếp đi đến trạng thái từ chối).
  2. Có một TM chấp nhận mọi chuỗi. (Mà trực tiếp đi đến trạng thái chấp nhận).

Đ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.AA

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.EE

(Đ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 .)EA=E


6

Gợi ý khác: Thử giảm vấn đề ngăn chặn để .L

(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.)


@Yuval_Filmus Có đúng không khi nói rằng ngôn ngữ này thậm chí không được Turing nhận ra?
sashas

1
Bạn nghĩ sao? Bạn có thể chứng minh yêu cầu của bạn? Nếu vậy, không cần phải đặt câu hỏi.
Yuval Filmus

1

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, HTM là không thể giải quyết được. Do đó, theo bổ sung Bổ đề 1 của vấn đề tạm dừng, HTMc cũng không thể giải quyết được.

HTM ={M,x M is a TM and M halts on input x }

HTMc ={M,x M is a TM and M loops on input x }

ETM ={M M is a TM and L(M) = }

Giả sử rằng ETM là quyết định. Chúng tôi sẽ giảm HTMc để ETM - 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 MHTMc rằng quyết định HTMc sử dụng TM, METM rằng quyết định ETM . Điều này cho chúng ta một mâu thuẫn, bởi vì chúng ta biết rằng HTMc là không thể giải quyết được, và vì vậy MHTMckhô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 HTMc có thể được xây dựng như sau:

MHTMc = “trên đầu vàoM,x

1. Xây dựng mã cho TM, M1 thực hiện như sau:

M1 = "trên đầu vàow

1. Mô phỏng M trên x .

2. Chấp nhận nếu M dừng lại. "

2. Chạy METM trên M1

METM

M1M1

M1wMxMx

M1wMxMETMM1L(M1)

MxM1wMETMM1L(M1)=

CorrectnessMETMMHTMcMHTMcMETML(M1)=Mx
MHTMcMETML(M1)MxMHTMcHTMcHTMc


Nb:

HTMcETM

Việc giảm cho:

M,xHTMcR(M,x)ETM

R(M,x)

M,xHTMcR(M,x)ETM

R(M,x)


0

ATM={M,wM is a Turing Machine which accepts w}

RTML

RTMSTMATM

STM=definitionM,wMw

  1. MwMM1wwwM1MwM

  2. RTMM1,w

  3. RTM

LATM


RTMwRTMM1,w

-2

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.


Thật không may, lập luận trực quan này không phải là một bằng chứng. Có thể có một cách khác nhau để quyết định E, và điều này không bị loại trừ bởi lập luận của bạn.
Yuval Filmus

đúng, nhưng cách tôi giải thích có thể ai đó hiểu được bằng ngôn ngữ giáo dân.
Manu Thakur

Trang web này không dành cho cư dân. Đó là cho khoa học máy tính lý thuyết cấp học thuật.
Yuval Filmus

2
Tất cả những gì bạn đã làm là đưa ra một lập luận trực quan về lý do tại sao một kỹ thuật tính toán cụ thể dường như không giải quyết được vấn đề này. Nhưng câu hỏi là yêu cầu một bằng chứng rằng không có kỹ thuật có thể hoạt động.
David Richerby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.