‹

01 · ทฤษฎีการคำนวณ

01 · ​ทฤษฎี​การคำนวณ

​บท​นี้​คือ​ชั้น​รากฐาน​ของ​หอคอย — ​ชั้น​ที่​ตัดสิน​ว่า​ทุก​ชั้น​เหนือ​ขึ้นไป​ได้รับอนุญาต​ให้​ลอง​ทำ​อะไร​ได้​บ้าง

​อะไร​บ้าง​ที่​คำนวณ​ได้​เลย — ​และ​อะไร​ที่​คำนวณ​ไม่​ได้​เด็ดขาด ​ไม่​ว่า​จะ​บน​ฮาร์ดแวร์​ชนิด​ไหน​ก็ตาม

​โปรแกรมเมอร์​ทำงาน​จริง​ทุกคน​อยาก​มี​เครื่องมือ​ชิ้น​นี้​ไว้​ใน​มือ ​มัน​อ่าน​โปรแกรม​กับ​ข้อมูล​นำเข้า​ของ​โปรแกรม​นั้น ​แล้ว​ตอบคำถาม​เดียว: ​โปรแกรม​นี้​จะ​จบ ​หรือ​จะ​วน​ซ้ำ​ไป​ตลอดกาล? ​หมด build ​ที่​ค้าง ​หมด​เซิร์ฟเวอร์​ที่​วน​ลูป​ข้ามคืน ​มัน​ไม่ต้อง ​แก้ ​โปรแกรม​ด้วยซ้ำ ​แค่​รายงาน​ผล​ก็​พอ

​มัน​ไม่​มีทาง​มี​อยู่​จริง ​ไม่​ใช่ "​ยัง​ไม่​มี​ใคร​ทำสำเร็จ" ​ไม่​ใช่ "​มัน​คง​ช้า​เกินไป" — ​ไม่​มี​ใคร​เขียน​โปรแกรม​แบบนี้​ขึ้น​มา​ได้ ​ไม่​ว่า​จะ​บน​เครื่อง​ไหน​ที่​เคย​สร้าง​มา​แล้ว​หรือ​จะ​สร้าง​ขึ้น​ในอนาคต ​และ​บทพิสูจน์​ตีพิมพ์​ตั้งแต่​ปี 1936 ​ก่อน​จะ​มี​เครื่องจักร​สัก​เครื่อง​ให้​รัน​มัน​ด้วยซ้ำ "​ทำไม" ​คือ​เนื้อหา​ทั้งหมด​ของ​ชั้นนี้ ​และ​คือ​เหตุผล​ที่​ชั้นนี้​อยู่​ล่าง​สุด​ของ​หอคอย: ​มัน​ปัก​เขตแดน​ให้​ทุกอย่าง​ข้างบน​สร้าง​ต่อยอด​ขึ้น​มา

​คำถาม​นี้​มาจาก Hilbert ​และ​ตั้งใจ​ให้​มี​คำตอบ​ที่​มีความสุข ​ปี 1928 David Hilbert ​กับ Wilhelm Ackermann ​ตีพิมพ์ Grundzüge der theoretischen Logik ​ตำรา​เล่ม​แรก​ที่​อธิบาย​ตรรกศาสตร์​อันดับ​หนึ่ง (first-order logic) ​อย่าง​เป็นระบบ ​และ​วาง​คำถาม Entscheidungsproblem ​ไว้​ใน​เล่ม: ​มี​กระบวนการ​ที่​แน่นอน​ซึ่ง​รับ​ข้อความ​เชิง​ตรรกะ​ใดๆ ​แล้ว​ตัดสิน​ได้​ไหม​ว่า​มัน​สืบเนื่อง​มาจาก​สัจพจน์ (axiom) ​หรือไม่ (Springer)? Hilbert ​คาด​ว่า​มี ​ที่​เมือง Königsberg ​วันที่ 8 ​กันยายน 1930 ​เขา​ปิด​ปาฐกถา​ด้วย​ประโยค​ที่​ภายหลัง​ถูก​สลัก​บน​หลุมศพ​ของ​เขา: Wir müssen wissen — wir werden wissen — ​เรา​ต้อง​รู้ ​เรา​จะ​ต้อง​รู้ (MAA Convergence)

​วันก่อน​หน้า​นั้น ​ที่​โต๊ะกลม​ปิดท้าย​การประชุม​วิชาการ​ใน​เมือง​เดียวกัน ​นัก​ตรรกวิทยา​หนุ่ม​ชื่อ Kurt Gödel ​เอ่ย​ขึ้น​มา​เกือบจะ​เป็นการ​พูด​ผ่านๆ ​ว่า​ระบบ​รูป​นัย (formal system) ​ที่​สอดคล้อง​ใน​ตัวเอง​ใดๆ ​ที่​แข็งแรง​พอ​จะ​อธิบาย​เลขคณิต​ได้ ​ต้อง​มี​ข้อความ​จริง​บาง​ข้อ​ที่​มัน​พิสูจน์​ไม่​ได้​อยู่​ใน​ตัว ​ห้องประชุม​ปล่อย​ผ่าน; John von Neumann ​อยู่​ใน​ที่ประชุม​ด้วย ​และ​ดูเหมือน​จะ​เป็น​คนเดียว​ที่จับ​ได้​ว่า​เพิ่ง​เกิด​อะไร​ขึ้น (Davis, Notices of the AMS, 2006) ​บทความ​ตามมา​ใน​ปี 1931 (Monatshefte für Mathematik und Physik 38: 173–198)

Gödel ​เจาะ​รู​เรือ​ไป​แล้ว ​แต่ Entscheidungsproblem ​ยัง​ลอย​อยู่​ได้: ​คุณ​พิสูจน์​ไม่​ได้​ว่า​ไม่​มี​กระบวนการ​ใด​อยู่เลย ​จนกว่า​จะ​นิยาม​ก่อน​ว่า "​กระบวนการ" ​คือ​อะไร

​นิยาม​นั้น​ได้มา​จาก​การเฝ้าดู​คน ​สิ่ง​ที่ Alan Turing ​ทำ​ตอน​อายุ​ยี่สิบ​สาม​ปี​และ​เป็น Fellow ​ของ King's College ​เป็นแนว​มานุษยวิทยา​มากกว่า​คณิตศาสตร์ ​ใน​ปี 1936 ​คำ​ว่า computer ​ยัง​เป็น​ชื่อ​ตำแหน่งงาน: ​มนุษย์​คน​หนึ่ง ​มักได้​ค่าจ้าง​ต่ำ ​ที่​ทำหน้าที่​คำนวณ Turing ​เฝ้าดู​คน​คน​นั้น ​เขา​เขียน​ไว้​ว่า "​การคำนวณ​โดยปกติ​ทำ​โดย​การเขียน​สัญลักษณ์​บางอย่าง​ลง​บน​กระดาษ ​เรา​อาจ​สมมติ​ว่า​กระดาษ​แผ่น​นี้​ถูก​แบ่ง​เป็น​ช่อง​สี่เหลี่ยม​เหมือน​สมุด​เลขคณิต​ของ​เด็ก" (On Computable Numbers, §9) ​เขา​ถอดความ​สามารถ​ของ​มนุษย์​ออก​ทีละ​อย่าง: ​จำกัด​สัญลักษณ์​ที่​รับรู้​ได้​ใน​การมอง​แต่ละครั้ง ​จำกัด "​สภาวะ​ทาง​ความคิด (states of mind)" ​ที่​เขา​จำไว้​ได้ ​ไม่​เหลือ​อะไร​ให้​ทำ​นอกจาก​มอง ​เขียน ​และ​ขยับ ​สิ่งที่เหลืออยู่​คือ​เทป ​ตาราง​กฎ​จำนวน​จำกัด ​และ​หัว​อ่าน​ที่​อ่าน​และ​เขียน​ได้ — ​คือ​เครื่องทัว​ริง (Turing machine) ​ที่​เป็น​คำอธิบาย​ว่า​มนุษย์​ทำ​อะไร​เมื่อ​หยุด​คิด​แล้ว​เริ่ม​ทำตาม​คำสั่ง ​มากกว่า​จะ​เป็น​เครื่องจักร​จริงๆ ​เสีย​อีก London Mathematical Society ​รับบท​ความนี้​ไว้​เมื่อ​วันที่ 28 ​พฤษภาคม 1936

​ทุกคน​ที่​นิยาม​มัน​ขึ้น​มา​อย่าง​เป็นอิสระ​ต่อกัน ​ต่าง​มา​ลงเอย​ที่​จุด​เดียวกัน Alonzo Church ​ถึง​จุด​นั้น​ก่อน​ใคร​ด้วย​เส้นทาง​อื่น: ​บทพิสูจน์​เมื่อ​เดือน​เมษายน 1936 ​สร้าง​บน lambda calculus ​ของ​เขา ​ว่า​ไม่​มี​กระบวนการ​แบบ​นั้น​อยู่​จริง (American Journal of Mathematics 58: 345–363) Emil Post ​ถึง​ระบบ​รูป​นัย​ที่​แทบจะ​เหมือนกัน​ใน​ปี​เดียวกัน; Gödel ​กับ Kleene ​ถึง​ด้วย general recursive functions ​ทั้งหมด​นี้​นิยาม​คลาส​เดียวกัน​เป๊ะ ​และ​การที่​ต่าง​เส้นทาง​มา​บรรจบ​กัน​นี้​เอง​คือ​หลักฐาน​ของ​ข้อ​ตั้ง Church–Turing (Church–Turing thesis): ​คลาส​นี้*​คือ*​สิ่ง​ที่​เรา​หมายถึง​อย่าง​ไม่​เป็นทางการ​เมื่อ​พูดว่า "​คำนวณ​ได้​อย่าง​มีประสิทธิผล" ("effectively calculable") ​มัน​เป็น​ข้อ​ตั้ง ​ไม่​ใช่​ทฤษฎีบท ​และ​เป็น​อย่าง​อื่น​ไป​ไม่​ได้: ​มัน​เชื่อม​ไอเดีย​ของ​มนุษย์​ที่​ไม่​เป็นทางการ​เข้ากับ​วัตถุ​ที่​เป็น​รูป​นัย ​และ​ไม่​มี​บทพิสูจน์​ใด​ข้าม​ช่องว่าง​นั้น​ได้ (Stanford Encyclopedia of Philosophy) ​นี่​คือ​เหตุผล​ที่​ผลลัพธ์​ของ​ชั้นนี้​ทนทาน​ต่อ​ฮาร์ดแวร์​ทุกชนิด: ​สร้าง​เครื่อง​คำนวณ​ขึ้น​จาก​อะไร​ก็ได้​ที่​คุณ​อยาก​ใช้ — ​หลอด​สุญญากาศ ​ซิลิคอน ​คิว​บิต (qubit) — ​ถ้า​มัน​คำนวณ​ได้​จริง ​มัน​ก็​คำนวณ​ได้​แค่​คลาส​นี้ ​ไม่​มาก​ไป​กว่า​นี้

​เครื่อง​เดียว​เป็น​เครื่อง​ทุก​เครื่อง​ได้ ​ส่วน​ที่ 6 ​ของ​บทความ​ของ Turing ​เปิด​ด้วย​ประโยค​ที่​ส่งผล​สะเทือน​ที่สุด​ใน​บทความ​ทั้ง​ฉบับ: "​เป็นไปได้​ที่จะ​ประดิษฐ์​เครื่อง​เดี่ยว​เครื่อง​หนึ่ง​ขึ้น​มา ​ซึ่ง​ใช้​คำนวณ​ลำดับ​ที่​คำนวณ​ได้​ใดๆ ​ก็ได้​ทั้งหมด" ("It is possible to invent a single machine which can be used to compute any computable sequence.") ​ป้อน*​คำอธิบาย*​ของ​เครื่อง​อื่น​ให้​เครื่อง​หนึ่ง ​มัน​ก็​ทำตัว​เป็น​เครื่อง​นั้น ​ก่อนหน้านี้ ​อุปกรณ์​คำนวณ​ถูก​สร้าง​มา​เพื่อ​งาน​เฉพาะ​ของ​มัน — ​กี่ทอผ้า​สำหรับ​ทอผ้า ​เครื่อง​วิเคราะห์​เชิง​อนุพันธ์ (differential analyzer) ​สำหรับ​สมการ ​หลังจากนั้น ​ตัว​เครื่อง​ว่างเปล่า ​และ​งาน​มาถึง​ใน​รูป​ข้อมูล ​ทุกอย่าง​ที่​ตามมา​ขึ้นอยู่กับ​จุด​นั้น: ​ซอฟต์แวร์​ที่​แยก​ออกจาก​ฮาร์ดแวร์​ได้ ​คอมไพเลอร์ ​อีมู​เลเตอร์ (emulator) ​เครื่อง​เสมือน (virtual machine) ​ระบบปฏิบัติการ​ที่​รัน​โปรแกรม​ซึ่ง​ไม่​เคย​ถูก​ออกแบบ​มา​ให้​มัน​รัน ​ความเป็นสากล (universality) ​คือ​บานพับ​ที่​หอคอย​ทั้ง​หลัง​แกว่ง​อยู่​บน

​บาง​คำถาม​ไม่​มี​กระบวนการ​ตอบ​เลย​จริงๆ ​บทพิสูจน์​คือ​การทแยงมุม (diagonalization) ​ของ Cantor ​จาก​ปี 1891 ​หันมา​ใช้กับ​เครื่องจักร ​สมมติ​ว่า​ตัว​ตรวจสอบ​การหยุด (halting checker) ​มี​อยู่​จริง ​สร้าง​โปรแกรม​ที่​ป้อน​คำอธิบาย​ของ​ตัว​มัน​เอง​ให้​ตัว​ตรวจสอบ ​แล้ว​ทำ​ตรงข้าม​กับ​คำทำนาย​ที่​ได้รับ: ​หยุด​ถ้า​ถูก​บอก​ว่า​มัน​จะ​วน​ลูป ​วน​ลูป​ถ้า​ถูก​บอก​ว่า​มัน​จะ​หยุด ​ถาม​ตัว​ตรวจสอบ​เกี่ยวกับ​โปรแกรม​นั้น ​มัน​ต้อง​ตอบ​ผิด​เสมอ ​มัน​จึง​ไม่​เคย​มี​อยู่​จริง​ตั้งแต่แรก

​เชิงอรรถ​แห่ง​ความซื่อตรง​สอง​ข้อ Turing ​ไม่​ได้​ใช้​ทั้ง​ชื่อ​นั้น​และ​บทพิสูจน์​แบบ​นั้น​เลย ​เขา​พิสูจน์​การตัดสิน​ไม่​ได้ (undecidability) ​ของ​ปัญหา​ที่​เกี่ยวข้อง​กับ​เครื่องจักร​ของ​เขา​เท่านั้น ​ทั้ง​ชื่อ "​ปัญหา​การหยุด (halting problem)" ​และ​รูปแบบ​สมัยใหม่​มา​ทีหลัง ​ใน Computability and Unsolvability ​ของ Martin Davis ​ปี 1958 (Hamkins & Nenu, 2024) ​ข้อ​สอง ​การหยุด​ไม่​ใช่​กรณีพิเศษ​แปลกๆ: H. G. Rice ​พิสูจน์​ใน​ปี 1953 ​ว่า​คำถาม​ที่​ไม่​ธรรมดา*​ทุก*​ข้อ​เกี่ยวกับ​สิ่ง​ที่​โปรแกรม​คำนวณ​นั้น​ตัดสิน​ไม่​ได้​ทั้งหมด (Transactions of the American Mathematical Society 74: 358–366) ​นั่น​คือ​รั้ว​กั้น​เขต ​ไม่​ใช่​หลุม​บ่อ — ​คือ​เหตุผล​ที่​ไม่​มี​คอมไพเลอร์​ตัว​ไหน​รับประกัน​ได้​ว่า​ลูป​ของ​คุณ​จะ​จบ ​เหตุผล​ที่​ไม่​มี​โปรแกรม​ป้องกัน​ไวรัส​ตัว​ไหน​ตัดสิน​ได้​จาก​การวิเคราะห์​อย่าง​เดียว​ว่า​โปรแกรม​หนึ่ง​เป็นอันตราย​หรือไม่ ​และ​เหตุผล​ที่ static analyzer ​ทุก​ตัว​ตอบ​ได้​แค่ "​ใช่" "​ไม่​ใช่" ​หรือ "​บอก​ไม่​ได้" ​คำตอบ​ที่สาม​นั้น​คือ​ทฤษฎีบท ​ไม่​ใช่​บั๊ก

​พ้น​กำแพง​แห่ง​ความเป็นไปได้​ไป​แล้ว ​ยังมี​กำแพง​ที่สอง: ​ความคุ้ม​ต้นทุน ​ปัญหา​หนึ่ง​อาจ​ตัดสิน​ได้ (decidable) ​แต่​แพง​กว่า​ที่​เอกภพ​ทั้ง​ใบ​จะ​จ่าย​ไหว Stephen Cook ​แสดงให้เห็น​ใน​ปี 1971 ​ว่า Boolean satisfiability ​เป็น NP-complete ​และ Leonid Levin ​พิสูจน์​เรื่อง​เดียวกัน​อย่าง​เป็นอิสระ​ใน​ปี 1973 (​บันทึก​ของ Cook ​เอง) ​เครื่องมือ​เบื้องหลัง​ข้อกล่าวอ้าง​แบบนี้​คือ ​การลดรูป (reduction): ​การแปลง​ที่​ถูก​พอ​จน​ตัว​แก้ปัญหา​ที่​เร็ว​สำหรับ​ปัญหา​หนึ่ง ​กลายเป็น​ตัว​แก้ปัญหา​ที่​เร็ว​สำหรับ​อีก​ปัญหา​หนึ่ง — ​ปัญหา​ยาก​ข้อ​เดียว​กลายเป็น​คันโยก​ที่​ยก​ปัญหา​ที่​เหลือ​ทั้งหมด​ได้ ​ปี 1972 Richard Karp ​ใช้​มัน​แสดงให้เห็น​ว่า​ปัญหา​ที่​ดู​เป็นธรรมชาติ​อีก​ยี่สิบ​ข้อ ​แท้จริง​คือ​ปัญหา​เดียวกัน​ที่​แค่​ปลอมตัว​มา (Karp, 1972); ​พอ​ถึง​ปี 1979 ​หนังสือ Computers and Intractability ​ของ Garey ​กับ Johnson ​รวบรวม​ได้​ถึง​สาม​ร้อย​ปัญหา ​ส่วน​คำถาม​ว่าการ​ตรวจ​คำตอบ​ได้​เร็ว​บ่งบอก​ว่า​หา​คำตอบ​ได้​เร็ว​ด้วย​หรือไม่ — P vs NP — ​ตั้งขึ้น​ใน​จดหมาย​ที่ Gödel ​เขียน​ถึง von Neumann ​ผู้​กำลังจะ​เสียชีวิต​เมื่อ​วันที่ 20 ​มีนาคม 1956 (​คำแปล) ​มา​พร้อม​เงิน​รางวัล​หนึ่ง​ล้าน​ดอลลาร์​จาก Clay Institute ​และ​ยัง​ไม่​มี​คำตอบ​มา​จนถึง​ทุกวันนี้ (CMI) ​กำแพง​นี้​รั่ว​อย่าง​เป็นประโยชน์​อยู่​บ้าง: ​ขอบเขต​ที่​พิสูจน์​ได้ดี​ที่สุด​สำหรับ 3-SAT ​คือ​เชิง​เลขชี้กำลัง (exponential) ​แต่​ตัว​แก้ปัญหา​ระดับ​อุตสาหกรรม​จัดการ​อิน​สแตนซ์​ที่​มี​โครงสร้าง​ชัดเจน​ซึ่ง​มี​ตัวแปร​กว่า​ล้าน​ตัว​ได้​เป็นประจำ (Gomes et al.) ​กรณี​แย่​สุด (worst case) ​ไม่​ใช่​กรณี​ทั่วไป (typical case) — ​และ​นี่​คือ​จุด​ที่​ชั้น​ถัดไป​เริ่มต้น

​เชื่อมโยง

​ชั้นล่าง: ​บท​ที่ 00 ​แผนที่ ​ชั้นบน: ​บท​ที่ 02 ​ที่​หยิบ​ทุก​ปัญหา​ซึ่ง​ชั้นนี้​เรียก​ว่า​เป็นไปได้ ​มา​ถาม​ต่อว่า​มัน​มี​ต้นทุน​เท่าไร ​โดย​เปลี่ยน​ข้อโต้แย้ง​เชิง​การนับ​ชุด​เดียวกัน​ให้​กลายเป็น​ขอบ​ล่าง (lower bound) ​ความเป็นสากล (universality) ​คือ​สิ่ง​ที่​บท​ที่ 05 ​ขาย​ใน​ชื่อ​การทำ​เสมือน (virtualization) ​และ​บท​ที่ 06 ​ขาย​ใน​ชื่อ​การคอมไพล์ (compilation) ​บท​ที่ 11 ​สร้าง​ต่อ​จาก​กำแพง​ที่สอง: ​วิทยาการ​รหัสลับ (cryptography) ​คือ​การจงใจ​ผลิต​ปัญหา​ที่​เชื่อ​กัน​ว่า​ไม่​คุ้ม​ต้นทุน​จะ​แก้

​คำถาม​ที่​ยัง​เปิด​อยู่

P vs NP ​แน่นอน​อยู่แล้ว — ​แม้ว่า​บทพิสูจน์​ว่า P = NP ​จะ​เป็น​เหตุการณ์​มากกว่า​ทฤษฎีบท: ​ความปลอดภัย​ของ​อินเทอร์เน็ต​สลาย​ไป ​คณิตศาสตร์​ส่วนใหญ่​ถูก​ส่งมอบ​ให้​เครื่องจักร​ทำแทน ​ข้อ​ตั้ง Church–Turing ​เอง​ปลอดภัย​หรือเปล่า? ​คอมพิวเตอร์​ควอนตัม (quantum computer) ​คำนวณ​อะไร​ที่ Turing machine ​คำนวณ​ไม่​ได้​เลย​สัก​อย่าง ​แต่​อาจ​ทำลาย​เวอร์ชัน*​ประสิทธิภาพ*​ของ​มัน​ได้ — ​ดินแดน​ของ​บท​ที่ 14 ​และ​คำถาม​ที่​ลึก​ที่สุด: ​การตัดสิน​ไม่​ได้ (undecidability) ​จำกัด​ขอบเขต​ของ​เครื่องจักร ​และ​ผ่าน​ทาง​ข้อ​ตั้ง​นี้ ​ก็​จำกัด​กระบวนการ​ใดๆ ​ที่​มนุษย์​จะ​ทำตาม​ได้​ด้วย ​มี​อะไร​หนี​พ้น​มัน​ได้​ไหม ​หรือ​รั้ว​ที่​ล้อมรอบ​สิ่ง​ที่​เป็นไปได้ ​ก็​คือ​รูปทรง​ของ​ความคิด​เอง​นั่นแหละ?

​อ่าน​ต่อ

บทถัดไป · 3 / 1602 · อัลกอริทึมและโครงสร้างข้อมูล
Size
Page
Font

The Tower of Abstractions — An Encyclopedia of the Computing Disciplines

❦
100 · แผนที่201 · ทฤษฎีการคำนวณ302 · อัลกอริทึมและโครงสร้างข้อมูล403 · สารสนเทศและการเข้ารหัส504 · สถาปัตยกรรมคอมพิวเตอร์605 · ระบบปฏิบัติการ706 · ภาษาและคอมไพเลอร์807 · วิศวกรรมซอฟต์แวร์908 · ฐานข้อมูล1009 · เครือข่าย1110 · ระบบกระจาย1211 · ความปลอดภัยและวิทยาการรหัสลับ1312 · ปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง1413 · ปฏิสัมพันธ์มนุษย์–คอมพิวเตอร์ และกราฟิกส์1514 · พรมแดน1699 · ปิดเล่ม — หอคอยเมื่อมองทั้งหลัง