การใช้ความซับซ้อน Kolmogorov เป็นอินพุต“ ขนาด”


21

S

I(n)={wS:|w|=n}
nT(w)AwA
fn=maxwI(n)T(w).

ให้เรากำหนดเซต

IK(n)={wS:K(w)=n}
ของอินพุตทั้งหมดด้วย Kolmogorov complex nและให้เรากำหนดลำดับ
fnK=1|IK(n)|wIK(n)T(w).
ที่นี่fKเป็นลำดับเวลาเฉลี่ยสำหรับAยกเว้นที่ "ขนาด" ของอินพุตเป็นความซับซ้อนของ Kolmogorov ไม่ใช่ความยาว

มีอัลกอริทึมที่fnแตกต่างอย่างมีนัยสำคัญจากfnKหรือไม่? ถ้าใช่มีปัญหาที่ความซับซ้อนของเวลาเปลี่ยนแปลงไปเมื่อใช้วิธีวิเคราะห์อัลกอริธึมที่แตกต่างกันนี้หรือไม่?


4
เป็นคำถามที่ดีมาก! หนึ่งที่ฉันมักจะสงสัยเกี่ยวกับ - ฉันหวังว่ามันจะได้รับคำตอบที่ดี (ผมเพิ่มแท็กแปรซับซ้อน B / C คุณสามารถดูนี้เป็นคำถามของความซับซ้อนของการแปรเช่น SAT, ที่พารามิเตอร์เป็นความซับซ้อน Kolmogorov ได้.)
โจชัว Grochow

3
สตริงสุ่มหรือสตริงส่วนใหญ่มีความซับซ้อนของ Kolmogorov ใกล้กับความยาวดั้งเดิม สำหรับอินพุตส่วนใหญ่คุณอาจได้รับผลลัพธ์ที่น่าสนใจมากขึ้นถ้าคุณถามถึงความลึกในการคำนวณแทนความซับซ้อนของ Kolmogorov google.com/…fn=fnK
Chad Brewbaker

2
โดยการผสมในบางกรณีของ PARITY เป็นภาษาที่ยากในรูปแบบ (เช่นโดย prefixing เช่นกันด้วยการสลับบิตที่อธิบายภาษาอินสแตนซ์) จากนั้นจะมีขนาดเล็กกว่าf_nขนาดเล็กแค่ไหนขึ้นอยู่กับความหนาแน่นสัมพัทธ์ f K n f nSfnKfn
András Salamon

1
สถานที่แห่งหนึ่งอยู่ในบันทึกการบรรยายของ Vadhan ที่นี่ (19 ก.พ. ): people.seas.harvard.edu/~salil/cs221/spring10/lectures.html
usul

1
@ AndrásSalamonใช่ฉันหวังว่าฉันจะไม่เลอะเทอะเกินไป แต่ฉันคิดว่าโดยพื้นฐานแล้วควรจะเป็นฟังก์ชั่นยุ่งช่องคลอด nmaxw:K(w)=n|w|
usul

คำตอบ:


14

พิจารณาฟังก์ชั่นพาริตี้ (หรือฟังก์ชั่นอื่น ๆ ที่ขึ้นอยู่กับบิตส่วนใหญ่ของอินพุต) สำหรับฟังก์ชั่นความเท่าเทียมกัน,|) ดังนั้น ในทางตรงกันข้าม n = Θ ( n ) f K n = Θ ( 1)T(w)=Θ(|w|)

fn=Θ(n).
fnK=Θ(1|IK(n)|w:K(w)=n|w|)Ω(12nmaxw:K(w)=n|w|).

โปรดทราบว่า(n) ดังนั้นและ\ ในทำนองเดียวกัน ; ดังนั้น “ เติบโตอย่างรวดเร็วมาก” นอกจากนี้ก็ไม่ยากที่จะเห็นว่าไม่มีการคำนวณที่ถูกผูกไว้บนสำหรับ Kสูงสุดw : K ( w ) = n | w | 2 2 Ω ( n ) f K n2 2 Ω ( n ) / 2 nK ( 2 2 2 n ) = O ( n ) f K nK(22n)=O(n)

maxw:K(w)=n|w|22Ω(n)
fnK22Ω(n)/2nK(222n)=O(n)fnK222Ω(n)/2nfnK

9

ด้วยความสนใจในคำถามนี้ฉันคิดว่ามันอาจจะเป็นประโยชน์ในการชี้ให้เห็นอย่างชัดเจนมากขึ้นถึงเหตุผลที่เราไม่ควรประหลาดใจกับคำตอบและพยายามให้ทิศทางสำหรับการปรับแต่งคำถาม สิ่งนี้จะรวบรวมและขยายความคิดเห็นบางส่วน ฉันขอโทษถ้านี่คือ "ชัดเจน"!

พิจารณาชุดของสตริงของความซับซ้อนของ Kolmogorov : มีอย่างมากที่สุดที่มีสตริงดังกล่าวรายละเอียดของความยาวnแต่โปรดสังเกตว่าชุดนี้ไม่สามารถระบุได้สำหรับทั่วไป(มิฉะนั้นเราสามารถคำนวณเพียงแค่ทำซ้ำจากถึงและตรวจสอบการเป็นสมาชิกใน ) นอกจากนี้ฟังก์ชัน เติบโตอย่างรวดเร็วอย่างไม่มีที่ติ มันเป็นความแตกต่างของฟังก์ชั่นยุ่งช่องคลอด: อะไรคือผลลัพธ์ที่ยาวที่สุดโดยเครื่องทัวริงของคำอธิบายความยาวJ K ( n ) = { W : K ( W ) = n } 2 nn

JK(n)={w:K(w)=n}.
2n n n K ( w ) n = 1 | w | J K ( n ) g K ( n ) = สูงสุดw J K ( n ) | w | n M M M2nnnK(w)n=1|w|JK(n)
gK(n)=maxwJK(n)|w|
n? หากสิ่งนี้ช้ากว่าฟังก์ชั่นที่คำนวณได้เราสามารถตัดสินปัญหาการหยุดทำงาน: ด้วย TMสร้างที่จำลองและพิมพ์ทุกขั้นตอน ถ้าความยาวรายละเอียดของเป็นแล้วทั้ง:หยุดในที่สุดขั้นตอน; หรือไม่หยุดMMM1MnMgK(n)M

สำหรับคำถามของแอนดรูว์เรามีแล้วว่าโดยที่เป็นภาษาดั้งเดิม ดังนั้นวิธีเดียวที่จะหลีกเลี่ยงที่มีอินพุตที่มีขนาดใหญ่มากในคือถ้ามีสตริงที่ไม่สามารถบีบอัดได้มากเท่านั้น (หมายเหตุว่ามิฉะนั้นเราสามารถสมบูรณ์ไม่สนใจความแตกต่างระหว่างเลวร้ายที่สุดกรณีและการวิเคราะห์ค่าเฉลี่ยกรณีที่นี่เพราะเราเฉลี่ยมากกว่าที่มากที่สุดสตริง แต่ขนาดของสตริงที่ใหญ่ที่สุดที่มีการเติบโตเร็วกว่าฟังก์ชันคำนวณใด ๆ ของn )IK(n)=SJK(n)SIK(n)nS2nn

ฉันรู้สึกว่ามันเป็นไปไม่ได้ที่จะสร้างที่ไม่น่าสนใจใด ๆ (เช่นไม่มีที่สิ้นสุด) ที่มีสตริงที่ไม่สามารถบีบอัดได้ แต่ยังสามารถถอดรหัสได้ แต่ฉันไม่รู้ อย่างไรก็ตามหวังว่านี่จะให้สัญชาตญาณว่าทำไมเราไม่ควรหวังว่าภาษาส่วนใหญ่จะมีเติบโตช้ากว่าฟังก์ชั่นที่คำนวณได้SfnK

ย้อนกลับไปเล็กน้อยคำถามคือการเปรียบเทียบประสิทธิภาพการทำงานบนปัจจัยการผลิตที่มีความยาวเพื่อประสิทธิภาพการทำงานบนปัจจัยการผลิตที่สามารถบีบอัดให้มีความยาวnแต่เรามีพัฒนาการของการบีบอัดที่มีความสามารถในการเวิร์ค (และมีประสิทธิภาพน้อยกว่า) มากกว่าคอมเพล็กซ์ Kolmogorov วิธีง่ายๆคือการให้วงจรขนาดซึ่งในการป้อนข้อมูลเลขฐานสองผลิต TH บิตของWโปรดทราบว่าที่นี่การระเบิดในขนาดอินพุตมากที่สุดคือเอ็กซ์โพเนนเชียล (วงจรที่มีขนาดมีอินพุตได้มากที่สุด )nnnbbwn2n

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

IC(n)={wS:the smallest circuit implicitly specifying w has size n}.
fnCfnfnC

คำถามที่เกี่ยวข้องอย่างใกล้ชิดคือความซับซ้อนของภาษาโดยนัยเช่น IMPLICIT_SAT นั้นเสร็จสมบูรณ์แล้ว NEXP และโดยปกติแล้วปัญหาที่สมบูรณ์ของปัญหา NP-Complete โดยปริยายคือ NEXP-complete ตัดสินใจ IMPLICIT_SAT อย่างน้อยเป็นเรื่องง่ายเป็นเพียงการใช้วงจรที่จะเขียนออกทั้งหมดของแล้วเรียกใช้อัลกอริทึมสำหรับนั่งอยู่บนWดังนั้นถ้าสำหรับ SAT แล้วนี่ก็ดูเหมือนจะให้หลักฐานว่า IMPLICIT_SAT ในคดีโดยเฉลี่ยเกือบจะตัดสินใจได้อย่างรวดเร็วเนื่องจาก SAT อยู่ในกรณีที่เลวร้ายที่สุด แต่ฉันไม่รู้ว่าจะเปรียบเทียบความคิดของคุณกับภาษาโดยปริยายโดยตรงอย่างไรเพราะแนวคิดของ "วงจรที่เล็กที่สุดสำหรับw w f C n = Θ ( f n ) w

IMPLICIT_SAT={circuits C:C implicitly specifies w,wSAT}.
wwfnC=Θ(fn)w"ไม่ได้เล่นด้วยภาษาโดยปริยาย

หวังว่านี่จะเป็นประโยชน์ / น่าสนใจ!

ฉันไม่แน่ใจเกี่ยวกับตำราเรียนที่กล่าวถึงปัญหาโดยนัย แต่นี่คือบันทึกการบรรยาย: http://people.seas.harvard.edu/~salil/cs221/spring10/lec8.pdf


|JK(n)|=2n ? แต่ไม่ใช่ทุกคำอธิบายที่น้อยที่สุด
Andrew

1
@AndrewMacFie ถูกต้องควรเป็น "มากที่สุด" จะแก้ไข
usul

ขอบคุณที่เพิ่มคำตอบนี้ :) ดูเหมือนว่าอัลกอริทึมสำหรับ 3-SATจะเติบโตอย่างรวดเร็ว fnK
Andrew

4

กรณีที่ง่ายดูเหมือนจะเป็นที่ภาษามีอินสแตนซ์เบาะเท่านั้น เมื่อจะได้รับจากภาษาโดย padding ตัวอย่างของแต่ละขนาดกับสัญลักษณ์สามารถอยู่ในพื้นที่ของ{}S L n 2 n - n K n 2 nSSLn2nnfnK2fn


โปรดทราบว่าคำตอบของ Yury จะช่วยตอบคำถามนี้และทำให้แม่นยำ "สามารถอยู่ในภูมิภาคของ" ได้
András Salamon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.