ทำไมตัวเลขที่คำนวณได้ (ในความหมายของทัวริง) นับได้? มันต้องชัดเจนมาก แต่ตอนนี้ฉันไม่เห็นมัน
ทำไมตัวเลขที่คำนวณได้ (ในความหมายของทัวริง) นับได้? มันต้องชัดเจนมาก แต่ตอนนี้ฉันไม่เห็นมัน
คำตอบ:
ฉันสมมติว่านิยามของจำนวนคำนวณคือ: มีเครื่องทัวริงว่าการป้อนข้อมูล , หยุดกับ TH บิตของจำนวน
สมมติว่ามีการแจงนับซ้ำของเครื่องจักรทัวริงที่สร้างตัวเลขที่คำนวณได้ คุณสามารถใช้เส้นทแยงมุมเพื่อหาจำนวนที่คำนวณใหม่ซึ่งไม่ได้เป็นส่วนหนึ่งของการแจงนับซ้ำ
มันเป็นการล่อลวงให้ระบุจำนวนที่คำนวณได้โดยการแจกแจงเครื่องทัวริง แต่ไม่ใช่เครื่องทัวริงทุกตัวที่ตรงกับตัวเลขที่คำนวณได้และโดยทั่วไปการตัดสินใจว่าเครื่องทัวริงหยุดทำงานสำหรับอินพุตทั้งหมด อย่างไรก็ตามมีความเป็นไปได้ที่จะระบุตัวเลขที่คำนวณได้ทั้งหมดที่มีประสิทธิภาพบอกคนที่เวลาทำงานคือพหุนามโดยใช้เครื่องทัวริงตอกบัตร
หากนับคุณหมายถึงว่ามี bijection กับตัวเลขธรรมชาติ (เช่นนับได้) แล้วไม่มีตัวเลขที่คำนวณได้จะไม่นับ
ลองกำหนดปัญหาให้แม่นยำยิ่งขึ้น: "การพิมพ์จำนวนเครื่องทัวริง (NPTM)" เป็นเครื่องทัวริงที่สำหรับการเปลี่ยนสถานะทุกครั้งอาจพิมพ์อะไรหรืออาจพิมพ์เลขทศนิยมใด ๆ เครื่องหมายลบหรือรอบระยะเวลา นี่เพียงพอที่จะพิมพ์การแทนค่าทศนิยมของจำนวนจริง
ให้กำหนดจำนวนจริงที่คำนวณได้เป็นจำนวนจริงใด ๆ ที่สามารถพิมพ์ด้วยการแสดงความยาวตามอำเภอใจโดยให้เวลาเพียงพอโดย NPTM เริ่มต้นจากเทปเปล่า ให้บอกด้วยว่าตัวเลขนั้นคำนวณโดย NPTM ที่กำหนดถ้ามันหยุดอย่างใดอย่างหนึ่งหลังจากการพิมพ์จำนวนจริงที่มีรูปแบบที่ดี (ในกรณีนี้จำนวนนั้นมีการแทนทศนิยม จำกัด ) หรือจะในเวลา จำกัด ด้วยจุดทศนิยมและจะเพิ่มความแม่นยำของตัวเลขด้วยการพิมพ์ตัวเลขเพิ่มเติมให้เวลามากขึ้น
เงื่อนไขนี้จำเป็นในภายหลังเพราะถ้าเรามีเครื่องจักรที่พิมพ์ลำดับอนันต์ของตัวเลขบางตัวบอกว่า1111111111111111111
... มันไม่สามารถพูดได้ว่าจะคำนวณจำนวนจริงใด ๆ เพราะจำนวนจริงมีเพียงตัวแทนอนันต์ทางด้านขวา ด้านข้างของช่วงเวลาทศนิยม ในทางตรงกันข้ามถ้าเครื่องพิมพ์พิมพ์3.14
แล้วหยุดพิมพ์ แต่ไม่เคยหยุดมันไม่สามารถพูดได้ว่าจะคำนวณจำนวนจริงใด ๆ เพียงเพราะความแม่นยำของจำนวนไม่เพิ่มขึ้นดังนั้นเครื่องนี้โดยเฉพาะจะไม่สร้างมัน ต่อไป
นี่เป็นตัวอย่างของ NPTM ที่คำนวณจำนวนหนึ่ง NPTM ที่:
1
แล้วหยุด คำนวณหมายเลข 11.0
แล้วหยุด นอกจากนี้ยังคำนวณหมายเลข 11.0000000
และเก็บค่าศูนย์การพิมพ์ตลอดไป อันนี้ยังคำนวณหมายเลข 13.14
แล้วหยุด คำนวณหมายเลข 3.143.14159
และดำเนินการพิมพ์ตัวเลขตลอดไป นี้คำนวณจำนวน\-42.
แล้วหยุด คำนวณจำนวน -42และนี่คือตัวอย่างของ NPTM ที่ไม่คำนวณจำนวนใด ๆ NPTM ที่:
123123123
และจากนั้นจะพิมพ์ลำดับต่อ123
ไป ไม่ใช่การคำนวณตัวเลขเนื่องจากลำดับอนันต์นี้ไม่ได้แทนจำนวนจริงใด ๆ1.0.0
แล้วหยุด ไม่ใช่เพราะลำดับที่ จำกัด นี้ไม่ได้เกิดขึ้นอย่างดี....-..---
แล้วหยุด ไม่ใช่เพราะนี่ไม่ใช่จำนวนจริงที่เกิดขึ้นอย่างดีเช่นกัน3.14
ไม่หยุด แต่ไม่เคยพิมพ์อะไรอย่างอื่น ไม่คำนวณจำนวนเพราะความแม่นยำไม่เพิ่มขึ้นตามเวลาคุณมีความคิด จากนั้นเรามีสองระดับของ NPTM: คนที่คำนวณจำนวนจริงบางส่วนและคนที่ไม่ได้
ปัญหาในการค้นหาการแจงนับสำหรับตัวเลขที่คำนวณได้คือแม้ว่า NPTM นั้นสามารถนับได้เองเราไม่สามารถมีขั้นตอนที่แยก NPTM ชนิดหนึ่งออกจากกันได้
พิจารณาความหมายของชุดนับเพราะชุดที่จะนับได้ต้องมีฟังก์ชั่นบางอย่าง bijectiveS
เพื่อ "พิสูจน์" ว่าตัวเลขที่คำนวณได้นั้นนับได้เราอาจถูกล่อลวงให้กำหนดฟังก์ชันดังกล่าวจากการนับ NPTM (และนี่คือสิ่งที่ผู้คนมักทำเมื่อพวกเขาเชื่อว่าจำนวนที่คำนวณได้นั้นนับได้) บางสิ่งเช่นนี้
NPTM สามารถนับได้ดังนั้นจึงมีฟังก์ชัน bijectiveดังนั้นเราสามารถแจกแจง NPTM ทั้งหมดที่มีอยู่ได้ตลอดไป ดังนั้นเพื่อระบุจำนวนที่คำนวณได้ทั้งหมดและกำหนดฟังก์ชัน bijective อย่างแม่นยำเราจะต้องแจกแจง NPTM ทั้งหมด แต่นับเฉพาะที่คำนวณบางอย่าง เบอร์จริง. แต่เราจะรู้ได้อย่างไรว่ามันคำนวณจำนวนจริง
เราทำไม่ได้ พิจารณาเครื่องพิมพ์ที่พิมพ์ออกมาทันที1.0
จากนั้นหยุดการพิมพ์และดำเนินการต่อเพื่อลองแก้ไขปัญหาของปัญหาการโพสต์ข้อความ ถ้ามันแก้ปัญหามันหยุดแล้วเครื่องก็แค่คำนวณหมายเลขหนึ่ง แต่ปัญหานั้นไม่สามารถตัดสินใจได้ดังนั้นจึงอาจไม่มีวันหยุดและหากไม่เคยหยุดก็ไม่สามารถคำนวณจำนวนจริงได้ แต่เราไม่สามารถรู้ได้ว่ามันจะหยุดชะงักหรือไม่เพราะปัญหาการหยุดชะงักยังไม่แน่นอน! ดังนั้นเนื่องจากไม่มีวิธีที่จะทราบว่าเครื่องนี้และเครื่องอื่น ๆ มากมายไม่ว่าจะคำนวณหรือไม่ได้จำนวนจริงเราจึงไม่สามารถสร้าง / กำหนดฟังก์ชัน bijective ของเราด้วยวิธีนี้
วิธีที่ไร้เดียงสาในการกำหนด bijection ล้มเหลวและไม่ยากมากที่จะพิสูจน์ว่าไม่มีทางทำมันไม่ว่าจะด้วยวิธีใดก็ตาม ตามที่ Yuval Filmus แนะนำสามารถใช้การตัดขวาง