Tại sao các đẳng thức giữa các lớp phức tạp dịch lên trên và không xuống dưới?


25

Hey Guys, tôi hiểu rằng các trick đệm cho phép chúng tôi để dịch các lớp phức tạp trở lên - ví dụ . Đệm hoạt động bằng cách "thổi phồng" đầu vào, chạy chuyển đổi (giả sử từ N P sang P ), tạo ra thuật toán "ma thuật" mà bạn có thể chạy trên đầu vào đệm. Trong khi điều này có ý nghĩa kỹ thuật, tôi không thể có được trực giác tốt về cách thức hoạt động của nó. Chính xác thì chuyện gì đang xảy ra ở đây vậy? Có một sự tương tự đơn giản cho những gì đệm là?P=NPEXP=NEXPNPP

Có thể cung cấp một lý do thông thường lý do tại sao đây là trường hợp?


11
Tôi muốn chỉ ra rằng không phải tất cả các kết quả lớp phức tạp đều đi lên. Ví dụ, nếu bạn chứng minh , sau đó mà có ngụ ý P N P . Nói chung, sụp đổ đi lên, trong khi phân tách đi xuống. EXPNEXPPNP
Robin Kothari

thật. Trên thực tế, đây có vẻ là một cách tốt để suy nghĩ về nó, vì sự tách biệt trực quan hơn là sụp đổ.
gabgoh

2
@Robin, @gabgoh: thậm chí một số sự sụp đổ đi xuống, nhưng không phải bằng cách đệm các đối số. Xem ví dụ arxiv.org/abs/cs/9910008 .
Joshua Grochow

Câu trả lời:


30

Tôi nghĩ rằng cách tốt nhất để có được trực giác cho vấn đề này là nghĩ về những vấn đề hoàn chỉnh cho các lớp thời gian theo cấp số nhân. Ví dụ, các vấn đề hoàn chỉnh cho NE là các vấn đề NP-đầy đủ tiêu chuẩn trên các đầu vào có thể mô tả ngắn gọn, ví dụ, được đưa ra một mạch mô tả ma trận kề của đồ thị, có phải là đồ thị 3 màu không? Sau đó, vấn đề liệu E = NE có trở thành tương đương với việc các vấn đề NP có thể giải quyết được trong thời gian đa thức trên các đầu vào có thể mô tả ngắn gọn hay không, ví dụ, những vấn đề có độ phức tạp Kolmogorov nhỏ hiệu quả. Điều này rõ ràng là không mạnh hơn liệu chúng có thể giải quyết được trên tất cả các đầu vào hay không. Thời gian giới hạn càng lớn, độ phức tạp Kolmogorov của các đầu vào có liên quan càng nhỏ, do đó sụp đổ cho các giới hạn thời gian lớn hơn là các thuật toán hiệu quả hoạt động trên các tập hợp con nhỏ hơn của đầu vào.

Russell Impagliazzo


14

CLASS1[g(f(n))]=CLASS2[h(f(n))]CLASS1[g(n)]=CLASS2[h(n)]LCLASS1[g(f(n))]ALxLf(n)CLASS1[g(n)]AA

Những gì chúng ta làm là: chúng ta lấy một ngôn ngữ từ lớp lớn hơn và chúng ta đệm nó, để nó có thể được giải quyết bằng thuật toán yếu hơn cho chúng ta ngăn chặn trong lớp nhỏ hơn - thuật toán yếu hơn có thể làm điều đó, bởi vì nó có cùng số lượng 'công việc thực tế' để làm như trước đây, nhưng nó có những hạn chế (là một chức năng của độ dài đầu vào) được dỡ bỏ bằng cách mở rộng đầu vào.

LCLASS1[g(n)]LCLASS2[h(n)]BLCLASS2[h(f(n))]BLB

L

Tất nhiên có một số chi tiết kỹ thuật liên quan ở đây (vì chúng ta phải đảm bảo rằng phần đệm có thể được thực hiện trong các lớp mà chúng ta xem xét) nhưng tôi chỉ bỏ qua chúng để đưa ra trực giác chung.



5

Để làm cho nó trực quan hơn, hãy nhìn vào những gì đang diễn ra một cách trừu tượng hơn!

pad

Hai phép biến đổi này có thuộc tính sau:

AΣxΣ

pad(x)pad(A)xA

AEXPNEXPpad(A)PNP

EXP

Rõ ràng là các phép biến đổi cho phần đệm có các thuộc tính này.

EXPPNEXPNP

Tôi không có một lập luận chính thức tại sao không có những biến đổi như vậy vào lúc này, nhưng theo trực giác những gì András Salamon nói là chính xác. Thật dễ dàng để tăng kích thước của đầu vào, nhưng không rõ làm thế nào chúng có thể được nén?

P=NPNEXP=NTime(2nO(1))xnN=2nO(1)

NEXP(n)=NTime(2nO(1))=NTime(N)NP(N)P(N)=Time(NO(1))=Time(2nO(1))=EXP(n)


1
N=log(n)

1
Một cách thứ ba để nghĩ về nó, thực sự, là nhìn vào converse. Tôi đã không theo đuổi cách tiếp cận đó đến kết cục cay đắng nhưng nếu có bất kỳ cái nhìn sâu sắc nào xuất hiện, tôi sẽ đăng nó như một phản ứng với chính mình.
gabgoh

1
N=2nO(1)nNNnN=log(n)
Kaveh

1
nN=log(n)PNPEXPNEXP

1
N=log(n)
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.