Tại sao chúng ta không thể lật lại câu trả lời của NDTM một cách hiệu quả?


11

Tôi đã đọc nhiều lần rằng không thể lật câu trả lời của NDTM một cách hiệu quả. Tuy nhiên, tôi không hiểu tại sao. Chẳng hạn, với một NDTM chạy trong O ( n ) , văn bản này (phần 3.3) nói rằng không rõ làm thế nào một NDTM T khác có thể xác định trong thời gian O ( n 100 ) làm thế nào để lật câu trả lời của M.MO(n)TO(n100)M

Vấn đề của tôi là như sau: Một NDTM xuất ra iff tồn tại một chuỗi các lựa chọn không xác định dẫn đến trạng thái chấp nhận. Hơn nữa, tồn tại một NDTM N U phổ quát có thể mô phỏng mọi NDTM chỉ với một chi phí nhỏ (logarit). Vậy tại sao chúng ta không thể xây dựng T như sau: Đầu tiên, mô phỏng M với NDTM phổ quát có thể có trong thời gian O ( n log n ) . Sau đó, đầu ra 1 - M câu trả lời. Điều này có nghĩa là chúng ta có thể lật câu trả lời của bất kỳ NDTM tuyến tính nào trong thời gian O ( n log n ) .1NUO(nlogn)O(nlogn)


Một NDTM không "xuất" bất cứ thứ gì. Điều chỉnh mô hình tinh thần của bạn không thuyết phục.
Raphael

Câu trả lời:


15

Một máy Turing không xác định chấp nhận nếu ít nhất một đường dẫn chấp nhận; nó chỉ từ chối nếu tất cả các đường dẫn từ chối. Sự bất cân xứng này làm cho nó khó "lật câu trả lời".

Ví dụ: giả sử bạn có một máy Turing không xác định  có hai đường dẫn cho đầu vào  w : một chấp nhận, một từ chối khác. M  có ít nhất một đường dẫn chấp nhận cho  w , vì vậy nó chấp nhận. Giả sử chúng ta muốn sản xuất một máy chấp nhận chính xác các đầu vào mà M  từ chối. Nỗ lực đầu tiên rõ ràng là lấy  M và làm cho các trạng thái chấp nhận của nó bị từ chối, và các trạng thái từ chối của nó chấp nhận. M  có một đường dẫn chấp nhận cho  w và một đường dẫn từ chối; này máy mới  M ' có một con đường từ chối và một con đường chấp nhận. Vì vậy, nó vẫn chấp nhận  w , mà nó được cho là từ chối!MwMwMMMwMw

Một cỗ máy không xác định không thể nhìn vào tất cả các đường dẫn của nó đồng thời và thực hiện hành động dựa trên những gì tất cả các đường dẫn đó làm. Nếu bạn thích, bạn có thể nghĩ về nó như một hình thức song song trong đó các chủ đề bị cấm giao tiếp với nhau. Khi tất cả các luồng đã kết thúc, chương trình phải tự hỏi mình câu hỏi sau: "Có ít nhất một trong các luồng của tôi chấp nhận không?" Nếu câu trả lời là có, nó có nghĩa vụ pháp lý để chấp nhận; nếu câu trả lời là không, thì bắt buộc phải từ chối. Nó không thể làm gì khác.

Khi bạn mô phỏng một máy không xác định  sử dụng với nhau, M ' , mỗi con đường của  M ' mô phỏng một con đường  M và thấy chỉ con đường đó. Nó không thể nói, "Nếu tất cả những con đường khác bị từ chối, tôi sẽ chấp nhận" bởi vì nó không thể nhìn thấy những con đường khác; nó chỉ có thể nhìn thấy chính nó Vì vậy, tất cả những gì có thể nói là những điều như: "Nếu con đường tôi mô phỏng được chấp nhận, tôi sẽ từ chối" hoặc "Nếu con đường tôi mô phỏng được chấp nhận, tôi cũng sẽ chấp nhận". Sau đó, khi kết thúc tính toán, máy phải nói: "Nếu bất kỳ con đường nào của tôi được chấp nhận, tôi cũng sẽ chấp nhận", dẫn đến vấn đề tôi đã mô tả ở trên. Để đảo ngược hành vi của M , mỗi con đường của M 'MMMMMMcần phải nói, "Nếu đường dẫn tôi mô phỏng được chấp nhận, tôi từ chối; khác, tôi chấp nhận" và, khi kết thúc tính toán, máy cần nói, "Nếu tất cả các đường dẫn của tôi được chấp nhận, tôi chấp nhận; . " Điều này là do, nếu tất cả các đường dẫn của trình giả lập được chấp nhận, điều đó có nghĩa là tất cả các đường dẫn của bị từ chối, vì vậy M bị từ chối, vì vậy trình giả lập cần phải chấp nhận. Nhưng trình giả lập không phải là máy Turing không xác định hợp lệ vì nó không sử dụng tiêu chí chấp nhận được ủy quyền hợp pháp. Nó không thể làm điều đó.MM

Cách duy nhất chúng ta biết để tìm hiểu xem một máy không xác định từ chối đầu vào của nó là thử mọi đường dẫn có thể và xác minh rằng tất cả chúng đều từ chối. Rốt cuộc, nếu thậm chí một trong số họ chấp nhận, máy sẽ chấp nhận đầu vào. Nhưng cố gắng mọi con đường có thể chậm hơn theo cấp số nhân so với chỉ thử một.


2

Vấn đề là NDTM vốn không đối xứng: thời gian có nghĩa là chúng có các bước O ( n ) để đoán đường dẫn chấp nhận nếu tồn tại và sẽ từ chối (nếu không có đường dẫn chấp nhận tồn tại).O(n)O(n)

Vấn đề là nếu máy của bạn thực sự ở O ( n l o g ( n ) ) , điều đó có nghĩa là nó đoán trong n l o g ( n ) bước một nhân chứng mà M từ chối đầu vào. Điều này có thể không thể làm được, vì không có nhân chứng từ chối M , chỉ là nhân chứng của sự chấp nhận. Từ chối là sự vắng mặt của nhân chứng, vì vậy không dễ để chứng minh sự từ chối trong một thời gian ngắn.NUO(nlog(n))nlog(n)MM


-3

=?=?


1
Trên thực tế, anh ta đang hỏi điều gì đó tương tự như co-NP = NP : hoàn toàn có thể PNP khác nhau nhưng NDTM có thể bị phủ nhận một cách hiệu quả.
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.