การทดสอบแสดงว่าไม่มีข้อบกพร่องหรือไม่?


18

(n+1)คะแนนจะต้องระบุพหุนามขององศาเฉพาะ ตัวอย่างเช่นสองจุดในระนาบกำหนดว่าหนึ่งบรรทัดn

จำเป็นต้องมีจุดกี่จุดในการพิจารณาฟังก์ชันที่คำนวณได้แบบไม่ซ้ำกันโดยกำหนดความยาวของโปรแกรมที่คำนวณในภาษาที่กำหนดตายตัว? (เช่นถูกผูกไว้กับความซับซ้อนของ Kolmogorov ของ )f:NNff

แนวคิดก็คืออย่างน้อยในทางทฤษฎีเราสามารถพิสูจน์ความถูกต้องของโปรแกรมโดยทำการทดสอบให้เพียงพอ

หากมีโปรแกรมของความยาวที่คำนวณมีความผูกพันอยู่กับจำนวนของฟังก์ชั่นที่สามารถคำนวณที่มีความยาวแหล่งที่มาของที่มากที่สุดLPLfL

ดังนั้นหนึ่งจะต้อง "เท่านั้น" เพื่อพิสูจน์ว่า:

  • f สามารถคำนวณได้ด้วยความยาวของแหล่งข้อมูลL
  • Pไม่คำนวณฟังก์ชันอื่นใดที่คำนวณเป็นLไบต์หรือน้อยกว่า (โดยการทดสอบ)

ความคิดนี้อาจไม่มีผลกระทบที่เกิดขึ้นจริง (ขอบเขตนั้นแน่นอนที่จะต้องอธิบาย)


4
สมมติว่าคำอธิบายของคุณของฟังก์ชั่นจะได้รับในไบนารีแล้วมีที่มากที่สุด2L+11ของความยาวคำอธิบายที่มากที่สุดLLแต่ตอนนี้ปัญหาคือว่าไม่เหมือนพหุนามฟังก์ชันที่คำนวณได้สองฟังก์ชันสามารถนำค่าเดียวกันมาใช้กับจำนวนอินพุตที่ไม่ จำกัด ได้อย่างง่ายดาย ดังนั้นปัญหาของคุณดูเหมือนเป็นไปไม่ได้สำหรับฉัน
บรูโน่

ฉันเข้าใจความคิดของคุณ แต่ฟังก์ชั่นการคำนวณที่แตกต่างกันสองตัวของความยาวคำอธิบาย <= L ควรแตกต่างกันในบางจุด (สำหรับบาง n0) ใครจะหาค่าของ n0 ที่ได้รับ L?
pbaren

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

7
ที่จริงแล้ว @Kaveh ตามการโต้เถียงของคุณเองขอบเขตบนจะบอกคุณบางอย่างเกี่ยวกับที่ที่พวกเขาแตกต่างกันไม่ใช่แค่การคำนวณ ถ้าK ( f ) Lและf gดังนั้นK ( x ) 2 L + cโดยที่cคือความยาวของอัลกอริทึมที่คุณ (@Kaveh) อธิบายไว้และxเป็นสตริงแรกที่fและgแตกต่างกัน โดยเฉพาะอย่างยิ่งxK(f)K(f)LfgK(x)2L+ccxfgxล้อมรอบด้วยฟังก์ชั่นบางอย่างเช่นไม่ว่าง-ช่องคลอด- C อย่างไรก็ตามการค้นหาxทั้งหมดที่K ( x ) 2 L + cหรือการคำนวณ BB ยังคงไม่สามารถคำนวณได้ ดังนั้น @pbaren: มันมีข้อ จำกัด แต่มันมากกว่าแค่การอธิบายก็ไม่สามารถคำนวณได้ 2L+cxK(x)2L+c
Joshua Grochow

6
@Kaveh: นั่นคือสิ่งที่ฉันหมายถึงโดย "Busy-ช่องคลอดเหมือน" ฟังก์ชั่นให้มีความยาวของสตริงที่ยาวที่สุดที่มีความซับซ้อน Kolmogorov (แก้ไขเครื่องสากล) เป็นอย่างมากn มีเพียงจำนวน จำกัด เท่านั้นเช่นนี้ดังนั้นจึงมีการกำหนดไว้อย่างดีถึงทางเลือกของเครื่องจักรสากล ถ้าอย่างนั้นB B ( 2 L + c )เป็นขอบเขตบน: ถ้าฟังก์ชันทั้งสอง (คำนวณได้ทั้งหมด) ของความซับซ้อนของ Kolmogorov ที่Lส่วนใหญ่เห็นด้วยกับทุกจุดที่ยาวB B ( 2 L + c )BB(n)nBB(2L+c)LBB(2L+c)แล้วพวกเขาจะเท่ากัน
Joshua Grochow

คำตอบ:


9

(นี่เป็นความคิดเห็น แต่ยาวไป) คำถามที่น่าสนใจมาก หากคุณยินดีคิดเกี่ยวกับมาตรการความซับซ้อนอื่น ๆ นอกเหนือจาก Kolmogorov แล้วมีคำตอบบางอย่างในทฤษฎีการเรียนรู้ที่อาจทำให้คุณพึงพอใจ ฉันปล่อยให้ผู้เชี่ยวชาญในพื้นที่

ตัวอย่างเช่นถ้าฉันไม่เข้าใจผิดใน "ทฤษฎีที่เรียนรู้ได้" Valiant พิสูจน์ว่าฟังก์ชันบูลีนสามารถสร้างขึ้นใหม่ได้ด้วยจำนวนพหุนามของ "คะแนนบวก" กับขนาดของสูตร k-CNF (สำหรับ k ที่ตายตัวใด ๆ และผมหมายถึงกับ "จุดบวก" เหล่านั้นในรูปแบบ )(x1,,xn,1)

ใน TAOCP ของ Knuth 7.2.1.6 มันแสดงให้เห็นอย่างน่าอัศจรรย์ (ใช้รูปแบบต้นคริสต์มาส) ที่จะสร้างฟังก์ชั่นบูลีนแบบ monote ใหม่ (เช่นไม่ลดลงในแต่ละตัวแปร) คุณต้องการอย่างแน่นอนคะแนน(n+1n/2+1)


7

ในการดำเนินการตามคำตอบของ Deigo ขอบเขตความซับซ้อนตัวอย่างมาตรฐานจากทฤษฎีการเรียนรู้จะบอกคุณว่าหากคุณพอใจกับการค้นหาโปรแกรมที่ "ถูกต้อง" คุณไม่จำเป็นต้องลองหลาย ๆ จุดเลย ให้บอกว่าเราเข้ารหัสโปรแกรมในรูปแบบไบนารี่เพื่อให้มีเพียงโปรแกรมที่มีความยาว d ให้คิดว่ายังว่ามีการกระจายตัวอย่างบางกว่าอินพุตD บางทีเป้าหมายของคุณคือการหาโปรแกรมที่คุณมั่นใจว่าเกือบจะถูกต้อง ("อาจจะประมาณถูกต้อง" เช่นในรูปแบบการเรียนรู้ของ Valiants PAC) นั่นคือคุณต้องการเรียกใช้อัลกอริทึมที่จะใช้ตัวอย่างจำนวนน้อยx Dพร้อมกับf ( x )2dDxDf(x)และจะมีความน่าจะเป็นอย่างน้อยการส่งออกบางโปรแกรมPซึ่งเห็นด้วยกับบนอย่างน้อย( 1 - ε )ส่วนของปัจจัยการผลิตมาจากD (1δ)Pf(1ϵ)D

เราก็จะวาดตัวอย่างx ~ Dและเอาท์พุทโปรแกรมใด ๆPของความยาวdที่เห็นด้วยกับFในทุกตัวอย่าง (มีการรับประกันว่ามีอยู่เนื่องจากเราถือว่าfมีความซับซ้อนของ Kolmogorov มากที่สุดd ) ...mxDPdffd

ความน่าจะเป็นที่โปรแกรมใดโปรแกรมหนึ่งที่ไม่เห็นด้วยกับfในตัวอย่างมากกว่าϵส่วนมีความสอดคล้องกับตัวอย่างmที่เราเลือก? มันเป็นที่มากที่สุด( 1 - ε )ม. เราต้องการที่จะใช้ความน่าจะเป็นนี้ให้มากที่สุดδ / 2 dเพื่อให้เราสามารถรวมยูเนี่ยนข้ามโปรแกรม2 dทั้งหมดและบอกว่าด้วยความน่าจะเป็นอย่างน้อย1 - δโปรแกรม "เลว" ไม่สอดคล้องกับตัวอย่างที่เราวาด . การแก้ปัญหาเราเห็นว่าเพียงพอที่จะรับค่าm 1เท่านั้น Pfϵm(1ϵ)mδ/2d2d1δ ตัวอย่าง (กล่าวคือมีเพียงเส้นตรงจำนวนมากในความซับซ้อนของ Kolmogorov ของf... )

m1ϵ(d+log1/δ)
f

BTW ข้อโต้แย้งเช่นนี้สามารถใช้เพื่อพิสูจน์ "Occam's Razor": เนื่องจากมีจำนวนการสังเกตที่คงที่ในบรรดาทฤษฎีทั้งหมดที่อธิบายพวกเขาคุณควรเลือกอันที่มีความซับซ้อน Kolmogorov ต่ำที่สุดเพราะมีโอกาสน้อยมาก

แน่นอนถ้าคุณต้องการตรวจสอบโปรแกรมคงที่เดียวด้วยวิธีนี้คุณจะต้องมีตัวอย่าง ...O(log(1/δ)/ϵ)


3

นี่คือคำตอบเล็กน้อย: สมมติว่าแล้วคุณจำเป็นต้องรู้ค่าของFที่ทั้งหมด| N | จุดที่จะต้องไม่ซ้ำกันตรวจสอบฉ ดังนั้นวิธีการที่คุณร่างไม่ได้ช่วยให้คุณตลอดจนกว่าคุณจะรู้ว่าอย่างใดความยาวLของโปรแกรมเป็นอย่างมากในระยะสั้น: สั้นกว่าLG | N | เกร็ดLlg|N|f|N|fLlg|N|

พิจารณาครอบครัวของฟังก์ชั่นที่ฉันถูกกำหนดให้เป็นฟังก์ชั่นฉัน ( x ) = 1ถ้าฉัน= xและฉัน ( x ) = 0ถ้าฉัน x ขอให้สังเกตว่าความซับซ้อนของการคำนวณ Kolmogorov ฉันเป็นเรื่องเกี่ยวกับLG | N | บิตเนื่องจากคุณสามารถ hardcode ค่าของiF={fi:iN}fifi(x)=1i=xfi(x)=0ixfilg|N|iในซอร์สโค้ดและสิ่งที่คุณต้องมีก็คือประโยคเงื่อนไขแบบง่าย ( พิเศษ)O(1)

แต่คุณไม่สามารถแยกแยะความแตกต่างจากทุกศูนย์ทำงานจนกว่าคุณจะทดสอบในการป้อนข้อมูลที่ฉัน คุณไม่สามารถแยกแยะความแตกต่างฉันจากเจจนกว่าคุณจะทดสอบในการป้อนข้อมูลที่ผมหรือเจ ดังนั้นคุณจะต้องประเมินตลอด| N | ปัจจัยการผลิตที่จะไม่ซ้ำกันตรวจสอบว่าฉันเราจะจัดการกับ (ตกลงในทางเทคนิคคุณต้องประเมินที่| N | - 1อินพุต แต่ไม่ว่าอะไรก็ตาม)fiififjijf|N|fi|N|1


0

คุณสามารถทำให้โปรแกรมยาวโดยพลการ เมื่อได้รับโปรแกรมใด ๆ คุณสามารถตัดสินใจได้ว่าภาษานั้นเทียบเท่ากับโปรแกรมนี้หรือไม่ คุณทำอย่างนั้นไม่ได้ด้วยทฤษฎีบทของไรซ์


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