Lỗ hổng trong NP = CoNP Proof của tôi?


12

Tôi có "bằng chứng" rất đơn giản này cho NP = CoNP và tôi nghĩ rằng tôi đã làm sai điều gì đó ở đâu đó, nhưng tôi không thể tìm thấy điều gì sai. Ai đó có thể giúp tôi không?

Đặt A là một số vấn đề trong NP và để M là người quyết định cho A. Gọi B là phần bù, tức là B nằm trong CoNP. Vì M là người quyết định, bạn cũng có thể sử dụng nó để quyết định B (chỉ cần lật câu trả lời). Điều đó không có nghĩa là chúng tôi giải quyết cả hai vấn đề NP và CoNP với cùng M?

Nói một cách cụ thể hơn.

Đặt A là một số vấn đề hoàn chỉnh NP và để M là người quyết định cho A. Hãy xem xét bất kỳ vấn đề B nào trong CoNP. Chúng tôi xem xét bổ sung của nó không phải B, nằm trong NP, và sau đó nhận được một phép giảm đa thức thành A. Sau đó, chúng tôi chạy quyết định M của chúng tôi và lật câu trả lời của chúng tôi. Do đó, chúng tôi có được một người quyết định cho B. Điều này ngụ ý B cũng nằm trong NP.

Tôi có thể biết những gì là sai với lý luận của tôi?


2
Như các câu trả lời dưới đây giải thích dài dòng, bạn không sử dụng khái niệm "người quyết định" một cách chính xác. Các vấn đề trong coNP không phải là các vấn đề với "trình quyết định NP lật". Có một sự đối xứng quan trọng trong các vấn đề NP giữa việc chấp nhận đầu vào ("có những lựa chọn không mang tính quyết định dẫn đến chấp nhận") và từ chối nó ("tất cả các lựa chọn không xác định đều dẫn đến từ chối"). Đối số của bạn giả định rằng đối với NP từ chối một chuỗi có nghĩa là ("có một lựa chọn không xác định dẫn đến từ chối") và đó là lỗ hổng. Nói cách khác, bạn có các bộ định lượng của bạn trộn lẫn.
Andrej Bauer

1
Bạn có thể tìm thấy câu trả lời cho câu hỏi này khai sáng.
Raphael

@Raphael Đáng ngạc nhiên, câu hỏi đó hoàn toàn không đề cập đến đồng NP! (Mặc dù tôi đồng ý rằng đây là một bài đọc hữu ích cho ai đó không chắc chắn về loại điều này.)
David Richerby

@DavidR Richby Vì về cơ bản, câu trả lời là "sử dụng định nghĩa của NP thay vì trực giác thiếu sót", tôi sẽ hy vọng như vậy!
Raphael

1
Nguyên tắc chung: việc xây dựng "trạng thái lật cuối cùng" chỉ hoạt động đối với các mô hình xác định. Nghiên cứu làm thế nào để NFA không hiểu tại sao. Xem thêm ở đâyở đây .
Raphael

Câu trả lời:


16

Có hai lỗi có thể xảy ra trong bằng chứng này:

  1. Khi bạn nói "người quyết định" - bạn có nghĩa là một TM xác định. Trong trường hợp này, bản dịch tốt nhất (theo hiểu biết của chúng tôi) từ máy NP sang máy xác định có thể mang lại một máy chạy theo thời gian theo cấp số nhân, vì vậy sau khi bổ sung, bạn sẽ có một người quyết định bổ sung theo thời gian theo cấp số nhân, chứng minh rằng (hoặc, sau khi một số tối ưu hóa, c o - N P P S P Một C E ).coNPEXPcoNPPSPACE

  2. Khi bạn nói "người quyết định", bạn có nghĩa là một TM không điều kiện. Trong trường hợp này, lật câu trả lời sẽ không nhất thiết phải bổ sung cho ngôn ngữ. Thật vậy, ngôn ngữ của máy bị lật sẽ là tất cả các từ tồn tại từ chối chạy trên wMw


Tôi không chắc tại sao điều đó lại quan trọng. Định nghĩa của tôi về một người quyết định là tôi chấp nhận nếu đầu vào nằm trong L và từ chối nếu đầu vào không ở L. Quyết định này có thể là xác định hoặc không xác định. Tuy nhiên, tôi nói rằng L nằm trong NP, và do đó nếu tôi đang sử dụng một TM không xác định thì tôi sẽ mất thời gian đa thức. Ngoài ra, tôi có thể biết tại sao lật bit không nhất thiết phải bổ sung cho ngôn ngữ. Theo hiểu biết của tôi CoNP = {L | không phải L \ trong NP}. Vì vậy, nếu tôi lật bit tôi nên có được câu trả lời?

Hãy . Hãy xem xét một TM không điều kiện hoạt động như sau - trong một lần chạy, nó luôn xuất ra "từ chối". Trong các lần chạy khác, nó nhận ra L trong thời gian đa thức (có thể kể từ L N P ). Xem xét những gì sẽ xảy ra nếu bạn lật bit - chạy từ chối trở nên chấp nhận cho mỗi đầu vào, do đó máy đã bổ sung nhận Σ * - đó không phải là sự bổ sung trừ khi L = . Tôi đề nghị bạn xem xét kỹ các định nghĩa của thuyết không điều kiện để hiểu điều này một cách đầy đủ. LNPLLNPΣL=
Shaull

Tôi không có nghĩa là tôi lật một chút của mỗi con đường tính toán. Ý tôi là nếu TM của tôi chấp nhận, thì điều này có nghĩa là tồn tại một đường dẫn tính toán đạt đến trạng thái chấp nhận. Điều này có nghĩa là L nằm trong NP, có nghĩa là phần bù nằm trong coNP. Nếu TM của tôi từ chối, thì điều này có nghĩa là mọi đường dẫn tính toán đều từ chối. Điều này có nghĩa là phần bù nằm trong NP, có nghĩa là L nằm trong CoNP.

4
@simpleton: Bạn biết rằng một NTM không có quyền truy cập vào tất cả các đường dẫn cùng một lúc, chỉ có một đường dẫn? Bạn nghĩ như một người xác định phân tích hành vi của NTM từ bên ngoài.
frafl

7
Tôi nghĩ OP có thể hưởng lợi từ việc tra cứu định nghĩa NP cẩn thận hơn.
MCH

15

Đây là một cách khác để nhìn vào điểm mà Shaull đưa ra đối với "người quyết định".

Một vấn đề nằm ở NP khi và chỉ khi có thuật toán sao choV:{0,1}n×{0,1}poly(n){0,1}

  • với mọi thể hiện CÓ , có chứng chỉ p { 0 , 1 } p o l y ( n ) sao cho V ( x , p ) = 1 ; vàx{0,1}np{0,1}poly(n)V(x,p)=1

  • với mọi trường hợp NO , ta có V ( x , p ) = 0 với mọi p { 0 , 1 } p o l y ( n ) .x{0,1}nV(x,p)=0p{0,1}poly(n)

Chúng thường được mô tả là các điều kiện đầy đủđúng đắn cho thuật toán xác minh NP : điều kiện "tính đầy đủ" nói rằng mọi trường hợp CÓ đều có chứng chỉ và điều kiện "âm thanh" nói rằng thuật toán không bao giờ bị lừa bởi một thể hiện NO. Đối với coNP thì ngược lại: có một thuật toán xác minh sẽ chấp nhận ít nhất một chứng chỉ cho bất kỳ trường hợp NO nào, nhưng không bao giờ có thể bị lừa bởi một thể hiện CÓ.

Nếu bạn muốn hiển thị NPcoNP , bạn phải chỉ ra rằng mọi vấn đề NP đều có trình xác minh coNP -type, có thể chứng nhận KHÔNG có trường hợp thay vì trường hợp CÓ. Bạn không thể làm điều này với một máy Turing không xác định: ví dụ, không có cách nào chúng ta biết để ánh xạ hiệu quả các trường hợp SAT với nhau, theo cách mà tất cả các công thức không thỏa mãn được ánh xạ tới các công thức thỏa đáng và ngược lại. (Việc phủ định đầu ra của công thức là không đủ, ví dụ: một công thức thỏa đáng nhưng không phải là tautology sẽ chỉ được ánh xạ tới một công thức khác thỏa đáng nhưng không phải là tautology, khi chúng ta sẽ yêu cầu một công thức không thỏa mãn.) Đơn giản là không có cách nào chúng ta biết để 'đánh lừa' một cỗ máy không xác định để phát hiện bất cứ thứ gì giống như tất cả các đường dẫn của nó đang từ chối các đường dẫn.

Bạn có thể hỏi: "Không phải máy Turing không xác định biết kết quả mà nó mang lại là gì?" Câu trả lời sẽ là không , không. Hoạt động của máy không xác định không cung cấp cho nó quyền truy cập vào bất kỳ thông tin nào về nhiều hơn một đường tính toán cùng một lúc: bạn có thể nghĩ rằng nó hoạt động song song trên nhiều đường, nhưng trong mỗi đường dẫn, nó chỉ biết về một đường dẫn đó. Nếu bạn cố gắng trang bị cho nó với khả năng "nhận ra" hay không có bất kỳ giải pháp như một số điểm, bạn đang thay vì mô tả một máy với một NP oracle , mà là nhiều (có khả năng!) Mạnh mẽ hơn so với một máy Turing không xác định đơn giản.

  • Ví dụ, nếu bạn trang bị cho một (xác định) máy Turing với một NP oracle, sau đó những vấn đề có thể được giải quyết trong thời gian đa thức trên máy tính đó được gọi là , thường được viết P N P . "Lời tiên tri" cho phép máy chỉ đơn giản nhận câu trả lời cho các vấn đề NP -complete trong một bước duy nhất và do đó P N P rõ ràng có chứa P ; và bởi vì bạn có thể phủ nhận câu trả lời, rõ ràng nó cũng chứa coNP . Nhưng chúng tôi không biết liệu các ngăn chặn ngược có giữ được hay không, chính xác là vì chúng tôi không biết cách lừa các máy Turing không xác định để phát hiện KHÔNG có câu trả lời.Δ2PPNPPNP

  • Hơn thế nữa, nếu bạn cung cấp cho một không xác định máy Turing khả năng đi đến một nhận thức về kết quả của một vấn đề trong NP , những vấn đề mà rằng máy có thể giải quyết trong thời gian đa thức được gọi là , hoặc N P N P , và điều này được nhiều người tin là đúng lớn hơn so với lớp P N P . Điều này cũng chứa cả NPcoNP - nhưng giống như NP , nó không được biết là bị đóng dưới phần bổ sung: máy tiên tri không xác định có thể có thể biết khi nào xảy ra sự cố trong NPΣ2PNPNPPNPkhông có câu trả lời nào vì lời tiên tri, nhưng nó vẫn bị kẹt khi hoạt động trong một nhánh tính toán (khá mạnh) của chính nó , do đó sẽ không thể biết liệu tất cả các nhánh tính toán của chính nó có bị từ chối hay không.

Nếu bạn tiếp tục cung cấp cho máy các phép lạ mạnh hơn để giải quyết các vấn đề trong , N P N P , v.v., cuối cùng bạn sẽ xác định các lớp của hệ thống phân cấp đa thức , được cho là hoàn toàn khác biệt với nhau cấp đầu tiên trở đi.NPNPNP

Vì vậy, không, không có máy (xác định hay nói cách khác) có thể chỉ đơn giản là 'quyết định' rằng một vấn đề là một trường hợp CÓ hoặc KHÔNG một cách hiệu quả, trừ khi chúng ta sử dụng các phép lạ; nhưng ngay cả với một lời sấm vậy, chúng tôi kết thúc với một máy đó là (có lẽ) hơn mạnh mẽ hơn hoặc NP hoặc Co-NP , không phải một mà thấy rằng họ đang bằng nhau.


Xin chào, cảm ơn bạn và Shauli cho ý kiến. Bạn đang nói rằng một NTM có thể nhận ra một ngôn ngữ NP trong polytime, nhưng không thể quyết định ngôn ngữ NP trong polytime? Tôi nghĩ đó là những gì tôi đang giả định khi tôi nói rằng tôi có một người quyết định cho các vấn đề NP.
đơn giản

2
Ồ, tôi nghĩ rằng tôi sắp xếp những gì bạn muốn nói. Bạn đang nói rằng tôi đang sử dụng giảm oracle, và đó thực sự cho thấy rằng vấn đề là ở (đó là đúng bởi vì N P P N PC o N P P N P )? Việc giảm lời tiên tri cho thấy UNSAT là NP-hard, nhưng tôi vẫn cần chứng minh rằng U N S A T N P , và tôi không thể chỉ ra điều đó? PNPNPPNPCoNPPNPUNSATNP
đơn giản

5
NP-độ cứng được xác định với nhiều mức giảm một, không giảm orory.
Yuval Filmus

6

Lý luận của bạn ngụ ý rằng RE = coRE, nhưng điều này có thể chứng minh là sai. Bạn có thể thử tìm ra một bằng chứng về điều đó và sau đó xem việc giảm của bạn thất bại ở đâu.

Hãy nhớ rằng RE là lớp phức tạp của các ngôn ngữ đệ quy đệ quy, là các ngôn ngữ có dạng . Bạn cũng có thể nghĩ về nó trong điều kiện không xác định: RE là lớp các ngôn ngữ có dạng { x : ( x , w ) L '  đối với một số  w } , nơi L ' là đệ quy (tính toán).{x:P halts on input x}{x:(x,w)L for some w}L

Dưới đây là một bằng chứng cho thấy cả hai định nghĩa phù hợp. Giả sử . Đặt L = { ( x , w ) : p  tạm dừng trên đầu vào  x  trong  w  bước } . Ngôn ngữ L ' là đệ quy và L = { x : ( x , w ) L '  đối với một số  w } .L={x:p halts on input x}L={(x,w):p halts on input x in w steps}LL={x:(x,w)L for some w}

Đối với một hướng khác, chúng ta hãy , nơi L ' là đệ quy, nói tính bằng chương trình P ( x , w ) . Chúng tôi xây dựng một chương trình mới Q ( x ) liệt kê tất cả các w có thể và chạy P ( x , w ) trên tất cả w , theo thứ tự. Nếu P ( x , wL={x:(x,w)L for some w}LP(x,w)Q(x)wP(x,w)wP(x,w)wQL={x:Q halts on input x}

L={(P,x):P halts on input x}PxHH(P,x)(P,x)L. We define a new program G by G(x)=H(x,x). Is (G,G)L? If so, then G halts on G, so H halts on (G,G), so (G,G)L. If (G,G)L, then G doesn't halt on G, so H doesn't halt on (G,G), so (G,G)L. This contradiction shows that H cannot exist.

Now try to run your proof in this case and see what goes wrong. In more detail, try to construct the program H using your recipe, and follow the proof - at some point something wouldn't be quite right.


2

Here's a TL;DR version; I've also posted a longer answer to a similar question.

Suppose we have a language A that's decided in polynomial time by nondeterministic Turing machine M. The point is that xA iff there M has some accepting path on input x. However, since M is nondeterministic, there may also be rejecting paths when it runs on x. If you just reverse the accepting and rejecting states, you'll go from a machine that had some accepting paths and some rejecting ones to a machine that has some rejecting paths and some accepting ones. In other words, it still has accepting paths, so it still accepts. Flipping the accept and reject states of a nondeterministic machine does not, in general, cause you to accept the complement language.

It is this asymmetry of definition (accept if any path accepts; reject only if all paths reject) that makes the NP vs co-NP problem difficult.


-2

I actually agree that your nondeterministic machine M can decide whether a given input string is in B. However, it "decides" slightly differently than the way it decides if a given input is in A. In the latter case, it does so by (nondeterministically) finding an accepting state. In the former case, it does so by failing to find any accepting states. Why does this difference matter? Let's see:

When asking M "Is the string in the language A?"

M reaches an accept state. This, you can prove (see, for example, the Sipser book theorem 7.20) implies that there is a deterministic machine that verifies the string is in A in polynomial time

When asking M "Is the string in the language B?"

M reaches reject states on all branches of its nondeterministic computation. If you think about how the verifier proof above works, you will see that it cannot be accomplished in this situation. This is roughly because the verifier uses the path that M takes through its state space as "proof". In this case, there is no one such path.

Conclusion:

If you consider the existence of a polynomial time deterministic verifier for a language to be the definition of an NP language (which you should), the existence of M does not prove that B is in NP.


1
The existence of M doesn't prove that B is in NP precisely because you have to use this "weird" acceptance criterion to make it "accept" B. NP is defined via the conventional nondeterministic acceptance criterion. (The acceptance criterion is slightly weird partly because the question talks about flipping accepting and rejecting states in M but you don't seem to have done that.)
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.