‹

05 · เส้นทางแบบอัลกอริทึม

05 · ​เส้นทาง​แบบ​อัลกอริทึม

​เส้นทาง​ที่​สั้น​ที่สุด — ​ประวัติศาสตร์​ของ​ศิลปะ​และ​ศาสตร์​แห่ง​การแก้ปัญหา


​อัมสเตอร์ดัม ​ระเบียง​ร้านกาแฟ ​ปี 1956

​อัลกอริทึม​ที่​ยัง​เป็น​คำตอบ​ตั้งต้น​ของ​คอมพิวเตอร์​ทุก​เครื่อง​เมื่อ​ต้องหา​ทาง​ที่​ถูกที่​สุด​จาก​ที่นี่​ไป​ที่นั่น ​ถูก​คิด​ขึ้น​ใน​ร้านกาแฟ ​ใน​เวลา​ราว​ยี่สิบ​นาที Edsger Dijkstra ​อายุ​ยี่สิบ​หก ​ออก​ไป​เดิน​ซื้อ​ของ​กับ Ria ​คู่หมั้น​ของ​เขา ​และ​เหนื่อย ​เขา​เพิ่ง​รับงาน​ที่ Mathematisch Centrum ​ใน​อัมสเตอร์ดัม ​หน้าที่​คือ​สาธิต​คอมพิวเตอร์​เครื่อง​ใหม่​ชื่อ ARMAC ​เขา​ต้องการ​โจทย์​ที่​ง่าย​พอ​จะ​อธิบาย​ให้​คนนอก​สาย​เทคนิค​ฟังได้ ​แต่​ก็​น่าประทับใจ​พอ​จะ​แสดงว่า​เครื่อง​นี้​คุ้มค่า​ที่​เลี้ยง​ไว้ ​พอ​นั่งลง​ดื่ม​กาแฟ ​ไม่​มี​ดินสอ ​ไม่​มี​กระดาษ ​ไม่​มี​ห้องสมุด​ให้​ค้น ​เขา​ตั้งคำถาม​กับ​ตัวเอง​ว่า​เส้นทาง​ที่​สั้น​ที่สุด​ระหว่าง​เมือง​ดัตช์​สอง​เมือง​คือ​เส้น​ไหน ​ตัวเลข​ยี่สิบ​นาที​มาจาก​ปาก​เขา​เอง​ใน​ภายหลัง (David Gries, "Edsger Dijkstra and the Shortest-Path Algorithm," Cornell CS) ​วิธี​ที่​เขา​ร่าง​เช้า​วันนั้น​มี​สอง​ก้าว — ​ขยาย​กลุ่ม​เมือง​ที่​รู้​ระยะสั้น​ที่สุด​จาก​จุด​ตั้งต้น​แน่นอน​แล้ว ​และ​ทุก​ก้าว​เพิ่ม​เมือง​ที่​ยัง​ไม่​ได้​ไป​ซึ่ง​ตอนนี้​ใกล้​ที่สุด​เข้าไป — ​เจ็ด​ทศวรรษ​ให้หลัง​ยัง​ไม่​มี​ใคร​แทน​มัน ​เขา​ไม่​ได้​ตีพิมพ์​จน​อีก​สาม​ปี​ต่อมา ​และ​ตีพิมพ์​เป็น​โน้ต​สาม​หน้าที่​เขียน​อย่าง​ประหยัด ​แก้ปัญหา​กราฟ​สอง​ข้อ​ที่​ไม่​เกี่ยว​กัน​เลย ​ใน​เนื้อที่​ที่​บทความ​ส่วนใหญ่​ใช้​เขียน​แค่​บทคัดย่อ (Dijkstra, "A Note on Two Problems in Connexion with Graphs," Numerische Mathematik 1 (1959))

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

​ชาย​ผู้​มีชื่อ​กลายเป็น​คำศัพท์

​สิ่ง​ที่ Dijkstra ​ทำ​เช้า​วันนั้น — ​คิด​ขั้นตอน​ทีละ​ก้าว​ที่​รับประกัน​ว่า​จะ​ไป​ถึง​คำตอบ​ที่​ถูกต้อง — ​มีชื่อ​เรียก​ว่า ​อัลกอริทึม ​คำ​นี้​เดินทาง​อ้อม​มายาว​ก่อน​จะ​ลงเอย​ใน​ห้องเรียน​วิทยาการ​คอมพิวเตอร์

​คำ​นี้​มาจาก​ชื่อ​ใน​รูป​ละติน​ของ​นักปราชญ์​ศตวรรษ​ที่​เก้า​ผู้ทำงาน​อยู่​ใน​บ้าน​แห่ง​ปัญญา (House of Wisdom) ​ที่​แบกแดด: Muhammad ibn Musa al-Khwarizmi ​ตำรา​ของ​เขา​ว่าด้วย​เลข​ฮินดู-​อารบิก ​ถูก​แปล​เป็น​ละติน​ใน​ชื่อ Algoritmi de numero Indorum ​มัน​มอบ​สอง​อย่าง​ให้​ยุโรป​ยุค​กลาง ​อย่าง​แรก​คือ​วิธี​คำนวณ​แบบ​ใหม่ — ​ระบบ​ทศนิยม​เชิง​ตำแหน่ง​ที่มา​แทน​เลขโรมัน ​อย่าง​ที่สอง​มา​ช้า​กว่า ​คือ​คำ​ใหม่​คำ​หนึ่ง: algorismus ​ตอนแรก​หมายถึง​เลขคณิต​ที่​ทำ​ด้วย​วิธี​ใหม่​นี้​โดยเฉพาะ ​คำ​ว่า "algorithm" ​ต้อง​รอ​ถึง​ศตวรรษ​ที่​ยี่สิบ​จึง​ขยาย​มาสู่​ความหมาย​สมัยใหม่: ​ขั้นตอนวิธี​ใดๆ ​ที่​มี​จำนวน​ก้าว​จำกัด ​ไม่​กำกวม ​และ​เครื่องจักร​ทำตาม​ได้ ​สำหรับ​แก้ปัญหา​ทั้ง​ชั้น (findanexpert.unimelb.edu.au, "Why are algorithms called algorithms?"; NPR, "How 'algorithm' got its name from a 9th-century Persian mathematician") ​หนังสือ​เล่ม​ใหญ่​อีก​เล่ม​ของ al-Khwarizmi ​มอบ​คำ​ว่า algebra ​ให้​คณิตศาสตร์ ​มาจาก al-jabr ​ที่​แปล​ว่า "​การเติม​ให้​ครบ" ​หรือ "​การคืน​สภาพ" — ​ศัพท์​เรียก​การย้าย​ปริมาณ​จาก​ข้าง​หนึ่ง​ของ​สมการ​ไป​อีก​ข้าง​หนึ่ง ​ความต่าง​จาก​อาลักษณ์​ใน​บท​ที่ 01 ​อยู่​ตรงนี้: ​อาลักษณ์​จด​โจทย์​ที่​แก้​แล้ว​ทีละ​ข้อ​ไว้​เป็นตัว​อย่าง​สอน; al-Khwarizmi ​จด ​ตัว​ขั้นตอนวิธี​เอง ​ถอด​ตัวเลข​เฉพาะ​ออก​หมด ​เพื่อให้​เอา​ไป​ใช้กับ​ตัวเลข​ที่​ยัง​ไม่​มี​ใคร​นึกถึง​ได้ ​วิธี​ใน​ฐานะ​วัตถุ​ที่​มี​สถานะ​ของ​ตัวเอง ​ยก​ไป​ใช้ได้​กับ​ทุก​อิน​สแตนซ์ (instance) ​ของ​ปัญหา — ​นามธรรม​ข้อ​นี้​คือ​บรรพบุรุษ​สาย​ตรง​ของ​ทุกอย่าง​ใน​บท​นี้

​ท่า​พื้นฐาน: ​กวาด​ออก​ไป​รอบตัว ​กับ​ดำ​ดิ่ง​ลง​ลึก

​ใต้​อัลกอริทึม​ของ Dijkstra ​มี​กลยุทธ์​พื้นฐาน​กว่า​อีก​สอง​อย่าง​สำหรับ​สำรวจ​พื้นที่​ของ​ความเป็นไปได้ ​ทั้งสอง​มา​ก่อน​มัน ​ควร​เรียกชื่อ​ให้​ชัด ​เพราะ​ทุกอย่าง​ที่​ซับซ้อน​กว่า​นั้น​ใน​บท​นี้​สร้าง​ขึ้น​จาก​สอง​อย่างนี้

​เริ่ม​จาก​เขาวงกต ​หรือ​แผนผัง​ตระกูล ​หรือ​ใย​ความสัมพันธ์​ของ​เพื่อนฝูง ​แทน​ด้วย​วิธี​เดียว​กับ​ที่​บท​ที่ 02 ​เล่า​ว่า Euler ​แทน Königsberg: ​เป็น​กราฟ​ของ​โหนด​กับ​เส้น​เชื่อม ​ค้น​ตาม​ความกว้าง (breadth-first search, BFS) ​เริ่ม​ที่​โหนด​หนึ่ง​แล้ว​สำรวจ​ออก​ไป​เป็น​วง​ที่​ขยาย​กว้าง​ขึ้น — ​ทุกอย่าง​ที่​ห่าง​หนึ่ง​ก้าว​ก่อน ​แล้ว​ทุกอย่าง​ที่​ห่าง​สอง​ก้าว ​ไล่​ไป​เรื่อยๆ ​ผล​คือ​การรับประกัน​ข้อ​หนึ่ง: ​ครั้งแรก​ที่​มัน​ไป​ถึง​โหนด​ใด​ก็ตาม ​มัน​ได้​พบ​เส้นทาง*​ที่​สั้น​ที่สุด*​ไป​ยัง​โหนด​นั้น​แล้ว ​วัด​ด้วย​จำนวน​ก้าว Edward F. Moore ​คิด​มัน​ขึ้น​ใหม่​เพื่อ​จุดประสงค์​นี้​พอดี​ใน​ปี 1959 ​เขา​ต้องการ​วิธี​เชิงกล​ไก​ใน​การหาทาง​ออก​ที่​สั้น​ที่สุด​จาก​เขาวงกต ​ไอเดีย​คล้าย​กัน​ฝัง​อยู่​ก่อน​แล้ว​โดย​ไม่​ได้​ตีพิมพ์ ​ใน​วิทยานิพนธ์​ปริญญาเอก​ปี 1945 ​ของ Konrad Zuse ​ที่​ถูก​ปฏิเสธ (Wikipedia, "Breadth-first search") ​ค้น​ตาม​ความลึก (depth-first search, DFS) ​ทำ​ตรงกันข้าม: ​เลือก​เส้นทาง​เดียว​แล้ว​เดินตาม​ให้​ไกล​ที่สุด​ก่อน​ถอยกลับ — ​ดำ​ดิ่ง​ลง​ช่องทาง​หนึ่ง​ของ​เขาวงกต​จน​สุด​ทาง ​แล้วจึง​ลอง​ช่อง​อื่น ​มัน​ไม่​รับประกัน​ว่า​จะ​พบ​เส้นทาง​สั้น​ที่สุด ​แต่​ใช้​หน่วยความจำ​น้อยกว่า​มาก ​และ​ใน​มือ​ของ Robert Tarjan ​กับ John Hopcroft ​ช่วงต้น​ทศวรรษ 1970 ​มัน​ปลดล็อก​คำตอบ​ที่​มีประสิทธิภาพ​ให้​ปัญหา​กราฟ​หลายชนิด​ที่​ไม่​มี​ใคร​คาด ​ตั้งแต่​ทดสอบ​ว่า​แผนที่​หนึ่ง​วาด​โดย​ไม่​มี​เส้น​ตัดกัน​ได้​หรือไม่ ​ไป​จนถึง​หา​จุดอ่อน​เชิง​โครงสร้าง​ของ​เครือข่าย (Wikipedia, "Depth-first search")

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

​หนู​ตัว​หนึ่ง​ชื่อ Theseus

​หก​ปีก่อน​กาแฟ​ถ้วย​นั้น​ของ Dijkstra ​ที่ Bell Labs ​ใน​ปี 1950 Claude Shannon ​สร้าง​อนุสาวรีย์​ของ​ไอเดีย​เดียวกัน​ที่​เล็ก​กว่า​และ​แปลก​กว่า ​เขา​มีชื่อเสียง​อยู่แล้ว​จาก​การก่อตั้ง​ทฤษฎี​สารสนเทศ ​สิ่ง​ที่​เขา​สร้าง​คือ​หนู​กลไก​แก้​เขาวงกต ​เขา​ตั้งชื่อ​มัน​ว่า Theseus ​ตาม​วีรบุรุษ​ผู้​หาทาง​ใน​เขาวงกต​ของ​มิ​โน​ทอร์​ด้วย​การคลี่​เส้นด้าย​ทิ้ง​ไว้​ข้างหลัง

​ใน​เชิงกล​ไก Theseus ​คือ​แม่เหล็ก​หุ้ม​เปลือก​โลหะ ​มัน​ถูก​ลาก​ไป​ใต้​เขาวงกต​ขนาด​ห้า​คูณ​ห้า​ที่​ปรับ​ผัง​ใหม่​ได้ ​ด้วย​แม่เหล็ก​ไฟฟ้า​ที่ซ่อน​อยู่​ใต้​พื้น ​แม่เหล็ก​ไฟฟ้า​นั้น​ถูก​ขับ​ด้วย​แผง​รีเลย์​โทรศัพท์​ที่​ทำหน้าที่​เป็น​หน่วยความจำ ​ปล่อย​เข้า​เขาวงกต​ที่​ไม่​คุ้นเคย ​หนู​จะ​เดิน​ซุ่มซ่าม​ไป​ข้างหน้า ​ชน​กำแพง ​ถอยหลัง ​ลอง​ใหม่ — DFS ​พร้อม​การย้อนรอย (backtracking) ​ใน​รูปธรรม — ​จน​สะดุด​เข้ากับ "​ชีส" ​ชิ้น​ที่ซ่อน​อยู่ ​ซึ่ง​ทำให้​หน้า​สัมผัส​ไฟฟ้า​ปิด​วงจร ​ทุก​การเลี้ยว​ระหว่างทาง​ถูก​บันทึก​ไว้​ใน​หน่วยความจำ​รีเลย์ ​ตั้ง​กลับ​ไป​ที่​จุดเริ่มต้น​ของ​เขาวงกต*​อัน​เดิม* Theseus ​จะ​แล่น​ตรง​ไป​ยัง​เป้าหมาย​โดย​ไม่​เลี้ยว​ผิด​แม้แต่​ครั้ง​เดียว ​การค้นหา​แบบ​ตาบอด​รอบ​ก่อน​กลายเป็น​คำตอบ​ที่เก็บ​ไว้​และ​ใช้​ซ้ำ​ได้ (cyberneticzoo.com, "1952 – 'Theseus' Maze-Solving Mouse – Claude Shannon") ​ตรงนี้​ควร​หยุด​ดู ​เพราะ​มัน​คือ​การสาธิต​ที่​เก่า​จริง​และ​เป็น​รูปธรรม​จริง​ของ​ไอเดีย​ที่​ต่อมา​จะ​นิยาม​ปัญญา​ของ​เครื่องจักร: ​การค้นหา​ที่​ตาม​ด้วย​ความจำ ​คือ​การเรียนรู้ ​รอบ​แรก​จ่าย​ราคา​เต็ม​ของ​การสำรวจ​พื้นที่ ​ทุก​รอบ​หลังจากนั้น​ใช้​ความรู้​ที่เก็บ​ไว้​แทน​การจ่าย​ซ้ำ ​นี่​คือ​การหยั่ง​เห็น (insight) ​เดียวกัน ​ใน​ขนาด​จิ๋ว​และ​ใน​สาย​ทองแดง ​ที่​ทำให้​กำหนดการ​พลวัต (dynamic programming) ​ของ Bellman (​บท​ที่ 04) ​ไม่ต้อง​แก้ปัญหา​ย่อย​ที่​เหมือนกัน​ซ้ำ ​และ​ที่​ทำให้​โปรแกรม​หมากรุก​ใน​บท​ที่ 10 ​จำ​ตำแหน่ง​ที่​มัน​ประเมิน​ไป​แล้ว​ได้

​การมองโลกในแง่ดี​ที่​ไม่​เคย​โกหก

​ความครบถ้วน​ของ​อัลกอริทึม​ของ Dijkstra ​คือ​ขีดจำกัด​ของ​มัน​ด้วย ​มัน​ไล่​ครบ​ทุก​โหนด​ภายใน​แนวหน้า​ที่​กำลัง​ขยาย ​ไม่​เคย​ข้าม​โหนด​ที่​อาจ​กลายเป็น​เรื่องสำคัญ ​บน​กราฟ​ที่​มี​โหนด​เป็น​ล้าน ​การสำรวจ "​ทุกอย่าง​ที่​ใกล้​กว่า​ค่า​ดี​ที่สุด​ตอนนี้" ​ก่อน​จะ​พิจารณา​อะไร​ที่​ไกล​กว่า​นั้น ​ผลาญ​แรง​ไป​ใน​ทุก​ทิศ​ที่​ไม่​เกี่ยวกับ​ที่​ที่ตั้ง​ใจ​จะ​ไป​จริงๆ

​ทางแก้​มาถึง​ใน​ปี 1968 ​จาก​โครงการ​หุ่นยนต์​ที่ Stanford Research Institute ​นักวิจัย​สาม​คน Peter Hart, Nils Nilsson ​และ Bertram Raphael ​ต้องการ​ให้​หุ่นยนต์​เคลื่อนที่​ชื่อ Shakey — ​หนึ่ง​ใน​เครื่องจักร​รุ่น​แรก​ที่​ให้เหตุผล​ถึง​สิ่ง​ที่​ตัวเอง​ทำ​ใน​ห้อง​จริง​ได้ — ​วางแผน​เส้นทาง​อ้อม​สิ่งกีดขวาง​อย่าง​ประหยัด ​โดย​ไม่ต้อง​สำรวจ​ผัง​พื้น​ทั้ง​อาคาร​ทุกครั้ง (Engineering and Technology History Wiki, "Milestones: SHAKEY: The World's First Mobile Intelligent Robot, 1972") ​อัลกอริทึม​ของ​พวกเขา​ภายหลัง​ได้ชื่อ​ว่า A\ (​อ่าน​ว่า "​เอ-​สตาร์") ​มัน​เติม​ส่วนผสม​เพียง​หนึ่ง​อย่าง​ลง​ใน​วิธี​ของ Dijkstra: ​ใน​แต่ละ​ก้าว ​แทนที่จะ​จัดอันดับ​โหนด​ที่​ยัง​ไม่​สำรวจ​ด้วย​ระยะทาง​ที่​เดิน​มาถึง​มัน​แล้ว​ล้วนๆ A\ ​จัดอันดับ​ด้วย​ระยะทาง​นั้น ​บวก​กับ​การเดา — ​ค่า​ประมาณ​จาก​วิธี​เดา​อย่าง​มี​หลัก (heuristic) ​ว่า​เป้าหมาย​น่าจะ​ยังอยู่​ไกล​ออก​ไป​อีก​เท่าไร ​บน​แผนที่​ถนน ​ระยะ​เส้นตรง​แบบ "​นก​บิน​ตรง" ​ไป​ยัง​จุดหมาย​คือ​ตัว​เดา​ที่​เหมาะ​เอง ​คำนวณ​ง่าย ​และ​ไม่​มีทาง​ประเมิน​ระยะ​ขับรถ​ที่​เหลือ​จริง​เกิน​ความจริง ​เพราะ​ไม่​มี​ถนน​เส้น​ไหน​สั้น​กว่า​เส้นตรง​ระหว่าง​จุด​สอง​จุด​เดียวกัน

​คุณสมบัติ​ข้อ​สุดท้าย​นั้น — ​ไม่​ประเมิน​เกิน — ​คือ​ความลับ​ทั้งหมด ​และ​สมควร​อธิบาย​ด้วย​คำธรรมดา ​เพราะ​มัน​คือ​หนึ่ง​ใน​ทฤษฎีบท​เล็กๆ ​ที่​งาม​ที่สุด​ใน​เรื่องราว​ทั้งหมด​ของ​หนังสือ​เล่ม​นี้ heuristic ​ที่​มี​คุณสมบัติ​นี้​เรียก​ว่า ​ไม่​ประเมิน​เกิน (admissible): ​มัน​ผิด​ได้ ​แต่​ไม่​เคย​ผิด​ไป​ทาง​มองโลกในแง่ดี​เกิน​ความจริง ​มัน​ประเมิน​ระยะ​ที่​เหลือ​ต่ำกว่า​จริง​ได้ ​แต่​ไม่​มี​วัน​อ้างว่า​เส้นทาง​หนึ่ง​สั้น​กว่า​ที่​มัน​เป็นจริง ​ให้ admissible heuristic ​กับ A\* ​ต่อให้​หยาบ​แค่​ไหน ​มัน​ก็​ยัง​รับประกัน​ทาง​คณิตศาสตร์​ว่า​จะ​หา​เส้นทาง​ที่​สั้น​ที่สุด*​จริงๆ* ​พบ ​เหมือน​ที่​อัลกอริทึม​ของ Dijkstra ​ทำ ​แต่​โดยทั่วไป​แตะ​พื้นที่​เพียง​เสี้ยว​เดียว​ของ​ที่​อัลกอริทึม​ของ Dijkstra ​ต้อง​แตะ heuristic ​ไม่​จำเป็นต้อง​ถูก ​มัน​แค่​ต้อง​ไม่​โกหก​ไป​ทาง​ความหวัง​ลมๆ ​แล้งๆ ​การมองโลกในแง่ดี​ที่​ถูก​ล็อก​ไว้​ไม่​ให้​เลย​ความจริง ​จึง​กลายเป็น​ของ​ฟรี ​ค้นหา​ได้​เร็ว​ขึ้น ​และ​ไม่​มี​วัน​ถูก​หลอก​ไป​สู่​คำตอบ​ที่​ผิด ​บทความ​ต้นฉบับ​ปี 1968 ​ของ Hart, Nilsson ​และ Raphael ​ชื่อ "A Formal Basis for the Heuristic Determination of Minimum Cost Paths in Graphs" ​หา​วารสาร​ที่​ยอม​ตีพิมพ์​แทบ​ไม่​ได้ ​ในที่สุด Raphael ​ที่​อึดอัด​กับ​เรื่อง​นี้​ก็​มีส่วน​ก่อตั้ง​วารสาร AI ​ฉบับ​ใหม่​ขึ้น​มา ​ส่วนหนึ่ง​ก็​เพื่อให้​บทความ​มี​ที่​ลง (IEEE Transactions on Systems Science and Cybernetics 4, no. 2 (1968); doi 10.1109/TSSC.1968.300136) ​ทุกวันนี้ A\* ​ทำงาน​อยู่​ใน​รูปแบบ​ใด​รูปแบบ​หนึ่ง ​ทั้ง​ใน​การหา​เส้นทาง​ของ​วิดีโอ​เกม ​การจัด​เส้นทาง​โลจิสติกส์ ​และ​ใน​ลูกหลาน​ของ Shakey ​ที่​ยัง​แล่น​อยู่​บน​พื้นผิว​ดาวอังคาร

​เครื่องจักร​ที่​พิสูจน์​ทฤษฎีบท

​ขณะที่​หนู​ของ Shannon ​เรียนรู้​เขาวงกต​และ Dijkstra ​จับเวลา​กาแฟ​ของ​เขา ​อีก​กลุ่ม​หนึ่ง​ที่ RAND Corporation ​กำลัง​สอน​เครื่องจักร​ให้​ทำ​คณิตศาสตร์ ​ใน​ปี 1955 ​เรื่อง​นี้​ฟัง​ดู​ใกล้​นิยาย​วิทยาศาสตร์​มากกว่า​วิศวกรรม

Allen Newell, Herbert Simon ​และ​โปรแกรมเมอร์ Cliff Shaw ​ตั้งใจ​สร้าง​โปรแกรม​ที่​พิสูจน์​ทฤษฎีบท​ใน​ตรรกศาสตร์​รูป​นัย​ได้ ​เป้าหมาย​เจาะจง​คือ​ทฤษฎีบท​จาก Principia Mathematica ​งาน​สาม​เล่ม​ของ Alfred North Whitehead ​กับ Bertrand Russell ​ที่​พยายาม​อนุมาน​คณิตศาสตร์​ทั้งหมด​จาก​สัจพจน์​ทาง​ตรรกะ​ชุด​เล็กๆ ​โปรแกรม​ของ​พวกเขา​ชื่อ Logic Theorist ​มัน​แทน​ข้อความ​ทาง​ตรรกะ​แต่ละ​ข้อ​ด้วย​โครงสร้าง​ข้อมูล​รูป​ต้นไม้ ​แล้ว​ค้นหา​ไป​ตาม​โซ่​ของ​การแทนค่า ​การตัดออก ​และ​กฎ​การอนุมาน ​เพื่อ​ล่า​ลำดับ​ก้าว​ที่​ถูก​กติกา​ซึ่ง​เชื่อม​สัจพจน์​เข้ากับ​ทฤษฎีบท​ที่​ต้อง​พิสูจน์ ​นี่​คือ​ไอเดีย​พื้นที่​ปัญหา (problem space) ​อัน​เดียว​กับ​ที่​บท​ที่ 00 ​สืบ​ย้อน​ไป​ถึง​งาน​ทฤษฎี​ใน​ภายหลัง​ของ Newell ​กับ Simon ​พื้นที่​ของ​การอนุมาน​ที่​เป็นไปได้​ระเบิด​ออกแบบ​เชิง​การจัด​หมู่​ทุกครั้งที่​เพิ่ม​ก้าว​เข้าไป​หนึ่ง​ก้าว Newell ​กับ Simon ​จึง​ต้อง​ตัด​กิ่ง​ที่​เห็นชัด​ว่า​ไม่​มี​อนาคต​ทิ้ง ​และ​หยิบยืม​คำ​มา​เรียก​กฎ​สามัญสำนึก​ที่​ใช้​ทำ​เรื่อง​นั้น: heuristic Newell ​เคย​เจอ​คำ​นี้​ใน How to Solve It ​ของ George Pólya ​คู่มือ​ที่​บท​ที่ 03 ​ครอบคลุม​ไว้​เต็มๆ (Wikipedia, "Logic Theorist")

Logic Theorist ​สร้าง​เสร็จ​ใน​ปี 1956 ​และ​พิสูจน์​ทฤษฎีบท​ได้ 38 ​ข้อ​จาก 52 ​ข้อ​แรก​ใน​บท​ที่ 2 ​ของ Principia Mathematica ​ใน​กรณี​หนึ่ง​มัน​พบ​บทพิสูจน์​ที่​สง่างาม​กว่า​บทพิสูจน์​ที่ Whitehead ​กับ Russell ​ตรากตรำ​ทำ​ด้วยมือ ​หมายเลข​ของ​ทฤษฎีบท​ข้อ​นี้​ไม่​ตรงกัน​สอง​แหล่ง ​เรื่องเล่า​ที่​แพร่หลาย​อ้าง​หมายเลข 2.85 ​แต่​หมายเหตุ​ที่​มี​เอกสาร​รองรับ​ใน​บทความ​ของ Wikipedia ​ชี้​ว่า​ใน​ฉบับ Cambridge ​ปี 1910 ​และ 1963 ​ของ Principia ​ทฤษฎีบท​ข้อ​เดียวกัน​นี้​มี​หมายเลข 2.53 ​เล่ม​นี้​กาง​ความคลาดเคลื่อน​นี้​ออก​ให้​เห็น ​เพราะ​เล่ม​นี้​ขอให้​ผู้อ่าน​ไม่​ไว้ใจ​เกร็ด​เล่า​ที่​ถูก​ขัด​ให้​เรียบ​ระหว่าง​การเล่า​ต่อ ​สิ่ง​ที่​มี​หลักฐาน​รองรับ​ดี​คือ​ปฏิกิริยา​ของ Russell: Simon ​เอา​บทพิสูจน์​ที่​สั้น​กว่า​ของ​เครื่อง​ให้​เขา​ดู ​และ​มี​รายงาน​ว่า Russell ​ตอบรับ​ด้วยความยินดี ​ทั้งสอง​คน​พยายาม​ตีพิมพ์​บทพิสูจน์​ใหม่​นี้​ใน The Journal of Symbolic Logic ​วารสาร​ปฏิเสธ ​เหตุผล​คือ​บทพิสูจน์​ใหม่​ของ​ทฤษฎีบท​พื้นฐาน​ไม่​ใช่​ผลงาน​ที่​น่าสนใจ ​ผู้ประเมิน​ดูจะ​มองข้าม ​หรือไม่​ก็​ไม่​รู้สึก​อะไร ​กับ​ข้อเท็จจริง​ที่ว่า​หนึ่ง​ใน "​ผู้เขียน" ​ที่​ให้​เครดิต​ไว้​คือ​โปรแกรมคอมพิวเตอร์ (Wikipedia, "Logic Theorist")

​ระหว่าง​ปี 1957 ​ถึง 1959 Newell, Simon ​และ Shaw ​ต่อยอด Logic Theorist ​ด้วย​ทายาท​ที่​ทะเยอทะยาน​กว่า: General Problem Solver ​หรือ GPS ​มัน​ไม่​ได้​ตั้งใจ​แค่​พิสูจน์​ทฤษฎีบท​ตรรกะ ​แต่​จัดการ​ปัญหา​ใด​ก็ตาม​ที่​เขียน​ออกมา​เป็น​ชุด​ของ​สถานะ (state) ​กับ​ตัวดำเนินการ (operator) ​ที่​ถูก​กติกา​ได้ — ​รูป​นัย​ของ​พื้นที่​ปัญหา​แบบ​ทั่วไป​ที่​หนังสือ​เล่ม​นี้​พิง​อยู่​ตลอด ​เทคนิค​หลัก​ของ GPS ​คือ​การวิเคราะห์​วิธี-​เป้าหมาย (means–ends analysis) ​พูด​ออกมา​ง่าย ​และ​ทนทาน​เกินคาด: ​เทียบ​สถานะ​ปัจจุบัน​กับ​สถานะ​เป้าหมาย ​ระบุ​ความต่าง​ที่​ใหญ่​ที่สุด​ข้อ​เดียว ​แล้ว​เลือก operator ​ที่​มี​อยู่ตัว​ที่​รู้​ว่า​ลด​ความต่าง​ชนิด​นั้น​พอดี ​แก้​ช่องว่าง​ที่​ใหญ่​ที่สุด​ก่อน ​แล้ว​ทำซ้ำ​กับ​ช่องว่าง​ที่​เหลือ ​มัน​คือ​เครื่องยนต์​อเนกประสงค์​ขนาด​จิ๋ว​สำหรับ​บีบ​พื้นที่​มหาศาล​ให้​แคบ​ลง​ทีละ​ก้าว​อย่าง​ตั้งใจ ​แทนที่จะ​เดิน​เตร็ดเตร่​ใน​นั้น​แบบ​สุ่ม (Wikipedia, "General Problem Solver"; Wikipedia, "Means–ends analysis") ​ในที่สุด GPS ​ก็​ชน​กำแพง​เดียว​กับ​ที่​วิธี​ทั่วไป​ทุก​วิธี​ชน ​บท​หลังจากนี้ ​โดยเฉพาะ​บท​ที่ 06 ​จะ​อธิบาย​ว่า​ทำไม​ความเป็น​ทั่วไป​กับ​ประสิทธิภาพ​ถึง​ดึง​กัน​คนละ​ทาง ​แต่​เทคนิค​ที่​มัน​แนะนำ​ไว้​ยังอยู่ ​แทบ​ไม่​เปลี่ยนรูป ​ใน​ระบบ​วางแผน​อัตโนมัติ​สมัยใหม่

​ห้า​เดิมพัน​ว่าด้วย​รูปร่าง​ของ​พื้นที่

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

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

​แบ่ง​แล้ว​พิชิต (divide and conquer) ​เดิมพัน​ว่า​ปัญหา​ยาก​ข้อ​หนึ่ง​แยก​ออก​เป็น​สำเนา​ของ​ตัว​มัน​เอง​ที่​เล็ก​ลง​และ​มี​โครงสร้าง​เหมือนกัน​ได้ ​แก้​แยกกัน ​แล้ว​เย็บ​กลับ​เข้าด้วยกัน ​มัน​คือ​กลยุทธ์​เบื้องหลัง​อัลกอริทึม​เรียงลำดับ​และ​คูณ​เลขที่​เร็ว ​เดิมพัน​ของ​มัน​คือ ​การแยกส่วน​ได้: ​แก้​ชิ้นส่วน​แล้ว​รู้​จริง​หรือว่า​จะ​แก้​ทั้ง​ก้อน​อย่างไร

dynamic programming ​ที่​บท​ที่ 04 ​แนะนำ​ผ่าน​หลัก​ความเหมาะ​ที่สุด​ของ Bellman ​เดิมพัน​ว่า​ปัญหา​ย่อย​ของ​ปัญหา​หนึ่ง ​ซ้อนทับ​กัน — ​คำถาม​เล็ก​ข้อ​เดิม​จะ​วน​กลับมา​หลายครั้ง​ภายใน​การค้นหา​ที่​ใหญ่​กว่า — ​และ​เก็บ​คำตอบ​แต่ละ​ข้อ​ไว้​ตั้งแต่​ครั้งแรก​ที่​คำนวณ​จะ​ประหยัด​แรง​ที่​ต้อง​ทำซ้ำ​ใน​ภายหลัง ​ชิ้นส่วน​ของ​แบ่ง​แล้ว​พิชิต​เป็นอิสระ​ต่อกัน ​ชิ้นส่วน​ของ dynamic programming ​แบ่งงาน​กัน​ใช้ ​เทคนิค​นี้​มี​อยู่​เพื่อ​เลี่ยง​การทำงาน​ร่วม​นั้น​ซ้ำ​พอดี ​เหมือน​ที่​หนู​ของ Shannon ​ไม่​เคย​กลับ​ไป​สำรวจ​ช่องทาง​ที่​มัน​ทำ​แผนที่​ไว้​แล้ว

backtracking ​เดิมพัน​ว่า​พื้นที่​หนึ่ง​ค้นหา​แบบ DFS ​ได้ ​ตราบใดที่​การค้นหา​รู้ตัว​เร็ว​ว่า​เจอ​ทางตัน ​แล้ว​ถอยกลับ​ก่อน​ผลาญ​แรง​ลง​ไป​ใน​นั้น​อีก ​มัน​คือ​เวอร์ชัน​มีวินัย​ของ​สิ่ง​ที่ Theseus ​ทำ​ด้วย​การลอง ​ชน ​และ​แก้

​แตก​กิ่ง​แล้ว​ตี​กรอบ (branch and bound) ​เดิมพัน​ว่า​เรา​คำนวณ ​ขอบเขต ​ราคา​ถูก​ได้​ว่า​คำตอบ​ใด​ก็ตาม​ที่​แตก​กิ่ง​ออกจาก​ตัวเลือก​บางส่วน​อัน​หนึ่ง​จะ​ดี​ได้มาก​ที่สุด​แค่​ไหน ​ทันทีที่​ขอบเขต​พิสูจน์​ว่า​กิ่ง​นั้น​ชนะ​คำตอบ​ที่​ถือ​อยู่​ใน​มือ​แล้ว​ไม่​ได้ ​ก็​ตัด​กิ่ง​ทั้ง​กิ่ง​ของ​ต้นไม้​การค้นหา​ทิ้ง​โดย​ไม่ต้อง​เข้าไป​ดู​เลย Ailsa Land ​กับ Alison Doig ​ทำให้​มัน​เป็น​รูป​นัย​ใน​ปี 1960 ​สำหรับ​ปัญหา​ที่​ต้องการ​คำตอบ​เป็น​จำนวนเต็ม​แทนที่จะ​เป็น​เศษส่วน (Wikipedia, "Branch and bound") ​มัน​คือ admissible heuristic ​ของ A\* ​ที่​ถูก​ทำให้​ทั่วไป​ขึ้น ​จาก​การหา​เส้นทาง​บน​แผนที่ ​ไป​สู่​การหา​จุด​เหมาะ​ที่สุด​ใน​พื้นที่​เชิง​การจัด​หมู่​ที่​หลากหลาย​กว่า​มาก

​ห้า​เดิมพัน ​คือ​ห้า​การเดา​ที่​ต่างกัน​เกี่ยวกับ​รูปร่าง​ที่ซ่อน​อยู่​ของ​พื้นที่​ปัญหา ​ไม่​มี​อัน​ไหน​เป็น​วิธี​ค้นหา​ที่​ถูก "​อันนั้น"; ​แต่ละ​อัน​ถูก ​เมื่อ​เดิมพัน​ของ​มัน​เกี่ยวกับ​พื้นที่​บังเอิญ​เป็นจริง ​อ่าน​ปัญหา​ใหม่​ได้ดี​พอ​จะ​รู้​ว่า​เดิมพัน​ไหน​ใช้ได้ — ​นั่น​คือ​ทักษะ​เกือบ​ทั้งหมด​ที่​หนังสือ​เล่ม​นี้​พยายาม​เรียกชื่อ

​อัลกอริทึม​คือ heuristic ​ที่​หาบท​พิสูจน์​มา​ได้

"​อัลกอริทึม" ​กับ "heuristic" ​ไม่​ใช่​ขั้ว​ตรงข้าม ​มอง​ย้อน​จาก​โลก​ที่​มี​ตัว​วางแผน​เส้นทาง​และ​เครื่องยนต์​หมากรุก ​มี​สิ่งล่อใจ​ให้​ถือว่า​อย่างหนึ่ง​เข้มงวด​และ​รับประกัน​ได้ ​อีก​อย่าง​เป็นการ​เดา​หยาบๆ ​ที่​อาจ​พลาด ​ประวัติศาสตร์​ใน​บท​นี้​เถียง​ให้​ภาพ​อีก​แบบ ​อัลกอริทึม​ของ Dijkstra ​เริ่ม​จาก insight ​แบบ​ไม่​เป็นทางการ​ว่า​ควร​ไป​เมือง​ไหน​ต่อ; ​สิ่ง​ที่​ทำให้​มัน​เป็น​อัลกอริทึม​แทนที่จะ​เป็น​ลางสังหรณ์ ​คือ Dijkstra ​พิสูจน์​ได้​ว่า insight ​นั้น​ใช้ได้​เสมอ ​ค่า​ประมาณ​แบบ heuristic ​ของ A\* ​เป็นการ​เดา​อย่าง​เปิดเผย​ตั้งแต่​ชื่อ ​แต่​พอ​จับคู่​กับ​คุณสมบัติ​ที่​พิสูจน์​ได้​ข้อ​เดียว​คือ admissibility ​การเดา​นั้น​ก็​กลายเป็น​ส่วนหนึ่ง​ของ​อัลกอริทึม​ที่​รับประกัน​คำตอบ​เหมาะ​ที่สุด​อย่าง​หักล้าง​ไม่​ได้ ​กฎ​สามัญสำนึก​ของ Newell ​กับ Simon ​ที่​ใช้​ตัด​กิ่ง​ใน​การค้นหา​บทพิสูจน์​ทฤษฎีบท ​เป็น heuristic ​ใน​ความหมาย​เก่า​ที่​หลวม​กว่า: ​มีประโยชน์ ​ยัง​ไม่​พิสูจน์ ​และ​บางที​ก็​ผิด ​สาขา​นี้​เติบโต​ตลอดทั้ง​บท​ด้วย​การค่อยๆ ​แปลง​ลางสังหรณ์​ให้​เป็นการ​รับประกัน ​ไม่​ใช่​ด้วย​การทิ้ง​สัญชาตญาณ ​แต่​ด้วย​การค้น​ให้​เจอ​ว่า​สัญชาตญาณ​ข้อ​ไหน​กัน​แน่​ที่​พิสูจน์​ได้​ว่า​จะ​ไม่​มี​วัน​ทรยศ

​ตรงนี้​เอง​ที่​ธรรมเนียม​เชิง​อัลกอริทึม​เริ่ม​แยก​ออกจาก​ธรรมเนียม​วิจัย​ดำเนินงาน (operational research, OR) ​ของ​บท​ที่ 04 ​กำหนดการ​เชิงเส้น (linear programming) ​และ dynamic programming ​แก้ปัญหา​การหา​ค่า​เหมาะ​ที่สุด​เชิงตัวเลข​ที่​นิยาม​ไว้​ชัดเจน ​อัลกอริทึม​ใน​บท​นี้​แก้ปัญหา*​การค้นหา*​บน​พื้นที่​ไม่​ต่อเนื่อง​ซึ่ง​มัก​เป็น​เชิง​การจัด​หมู่ — ​เขาวงกต ​กราฟ ​บทพิสูจน์​ทาง​ตรรกะ ​ตำแหน่ง​บน​กระดาน ​การค้นพบ​ใจกลาง​ของ​พวก​มัน​คือ ​โครงสร้าง​ของ​พื้นที่​เอง​ต่างหาก (​ระยะทาง​ใน​นั้น ​ปัญหา​ย่อย​ที่​ซ้อนทับ​กัน ​ความแยกส่วน​ได้​ของ​มัน) ​ที่​กำหนด​ว่า​กลยุทธ์​การค้นหา​แบบ​ไหนจะ​พิสูจน์​ได้​ว่า​ถูก​และ​เร็ว ​การค้นพบ​นั้น​ปู​ทาง​ไป​สู่​การค้นพบ​ถัดไป​ที่​มืด​กว่า ​มัน​รอ​อยู่​ใน​บท​ที่ 06: ​พื้นที่​บาง​แบบ​ไม่​มี​โครงสร้าง​ชนิด​นี้​ให้​ใช้ประโยชน์​เลย ​และ​ไม่​ว่า​จะ​ฉลาด​แค่​ไหน​ก็​ผลิต​มัน​ขึ้น​มา​ใน​ที่​ที่​ไม่​มี​ไม่​ได้

​ท่า​ประจำ​บท

Move 05 — ​จัดลำดับ​การค้นหา — ​ใช้​โครงสร้าง​ดัน​เส้นทาง​ที่​ดีขึ้น​มา​ก่อน

​ต่อไป — ​บท​ที่ 06 · ​กำแพง: ​ไม่​ใช่​ทุก​พื้นที่​ที่จะ​ยอม​โค้ง​ให้​ลำดับ​การค้นหา​อัน​ชาญฉลาด ​อัลกอริทึม​ทั้งหมด​ใน​บท​นี้​เจอ​โครงสร้าง​ให้​ใช้ประโยชน์ — ​บท​หน้า​จะ​พบ​ปัญหา​ที่​ไม่​มี​โครงสร้าง​ให้​ใช้ประโยชน์​เลย ​และ​ถาม​ว่า​นัก​แก้ปัญหา​ทำ​อย่างไร​เมื่อ​พื้นที่​เอง​ปฏิเสธ​ที่จะ​สั้น​ลง

บทถัดไป · 7 / 1206 · กำแพง
Size
Page
Font

The Shortest Path — A History of the Art and Science of Problem-Solving

❦
100 · ปมและเส้นทาง201 · วิธีชุดแรก302 · การเปลี่ยนกรอบ403 · ยุค heuristic504 · สงครามกับศาสตร์แห่งการค้นหา605 · เส้นทางแบบอัลกอริทึม706 · กำแพง807 · หอเรื่องเล่า I: ท่าเดียวจบ908 · หอเรื่องเล่า II: การแก้ครั้งใหญ่ยุคใหม่1009 · สุนทรียะของคำตอบ1110 · นักแก้ปัญหาแห่งอนาคต1299 · เส้นทางคานงัด