กลับไปหน้าบทความ

อ่าน 24 นาที

ความซับซ้อนของโคลโมโกรอฟ

ในทฤษฎีสารสนเทศเชิงอัลกอริทึม (สาขาย่อยของวิทยาศาสตร์คอมพิวเตอร์และคณิตศาสตร์ ) ความซับซ้อนของ Kolmogorovของวัตถุ เช่น ข้อความ คือความยาวของโปรแกรมคอมพิวเตอร์ ที่สั้นที่สุด...

ความซับซ้อนของโคลโมโกรอฟ

ภาพนี้แสดงส่วนหนึ่งของแฟร็กทัลเซตแมนเดลบ ร็อต การจัดเก็บสี 24 บิตของแต่ละพิกเซลในภาพนี้จะต้องใช้พื้นที่ 23 ล้านไบต์แต่โปรแกรมคอมพิวเตอร์ขนาดเล็กสามารถสร้างข้อมูล 23 MB นี้ขึ้นมาใหม่ได้โดยใช้คำจำกัดความของเซตแมนเดลบร็อต พิกัดมุมของภาพ และพารามิเตอร์ของการแมปสี ดังนั้น ความซับซ้อนของ Kolmogorov ของภาพนี้จึงน้อยกว่า 23 MB ในแบบจำลองการคำนวณ เชิงปฏิบัติใดๆ การ บีบอัดภาพทั่วไปของ PNGลดขนาดลงเหลือเพียง 1.6 MB ซึ่งเล็กกว่าข้อมูลดิบ แต่ใหญ่กว่าความซับซ้อนของ Kolmogorov มาก

ในทฤษฎีสารสนเทศเชิงอัลกอริทึม (สาขาย่อยของวิทยาศาสตร์คอมพิวเตอร์และคณิตศาสตร์ ) ความซับซ้อนของ Kolmogorovของวัตถุ เช่น ข้อความ คือความยาวของโปรแกรมคอมพิวเตอร์ ที่สั้นที่สุด (ในภาษาโปรแกรม ที่กำหนดไว้ล่วงหน้า ) ที่สร้างวัตถุนั้นเป็นผลลัพธ์ มันคือการวัด ทรัพยากร การคำนวณที่จำเป็นในการระบุวัตถุ และยังรู้จักกันในชื่อความซับซ้อนเชิงอัลกอริทึมความซับซ้อนของ Solomonoff–Kolmogorov–Chaitin ความซับซ้อนของขนาดโปรแกรม ความซับซ้อนเชิงพรรณนาหรือเอนโทรปีเชิงอัลกอริทึมชื่อนี้ตั้งตามAndrey Kolmogorovผู้ซึ่งตีพิมพ์ผลงานเกี่ยวกับเรื่องนี้เป็นครั้งแรกในปี 1963 [ 1 ] [หมายเหตุ 1 ]และเป็นการสรุปทั่วไปของทฤษฎีสารสนเทศแบบคลาสสิก

แนวคิดเรื่องความซับซ้อนของ Kolmogorov สามารถนำมาใช้เพื่อระบุและพิสูจน์ผลลัพธ์ที่เป็นไปไม่ได้ ซึ่งคล้ายคลึงกับข้อโต้แย้งแนวทแยงของ Cantorทฤษฎีบทความไม่สมบูรณ์ของ Gödelและปัญหาการหยุดทำงานของ Turingโดยเฉพาะอย่างยิ่ง ไม่มีโปรแกรมP ใด ที่คำนวณขอบล่างสำหรับความซับซ้อนของ Kolmogorov ของแต่ละข้อความแล้วสามารถส่งคืนค่าที่ใหญ่กว่า ความยาว ของPเองได้ (ดูหัวข้อ§ ทฤษฎีบทความไม่สมบูรณ์ของ Chaitin ) ดังนั้นจึงไม่มีโปรแกรมใดโปรแกรมเดียวที่สามารถคำนวณความซับซ้อนของ Kolmogorov ที่แน่นอนสำหรับข้อความจำนวนอนันต์ได้ 

คำนิยาม

ปรีชา

พิจารณา สตริงสองชุดต่อไปนี้ซึ่งประกอบด้วยตัวอักษรพิมพ์เล็กและตัวเลขจำนวน 32 ตัว:

abababababababababababababababab, และ
4c1j5b2p0cv4w1x8rx2y39umgw5q85s7

ข้อความแรกมีคำอธิบายสั้นๆ เป็นภาษาอังกฤษ คือ "write ab 16 times" ซึ่งประกอบด้วย อักขระ 17ตัว ส่วนข้อความที่สองไม่มีคำอธิบายที่ชัดเจนและง่ายๆ (โดยใช้ชุดอักขระเดียวกัน) นอกจากการเขียนข้อความนั้นลงไป เช่น "write 4c1j5b2p0cv4w1x8rx2y39umgw5q85s7" ซึ่งมี อักขระ 38ตัว ดังนั้นจึงกล่าวได้ว่าการเขียนข้อความแรกนั้น "มีความซับซ้อนน้อยกว่า" การเขียนข้อความที่สอง

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

ความซับซ้อนของ Kolmogorov สามารถกำหนดได้สำหรับวัตถุทางคณิตศาสตร์ใดๆ ก็ได้ แต่เพื่อความง่าย บทความนี้จึงจำกัดขอบเขตไว้ที่สตริง ก่อนอื่นเราต้องกำหนดภาษาสำหรับอธิบายสตริง ภาษาสำหรับอธิบายดังกล่าวสามารถอิงตามภาษาการเขียนโปรแกรมคอมพิวเตอร์ใดๆ ก็ได้ เช่นLisp , PascalหรือJavaถ้าPเป็นโปรแกรมที่ส่งออกสตริงxแล้วPก็คือคำอธิบายของxความยาวของคำอธิบายก็คือความยาวของPในรูปสตริงอักขระ คูณด้วยจำนวนบิตในอักขระ (เช่น 7 สำหรับASCII )

อีกทางเลือกหนึ่ง เราอาจเลือกใช้การเข้ารหัสสำหรับเครื่องจักรทัวริงโดยที่การเข้ารหัสเป็นฟังก์ชันที่เชื่อมโยงสตริงบิต <M> กับ เครื่องจักรทัวริง M แต่ละเครื่อง หากMเป็นเครื่องจักรทัวริงซึ่งเมื่อรับอินพุตw จะได้ เอาต์พุตเป็นสตริงxแล้ว สตริงที่ต่อกัน <M> w ก็จะเป็นคำอธิบายของxสำหรับการวิเคราะห์เชิงทฤษฎี วิธีการนี้เหมาะสมกว่าสำหรับการสร้างบทพิสูจน์ที่เป็นทางการโดยละเอียด และโดยทั่วไปแล้วเป็นที่นิยมในงานวิจัย ในบทความนี้ จะกล่าวถึงวิธีการที่ไม่เป็นทางการ

สตริงs ใดๆ ก็ตาม จะมีคำอธิบายอย่างน้อยหนึ่งรายการ ตัวอย่างเช่น สตริงที่สองข้างต้นได้มาจากรหัสเทียมดังนี้ :

def generate_string2 (): return "4c1j5b2p0cv4w1x8rx2y39umgw5q85s7"

ในขณะที่สตริงแรกนั้นได้มาจากรหัสเทียม (ซึ่งสั้นกว่ามาก):

def generate_string1 (): return "ab" × 16

ถ้าคำอธิบายd ( s ) ของสตริงsมีความยาวน้อยที่สุด (กล่าวคือ ใช้บิตน้อยที่สุด) จะเรียกว่าคำอธิบายที่น้อยที่สุดของsและความยาวของd ( s ) (กล่าวคือ จำนวนบิตในคำอธิบายที่น้อยที่สุด) คือความซับซ้อนของ Kolmogorovของsซึ่งเขียนแทนด้วยK ( s ) ในเชิงสัญลักษณ์

K ( s ) = | d ( s )|.

ความยาวของคำอธิบายที่สั้นที่สุดจะขึ้นอยู่กับการเลือกภาษาที่ใช้ในการอธิบาย แต่ผลกระทบของการเปลี่ยนภาษานั้นมีขอบเขตจำกัด (ผลลัพธ์นี้เรียกว่าทฤษฎีบทความไม่เปลี่ยนแปลงดูด้านล่าง )

ความซับซ้อนของ Kolmogorov แบบธรรมดาC

ความซับซ้อนของ Kolmogorov มีสองนิยาม ได้แก่แบบธรรมดาและแบบไม่มีคำนำหน้าความซับซ้อนแบบธรรมดาคือความยาวคำอธิบายขั้นต่ำของโปรแกรมใดๆ และใช้สัญลักษณ์ แทนด้วยซี(x){\displaystyle C(x)}ในขณะที่ความซับซ้อนแบบไม่มีคำนำหน้า คือความยาวคำอธิบายขั้นต่ำของโปรแกรมใดๆ ที่เข้ารหัสด้วยรหัสแบบไม่มีคำนำหน้าและใช้สัญลักษณ์แทนด้วยเค(x){\displaystyle K(x)}ความซับซ้อนแบบธรรมดานั้นเข้าใจง่ายกว่า แต่ความซับซ้อนแบบไม่มีคำนำหน้าจะศึกษาได้ง่ายกว่า

โดยปกติแล้ว สมการทั้งหมดจะใช้ได้เพียงแค่ค่าคงที่บวกเท่านั้น ตัวอย่างเช่นเอฟ(x)=จี(x){\displaystyle f(x)=g(x)}หมายความว่าจริงๆเอฟ(x)=จี(x)+โอ(1){\displaystyle f(x)=g(x)+O(1)}นั่นคือ,x,|เอฟ(x)จี(x)|{\displaystyle \exists c,\forall x,|f(x)-g(x)|\leq c}.

อนุญาตยู:2*2*{\displaystyle U:2^{*}\ถึง 2^{*}}เป็นฟังก์ชันที่คำนวณได้ซึ่งแปลงสตริงไบนารีจำกัดเป็นสตริงไบนารี ฟังก์ชันนี้เป็นฟังก์ชันสากลก็ต่อเมื่อ สำหรับฟังก์ชันที่คำนวณได้ใดๆเอฟ:2*2*{\displaystyle f:2^{*}\to 2^{*}}เราสามารถเข้ารหัสฟังก์ชันนั้นลงใน "โปรแกรม" ได้เอฟ{\displaystyle s_{f}}โดยที่x2*,ยู(เอฟx)=เอฟ(x){\displaystyle \forall x\in 2^{*},U(s_{f}x)=f(x)}เราสามารถนึกถึง...ยู{\displaystyle U}ในฐานะตัวแปลโปรแกรม ซึ่งรับส่วนเริ่มต้นที่อธิบายโปรแกรม ตามด้วยข้อมูลที่โปรแกรมควรประมวลผล

ปัญหาอย่างหนึ่งของความซับซ้อนแบบธรรมดาคือซี(xy)ซี(x)+ซี(y){\displaystyle C(xy)\not <C(x)+C(y)}เพราะโดยสัญชาตญาณแล้ว ไม่มีวิธีทั่วไปที่จะบอกได้ว่าจะแบ่งสตริงผลลัพธ์ตรงไหน เพียงแค่ดูจากสตริงที่ต่อกัน เราสามารถแบ่งได้โดยการระบุความยาวของสตริงx{\displaystyle x}หรือy{\displaystyle y}แต่ว่านั่นจะต้องใช้เวลาโอ(นาที(lnx,lny)){\displaystyle O(\min(\ln x,\ln y))}สัญลักษณ์เพิ่มเติม อันที่จริง สำหรับสิ่งใดก็ตาม>0{\displaystyle c>0}มีอยู่จริงx,y{\displaystyle x,y}โดยที่ซี(xy)ซี(x)+ซี(y)+{\displaystyle C(xy)\geq C(x)+C(y)+c}[ 2 ]

โดยทั่วไป อสมการที่มีความซับซ้อนธรรมดาจะมีคำลักษณะนี้โอ(นาที(lnx,lny)){\displaystyle O(\min(\ln x,\ln y))}ในด้านหนึ่ง ในขณะที่ความไม่เท่าเทียมกันแบบเดียวกันที่มีความซับซ้อนแบบไม่มีคำนำหน้ามีเพียงโอ(1){\displaystyle O(1)}.

ปัญหาหลักของความซับซ้อนแบบธรรมดาคือ มีบางสิ่งบางอย่างแอบแฝงเข้าไปในโปรแกรม โปรแกรมไม่ได้แสดงถึงสิ่งใดสิ่งหนึ่งด้วยรหัสของมันเท่านั้น แต่ยังแสดงถึงความยาวของตัวมันเองด้วย โดยเฉพาะอย่างยิ่ง โปรแกรมx{\displaystyle x}อาจแทนเลขฐานสองได้ถึงบันทึก2|x|{\displaystyle \log _{2}|x|}โดยอาศัยความยาวของมันเอง กล่าวอีกนัยหนึ่งก็คือ เหมือนกับว่าเราใช้สัญลักษณ์สิ้นสุดเพื่อระบุจุดสิ้นสุดของคำ ดังนั้นเราจึงไม่ได้ใช้สัญลักษณ์ 2 ตัว แต่ใช้ 3 ตัว เพื่อแก้ไขข้อบกพร่องนี้ เราจึงนำเสนอความซับซ้อนของ Kolmogorov ที่ไม่มีคำนำหน้า[ 3 ]

ความซับซ้อนของ Kolmogorov ที่ไม่มีคำนำหน้าK

เครื่องจักรทัวริงสากลแบบไม่มีคำนำหน้าคือ ฟังก์ชันคำนวณบางส่วนสากลยู:2*2*{\displaystyle U:2^{*}\ลูกศรขวา 2^{*}}ซึ่งโดเมนคือเซตของสตริงไบนารีที่ไม่มีคำนำหน้า หรือกล่าวอีกนัยหนึ่งคือ ไม่มีโปรแกรมที่ถูกต้องสำหรับยู{\displaystyle U}หากเป็นคำนำหน้าของคำอื่นใด โดเมนนั้นจะตรงตามคุณสมบัติของคำนำหน้าตัวอย่างเช่น หากทุกโปรแกรมที่ถูกต้องสำหรับเครื่องทัวริงสากลยู{\displaystyle U}จบลงด้วยข้อความแสดงการสิ้นสุดที่ไม่สามารถปรากฏที่อื่นในโปรแกรมได้ยู{\displaystyle U}จะไม่มีคำนำหน้า

ความซับซ้อนของ Kolmogorov ที่ไม่มีคำนำหน้าของสตริงx{\displaystyle x}ถูกกำหนดโดย เค(x):=นาที{||:ยู()=x}{\displaystyle K(x):=\min\{|c|:U(c)=x\}}ความยาวของโปรแกรมจำกัดตัวเองที่สั้นที่สุดที่ก่อให้เกิดยู{\displaystyle U}เพื่อส่งออกx{\displaystyle x}.

ตัวเลือกที่แตกต่างกันของเครื่องจักรอเนกประสงค์ที่ไม่มีคำนำหน้าจะเปลี่ยนแปลงไปเค(x){\displaystyle K(x)}โดยค่าคงที่บวกอย่างมากที่สุด[ 4 ]

ทฤษฎีบทความไม่แปรเปลี่ยน

การรักษาแบบไม่เป็นทางการ

มีภาษาสำหรับการอธิบายลักษณะวัตถุบางภาษาที่เหมาะสมที่สุดในแง่ต่อไปนี้: เมื่อมีคำอธิบายใดๆ ของวัตถุในภาษาสำหรับการอธิบายลักษณะวัตถุหนึ่งแล้ว คำอธิบายนั้นสามารถนำไปใช้ในภาษาสำหรับการอธิบายลักษณะวัตถุที่เหมาะสมที่สุดได้โดยมีค่าใช้จ่ายคงที่ ค่าคงที่นี้ขึ้นอยู่กับภาษาที่เกี่ยวข้องเท่านั้น ไม่ได้ขึ้นอยู่กับคำอธิบายของวัตถุหรือวัตถุที่กำลังถูกอธิบาย

ต่อไปนี้เป็นตัวอย่างของภาษาการอธิบายที่เหมาะสมที่สุด คำอธิบายจะประกอบด้วยสองส่วน:

  • ส่วนแรกอธิบายถึงภาษาการบรรยายอีกภาษาหนึ่ง
  • ส่วนที่สองเป็นการอธิบายวัตถุนั้นในภาษาดังกล่าว

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

ทฤษฎีบทความไม่เปลี่ยนแปลงมีดังนี้:เมื่อกำหนดภาษาการอธิบายใดๆLแล้ว ภาษาการอธิบายที่เหมาะสมที่สุดจะมีประสิทธิภาพอย่างน้อยเท่ากับLโดยมีค่าใช้จ่ายคงที่บางส่วน

บทพิสูจน์:คำอธิบายใดๆDในLสามารถแปลงเป็นคำอธิบายในภาษาที่เหมาะสมที่สุดได้ โดยการอธิบายLเป็นโปรแกรมคอมพิวเตอร์P ก่อน (ส่วนที่ 1) จากนั้นใช้คำอธิบายเดิมDเป็นอินพุตให้กับโปรแกรมนั้น (ส่วนที่ 2) ความยาวทั้งหมดของคำอธิบายใหม่D นี้ คือ (โดยประมาณ):

| D | = | P | + | D |

ความยาวของPเป็นค่าคงที่ที่ไม่ขึ้นอยู่กับDดังนั้นจึงมีค่าใช้จ่ายเพิ่มเติมอย่างมากที่สุดเพียงค่าคงที่เท่านั้น โดยไม่คำนึงถึงวัตถุที่อธิบาย ดังนั้นภาษาที่เหมาะสมที่สุดจึงเป็นสากลจนถึงค่าคงที่เพิ่มเติมนี้

การรักษาที่เป็นทางการมากขึ้น

ทฤษฎีบท : ถ้าK และK เป็นฟังก์ชันความซับซ้อนที่สัมพันธ์กับภาษาการอธิบายที่สมบูรณ์แบบทัวริงL และL แล้วจะมีค่าคงที่c ซึ่งขึ้นอยู่กับภาษาL และL ที่เลือก เท่านั้น  โดยที่

.เค1()เค2(){\displaystyle \forall s.-c\leq K_{1}(s)-K_{2}(s)\leq c}.

บทพิสูจน์ : โดยอาศัยสมมาตร ก็เพียงพอที่จะพิสูจน์ว่ามีค่าคงที่c บางค่า ที่ทำให้สำหรับสตริงs ทุกตัว

เค1()เค2()+{\displaystyle K_{1}(s)\leq K_{2}(s)+c}.

ทีนี้ สมมติ ว่ามีโปรแกรมในภาษาL1ซึ่งทำหน้าที่เป็นตัวแปลสำหรับL2

def interpret_language ( p : str )

โดยที่pคือโปรแกรมในL2ตัวแปลภาษานี้มีคุณสมบัติดังต่อไปนี้:

การรันinterpret_languageด้วยอินพุตp จะ ส่งคืนผลลัพธ์ของการรันp

ดังนั้น ถ้าPเป็นโปรแกรมในL ซึ่งเป็นคำอธิบายขั้นต่ำของsแล้วinterpret_language( P ) จะส่งคืนสตริงsความยาวของคำอธิบายของs นี้ คือผลรวมของ

  1. ความยาวของโปรแกรมinterpret_languageซึ่งเราสามารถกำหนดให้เป็นค่าคงที่cได้
  2. ความยาวของPซึ่งตามนิยามคือK ( s )

สิ่งนี้พิสูจน์ถึงขอบเขตบนที่ต้องการ

ประวัติและบริบท

ทฤษฎีสารสนเทศเชิงอัลกอริทึมเป็นสาขาหนึ่งของวิทยาการคอมพิวเตอร์ที่ศึกษาความซับซ้อนของ Kolmogorov และมาตรวัดความซับซ้อนอื่นๆ บนสตริง (หรือโครงสร้างข้อมูล อื่นๆ )

แนวคิดและทฤษฎีของความซับซ้อนของ Kolmogorov นั้นมีพื้นฐานมาจากทฤษฎีบทสำคัญที่ค้นพบครั้งแรกโดยRay Solomonoffซึ่งตีพิมพ์ในปี 1960 โดยอธิบายไว้ใน "รายงานเบื้องต้นเกี่ยวกับทฤษฎีทั่วไปของการอนุมานแบบอุปนัย" [ 5 ]ซึ่งเป็นส่วนหนึ่งของการคิดค้นความน่าจะเป็นเชิงอัลกอริทึม ของเขา เขาได้ให้คำอธิบายที่สมบูรณ์ยิ่งขึ้นในสิ่งพิมพ์ปี 1964 ของเขา "ทฤษฎีอย่างเป็นทางการของการอนุมานแบบอุปนัย" ตอนที่ 1 และตอนที่ 2 ในInformation and Control [ 6 ] [ 7 ]

ต่อมา Andrey Kolmogorov ได้ตีพิมพ์ทฤษฎีบทนี้ในProblems Inform. Transmission อย่างอิสระ ในปี 1965 [ 8 ] Gregory Chaitinก็ได้นำเสนอทฤษฎีบทนี้ในJournal of the ACM เช่นกัน โดยบทความของ Chaitin ถูกส่งในเดือนตุลาคม 1966 และแก้ไขในเดือนธันวาคม 1968 และอ้างอิงถึงบทความของ Solomonoff และ Kolmogorov [ 9 ]

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

เมื่อ Kolmogorov ทราบถึงงานของ Solomonoff เขาจึงยอมรับความสำคัญของ Solomonoff [ 10 ]เป็นเวลาหลายปีที่งานของ Solomonoff เป็นที่รู้จักในสหภาพโซเวียตมากกว่าในโลกตะวันตก อย่างไรก็ตาม ความเห็นพ้องโดยทั่วไปในชุมชนวิทยาศาสตร์คือการเชื่อมโยงความซับซ้อนประเภทนี้กับ Kolmogorov ซึ่งให้ความสำคัญกับความสุ่มของลำดับ ในขณะที่ความน่าจะเป็นเชิงอัลกอริทึมกลับเชื่อมโยงกับ Solomonoff ซึ่งมุ่งเน้นไปที่การทำนายโดยใช้การคิดค้นการแจกแจงความน่าจะเป็นก่อนหน้าสากล พื้นที่ที่กว้างขึ้นซึ่งครอบคลุมความซับซ้อนเชิงพรรณนาและความน่าจะเป็นมักเรียกว่าความซับซ้อนของ Kolmogorov นักวิทยาศาสตร์คอมพิวเตอร์Ming Liถือว่านี่เป็นตัวอย่างของปรากฏการณ์ Matthew : "...สำหรับทุกคนที่มีอยู่ จะได้รับเพิ่มมากขึ้น..." [ 11 ]

นอกจากนี้ยังมีรูปแบบอื่นๆ ของความซับซ้อนของ Kolmogorov หรือข้อมูลเชิงอัลกอริทึมอีกหลายแบบ รูปแบบที่ใช้กันอย่างแพร่หลายที่สุดคือรูปแบบที่อิงตามโปรแกรมที่กำหนดขอบเขตด้วยตนเองซึ่งส่วนใหญ่เป็นผลงานของLeonid Levin (1974)

แนวทางเชิงสัจพจน์สำหรับความซับซ้อนของ Kolmogorov โดยอิงตามสัจพจน์ของ Blum (Blum 1967) ได้รับการนำเสนอโดย Mark Burgin ในบทความที่ Andrey Kolmogorov นำเสนอเพื่อตีพิมพ์[ 12 ]

ผลลัพธ์พื้นฐาน

เราเขียนเค(x,y){\displaystyle K(x,y)}จะเป็นเค((x,y)){\displaystyle K((x,y))}, ที่ไหน(x,y){\displaystyle (x,y)}หมายถึงวิธีการเขียนโค้ดแบบตายตัวสำหรับทูเปิลของสตริง x และ y

ความไม่เท่าเทียมกัน

เราละเว้นปัจจัยการบวกของโอ(1){\displaystyle O(1)}ส่วนนี้อ้างอิงจาก[ 4 ]

ทฤษฎีบท.เค(x)ซี(x)+2บันทึก2ซี(x){\displaystyle K(x)\leq C(x)+2\log _{2}C(x)}

บทพิสูจน์นำโปรแกรมใดๆ สำหรับเครื่องทัวริงสากลที่ใช้ในการกำหนดความซับซ้อนแบบธรรมดามาแปลงเป็นโปรแกรมแบบไม่มีคำนำหน้า โดยการเข้ารหัสความยาวของโปรแกรมในรูปแบบไบนารีเสียก่อน แล้วจึงแปลงความยาวนั้นกลับไปเป็นการเข้ารหัสแบบไม่มีคำนำหน้า ตัวอย่างเช่น สมมติว่าโปรแกรมมีความยาว 9 เราสามารถแปลงได้ดังนี้:910011100001101{\displaystyle 9\mapsto 1001\mapsto 11-00-00-11-\color {red}{01}}โดยที่เราคูณตัวเลขแต่ละหลักด้วยสอง แล้วจึงเพิ่มรหัสสิ้นสุดเข้าไป เครื่องจักรทัวริงสากลแบบไม่มีคำนำหน้าสามารถอ่านโปรแกรมใดๆ สำหรับเครื่องจักรอื่นได้ดังนี้:[โค้ดสำหรับจำลองเครื่องจักรอื่น][ความยาวของโปรแกรมที่เข้ารหัส][โปรแกรม]{\displaystyle [{\text{โค้ดสำหรับจำลองเครื่องอื่น}}][{\text{ความยาวของโปรแกรมที่เขียนโค้ดไว้}}][{\text{ตัวโปรแกรม}}]}ส่วนแรกเป็นการตั้งโปรแกรมเครื่องจักรให้จำลองการทำงานของเครื่องจักรอีกเครื่องหนึ่ง ซึ่งเป็นค่าใช้จ่ายคงที่โอ(1){\displaystyle O(1)}ส่วนที่สองมีความยาว2บันทึก2ซี(x)+3{\displaystyle \leq 2\log _{2}C(x)+3}ส่วนที่สามมีความยาวซี(x){\displaystyle C(x)}.

ทฤษฎีบท : มีอยู่จริง{\displaystyle c}โดยที่x,ซี(x)|x|+{\displaystyle \forall x,C(x)\leq |x|+c}กล่าวโดยสรุปคือซี(x)|x|{\displaystyle C(x)\leq |x|}ในทำนองเดียวกันเค(x)|x|+2บันทึก2|x|{\displaystyle K(x)\leq |x|+2\log _{2}|x|}, และเค(x||x|)|x|{\displaystyle K(x||x|)\leq |x|}.

บทพิสูจน์สำหรับความซับซ้อนแบบธรรมดา เพียงแค่เขียนโปรแกรมที่คัดลอกอินพุตไปยังเอาต์พุตเท่านั้น สำหรับความซับซ้อนแบบไม่มีคำนำหน้า เราต้องอธิบายความยาวของสตริงก่อนที่จะเขียนสตริงนั้นออกมา

ทฤษฎีบท (ขอบเขตข้อมูลเพิ่มเติม, คุณสมบัติการบวกย่อย)

  • เค(x|y)เค(x)เค(x,y)สูงสุด(เค(x|y)+เค(y),เค(y|x)+เค(x))เค(x)+เค(y){\displaystyle K(x|y)\leq K(x)\leq K(x,y)\leq \max(K(x|y)+K(y),K(y|x)+K(x))\leq K(x)+K(y)}
  • เค(xy)เค(x,y){\displaystyle K(xy)\leq K(x,y)}

โปรดทราบว่าไม่มีวิธีใดที่จะเปรียบเทียบได้เค(xy){\displaystyle K(xy)}และเค(x|y){\displaystyle K(x|y)}หรือเค(x){\displaystyle K(x)}หรือเค(y|x){\displaystyle K(y|x)}หรือเค(y){\displaystyle K(y)}มีสตริงบางประเภทที่สตริงทั้งหมดนั้นxy{\displaystyle xy}อธิบายได้ง่าย แต่ส่วนประกอบย่อยของมันนั้นยากมากที่จะอธิบาย

ทฤษฎีบท (สมมาตรของข้อมูล)เค(x,y)=เค(x|y,เค(y))+เค(y)=เค(y,x){\displaystyle K(x,y)=K(x|y,K(y))+K(y)=K(y,x)}.

บทพิสูจน์ด้านหนึ่งเรียบง่าย ส่วนอีกด้านหนึ่งนั้น...เค(x,y)เค(x|y,เค(y))+เค(y){\displaystyle K(x,y)\geq K(x|y,K(y))+K(y)}เราจำเป็นต้องใช้อาร์กิวเมนต์การนับ (หน้า 38 [ 13 ] )

ทฤษฎีบท (ข้อมูลไม่เพิ่มขึ้น)สำหรับฟังก์ชันที่คำนวณได้ใดๆเอฟ{\displaystyle f}เรามีเค(เอฟ(x))เค(x)+เค(เอฟ){\displaystyle K(f(x))\leq K(x)+K(f)}.

บทพิสูจน์ตั้งโปรแกรมเครื่องจักรทัวริงให้สามารถอ่านโปรแกรมสองโปรแกรมต่อเนื่องกัน โปรแกรมหนึ่งอธิบายฟังก์ชัน และอีกโปรแกรมหนึ่งอธิบายสตริง จากนั้นรันโปรแกรมทั้งสองบนเทปทำงานเพื่อสร้างผลลัพธ์เอฟ(x){\displaystyle f(x)}และเขียนออกมาให้ชัดเจน

ความไม่สามารถคำนวณได้ของความซับซ้อนของ Kolmogorov

ความพยายามอย่างง่ายๆ ในการเขียนโปรแกรมเพื่อคำนวณค่าK

มองเผินๆ อาจดูเหมือนง่ายที่จะเขียนโปรแกรมที่สามารถคำนวณK ( s ) สำหรับs ใดๆ เช่น โปรแกรมต่อไปนี้:

def kolmogorov_complexity ( s : str ): for i = 1 to infinity : for each string p of length exactly i if is_valid_program ( p ) and evaluate ( p ) == s return i

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

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

ยิ่งไปกว่านั้น ไม่มีโปรแกรมใดเลยที่สามารถคำนวณฟังก์ชันK ได้ ไม่ว่าโปรแกรมนั้นจะซับซ้อนเพียงใดก็ตาม ซึ่งได้รับการพิสูจน์แล้วในตัวอย่างต่อไปนี้

การพิสูจน์อย่างเป็นทางการถึงความไม่สามารถคำนวณได้ของK

ทฤษฎีบท : มีสตริงที่มีความซับซ้อนของ Kolmogorov มากเท่าใดก็ได้ กล่าวอย่างเป็นทางการคือ สำหรับจำนวนธรรมชาติ n ใดๆจะมีสตริงsที่มีK ( s ) ≥ n [หมายเหตุ 2 ]

พิสูจน์:มิฉะนั้น สตริงจำกัดที่เป็นไปได้ทั้งหมดจำนวนอนันต์จะถูกสร้างขึ้นโดยโปรแกรมจำนวนจำกัด[หมายเหตุ 3 ]ที่มีความซับซ้อนต่ำกว่าnบิต

ทฤษฎีบท : Kไม่ใช่ฟังก์ชันที่คำนวณได้กล่าวคือ ไม่มีโปรแกรมใดที่รับสตริงs ใดๆ เป็นอินพุตและให้ผลลัพธ์เป็นจำนวนเต็มK ( s )

การพิสูจน์โดยการขัดแย้งต่อไปนี้ใช้ภาษาง่ายๆ ที่คล้ายกับ ภาษาปาสคาลในการแสดงโปรแกรม เพื่อความง่ายในการพิสูจน์ ให้สมมติว่าคำอธิบายของมัน (เช่นตัวแปลภาษา ) มีความยาวเท่ากับ1,400,000 บิต สมมติเพื่อหาข้อขัดแย้ง ว่ามีโปรแกรมอยู่

def kolmogorov_complexity ( s : str )

ซึ่งรับสตริงs เป็นอินพุต และส่งคืนค่าK ( s ) โปรแกรมทั้งหมดมีความยาวจำกัด ดังนั้นเพื่อความง่ายในการพิสูจน์ ให้สมมติว่ามีความยาวเท่ากับ7,000,000,000 บิตทีนี้ลองพิจารณาโปรแกรมต่อไปนี้ที่มีความยาว1288บิต:

def generate_complex_string (): str for i = 1 to infinity : for each string s of length exactly i if kolmogorov_complexity ( s ) >= 8000000000 return s

โดยใช้kolmogorov_complexityเป็นซับรูทีน โปรแกรมจะลองสตริงทุกสตริง เริ่มจากสตริงที่สั้นที่สุด จนกว่าจะได้สตริงที่มีความซับซ้อนของ Kolmogorov อย่างน้อยที่สุด8,000,000,000 บิต[หมายเหตุ 4 ] กล่าวคือสตริงที่ไม่สามารถสร้างได้ด้วยโปรแกรมใดๆ ที่สั้นกว่า8,000,000,000 บิตอย่างไรก็ตาม ความยาวโดยรวมของโปรแกรมข้างต้นที่สร้างค่าs นั้นมีเพียง8 บิตเท่านั้น7,001,401,288บิต[หมายเหตุ 5 ] ซึ่งเป็นข้อขัดแย้ง (ถ้าโค้ดKolmogorovComplexityสั้นลง ข้อขัดแย้งก็ยังคงอยู่ ถ้าโค้ดยาวขึ้น ค่าคงที่ที่ใช้ในสามารถGenerateComplexStringเปลี่ยนแปลงได้อย่างเหมาะสมเสมอ) [หมายเหตุ6 ]

การพิสูจน์ข้างต้นใช้ความขัดแย้งที่คล้ายกับความขัดแย้งของ "นอกจากสามารถให้ถึงไม่คำนวณได้ของการจากความไม่ของปัญหาการหยุด H เนื่องจาก K และ H เทียบเท่ากับทัวริ[ 14 ]

มีข้อสรุปเพิ่มเติมที่เรียกกันอย่างขบขันว่า " ทฤษฎีการจ้างงานเต็มรูปแบบ " ในวงการภาษาโปรแกรม ซึ่งระบุว่าไม่มีคอมไพเลอร์ใดที่ปรับขนาดได้อย่างสมบูรณ์แบบ

กฎลูกโซ่สำหรับความซับซ้อนของ Kolmogorov

กฎลูกโซ่[ 15 ]สำหรับความซับซ้อนของ Kolmogorov ระบุว่ามีค่าคงที่c อยู่ เช่นนั้นสำหรับXและY ทั้งหมด :

เค(X,วาย)=เค(X)+เค(วาย|X)+เอx(1,โอจี(เค(X,วาย))){\displaystyle K(X,Y)=K(X)+K(Y|X)+c\cdot max(1,log(K(X,Y)))}.

ข้อความดัง กล่าวระบุว่า โปรแกรมที่สั้นที่สุดที่สร้างXและY ขึ้นมาใหม่ นั้น จะมีขนาดใหญ่กว่าโปรแกรมที่สร้างX ขึ้นมาใหม่ และโปรแกรมที่สร้างY ขึ้นมาใหม่ โดยกำหนดให้X เพียงแค่ค่าลอการิทึมเท่านั้น โดยใช้ข้อความนี้ เราสามารถกำหนดสิ่งที่เทียบเคียงได้กับข้อมูลร่วมกันสำหรับความซับซ้อนของ Kolmogorovได้

การบีบอัด

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

สตริงsสามารถบีบอัดได้ด้วยจำนวนcถ้ามีคำอธิบายที่มีความยาวไม่เกิน | s | − cบิต ซึ่งเทียบเท่ากับการกล่าวว่าK ( s ) ≤ | s |cมิฉะนั้นsจะไม่สามารถบีบอัดได้ด้วยcสตริงที่ไม่สามารถบีบอัดได้ด้วย c จะเรียกว่าไม่สามารถบีบอัดได้  เลย – ตามหลักการรังนกพิราบซึ่งใช้ได้เพราะสตริงที่บีบอัดแล้วทุกสตริงจะแปลงเป็นสตริงที่ไม่ถูกบีบอัดได้เพียงสตริงเดียวสตริงที่ไม่สามารถบีบอัดได้จึงต้องมีอยู่ เนื่องจากมีสตริง 2n บิตที่มีความยาวnแต่ มีสตริงที่สั้นกว่าเพียง 2n − 1 สตริงเท่านั้น นั่นคือสตริงที่มีความยาวน้อยกว่าn (เช่น มีความยาว 0, 1, ..., n  1) [หมายเหตุ 7 ]

ด้วยเหตุผลเดียวกัน สตริงส่วนใหญ่จึงมีความซับซ้อนในแง่ที่ว่าไม่สามารถบีบอัดได้อย่างมีนัยสำคัญ ค่า K ( s ) ของสตริงเหล่านั้นจะไม่เล็กกว่า | s | มากนัก ซึ่งก็คือความยาวของsในหน่วยบิต เพื่อให้เข้าใจได้ชัดเจนยิ่งขึ้น ให้กำหนดค่าn ไว้ค่า หนึ่ง จะมี สตริงบิตที่มีความยาว nจำนวน2n สตริง การ แจกแจง ความน่าจะเป็นแบบเอกรูป บนพื้นที่ของสตริงบิตเหล่านี้จะ กำหนดน้ำหนักที่เท่ากันเป๊ะคือ 2 nให้กับแต่ละสตริงที่มีความยาวn

ทฤษฎีบท : ด้วยการแจกแจงความน่าจะเป็นแบบเอกรูปบนปริภูมิของสตริงบิตที่มีความยาวnความน่าจะเป็นที่สตริงนั้นไม่สามารถบีบอัดได้ด้วยc จะมี ค่าอย่างน้อย1 − 2 c +1 + 2 n

เพื่อพิสูจน์ทฤษฎีบทนี้ โปรดสังเกตว่าจำนวนคำอธิบายที่มีความยาวไม่เกินncนั้นกำหนดโดยอนุกรมเรขาคณิต:

1 + 2 + 2 2 + ... + 2 nc = 2 nc +1 − 1.

เหลืออยู่อย่างน้อย

2 n − 2 nc +1 + 1

สตริงบิตที่มีความยาวnซึ่งไม่สามารถบีบอัดได้ด้วยc ในการหาความน่าจะเป็น ให้หารด้วย2n

ทฤษฎีความไม่สมบูรณ์ของไชติน

ความซับซ้อนของ Kolmogorov K ( s )และฟังก์ชันขอบเขตล่างที่คำนวณได้สองฟังก์ชันแกนแนวนอน ( มาตราส่วนลอการิทึม ) แสดงสตริง ทั้งหมด sเรียงตามความยาว แกนแนวตั้ง ( มาตราส่วนเชิงเส้น ) วัดความซับซ้อนของ Kolmogorov ในหน่วยบิตสตริงส่วนใหญ่ไม่สามารถบีบอัดได้ กล่าวคือ ความซับซ้อนของ Kolmogorov เกินความยาวของสตริงนั้นไปเป็นค่าคงที่ สตริงที่บีบอัดได้ 9 สตริงแสดงอยู่ในภาพ โดยปรากฏเป็นเส้นลาดเกือบแนวตั้ง เนื่องจากทฤษฎีบทความไม่สมบูรณ์ของ Chaitin (1974) ผลลัพธ์ของโปรแกรมใดๆ ที่คำนวณขอบเขตล่างของความซับซ้อนของ Kolmogorov จะไม่สามารถเกินขีดจำกัดคงที่บางค่า ซึ่งเป็นอิสระจากสตริงอินพุตsprog1(s)prog2(s)

จากทฤษฎีบทข้างต้น ( §  การบีบอัด ) สตริงส่วนใหญ่มีความซับซ้อนในแง่ที่ว่าไม่สามารถอธิบายได้ในรูปแบบที่ "บีบอัด" ได้อย่างมีนัยสำคัญ อย่างไรก็ตาม ปรากฏว่าข้อเท็จจริงที่ว่าสตริงเฉพาะมีความซับซ้อนนั้นไม่สามารถพิสูจน์ได้อย่างเป็นทางการ หากความซับซ้อนของสตริงนั้นสูงกว่าเกณฑ์ที่กำหนด การกำหนดอย่างเป็นทางการที่แม่นยำมีดังนี้ ขั้นแรก กำหนดระบบสัจพจน์S เฉพาะ สำหรับจำนวนธรรมชาติระบบสัจพจน์นี้ต้องมีประสิทธิภาพมากพอที่จะทำให้ สามารถเชื่อมโยงสูตรF ในS กับข้อความยืนยัน A บางประการเกี่ยวกับความซับซ้อนของสตริงได้ การเชื่อมโยงนี้ต้องมีคุณสมบัติดังต่อไปนี้:

ถ้าF สามารถพิสูจน์ได้จากสัจพจน์ของSแล้ว ข้อความยืนยันA ที่สอดคล้องกัน จะต้องเป็นจริง การ "กำหนดรูปแบบอย่างเป็นทางการ" นี้สามารถทำได้โดยอาศัยการกำหนดหมายเลขแบบเกอเด

ทฤษฎีบท : มีค่าคงที่L อยู่ค่าหนึ่ง (ซึ่งขึ้นอยู่กับSและการเลือกภาษาอธิบายเท่านั้น) โดยที่ไม่มีสตริงs ใดๆ ที่ทำให้ข้อความนั้น เป็นจริง

เค()แอล{\displaystyle K(s)\geq L}   (ตามที่กำหนดไว้ในS )

สามารถพิสูจน์ได้ภายใน S [ 16 ] [ 17 ]

แนวคิดการพิสูจน์ : การพิสูจน์ผลลัพธ์นี้จำลองมาจากโครงสร้างแบบอ้างอิงตนเองที่ใช้ในปรากฏการณ์ขัดแย้งของเบอร์รีเริ่มต้นด้วยการสร้างโปรแกรมที่แจงนับการพิสูจน์ภายในSและกำหนดขั้นตอนPซึ่งรับอินพุตเป็นจำนวนเต็มLและพิมพ์สตริงxที่อยู่ในหลักฐานการพิสูจน์ภายในSของข้อความK ( x ) ≥ Lโดยการตั้งค่าLให้มากกว่าความยาวของขั้นตอนP นี้ เราจะได้ว่าความยาวที่จำเป็นของโปรแกรมในการพิมพ์xตามที่ระบุไว้ในK ( x ) ≥ Lซึ่งอย่างน้อยที่สุดคือLนั้น น้อยกว่าจำนวนLนับตั้งแต่สตริงxถูกพิมพ์โดยขั้นตอนPนี่คือข้อขัดแย้ง ดังนั้นจึงเป็นไปไม่ได้ที่ระบบการพิสูจน์Sจะพิสูจน์K ( x ) ≥ LสำหรับL ที่ มีขนาดใหญ่มาก โดยเฉพาะอย่างยิ่งสำหรับLที่มากกว่าความยาวของขั้นตอนP (ซึ่งมีค่าจำกัด)

การพิสูจน์ :

เราสามารถค้นหาการแจงนับที่มีประสิทธิภาพของบทพิสูจน์เชิงรูปธรรมทั้งหมดในSได้โดยใช้ขั้นตอนบางอย่าง

def nth_proof ( n : int )

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

def nth_proof_proves_complexity_formula ( n : int ): bool

ซึ่งจะกำหนดว่า การพิสูจน์ครั้งที่ nนั้นพิสูจน์สูตรความซับซ้อนK ( s )  L ได้จริงหรือ ไม่ สตริงsและจำนวนเต็มLนั้นสามารถคำนวณได้โดยใช้ขั้นตอนดังนี้: 

def string_nth_proof ( n : int )
def complexity_lower_bound_nth_proof ( n : int ): int

พิจารณาขั้นตอนต่อไปนี้:

def generate_provably_complex_string ( n : int ): for i = 1 to infinity : if nth_proof_proves_complexity_formula ( i ) and complexity_lower_bound_nth_proof ( i ) n return string_nth_proof ( i )

เมื่อกำหนดn{\displaystyle n}ขั้นตอนนี้จะลองพิสูจน์ทุกวิธีจนกว่าจะพบสตริงและการพิสูจน์ในระบบที่เป็นทางการSของสูตรเค()แอล{\displaystyle K(s)\geq L}สำหรับบางคนแอลn{\displaystyle L\geq n}หากไม่มีหลักฐานดังกล่าว กระบวนการก็จะวนซ้ำไปเรื่อยๆ

สุดท้ายนี้ ลองพิจารณาโปรแกรมที่ประกอบด้วยคำจำกัดความของขั้นตอนทั้งหมดเหล่านี้ และการเรียกใช้งานหลัก:

generate_provably_complex_string ( n )

โดยที่ค่าคงที่n0{\displaystyle n_{0}}จะกำหนดในภายหลัง ความยาวโดยรวมของโครงการสามารถแสดงได้ดังนี้ยู+โอจี2(n0){\displaystyle U+log_{2}(n_{0})}, ที่ไหนยู{\displaystyle U}เป็นค่าคงที่บางอย่างและโอจี2(n0){\displaystyle log_{2}(n_{0})}แสดงถึงความยาวของค่าจำนวนเต็มn0{\displaystyle n_{0}}ภายใต้สมมติฐานที่สมเหตุสมผลว่ามันถูกเข้ารหัสในรูปแบบเลขฐานสอง เราจะเลือกn0{\displaystyle n_{0}}มีค่ามากกว่าความยาวของโปรแกรม กล่าวคือ มีค่าในลักษณะที่ว่าn0>ยู+โอจี2(n0){\displaystyle n_{0}>U+log_{2}(n_{0})}นี่เป็นความจริงอย่างชัดเจนสำหรับn0{\displaystyle n_{0}}มีขนาดใหญ่พอสมควร เนื่องจากด้านซ้ายมือเติบโตเป็นเส้นตรงในn0{\displaystyle n_{0}}ในขณะที่ฝั่งขวามือเติบโตแบบลอการิทึมในn0{\displaystyle n_{0}}จนถึงค่าคงที่ที่กำหนดไว้ยู{\displaystyle U}.

งั้นก็ไม่มีหลักฐานของแบบฟอร์มนั้นเค()แอล{\displaystyle K(s)\geq L}" กับแอลn0{\displaystyle L\geq n_{0}}สามารถหาได้ในSดังที่เห็นได้จากข้อโต้แย้งทางอ้อม : ถ้าcomplexity_lower_bound_nth_proof(i)สามารถส่งคืนค่าได้n0{\displaystyle \geq n_{0}}จากนั้นลูปภายในgenerate_provably_complex_stringจะสิ้นสุดลงในที่สุด และกระบวนการนั้นจะส่งคืนสตริงsโดยที่

เค(){\displaystyle K(s)}
n0{\displaystyle n_{0}}โดยการก่อสร้างgenerate_provably_complex_string
>ยู+โอจี2(n0){\displaystyle U+log_{2}(n_{0})}โดยการเลือกของn0{\displaystyle n_{0}}
เค(){\displaystyle K(s)}เนื่องจาก{\displaystyle s}ได้รับการอธิบายโดยโปรแกรมที่มีความยาวดังกล่าว

นี่คือความขัดแย้งพิสูจน์แล้ว

ดังนั้น โปรแกรมข้างต้นจึงมีค่าที่เลือกไว้ดังนี้n0{\displaystyle n_{0}}ต้องวนลูปไปเรื่อยๆ

แนวคิดที่คล้ายกันนี้ถูกนำมาใช้เพื่อพิสูจน์คุณสมบัติของ ค่าคงที่ ของChaitin

ความยาวข้อความขั้นต่ำ

หลักการความยาวข้อความขั้นต่ำของการอนุมานเชิงสถิติและอุปนัยและการเรียนรู้ของเครื่องได้รับการพัฒนาโดยCS Wallaceและ DM Boulton ในปี 1968 MML เป็นแบบเบย์เซียน (กล่าวคือรวมความเชื่อก่อนหน้า) และทฤษฎีสารสนเทศ มีคุณสมบัติที่พึงประสงค์ของความไม่แปรผันทางสถิติ (กล่าวคือ การอนุมานจะแปลงไปเมื่อมีการกำหนดพารามิเตอร์ใหม่ เช่น จากพิกัดเชิงขั้วเป็นพิกัดคาร์ทีเซียน) ความสอดคล้องทางสถิติ (กล่าวคือ แม้แต่สำหรับปัญหาที่ยากมาก MML ก็จะลู่เข้าสู่แบบจำลองพื้นฐานใดๆ) และประสิทธิภาพ (กล่าวคือ แบบจำลอง MML จะลู่เข้าสู่แบบจำลองพื้นฐานที่แท้จริงใดๆ ได้เร็วที่สุดเท่าที่จะเป็นไปได้) CS Wallace และ DL Dowe (1999) ได้แสดงให้เห็นถึงความเชื่อมโยงอย่างเป็นทางการระหว่าง MML และทฤษฎีสารสนเทศเชิงอัลกอริทึม (หรือความซับซ้อนของ Kolmogorov) [ 18 ]

ความสุ่มของ Kolmogorov

นิยามความสุ่มของ Kolmogorovระบุว่า สตริง (โดยปกติจะเป็นบิต ) จะสุ่มได้ก็ต่อ เมื่อ โปรแกรมคอมพิวเตอร์ที่สั้นที่สุดที่สามารถสร้างสตริงนั้นได้มีความยาวประมาณเท่ากับตัวสตริงเอง เพื่อให้ชัดเจนยิ่งขึ้น สตริงคือ...x{\displaystyle x}ความยาวn{\displaystyle n}เรียกว่าการสุ่มแบบ Kolmogorovถ้า เค(x)n+โอ(1){\displaystyle K(x)\geq n+O(1)}ที่ไหนเค{\displaystyle K}คือความซับซ้อนของ Kolmogorov ที่ไม่มีคำนำหน้าซึ่งกำหนดไว้ข้างต้น สตริงสุ่มในความหมายนี้ไม่สามารถบีบอัดได้เนื่องจากเป็นไปไม่ได้ที่จะ "บีบอัด" สตริงลงในโปรแกรมที่สั้นกว่าตัวสตริงเอง มีสตริงสุ่ม Kolmogorov อย่างน้อยหนึ่งสตริงสำหรับแต่ละความยาว[ 19 ]

คำจำกัดความนี้สามารถขยายเพื่อกำหนดแนวคิดของความสุ่มสำหรับ ลำดับ อนันต์จากตัวอักษรจำกัดลำดับสุ่มเชิงอัลกอริทึม เหล่านี้ สามารถกำหนดได้ในสามวิธีที่เทียบเท่ากัน วิธีหนึ่งใช้อนาล็อกที่มีประสิทธิภาพของทฤษฎีการวัด อีกวิธี หนึ่งใช้มาร์ติงเกล ที่มีประสิทธิภาพ วิธีที่สามกำหนดลำดับอนันต์ให้เป็นแบบสุ่มหากความซับซ้อนของ Kolmogorov ที่ไม่มีคำนำหน้าของส่วนเริ่มต้นเติบโตเร็วพอ — จะต้องมีค่าคงที่cเช่นนั้นความซับซ้อนของส่วนเริ่มต้นที่มีความยาวnจะ ต้องมี ค่าอย่างน้อยnc เสมอ [ 20 ]

ความสัมพันธ์กับเอนโทรปี

สำหรับระบบพลวัต อัตราเอนโทรปีและความซับซ้อนเชิงอัลกอริทึมของวิถีการเคลื่อนที่นั้นมีความสัมพันธ์กันตามทฤษฎีบทของบรูดโนที่ว่า ความเท่าเทียมกันเค(x;ที)=ชม.(ที){\displaystyle K(x;T)=h(T)}ใช้ได้กับเกือบทุกอย่างx{\displaystyle x}[ 21 ]

สามารถแสดงได้[ 22 ]ว่าสำหรับเอาต์พุตของแหล่งข้อมูล Markovความซับซ้อนของ Kolmogorov เกี่ยวข้องกับเอนโทรปี ของแหล่งข้อมูล กล่าวคือ ความซับซ้อนของ Kolmogorov ของเอาต์พุตของแหล่งข้อมูล Markov ที่ถูกทำให้เป็นมาตรฐานโดยความยาวของเอาต์พุต จะลู่เข้าสู่ เอนโทรปีของแหล่งข้อมูลเกือบแน่นอน (เมื่อความยาวของเอาต์พุตเข้าสู่ค่าอนันต์)

ทฤษฎีบท (ทฤษฎีบท 14.2.5 [ 23 ] ) ความซับซ้อนแบบ Kolmogorov ของสตริงไบนารีx1:n{\displaystyle x_{1:n}}พอใจ1nเค(x1:n|n)ชม(1nฉันxฉัน)+บันทึกn2n+โอ(1/n){\displaystyle {\frac {1}{n}}K(x_{1:n}|n)\leq H_{b}\left({\frac {1}{n}}\sum _{i}x_{i}\right)+{\frac {\log n}{2n}}+O(1/n)}ที่ไหนชม{\displaystyle H_{b}}คือฟังก์ชันเอนโทรปีแบบไบนารี (อย่าสับสนกับอัตราเอนโทรปี)

ปัญหาการหยุด

ฟังก์ชันความซับซ้อนของ Kolmogorov เทียบเท่ากับการตัดสินใจเกี่ยวกับปัญหาการหยุดทำงาน

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

ทิศทางอื่นมีความซับซ้อนมากกว่ามาก[ 24 ] [ 25 ]แสดงให้เห็นว่าเมื่อกำหนดฟังก์ชันความซับซ้อนของ Kolmogorov แล้ว เราสามารถสร้างฟังก์ชันได้พี{\displaystyle p}โดยที่พี(n)บีบี(n){\displaystyle p(n)\geq BB(n)}สำหรับขนาดใหญ่ทั้งหมดn{\displaystyle n}, ที่ไหนบีบี{\displaystyle BB}คือ ฟังก์ชันการเลื่อนของ Busy Beaver (หรือเขียนแทนด้วยเอส(n){\displaystyle S(n)}โดยการปรับเปลี่ยนฟังก์ชันที่ค่าต่ำกว่าของn{\displaystyle n}เราได้รับขีดจำกัดบนของบีบี{\displaystyle BB}ซึ่งช่วยแก้ปัญหาการหยุดทำงานได้

ลองพิจารณาโปรแกรมนี้ดูพีเค{\textstyle p_{K}}ซึ่งรับข้อมูลเข้าเป็นn{\textstyle n}และใช้งานเค{\textstyle K}.

  • แสดงรายการสตริงทั้งหมดที่มีความยาว2n+1{\textstyle \leq 2n+1}.
  • สำหรับสตริงแต่ละสตริงดังกล่าวx{\textstyle x}แสดงรายการโปรแกรมทั้งหมด (ที่ไม่มีคำนำหน้า) ที่มีความยาวเค(x){\displaystyle K(x)}จนกว่าจะมีตัวใดตัวหนึ่งส่งออกมาx{\textstyle x}บันทึกระยะเวลาการทำงานnx{\textstyle n_{x}}.
  • ส่งออกค่าที่ใหญ่ที่สุดnx{\textstyle n_{x}}.

เราพิสูจน์โดยวิธีขัดแย้งว่าพีเค(n)บีบี(n){\textstyle p_{K}(n)\geq BB(n)}สำหรับขนาดใหญ่ทั้งหมดn{\textstyle n}.

อนุญาตพีn{\textstyle p_{n}}เป็นบีเวอร์ที่ขยันขันแข็งตลอดระยะเวลาn{\displaystyle n}ลองพิจารณาโปรแกรม (ที่ไม่มีคำนำหน้า) นี้ ซึ่งไม่รับอินพุตใดๆ:

  • เรียกใช้โปรแกรมพีn{\textstyle p_{n}}และบันทึกระยะเวลาการทำงานของมันบีบี(n){\textstyle BB(n)}.
  • สร้างโปรแกรมทั้งหมดที่มีความยาว2n{\textstyle \leq 2n}เรียกใช้งานแต่ละโปรแกรมเป็นเวลาสูงสุดบีบี(n){\textstyle BB(n)}ขั้นตอนต่างๆ โปรดสังเกตผลลัพธ์ของขั้นตอนที่หยุดทำงาน
  • แสดงผลลัพธ์เป็นสตริงที่มีลำดับตัวอักษรต่ำที่สุดที่ยังไม่ปรากฏในผลลัพธ์ใดๆ เหล่านั้น

ให้สตริงที่โปรแกรมส่งออกมาเป็นx{\textstyle x}.

โปรแกรมมีระยะเวลาn+2บันทึก2n+โอ(1){\textstyle \leq n+2\log _{2}n+O(1)}, ที่ไหนn{\displaystyle n}มาจากความยาวของ Busy Beaverพีn{\textstyle p_{n}},2บันทึก2n{\displaystyle 2\log _{2}n}มาจากการใช้ รหัสเดลต้าของเอเลียส (ที่ไม่มีคำนำหน้า) สำหรับตัวเลขn{\displaystyle n}, และโอ(1){\displaystyle O(1)}มาจากส่วนอื่นๆ ของโปรแกรม ดังนั้นเค(x)n+2บันทึก2n+โอ(1)2n{\displaystyle K(x)\leq n+2\log _{2}n+O(1)\leq 2n}สำหรับทุกสิ่งใหญ่n{\textstyle n}นอกจากนี้ เนื่องจากมีโปรแกรมที่มีความยาวที่เป็นไปได้เพียงจำนวนจำกัดเท่านั้น2n{\textstyle \leq 2n}เรามี(x)2n+1{\textstyle l(x)\leq 2n+1}โดยหลักการจัดหมวดหมู่โดยสมมติฐานพีเค(n)<บีบี(n){\textstyle p_{K}(n)<BB(n)}ดังนั้นสตริงทุกสตริงที่มีความยาว2n+1{\textstyle \leq 2n+1}มีโปรแกรมขั้นต่ำพร้อมรันไทม์<บีบี(n){\textstyle <BB(n)}ดังนั้น สตริงx{\textstyle x}มีโปรแกรมขั้นต่ำพร้อมรันไทม์<บีบี(n){\textstyle <BB(n)}นอกจากนี้ โปรแกรมดังกล่าวยังมีระยะเวลานานเค(x)2n{\textstyle K(x)\leq 2n}สิ่งนี้ขัดแย้งกับอย่างไรx{\textstyle x}ได้ถูกสร้างขึ้นแล้ว

ความน่าจะเป็นสากล

แก้ไขเครื่องทัวริงสากลยู{\displaystyle U}ซึ่งเป็นค่าเดียวกันกับที่ใช้ในการกำหนดความซับซ้อนของ Kolmogorov (แบบไม่มีคำนำหน้า) จงกำหนดความน่าจะเป็นสากล (แบบไม่มีคำนำหน้า) ของสตริงx{\displaystyle x}จะเป็นพี(x)=ยู(พี)=x2(พี){\displaystyle P(x)=\sum _{U(p)=x}2^{-l(p)}}กล่าวอีกนัยหนึ่งคือ เป็นความน่าจะเป็นที่เครื่องจักรทัวริงสากลจะหยุดทำงานหลังจากอ่านส่วนนำหน้าบางส่วนของกระแสข้อมูลไบนารีแบบสุ่มสม่ำเสมอเป็นอินพุต และส่งผลลัพธ์ออกมาx{\displaystyle x}.

บันทึก.ยู(พี)=x{\displaystyle U(p)=x}ไม่ได้หมายความว่าสตรีมอินพุตคือพี000{\displaystyle p000\cdots }แต่เครื่องจักรทัวริงสากลจะหยุดทำงาน ณ จุดใดจุดหนึ่งหลังจากอ่านส่วนแรกเสร็จแล้วพี{\displaystyle p}โดยไม่อ่านข้อมูลเพิ่มเติมใดๆ และเมื่อหยุดทำงานแล้ว ก็จะเขียนข้อความว่าx{\displaystyle x}ไปยังเทปเอาต์พุต

ทฤษฎีบท (ทฤษฎีบท 14.11.1 [ 23 ] )บันทึก1พี(x)=เค(x)+โอ(1){\displaystyle \log {\frac {1}{P(x)}}=K(x)+O(1)}

นัยสำคัญในทางชีววิทยา

ความซับซ้อนของ Kolmogorov ถูกนำมาใช้ในบริบทของชีววิทยาเพื่อโต้แย้งว่าสมมาตรและการจัดเรียงแบบโมดูลาร์ที่สังเกตได้ในหลายสปีชีส์เกิดขึ้นจากแนวโน้มของวิวัฒนาการที่จะเลือกความซับซ้อนของ Kolmogorov ที่น้อยที่สุด[ 26 ]เมื่อพิจารณาจีโนมเป็นโปรแกรมที่ต้องแก้ปัญหาหรือดำเนินการฟังก์ชันต่างๆ โปรแกรมที่สั้นกว่าจะเป็นที่ต้องการมากกว่าเนื่องจากกลไกของวิวัฒนาการจะค้นหาได้ง่ายกว่า[ 27 ]ตัวอย่างของแนวทางนี้คือสมมาตรแปดเท่าของวงจรเข็มทิศที่พบในแมลงหลายชนิด ซึ่งสอดคล้องกับวงจรที่ทั้งใช้งานได้และต้องการความซับซ้อนของ Kolmogorov น้อยที่สุดในการสร้างจากหน่วยที่จำลองตัวเองได้[ 28 ]

เวอร์ชันแบบมีเงื่อนไข

ความซับซ้อนของ Kolmogorov แบบมีเงื่อนไขของสตริงสองสตริงเค(x|y){\displaystyle K(x|y)}โดยคร่าวๆ แล้ว จะถูกนิยามว่าเป็นความซับซ้อนของ Kolmogorov ของxเมื่อกำหนดให้yเป็นอินพุตเสริมของกระบวนการ[ 29 ] [ 30 ]ดังนั้น ในขณะที่ความซับซ้อนของ Kolmogorov (แบบไม่มีเงื่อนไข)เค(x){\displaystyle K(x)}ของลำดับx{\displaystyle x}คือความยาวของโปรแกรมไบนารีที่สั้นที่สุดที่ส่งออกผลลัพธ์x{\displaystyle x}บนคอมพิวเตอร์สากล และสามารถคิดได้ว่าเป็นปริมาณข้อมูลขั้นต่ำที่จำเป็นในการสร้างx{\displaystyle x}ความซับซ้อนของ Kolmogorov แบบมีเงื่อนไขเค(x|y){\displaystyle K(x|y)}ถูกกำหนดให้เป็นความยาวของโปรแกรมไบนารีที่สั้นที่สุดที่คำนวณx{\displaystyle x}เมื่อไรy{\displaystyle y}ป้อนเป็นข้อมูลเข้าโดยใช้คอมพิวเตอร์สากล[ 31 ]

นอกจากนี้ยังมีความซับซ้อนที่ขึ้นอยู่กับความยาวด้วยเค(x|แอล(x)){\displaystyle K(x|L(x))}ซึ่งก็คือความซับซ้อนของxเมื่อกำหนดความยาวของxเป็นค่าที่ทราบ/ป้อนเข้า[ 32 ] [ 33 ]

ความซับซ้อนที่จำกัดเวลา

ความซับซ้อนของ Kolmogorov ที่จำกัดเวลาเป็นเวอร์ชันที่แก้ไขของความซับซ้อนของ Kolmogorov โดยที่พื้นที่ของโปรแกรมที่จะค้นหาวิธีแก้ปัญหาถูกจำกัดไว้เฉพาะโปรแกรมที่สามารถทำงานได้ภายในจำนวนขั้นตอนที่กำหนดไว้ล่วงหน้า[ 34 ]มีการตั้งสมมติฐานว่าความเป็นไปได้ของการมีอยู่ของอัลกอริทึมที่มีประสิทธิภาพสำหรับการกำหนดความซับซ้อนของ Kolmogorov ที่จำกัดเวลาโดยประมาณนั้นเกี่ยวข้องกับคำถามที่ว่าฟังก์ชันทางเดียวที่ แท้จริง มีอยู่ หรือไม่ [ 35 ] [ 36 ]

ดูเพิ่มเติม

หมายเหตุ

  1. นี่เป็นการตีพิมพ์ซ้ำภาษาอังกฤษของบทความต้นฉบับภาษารัสเซียเมื่อปี 1963 ของโคลโมโกรอฟ เรื่อง “О таблицах случайных чисел”.
  2. อย่างไรก็ตาม sที่มี K ( s ) = nไม่จำเป็นต้องมีอยู่สำหรับทุก nตัวอย่างเช่น ถ้า nไม่ใช่พหุคูณของ 7 โปรแกรม ASCII ใดๆ ก็ไม่ สามารถมีความยาวเท่ากับ nบิต
  3. มีข้อความโปรแกรมที่แตกต่างกัน 1 + 2 + 2 2 + 2 3 + ... + 2 n = 2 n +1 − 1 ข้อความที่มีความยาวไม่เกิน nบิต; เปรียบเทียบกับอนุกรมเรขาคณิตหากความยาวของโปรแกรมเป็นพหุคูณของ 7 บิต จะมีข้อความโปรแกรมน้อยลงไปอีก
  4. จากทฤษฎีบทก่อนหน้านี้ สตริงดังกล่าวมีอยู่จริง ดังนั้นforลูปจะสิ้นสุดลงในที่สุด
  5. รวมถึงตัวแปลภาษาและรหัสซับรูทีนสำหรับKolmogorovComplexity
  6. ถ้าKolmogorovComplexityมีความยาว nบิต ค่าคงที่ mที่ใช้ในGenerateComplexStringจะต้องถูกปรับให้ตรงตาม n +1,400,000 +1218 + 7·log ( m ) < mซึ่งเป็นไปได้เสมอ เนื่องจาก mเติบโตเร็วกว่า log ( m )
  7. เนื่องจากมีสตริงความยาว L จำนวน N = 2 Lสตริง ดังนั้นจำนวนสตริงความยาว L = 0, 1, ..., n − 1คือ N + N + ... + N = 2 0 + 2 1 + ... + 2 n −1ซึ่งเป็นอนุกรมเรขาคณิต จำกัด ที่มีผลรวม 2 0 + 2 1 + ... + 2 n −1 = 2 0 × (1 − 2 n ) / (1 − 2) = 2 n − 1

อ่านเพิ่มเติม

  • Blum, M. (1967). "เกี่ยวกับขนาดของเครื่องจักร" . ข้อมูลและการควบคุม . 11 (3): 257. doi : 10.1016/S0019-9958(67)90546-3 .
  • Brudno, A. (1983). "เอนโทรปีและความซับซ้อนของวิถีการเคลื่อนที่ของระบบพลวัต" วารสารของสมาคมคณิตศาสตร์มอสโก 2 : 127– 151 .
  • Cover, Thomas M.; Thomas, Joy A. (2006). องค์ประกอบของทฤษฎีสารสนเทศ (  ฉบับที่ 2). Wiley-Interscience. ISBN 0-471-24195-4.
  • ลาโฮส, รอนใหญ่; กาบอร์, อิวานยอส; เรกา, ซาโบ (1999) อัลกอริตมูซอก . พิมพ์ผิดTeX. ไอเอสบีเอ็น 963-279-014-6.
  • หลี่หมิง; วิตันยี, พอล (1997) ความรู้เบื้องต้นเกี่ยวกับความซับซ้อนของโคลโมโกรอฟและการประยุกต์ สปริงเกอร์. ไอเอสบีเอ็น 978-0-387-33998-6.
  • หยู, มานิน (1977). หลักสูตรตรรกศาสตร์ทางคณิตศาสตร์ . สปริงเกอร์-เวอร์แลก. ISBN 978-0-7204-2844-5.
  • Sipser, Michael (1997). บทนำสู่ทฤษฎีการคำนวณ . PWS. ISBN 0-534-95097-3.
  • Downey, Rodney G.; Hirschfeldt, Denis R. (2010). "ความสุ่มและความซับซ้อนของอัลกอริทึม" . ทฤษฎีและการประยุกต์ใช้การคำนวณ . doi : 10.1007/978-0-387-68441-3 . ISBN 978-0-387-95567-4ISSN 2190-619X 
  • มรดกของ Andrei Nikolaevich Kolmogorov
  • สิ่งพิมพ์ออนไลน์ของ Chaitin
  • หน้า IDSIA ของ Solomonoff
  • การสรุปข้อมูลเชิงอัลกอริทึมโดยเจ. ชมิดฮูเบอร์
  • "บทวิจารณ์ของ Li Vitanyi 1997 "
  • ทรอมป์, จอห์น. "สนามทดลองแคลคูลัสแลมบ์ดาและตรรกะเชิงผสมของจอห์น "แบบจำลองคอมพิวเตอร์แคลคูลัสแลมบ์ดาของทรอมป์นำเสนอคำจำกัดความที่ชัดเจนของ K()]
  • ปัญญาประดิษฐ์สากลบนพื้นฐานของความซับซ้อนของ Kolmogorov ISBN 3-540-22139-5โดยเอ็ม. ฮัตเตอร์ : ISBN 3-540-22139-5
  • ความยาวข้อความขั้นต่ำ (MML)ของDavid Doweและหลักการมีดโกนของ Occam
  • Grunwald, P.; Pitt, MA (2005). Myung, IJ (บรรณาธิการ). ความก้าวหน้าในความยาวคำอธิบายขั้นต่ำ: ทฤษฎีและการประยุกต์ใช้สำนักพิมพ์ MIT ISBN 0-262-07262-9.

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ความซับซ้อนของโคลโมโกรอฟ

ในทฤษฎีสารสนเทศเชิงอัลกอริทึม (สาขาย่อยของวิทยาศาสตร์คอมพิวเตอร์และคณิตศาสตร์ ) ความซับซ้อนของ Kolmogorovของวัตถุ เช่น ข้อความ คือความยาวของโปรแกรมคอมพิวเตอร์ ที่สั้นที่สุด...

ปรีชา

พิจารณา สตริง สองชุดต่อไปนี้ซึ่งประกอบด้วยตัวอักษรพิมพ์เล็กและตัวเลขจำนวน 32 ตัว:

ความซับซ้อนของ Kolmogorov แบบธรรมดา C

ความซับซ้อนของ Kolmogorov มีสองนิยาม ได้แก่ แบบธรรมดา และ แบบไม่มีคำนำหน้า ความซับซ้อนแบบธรรมดาคือความยาวคำอธิบายขั้นต่ำของโปรแกรมใดๆ และใช้สัญลักษณ์ แทนด้วย ซี ( x ) {\displaystyle C(x)} ในขณะที่ความซับซ้อนแบบไม่มีคำนำหน้า...

ความซับซ้อนของ Kolmogorov ที่ไม่มีคำนำหน้า K

เครื่องจักร ทัวริงสากลแบบไม่มีคำนำหน้า คือ ฟังก์ชันคำนวณบางส่วนสากล ยู : 2 * → 2 * {\displaystyle U:2^{*}\ลูกศรขวา 2^{*}} ซึ่งโดเมนคือเซตของสตริงไบนารีที่ไม่มีคำนำหน้า หรือกล่าวอีกนัยหนึ่งคือ ไม่มีโปรแกรมที่ถูกต้องสำหรับ ยู {\displaystyle U}...