ฉันขอโทษล่วงหน้าว่าฉันให้รายละเอียดมากเกินไป แต่ฉันกำลังจะเถียงคนอื่น
เกี่ยวกับK(x)≤K′(x)+c
ความจริงที่ว่ามักมาจากล่ามภาษาคำอธิบาย # 2 เป็นภาษาคำอธิบาย # 1 และไม่ใช่จากการแปลจากโปรแกรมของ 2 เป็นโปรแกรมของ # 1K1(x)≤K2(x)+c
ตัวอย่างเช่นและคุณจะได้รับความไม่เท่าเทียมกันเช่นนี้:KC(x)≤KPython(x)+cpy2c
void py_run(char * s) {
// code of your Python interpreter
}
int main(void) {
py_run("Put here your Python program of size Kpython(x)");
}
จากนั้นค่าคงที่ของคุณจะเหมือนกับโดยที่คือจำนวนบิตสำหรับโค้ดนี้และบิตเป็นขนาดที่ล่าม Python อย่างเป็นทางการที่เขียนไว้ใน C แน่นอนคุณต้องตีความสิ่งที่เป็นไปได้ ในภาษาคำอธิบายของคุณสำหรับ Python เพื่อให้คุณสามารถทำได้ดีกว่า 69 MB :-) 528 + 490240688 528 490240688cpy2c528+490240688528490240688
สิ่งสำคัญคือคุณสามารถเขียนโปรแกรม Python ของคุณเป็นเส้นตรงในรหัส C ของคุณ ตัวอย่างเช่นภาษาที่คุณต้องใส่ "BANANA" ระหว่างตัวละครทุกตัวไม่ใช่โปรแกรมคำอธิบายที่ดีมากและคุณสมบัตินั้นเป็นเท็จ (แต่ถ้าภาษาคำอธิบายอนุญาตให้คุณเขียนข้อมูลในไฟล์แยกต่างหากหรือในบล็อกปัญหานี้จะหายไป)
ทำไมมีข้อบกพร่องK1(x)=q
ปัญหาเกี่ยวกับคำนิยามของของคุณคือคุณอาจต้องใช้มากกว่าบิตเพื่ออธิบายเครื่องทัวริงที่มีสถานะเนื่องจากคุณต้องเข้ารหัสการเปลี่ยน q qK1qq
ดังนั้นและอาจไม่เท่ากัน แต่นั่นเป็นความผิดของผมคิดว่าเราสามารถพิสูจน์ได้ว่าทั้งหมดมีดังกล่าวว่าK_1แน่นอนว่านั้นเพียงพอที่จะพิสูจน์ความจริงที่ว่านั้นไม่ใช่ฟังก์ชั่นที่ถูกต้องเพราะมันหมายถึงว่าเราสามารถเข้ารหัสสตริงที่มีความยาวทั้งหมดให้บิตK 2 K 1 a > 0 c a K 1 ( x ) ≤ a | x | + c a a < 1 K 1 2 n n a n + c aK1K2K1a>0caK1(x)≤a|x|+caa<1K12nnan+ca
แต่ขนาดนั้นแคบอย่างไม่น่าเชื่อเมื่อสร้างเครื่องจักรทัวริง ความคิดที่อยู่ในบล็อกของฯ มีวิธีที่จะหาเปลี่ยนสำหรับแต่ละรัฐและที่ดีกว่าปกติวิธีที่คุณสามารถกรอกบิต จากนั้นคุณสามารถเก็บไว้ในแต่ละบล็อกบิตข้อมูล (ไม่ใช่เพราะคุณต้องเข้าและออกบล็อกไม่ทางใดทางหนึ่ง)ข2 ข 2 ขขเข้าสู่ระบบ2ข2 ล็อก2ขbb2b2bblog2b2log2b
เพื่อใช่ ... ด้วยบล็อกขนาดคุณอาจจะพิสูจน์K_1แต่ฉันเขียนไปแล้วมากเกินไปเกี่ยวกับสาเหตุที่จำนวนของรัฐไม่ใช่ฟังก์ชันความซับซ้อนของ Kolmogorov ที่ถูกต้อง ถ้าคุณต้องการให้ฉันทำอย่างละเอียดฉันจะ K 1 ( x ) ≤ a | x | + c a21/aK1(x)≤a|x|+ca
ตอนนี้ประมาณK2
ภาษาบรรยายที่ไร้เดียงสาสอดคล้องกับ (เช่นสำหรับแต่ละสถานะถัดไปและรายละเอียดเกี่ยวกับการเขียนและการเลิกจ้าง)บันทึก2 qK2(x)=q⋅2⋅(log2q+2)log2q
ตามที่คุณดูเหมือนจะเป็นฉันเชื่อว่าวิธีที่ดีกว่า / สิบแปดมงกุฎจะอนุญาตให้เข้ารหัส "ข้อมูล" ในเครื่องทัวริงอาจโดยการเพิ่มแท็กไบนารีในภาษาคำอธิบายที่ระบุว่าถ้ารัฐเป็นรัฐข้อมูล ( ที่เพิ่งเขียนบิตและไปที่สถานะถัดไป) หรือถ้ามันทำอย่างอื่น ด้วยวิธีนี้คุณสามารถเก็บหนึ่งบิตของคุณในภาษาบรรยายของคุณหนึ่งบิตx
อย่างไรก็ตามถ้าคุณเก็บเดิมคุณสามารถใช้เทคนิคเดียวกันกับที่ฉันใช้ในส่วนก่อนหน้าเพื่อบันทึกสองสามบิต แต่ดูเหมือนว่าฉันจะติดอยู่ที่ (สำหรับ ใด ๆ ) .. อาจจะน้อยกว่าแม้จะได้รับดูเหมือนยาก (และฉันคาดหวังว่ามันควรจะเป็นไม่ใช่แม้แต่ )K 2 ( x ) ≤ a | x | เข้าสู่ระบบK2a > 0 บันทึก| x | O ( | x | ) | x | O ( | x | )K2(x)≤a|x|log|x|+ca>0log|x|O(|x|)|x|O(|x|)