เหตุใดความเท่าเทียมกันระหว่างคลาสความซับซ้อนจึงเพิ่มขึ้นและลดลง?


25

Guys เดี๋ยวก่อนฉันเข้าใจว่าเคล็ดลับ padding ช่วยให้เราสามารถแปลเรียนซับซ้อนขึ้น - ตัวอย่างเช่นP=NPEXP=NEXP P การทำงานของ Padding โดย "พอง" อินพุตเรียกใช้การแปลง (พูดจากคำพูดNPถึงP ) ซึ่งให้อัลกอริทึม "เวทมนต์" ซึ่งคุณสามารถเรียกใช้บนอินพุตเสริม ในขณะนี้ทำให้รู้สึกทางเทคนิคฉันไม่สามารถรับปรีชาที่ดีของวิธีการทำงาน เกิดอะไรขึ้นที่นี่? มีการเปรียบเทียบที่ง่ายสำหรับช่องว่างภายในคืออะไร?

สามารถให้เหตุผลสามัญสำนึกว่าทำไมเป็นกรณีนี้หรือไม่


11
ฉันต้องการชี้ให้เห็นว่าผลการเรียนที่ซับซ้อนไม่มากขึ้น ตัวอย่างเช่นถ้าคุณได้รับการพิสูจน์แล้วที่จะบ่งบอกถึงP N P โดยทั่วไปการพังทลายลงไปในขณะที่การแยกลงไป EXPNEXPPNP
Robin Kothari

จริง ในความเป็นจริงดูเหมือนว่าเป็นวิธีที่ดีที่จะคิดเกี่ยวกับเรื่องนี้เนื่องจากการแยกง่ายกว่าการยุบ
gabgoh

2
@Robin, @gabgoh: ถึงแม้จะมีบางส่วนที่พังลงไป ดูตัวอย่างarxiv.org/abs/cs/9910008
Joshua Grochow

คำตอบ:


30

ฉันคิดว่าวิธีที่ดีที่สุดที่จะได้รับปรีชาสำหรับปัญหานี้คือการคิดว่าปัญหาที่สมบูรณ์สำหรับคลาสเวลาชี้แจง ตัวอย่างเช่นปัญหาที่สมบูรณ์สำหรับ NE คือปัญหา NP-complete มาตรฐานสำหรับอินพุตที่อธิบายได้อย่างรัดกุมเช่นให้วงจรที่อธิบายเมทริกซ์ adjacency ของกราฟเป็นกราฟ 3 สีหรือไม่? จากนั้นปัญหาที่ว่า E = NE จะเทียบเท่ากับปัญหา NP นั้นสามารถแก้ไขได้ในเวลาพหุนามบนอินพุตที่อธิบายอย่างรัดกุมเช่นผู้ที่มีความซับซ้อนของ Kolmogorov ที่มีประสิทธิภาพน้อย เห็นได้ชัดว่าไม่แข็งแกร่งกว่าว่าจะสามารถแก้ไขได้กับอินพุตทั้งหมด ยิ่งเวลาถูก จำกัด มากขึ้นความซับซ้อนของ Kolmogorov ที่เล็กลงของอินพุตที่เกี่ยวข้องดังนั้นการยุบสำหรับขอบเขตเวลาที่มากขึ้นจึงเป็นอัลกอริธึมเอฟเฟกต์ที่ทำงานกับอินพุตย่อยขนาดเล็ก

รัสเซล Impagliazzo


14

ตกลงดังนั้นเป้าหมายของคุณคือแสดงให้เห็นว่าเบสบนC L A S S 1 [ g ( n ) ] = C L A S S 2 [ h ( n ) ]CLASS1[g(f(n))]=CLASS2[h(f(n))]CLASS1[g(n)]=CLASS2[h(n)](เราไม่ได้ระบุว่าคลาสนี้คืออะไรเราเพิ่งรู้ว่าพวกมันถูก parametrized ด้วยขนาดอินพุต) เรามีภาษาตัดสินใจโดยขั้นตอนวิธีการบาง ตอนนี้เราสร้างภาษาL ด้วยการเติมแต่ละคำในx Lดังนั้นตอนนี้ความยาวก็คือf ( n )และเราเห็นว่ามันมีอยู่ในC L A S S ( n )LCLASS1[g(f(n))]ALxLf(n) (อัลกอริทึมใหม่ของเรา 'พื้นเพียงละเว้น zeroes เพิ่มและวิ่งในความเป็นจริงการป้อนข้อมูลสั้น)CLASS1[g(n)]AA

สิ่งที่เราทำคือ: เราใช้ภาษาจากคลาสที่ใหญ่กว่าและเราแพ็ดมันเพื่อให้สามารถแก้ไขได้โดยอัลกอริทึมที่อ่อนแอกว่าซึ่งทำให้เรามีการบรรจุในคลาสที่เล็กกว่า - อัลกอริทึมที่อ่อนแอสามารถทำได้เพราะมีจำนวนเท่ากัน 'งานจริง' ที่ต้องทำเหมือน แต่ก่อนมีข้อ จำกัด ของมัน (เป็นฟังก์ชั่นของความยาวอินพุต) ยกขึ้นโดยการขยายอินพุต

ตอนนี้เรารู้แล้วว่าและด้วยเหตุนี้ L C L A S S 2 [ h ( n ) ] (ตัดสินใจโดยอัลกอริทึมB ) เราอยากที่จะได้รับจากที่นี่ไปL C L S S 2 [ H ( F ( n ) ) ]LCLASS1[g(n)]LCLASS2[h(n)]BLCLASS2[h(f(n))]แต่ที่ตรงไปตรงมา. - อัลกอริทึมการตัดสินใจ Lเพียงแค่ใส่อินพุตตามนั้นและรัน B บนอินพุตเสริมBLB

ขั้นตอนนี้อาจสรุปได้ดังต่อไปนี้: เราต้องการตัดสินใจในคลาสที่ใหญ่กว่าและมีประโยชน์มากกว่า Lการใช้ทรัพยากรของเราที่เราเสริมแผ่นป้อนข้อมูลและเรียกใช้อัลกอริทึมการตัดสินใจภาษาเบาะ

แน่นอนว่ามีรายละเอียดทางเทคนิคบางส่วนที่เกี่ยวข้อง (เราต้องตรวจสอบให้แน่ใจว่าการเติมเต็มสามารถนำไปใช้ในชั้นเรียนที่เราพิจารณาได้) แต่ฉันไม่สนใจพวกเขาเพื่อให้สัญชาตญาณทั่วไป


13

ฉันเห็นข้อโต้แย้งของช่องว่างภายในในแง่ของความกะทัดรัดของการเป็นตัวแทน นึกถึงนักแปลสองคนทัวริงเครื่อง: ระเบิดอินสแตนซ์และCBCบีบอัดอีกครั้ง

อาร์กิวเมนต์ padding ทำงานร่วมกับโดยเขียนBกับเวอร์ชันที่กำหนดได้ของ TM สำหรับภาษาในคลาส nondeterministic ที่ต่ำกว่า ผลลัพธ์ของBรวมกันเป็นภาษาที่ไม่ได้ถูกแทนอย่างกระชับดังนั้นสิ่งนี้จึงกลายเป็น "ง่ายขึ้น"BBB

มันเป็นไปไม่ได้ที่จะใช้ความคิดในทางอื่นโดยใช้เพราะมีเพียงบางภาษาในคลาสที่ง่ายที่สร้างขึ้นโดยการระเบิดภาษาในชั้นเรียนยากC


5

เพื่อให้ง่ายยิ่งขึ้นลองดูว่าเกิดอะไรขึ้นเป็นนามธรรมมากขึ้น!

เรามีการแปลงสองแบบหนึ่งอันสำหรับอินพุตและอีกอันสำหรับปัญหาฉันจะแทนทั้งสองด้วยมันจะชัดเจนจากบริบทเมื่อมันเป็นอันแรกและเมื่อมันเป็นอันที่สองpad

การแปลงทั้งสองนี้มีคุณสมบัติดังต่อไปนี้:

I. ปัญหาΣ *สำหรับปัจจัยการผลิตทุกx Σ * :AΣxΣ

iff x Apad(x)pad(A)xA ,

ครั้งที่สอง ถ้าอยู่ในE X P ( N E X P ) ดังนั้นp a d ( A )เป็นP ( N P )AEXPNEXPpad(A)PNP

III การเปลี่ยนแปลงปัจจัยการผลิตอยู่ในระดับความซับซ้อน ,EXP

เป็นที่ชัดเจนว่าการแปลงสำหรับการเติมมีคุณสมบัติเหล่านี้

Now, the reason that we don't know how to do the same thing in the reverse direction is that we don't have transformations like padding in the reverse direction (when we exchange EXP with P and NEXP with NP). So the question is why?

I don't have a formal argument why there are not such transformations at the moment, but intuitively what András Salamon said is correct. It is easy to increase the size of inputs, but it is not clear how they can be compressed?

P=NPNEXP=NTime(2nO(1)) problem. We are given an input x of length n, we think of it as an input of length N=2nO(1):

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


1
the latter argument, which I see as a kind of "transformation of variables" argument has occurred to me. However, i don't see why you can't just "think" of it having an input of say, N=log(n) thus translating it down. I don't think that quite works, though the two other approaches, to think of it in terms of giving more resources to a NP algorithm, and in terms of compression vs padding makes sense.
gabgoh

1
A third way to think of it, actually, is to look at the converse. I've not followed through that approach to the bitter end but if any great insight comes I'll post it as a response to myself.
gabgoh

1
@gabgoh: It is more delicate than just change of variables. I am thinking of the input as being of length N=2nO(1), this works because nN, I just imagine that there are enough blanks at the end of the original input to make the length equal to N, but how can you think of an input of length n as being of length N=log(n)? Don't forget that what is inside the parenthesis is the length of the input! i.e. that is the part of the input that the output of the function is going to depend on.
Kaveh

1
[continued] Considering this might also help: assume that the input is in unary and of length n, then we can compress it to N=log(n) bits and actually that would work! A problem which is P (NP) with unary encoding will be in EXP (NEXP) with binary encoding.
Kaveh

1
I guess my trouble is with the phrase "thinking of", I can't wrap my head around what it means to think of a smaller input as a larger input, and what that does, in reality. I do realize that you can't think of N=log(n), for the reason you state, which is a restatement of the padding argument, not a clean analogy I suppose. After all, when we change variables we are always thinking of variables in terms of other variables, but unlike real variables it's kinda "incompressible". Not to say it is a bad answer, but it doesn't help me much personally.
gabgoh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.