‹

เครื่องมือนักสร้าง

​เครื่องมือ​นัก​สร้าง

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

​อุปนัย ​กับ​ศิลปะ​แห่ง​การขอ​มากกว่า​เดิม

​เครื่องมือ. ​พิสูจน์​กรณี​ฐาน ​แล้ว​พิสูจน์​ว่าแต่​ละ​กรณี​บังคับ​กรณี​ถัดไป ​ฝีมือ​ที่​ไม่​เห็นชัด​อยู่​สูง​ขึ้นไป​หนึ่ง​ชั้น: ​บางครั้ง​ข้อความ P ​พิสูจน์​ด้วย​อุปนัย​ไม่​ได้ ​แต่​ข้อความ​ที่*​แรง​กว่า*​กลับ​แล่น​ฉลุย — ​เพราะ​ขั้น​อุปนัย​ได้*​สมมุติ*​สมมุติฐาน​มา​ใช้ ​และ​ข้อความ​ที่​แรง​กว่า​ก็​คือ​เครื่องมือ​ที่​แรง​กว่า​ด้วย Pólya (​โพล​ยา) ​ตั้งชื่อ​ปรากฏการณ์​นี้​ว่า​ปฏิทรรศน์​นักประดิษฐ์ (inventor's paradox): ​พิสูจน์​ให้​มากกว่า​อาจ​ง่าย​กว่า ​นี่​คือ​คาน​งัด​ที่​สวน​สัญชาตญาณ​ที่สุด​เพียง​หนึ่งเดียว​ใน​การเปลี่ยน​ผ่าน​จาก​มือใหม่​สู่​นัก​โอลิมปิก

​กลิ่น. ​ข้อความ​ใดๆ ​ที่​มี​พารามิเตอร์ n; ​โครงสร้าง​เวียน​เกิด​หรือ​คล้าย​ตัวเอง — ​ต้นไม้ ​การปู​กระเบื้อง​บน​กระดาน 2ⁿ ​นิพจน์​ซ้อน​กัน ​ตัว​จุดชนวน​ของ​การเสริม​แรง​นั้น​เฉพาะเจาะจง​และ​ควรค่า​แก่​การจำขึ้นใจ: ​ขั้น​อุปนัย​ของ​คุณ*​เกือบ*​ทำงาน ​แต่​สมมุติฐาน​อ่อน​เกิน​กว่า​จะ​ดัน​ให้​ผ่าน — ​มัน​ต้องการ​ข้อเท็จจริง​ที่​ข้อความ​ฉบับ​ธรรมดา​ไม่​ได้​แบก​มา ​คำตอบ​ไม่​ใช่​การทิ้ง​อุปนัย ​แต่​คือ​บรรทุก​สัมภาระ​ที่​ขาดหาย​ลง​ไป​ใน​ตัว​ข้อความ — ​ขอบเขต​ที่​คม​กว่า ​การจัดวาง​ที่​กว้าง​กว่า — ​แล้ว​รัน​ใหม่

★★ · ​ผลบวก​ของ​จำนวน​คี่

​จง​พิสูจน์​ว่า 1 + 3 + 5 + ⋯ + (2n − 1) = n²

​หยุด​ก่อน ​วาดรูป​มัน​ก่อน​จะ​พิสูจน์​มัน

​เฉลย. ​ฐาน n = 1: 1 = 1² ​ขั้น​อุปนัย: ​สมมุติ​ว่า​ผลบวก​ถึง (2n − 1) ​เท่ากับ n²; ​บวก​จำนวน​คี่​ตัว​ถัดไป: n² + (2n + 1) = (n + 1)² ∎ ​ภาพ​ดีกว่า​พีชคณิต: ​จัตุรัส n × n ​โต​เป็น​จัตุรัส (n + 1) × (n + 1) ​โดย​ห่อ​เปลือก​รูป​ตัว L ​หนา 2n + 1 ​ช่อง​พอดี​รอบ​สอง​ด้าน ​อุปนัย​ใน​ฐานะ​เรขาคณิต​ของ​การพอกพูน

​ท่า — ​ไต่​จาก n ​สู่ n + 1. ​เครื่องมือ​ที่​เรียบ​ที่สุด​ใน​เล่ม — ​และ​เป็น​โครง​รถ​ที่​การขัดเกลา​ทุก​ชิ้น​ด้านล่าง​ขัน​น็อต​ยึด​เข้าใส่


★★★ · ​กระดาน​แหว่ง

​จง​พิสูจน์​ว่า​กระดาน 2ⁿ × 2ⁿ ​ที่​หาย​ไป​หนึ่ง​ช่อง​ใด​ก็ตาม ​ปู​เต็ม​ได้​ด้วย L-tromino (​สาม​ช่อง​เรียง​เป็น​รูป​ตัว L)

​หยุด​ตรงนี้ ​บท​ที่ 9 ​พิสูจน์​ว่า​กระดาน​เป็นไปไม่ได้ ​คราวนี้​จง​สร้าง​ขึ้น​มา​สัก​แผ่น

​เฉลย. ​การเสริม​แรง​อยู่​ใน​ตัว​โจทย์​แล้ว — ​และ​นั่นแหละ​คือ​บทเรียน ​คำถาม​ฉบับ "​ธรรมชาติ" (*​มุม*​หาย​หนึ่ง​ช่อง) ​กลับ​อุปนัย​ยาก​กว่า: ​กระดาน​ที่​ผ่า​สี่​ยื่น​กระดาน​ย่อย​ที่​ไม่​มี​มุม​แหว่ง​มา​ให้ ​และ​สมมุติฐาน​ก็​ไม่​มี​ที่​ให้​เกาะ ​จง​พิสูจน์​ฉบับ​แรง​กว่า "​หาย​ช่อง​ไหน​ก็ได้" ​แทน ​ฐาน n = 1: ​กระดาน 2 × 2 ​ที่​หาย​ช่อง​ใด​ช่อง​หนึ่ง*​คือ* L-tromino ​หนึ่ง​ตัว​พอดี ​ขั้น​อุปนัย: ​ผ่า​กระดาน 2ⁿ⁺¹ ​เป็น​สี่​จตุ​ภาค​ขนาด 2ⁿ; ​ช่อง​ที่​หาย​อยู่​ใน​จตุ​ภาค​หนึ่ง ​วาง tromino ​ตัว​เดียว​ตรงกลาง ​คลุม​ช่อง​มุม​ของ*​อีก​สาม​จตุ​ภาค*​ที่​เหลือ ​จตุ​ภาค​ละ​หนึ่ง​ช่อง ​บัดนี้​ทุก​จตุ​ภาค​คือ​กระดาน 2ⁿ × 2ⁿ ​ที่​หาย​ไป​หนึ่ง​ช่อง​พอดี — ​ใช้​สมมุติฐาน​ฉบับ​แรง​กว่า​สี่​ครั้ง ∎ (​ตรวจ​นับ: (4ⁿ⁺¹ − 1)/3 = 4·(4ⁿ − 1)/3 + 1 — ​ผลิต​รอย​แหว่ง​ให้​สาม​จตุ​ภาค ​จ่าย tromino ​ไป​หนึ่ง​ตัว ✓)

​นี่​คือ​ฝาแฝด​สาย​สร้าง​ของ​การระบายสี​ใน​บท​ที่ 9: ​สี​พิสูจน์​ความเป็นไป​ไม่​ได้ ​อุปนัย​ผลิต​ความเป็นไปได้

​ท่า — ​วาง​นัย​ทั่วไป​จน​ขั้น​อุปนัย​มี​ที่​เกาะ. ​ข้อความ​ที่​ทั่วไป​กว่า​ยื่น​ของ​ให้​ขั้น​อุปนัย​จับ​มากกว่า ​ถ้า​การผ่า​สี่​ของ​ปัญหา​ผลิต​ปัญหา​ย่อย​ที่​สมมุติฐาน​ของ​คุณ​แตะ​ไม่​ถึง ​จง​ขยาย​สมมุติฐาน​จน​แตะ​ถึง


★★★★ · ​เบาะ​รอง​ที่​ทำ​จาก​ความว่างเปล่า

​จง​พิสูจน์​ว่า 1/1² + 1/2² + ⋯ + 1/n² < 2 ​สำหรับ​ทุก n

​หยุด​ก่อน ​ลอง​อุปนัย​แบบ​เห็นๆ ​แล้ว​ดู​มัน​ตาย​ต่อหน้า

​เฉลย. ​อุปนัย​แบบ​เห็นๆ: ​สมมุติ Sₙ < 2; ​แล้ว Sₙ₊₁ = Sₙ + 1/(n + 1)² < 2 + ​อะไร​สัก​อย่าง ​ไม่​มี​ที่ว่าง​เหลือ ​ข้อความ​นี้​จริง​แต่​เป็นหมัน​เชิง​อุปนัย — ​สมมุติฐาน​ไม่​เหลือ​อะไร​ไว้​ดูดซับ​พจน์​ใหม่

​เสริม​แรง​มัน: ​พิสูจน์ Sₙ ≤ 2 − 1/n ​ฐาน n = 1: S₁ = 1 = 2 − 1 ​ขั้น​อุปนัย: ​เมื่อ​ได้ Sₙ ≤ 2 − 1/n ​เพียงพอ​ที่จะ​แสดงว่า 1/(n + 1)² ≤ 1/n − 1/(n + 1) = 1/(n(n + 1)) ​นั่น​คือ n(n + 1) ≤ (n + 1)² ​นั่น​คือ n ≤ n + 1 ​ซึ่ง​จริง ​ดังนั้น Sₙ₊₁ ≤ 2 − 1/(n + 1) ​และ​โดยเฉพาะ Sₙ < 2 ​สำหรับ​ทุก n ∎

​ข้อความ​ที่​แรง​กว่า​แบก​เชื้อเพลิง​ของ​ตัวเอง​มา​ด้วย: ​พจน์ −1/n ​คือ​เบาะ​ดูดซับ​ที่​ขั้น​อุปนัย​ต้องการ​พอดิบพอดี (​ภายหลัง Euler ​แสดงว่า​ลิมิต​แท้จริง​คือ π²/6 ≈ 1.645 — ​เบาะ​ของ​เรา​ห่าง​จาก​ค่า​คม​ลิบลับ ​และ​นั่น​ไม่เป็นไร​เลย ​การเสริม​แรง​ต้อง​เพียง*​ปิด​วง​อุปนัย​ได้* ​ไม่​จำเป็นต้อง​คม)

​ท่า — ​เสริม​แรง​สมมุติฐาน. ​สมมุติฐาน​อุปนัย​ไม่​ใช่​สิ่ง​ที่​คุณ​ต้อง​พิสูจน์ ​แต่​คือ​สิ่ง​ที่​คุณ​ได้​หยิบ​มา​ใช้ ​เมื่อ​ขั้น​อุปนัย​รั่ว ​จง​ถาม​คำถาม​กลับหัว​ของ Pólya: ​ข้อความ​ที่​แรง​กว่า​แบบ​ไหนจะ​ทำให้​ขั้น​นี้​กลายเป็น​เรื่อง​จิ๊บจ๊อย?

​เครื่องจักร​กับ​ท่า​นี้. ​การเสริม​แรง​สมมุติฐาน​คือ​การประดิษฐ์​บท​ตั้ง (lemma) — ​คอขวด​คลาสสิก​ของ​การพิสูจน์​ทฤษฎีบท​อัตโนมัติ ​ซึ่ง​มี​ฮิว​ริ​สติก​แต่​ไม่​มี​วิธี​ที่​วางใจ​ได้ — ​และ​โมเดล​เลียนแบบ​การเสริม​แรง​อัน​โด่งดัง​ได้ดี ​แต่​แทบ​ไม่​เคย​ให้กำเนิด​การวาง​นัย​ทั่วไป​ที่​ถูกต้อง​ขึ้น​สดๆ ​เอง; ​มนุษย์*​รู้สึก*​ได้​ว่า​ขั้น​อุปนัย​รั่ว​ตรงไหน ​แล้ว​ปะ​ที่​ตัว​ข้อความ

​การเวียน​เกิด → Dynamic Programming

​เครื่องมือ. ​เขียน​คำตอบ​ของ​ปัญหา​ใน​รูป​คำตอบ​ของ​อิน​สแตนซ์​ที่​เล็ก​กว่า; ​เมื่อ​ปัญหา​ย่อย​ซ้ำ​หน้าเดิม ​ก็​แคช​มัน​ไว้ (memoization) ​หรือ​เติม​จาก​ล่าง​ขึ้น​บน (dynamic programming — DP) ​ตำรา​ขาย DP ​ใน​ฐานะ​เทคนิค ​แต่​นัก​แข่ง​รู้จัก​มัน​ใน​ฐานะ*​คำถาม​เชิง​การแทน*: ​เลือก​ว่า "​สถานะ" ​คือ​อะไร — ​บทสรุป​ย่อ​ที่สุด​ของ​อดีต​ที่​อนาคต​ต้อง​ใช้ — ​แล้ว​ความสัมพันธ์​เวียน​เกิด​มัก​เขียน​ตัว​มัน​เอง​ออกมา ​บันได​คลาสสิก​ไต่​ทีละ​มิติ: Fibonacci (​หนึ่ง​มิติ — ​จำนวน​วิธี​ปู​แถบ 1 × n ​ด้วย​ชิ้น​ยาว 1 ​กับ 2), ​เส้นทาง​บน​กริด (​สอง​มิติ), knapsack (​ทรัพยากร), bitmask DP (​เซต), digit DP ​กับ tree DP (พ​รี​ฟิกซ์​ที่​มี​โครงสร้าง)

​กลิ่น. "​นับ​จำนวน​วิธี…" "​ต้นทุน​ต่ำสุด​ที่จะ…" "​ยาว​ที่สุด … ​บน​ลำดับ ​กริด ​ต้นไม้" ​ปัญหา​แตกตัว​ตาม​คำถาม "​ทางเลือก​สุดท้าย​คือ​อะไร?" Brute force ​เป็น​เอกซ์​โพเนน​เชียล ​แต่​อดีต​ที่*​เกี่ยวข้อง​จริง*​มี​ขนาดเล็ก ​เช็ก​ลิสต์​ของ​มืออาชีพ ​เรียง​ตามลำดับ: ​การตัดสินใจ​คือ​อะไร​บ้าง? ​หลังพ​รี​ฟิกซ์​ของ​การตัดสินใจ​ชุด​หนึ่ง ​อนาคต​ต้อง​รู้​อะไร​จริงๆ? — ​นั่นแหละ​คือ​สถานะ ท​ราน​ซิ​ชัน​คือ​การตัดสินใจ​หนึ่ง​ครั้ง; ​ต้นทุน​คือ #​สถานะ × ​ต้นทุนท​ราน​ซิ​ชัน; ​และ​ถ้า​มัน​ใหญ่​เกินไป ​แปล​ว่า​สถานะ​กำลัง​แบก​ขยะ — ​บีบ​อัด​มัน​ซะ

★★ · ​ยี่สิบ​เส้นทาง

​มี​เส้นทาง​โม​โน​โทน — ​เดิน​ขวา​กับ​ลง​เท่านั้น — ​กี่​เส้น ​จาก​มุม​บน​ซ้าย​สู่​มุม​ล่าง​ขวา​ของ​แลตทิซ​โหนด​ขนาด 4 × 4 ​จาก (0,0) ​ถึง (3,3)?

​หยุด​ก่อน ​แก้​มุม​บน​ซ้าย​ของ​คำถาม​เสีย​ก่อน

​เฉลย. ​สถานะ: f(i, j) = ​จำนวน​เส้นทาง​โม​โน​โทน​ที่มา​ถึง​โหนด (i, j) ​คุณ​มาจาก​ข้างบน​หรือ​จาก​ซ้าย ​ดังนั้น f(i, j) = f(i−1, j) + f(i, j−1) ​โดยตลอด​ขอบ​เป็น 1 ​ทั้งหมด ​เติม​ตาราง:

j=0123
i=01111
11234
213610
3141020

​คำตอบ: 20 ​และ​มอง​ตาราง​สิ — ​มัน​คือ​สามเหลี่ยม Pascal ​วาง​เอียง: f(i, j) = C(i+j, i) ​ที่นี่ C(6,3) = 20 ✓ ∎

​ท่า — ​ตั้งชื่อ​สถานะ ​แล้ว​เติม​ตาราง. ​การเวียน​เกิด ("​ก้าว​สุดท้าย​มาจาก​ซ้าย​หรือ​บน") ​นั้น​จิ๊บจ๊อย; ​รางวัล​คือ​รูป​ปิด​ที่​ผุด​เป็นตัว​ขึ้น​มาจาก​ตาราง dynamic programming ​ใน​ฐานะ​คณิตศาสตร์​เชิง​ทดลอง


★★★★ · Knapsack ​ตั้งแต่​ต้น​จน​จบ

​ความจุ W = 8 ​สิ่งของ: A (​น้ำหนัก 2, ​มูลค่า 3), B (3, 4), C (4, 5), D (5, 8) ​จง​ทำ​มูลค่า​รวม​ให้​มาก​ที่สุด​ภายใน​ความจุ — ​และ​จง​รู้*​ว่า​ทำไม*​อัลกอริทึม​ตะกละ (greedy) ​จึง​พลาด

​หยุด​ตรงนี้ ​ลอง​ตะกละ​ดูก่อน ​โดยเจตนา

​เฉลย. ​ตะกละ​ตาม​ความหนาแน่น​มูลค่า: D = 1.6, A = 1.5, B ≈ 1.33, C = 1.25 ​ความตะกละ​คว้า D (​น้ำหนัก 5) ​แล้ว​คว้า A (​น้ำหนัก 2) — ​มูลค่า 11 ​น้ำหนัก 7 ​ไม่​มี​ชิ้น​ไหน​ใส่​ลง​ได้​อีก 11 ​ไม่​ใช่​ค่า​เหมาะ​ที่สุด

​ทีนี้ DP ​สถานะ: dp[c] = ​มูลค่า​ดี​ที่สุด​ที่​ทำได้​ภายใน​ความจุ c ​เมื่อ​คิด​เฉพาะ​สิ่งของ​ที่​ประมวล​มา​แล้ว; ​ประมวล​สิ่งของ​ทีละ​ชิ้น ​กวาด c ​จาก​มาก​ลง​น้อย​เพื่อให้​แต่ละ​ชิ้น​ถูก​ใช้ได้​อย่าง​มาก​หนึ่ง​ครั้ง ​เริ่มต้น​เป็น​ศูนย์​ทั้งหมด

​ค่า​เหมาะ​ที่สุด​คือ 12 = B + D: ​น้ำหนัก 3 + 5 = 8 ​มูลค่า 4 + 8 — ​เลข 11 ​ของ​ความตะกละ​แพ้ 12 (​ทวน​สอบ​กับ​การแจกแจง​ครบ​ทั้ง 2⁴ ​สับ​เซต: ​ตัวเต็ง​ที่​เป็นไปได้​คือ A+D = 11, B+D = 12, B+C = 9, A+C = 8) ​ต้นทุน: 4 ​ชิ้น × 9 ​ระดับ​ความจุ ≈ 36 ​การอัปเดต​ช่อง​ตาราง ​แทน​การเช็ก 16 ​สับ​เซต — ​และ​ที่ n = 100, W = 100,000 ​ตาราง​แบบ​เดียวกัน​นี้​แทนที่ 2¹⁰⁰ ​สับ​เซต ​คำเตือน​ซื่อตรง​หนึ่ง​ข้อ: O(nW) ​เป็น pseudo-polynomial — W ​เป็น​เอกซ์​โพเนน​เชียล​ใน​จำนวน​หลัก​ของ​ตัว​มัน​เอง — knapsack ​จึง​ยัง​เป็น NP-hard ∎

​ท่า — ​บีบ​อัด​ประวัติศาสตร์​ให้​เหลือ​สถิติ​ที่​พอเพียง. ​สถานะ*​ไม่​ใช่* "​หยิบ​ชิ้น​ไหน​ไป​แล้ว​บ้าง" (2ⁿ ​สถานะ) ​แต่​คือ "​ใช้​ความจุ​ไป​เท่าไร" — ​เพราะ​มูลค่า​คือ​ทั้งหมด​ที่​อนาคต​ต้องการ ​และ​ความจุ​คือ​ทั้งหมด​ที่​พันธนาการ​อนาคต DP ​ยาก​ทุก​ข้อ​ยาก​ตรงนี้​แหละ: longest-increasing-subsequence ​บีบ "พ​รี​ฟิกซ์​ทั้ง​ก้อน" ​เหลือ "​หาง​เล็ก​สุด​ต่อ​ความยาว"; DP ​ของ traveling-salesman ​บีบ "​เส้นทาง​ที่ผ่านมา" ​เหลือ "(​เซต​ที่​เยือน​แล้ว, ​เมือง​ปัจจุบัน)"; digit DP ​บีบ "​ตัวเลข​ที่​สร้าง​มา" ​เหลือ "(​ตำแหน่ง, ​ยัง​ชิด​ขอบ​บน​อยู่​ไหม?, ​สมบัติ​ที่​สะสม​มา)" ​ท่าเดียว​กัน ​ไต่​ขึ้น​บันได​ไป​เรื่อยๆ

​เครื่องจักร​กับ​ท่า​นี้. ​เครื่องมือ​ที่​เป็นมิตร​กับ​เครื่องจักร​ที่สุด​ใน​คลังแสง — ​พอ​สถานะ​ถูก​นิยาม​แล้ว ​การเติม​ตาราง​คือ​สิ่ง​ที่​คอมพิวเตอร์*​เป็น*​อยู่แล้ว​โดยกำเนิด ​และ​บันได​คลาสสิก​ก็​อิ่มตัว​อยู่​ใน​ข้อมูล​ฝึก​ของ​พวก​มัน; ​ขอบ​ที่​เหลือ​ของ​มนุษย์​คือ​การ*​ประดิษฐ์*​สถานะ — ​การมองออก​ว่า​ประวัติศาสตร์​หน้าตา​พิสดาร​ยุบ​ลง​เหลือ​สถิติ​พอเพียง​ตัวเล็กๆ ​ได้

​อัลกอริทึม​ตะกละ ​กับ​การพิสูจน์​แบบ​สลับ​ชิ้น

​เครื่องมือ. ​อัลกอริทึม​ตะกละ (greedy) ​เลือก​ทาง​ที่​ดี​ที่สุด​เฉพาะหน้า​แล้ว​ไม่​หวนกลับ​มา​แก้ ​ความตะกละ​มัก​ผิด; ​ยาม​ใด​ที่​มัน​ถูก ​บทพิสูจน์​มาตรฐาน​คือ​การพิสูจน์​แบบ​สลับ​ชิ้น (exchange argument): ​หยิบ​คำตอบ​เหมาะ​ที่สุด OPT ​ใดๆ ​มา ​แสดงว่า​สลับ​ตัวเลือก​หนึ่ง​ของ​มัน​เป็นตัว​เลือก​ของ​ตะกละ​ได้​โดย​ไม่​แย่​ลง ​แล้ว​อุปนัย​ต่อ — ​ผลลัพธ์​ของ​ตะกละ​จึง​ทาบ​เท่า OPT (​ฉบับ​โครงสร้าง​ลึก​บอก​ว่า​ตะกละ​เหมาะ​ที่สุด​พอดี​เป๊ะ​บน matroid; ​นัก​แข่ง​ส่วนใหญ่​ควง​บท​ตั้ง​สลับ​ชิ้น​กัน​ตรงๆ)

​กลิ่น. ​จัด​ตารางเวลา ​คัดเลือก ​ผสาน ​เรียงลำดับ — ​ที่ใด​ก็ตาม​ที่ sort ​ตาม​กุญแจ​ที่​ถูกต้อง ​ฟัง​ดู​มี​เค้า ​และ​อนาคต​ขึ้นกับ​อดีต​ผ่าน​แค่​ยอด​สะสม​หรือ​แนวหน้า​เท่านั้น ​รี​เฟล็กซ์​ที่​มีวินัย​ต้อง​สอง​ด้าน: ​ล่า​การสลับ​ชิ้น ​และ ​ล่า​ตัวอย่าง​ค้าน​ด้วย​พลังงาน​เท่ากัน — n ​เล็กๆ ​น้ำหนัก​เจตนาร้าย ​ถ้า​สิบ​นาที​แล้ว​ไม่​มี​ฝ่าย​ไหน​ชนะ ​ให้​สงสัย​ว่า​เป็น DP ​แทน ​และ​จง​พก​กระสุน​เตือน​ที่​นัก​แข่ง​ทุกคน​เคย​โดน​มา​แต่​หัด​ใหม่: ​เหรียญ {1, 3, 4} ​จำนวน​เงิน 6 ​ตะกละ: 4 + 1 + 1 ​สาม​เหรียญ ​เหมาะ​ที่สุด: 3 + 3 ​สอง​เหรียญ ​ตะกละ​พร้อม​บทพิสูจน์​เท่านั้น ​ไม่งั้น​ไม่ต้อง​ส่ง

★★ · ​เลือก​นัด​ประชุม

​จาก​ช่วง [0,2), [1,3), [2,4), [3,5), [4,6) ​จง​เลือก​จำนวน​ช่วง​มาก​ที่สุด​ที่​ไม่​ทับซ้อน​กัน​เป็น​คู่ๆ

​หยุด​ก่อน ​คุณ​จะ sort ​ด้วย​กุญแจ​ไหน?

​เฉลย. ​กฎ​ตะกละ: ​หยิบ​ช่วง​ที่​จบ​เร็ว​ที่สุด​ใน​บรรดา​ช่วง​ที่​เข้ากันได้​กับ​ที่​ถือ​อยู่ ​ทำซ้ำ​ไป​เรื่อยๆ ​ไล่​รอย: ​หยิบ [0,2); ​ข้าม [1,3); ​หยิบ [2,4); ​ข้าม [3,5); ​หยิบ [4,6) — 3 ​การประชุม ​และ 3 ​คือ​ค่า​มาก​ที่สุด (​ช่วง​ยาว 2 ​สี่​ช่วง​ที่​ไม่​ทับกัน​เป็น​คู่ ​ต้อง​กินความ​ยาว​รวม 8 ​ใน​พิสัย​แค่ 6)

​บทพิสูจน์​สลับ​ชิ้น​ของ​กฎ: ​ให้ g₁ ​เป็นช่วง​ที่​จบ​เร็ว​ที่สุด​ใน​ทั้งหมด ​และ o₁ ​เป็นสมาชิก​ที่​เริ่ม​เร็ว​ที่สุด​ของ​เซต​เหมาะ​ที่สุด OPT ​ใดๆ ​แล้ว finish(g₁) ≤ finish(o₁) ​ดังนั้น OPT − {o₁} + {g₁} ​ยัง​ไม่​ทับกัน​เป็น​คู่​อยู่ดี — g₁ ​จบ​ไม่​ช้า​กว่า o₁ ​จึง​ชน​กับ​สมาชิก​ที่​เหลือ​ของ OPT ​ไม่​ได้ — ​และ​มี​ขนาด​เท่าเดิม ​จึง​มี​คำตอบ​เหมาะ​ที่สุด​สัก​ชุด​ที่​เริ่มต้น​ด้วย​ตัวเลือก​ของ​ตะกละ; ​เวียน​ทำต่อ​บน​พิสัย​ที่​เหลือ ∎

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


★★★★ · ​จำนวน​ที่​ใหญ่​ที่สุด

​กำหนด​จำนวนเต็มบวก — ​เช่น {9, 5, 34, 3, 30} — ​จง​เรียง​พวก​มัน​เป็นแถว ​ให้การ​นำ​หลักฐาน​สิบ​มา​ต่อกัน​ได้​จำนวน​ที่​ใหญ่​ที่สุด​เท่าที่​เป็นไปได้

​หยุด​ตรงนี้ sort ​แบบ​เห็นๆ ​นั้น​ผิด ​จง​หา​ตัว​เปรียบเทียบ​ที่​ถูก

​เฉลย. Sort ​ด้วย​ตัว​เปรียบเทียบ: ​ให้ x ​มา​ก่อน y ​เมื่อ​ผล​ต่อ xy ​มากกว่า yx (​เทียบ​กัน​ใน​ฐานะ​จำนวน) ​ไล่​รอย: 9 ​กับ 5 → "95" > "59"; 34 ​กับ 3 → "343" > "334" ​ดังนั้น 34 ​นำหน้า 3; 3 ​กับ 30 → "330" > "303" ​ดังนั้น 3 ​นำหน้า 30 ​ลำดับ: 9, 5, 34, 3, 30 — ​คำตอบ 9534330 (​ชนะ ​ตัวอย่างเช่น 9, 5, 3, 34, 30 → 9533430)

​ทำไม​ท่า​นี้​จึง​ชอบธรรม — ​หนี้​สอง​ก้อน​ที่​นัก​แก้​ส่วนใหญ่​เบี้ยว:

  1. ​ตัว​เปรียบเทียบ​เป็นอัน​ดับ​รวม​ของแท้ ​เขียน X ​แทนค่า​ของ x ​และ ℓₓ ​แทน​จำนวน​หลัก​ของ​มัน: xy > yx ⟺ X·10^ℓʸ + Y > Y·10^ℓˣ + X ⟺ X(10^ℓʸ − 1) > Y(10^ℓˣ − 1) ⟺ X/(10^ℓˣ − 1) > Y/(10^ℓʸ − 1) ​กฎ​จับคู่​หน้าตา​พิลึก​นี้​แอบ​เป็นการ sort ​ตาม​กุญแจ​จำนวนจริง​ตัว​เดียว κ(x) = X/(10^ℓˣ − 1) — ​จึง​ถ่ายทอด​ได้ ​จึง​เป็น sort ​ที่​ใช้การได้ ​และ κ ​มี​คำ​อ่าน​น่ารัก: κ(34) = 34/99 = 0.343434…, κ(3) = 3/9 = 0.333… — ​หลัก​ของ​แต่ละ​จำนวน​วน​ซ้ำ​ไป​ชั่วนิรันดร์ ​การจัดเรียง​นี้ sort ​ตาม*​สิ่ง​ที่​คุณ​จะ​กลายเป็น ​หาก​ทำซ้ำ​ตัวเอง​ไม่​รู้​จบ*
  2. ​สลับ​ชิ้น​เพื่อ​ความเหมาะ​ที่สุด ​ใน​การจัดเรียง​ใดๆ ​ถ้า​มี​คู่*​ติดกัน*​สัก​คู่​วาง​ค้าน​ตัว​เปรียบเทียบ (…yx… ​ทั้งที่ xy > yx) ​การสลับ​สอง​ตัว​นั้น​เปลี่ยน​แค่​รอยต่อ​จุด​นั้น — ​หลัก​อื่น​ทุก​หลัก​คง​ตำแหน่ง​เดิม — ​และ​ทำให้​จำนวน​ทั้ง​ก้อน​ใหญ่​ขึ้น​โดยแท้ ​การจัดเรียง​ใด​ที่​ไม่​เรียง​ตาม sort ​ย่อม​มี​คู่​ติดกัน​ที่​กลับ​ลำดับ​เช่นนี้ ​จึง​ไม่​เหมาะ​ที่สุด; ​การจัดเรียง​ตาม sort ​คือ​ค่า​มาก​ที่สุด ​โดย​ตัว​ที่ κ ​เท่ากัน​สลับ​กัน​ได้ ∎

​ท่า — ​พิสูจน์​หนี้​ทั้งสอง​ก้อน. ​กฎ​ตะกละ​ติดหนี้​อยู่​สอง​ก้อน: ​ความคงเส้นคงวา (​ตัว​เปรียบเทียบ​ต้อง​ถ่ายทอด​ได้ — ​และ​ภาษา​โปรแกรม​ยินดี​จะ "sort" ​ด้วย​ตัว​เปรียบเทียบ​ที่​ไม่​ถ่ายทอด​ออกมา​เป็นความ​ไร้สาระ) ​และ*​เสถียรภาพ​ต่อ​การสลับ​ชิ้น* ​จ่าย​ให้​ครบ​ทั้งคู่ ​ไม่งั้น​อย่า​ส่ง​คำตอบ

​เครื่องจักร​กับ​ท่า​นี้. ​โมเดล​ภาษา​เสนอ​กฎ​ตะกละ​ได้​คล่องปาก ​และ​แต่งเรื่อง (hallucinate) ​ความถูกต้อง​ของ​มัน​ขึ้น​มา​เอง; ​รี​เฟล็กซ์ {1, 3, 4} — ​โจมตี​กฎ​ของ​ตัวเอง​ก่อน​จะ​เชื่อ​มัน — ​คือ​นิสัย​ปรปักษ์​ที่​ต้อง​ฝึกฝน ​ไม่​ใช่​ค่า​โรงงาน

​ไบนารี​เสิร์ช​บน​คำตอบ

​เครื่องมือ. ​จะ​หา​ค่า​เหมาะ​ที่สุด​ของ​ปริมาณ​ที่​คำนวณ​ตรงๆ ​ยาก ​ให้​พลิก​คำถาม: ​มี​คำตอบ​ที่​ค่า​อย่าง​น้อย x ​ไหม? ​ถ้า​ความเป็นไปได้​โม​โน​โทน​ใน x — ​เป็นไปได้​ที่ x ​แปล​ว่า​เป็นไปได้​ตลอดทั้ง​ซีก​หนึ่ง — ​ค่า​เหมาะ​ที่สุด​ก็​คือ​ธรณีประตู ​และ​ไบนารี​เสิร์ช​หา​มัน​เจอ​ด้วย​การเรียก​กระบวนการ*​ตัดสิน*​เพียง O(log ​พิสัย) ​ครั้ง ​คุณ​เพิ่ง​แลก "​หา​ค่า​เหมาะ​ที่สุด" ​กับ "​ตัดสิน" ​และ​การตัดสิน​แทบจะ​ง่าย​กว่า​เสมอ: greedy ​สัก​ตัว ​หรือ​เช็ก​กราฟ​สัก​รอบ

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

★★ · ​โรงเลื่อย

​ต้นไม้​สูง 20, 15, 10, 17 ​ใบ​เลื่อย​ตั้ง​ที่​ความสูง H ​จะ​ตัด​ทุกอย่าง​ที่อยู่​เหนือ H ​เก็บ​ไม้​ได้ Σ max(0, hᵢ − H) ​หน่วย ​จง​หา​จำนวนเต็ม H ​ที่​ใหญ่​ที่สุด​ที่เก็บ​ไม้​ได้​อย่าง​น้อย 7 ​หน่วย (​โจทย์​คลาสสิก​จาก​เว็บ​ฝึกซ้อม ​รู้จัก​กัน​ใน​ชื่อ EKO)

​หยุด​ก่อน ​อย่า​หา​ค่า​เหมาะ​ที่สุด ​เดา​แล้ว​เช็ก — ​อย่าง​มีประสิทธิภาพ

​เฉลย. ​ความเป็นไปได้ f(H) = "wood(H) ≥ 7" ​ปริมาณ​ไม้​ไม่​เพิ่ม​ตาม H ​ดังนั้น f ​โม​โน​โทน: ​จริง​ข้างล่าง ​เท็จ​ข้างบน ​ไบนารี​เสิร์ช​บน [0, 20]:

​คำตอบ H = 15 (wood(15) = 7 ✓, wood(16) = 5 ✗) ​การเรียก​ตัดสิน​ห้า​ครั้ง​แทน​การกวาด​ทุก​ความสูง; ​ถ้า​ความสูง​ไป​ได้​ถึง 10⁹ ​ก็​ราว​สามสิบ​ครั้ง ​ลอการิทึม​คือ​โมเดล​ธุรกิจ​ทั้งหมด​ของ​ท่า​นี้ ∎

​ท่า — ​ซักถาม​ผู้สมัคร ​ไม่​ใช่​ค่า​เหมาะ​ที่สุด. ​ถ้า​คำตอบ​ที่​ถูก​กระซิบ​มา​จะ​เช็ก​ได้​ง่าย ​จง​เลิก​พยายาม​คำนวณ​มัน ​แล้ว​เริ่ม​ผ่า​ครึ่ง​ไล่หา​มัน


★★★★ · ​วัว​จอม​ห้าว

​คอก​อยู่​ที่​ตำแหน่ง 1, 2, 4, 8, 9 ​บน​เส้นตรง ​จง​วาง​วัว 3 ​ตัว​ลง​คอก ​ให้​ระยะห่าง​ต่ำสุด​ระหว่าง​วัว​คู่​ใดๆ ​ใหญ่​ที่สุด​เท่าที่​เป็นไปได้ (​ฉบับ​คลาสสิก​รู้จัก​กัน​ใน​ชื่อ AGGRCOW)

​หยุด​ตรงนี้ ​เครื่องมือ​สอง​ชิ้น​กำลังจะ​ต้อง​ประกอบ​ร่าง​กัน

​เฉลย. ​ฉบับ​ตัดสิน: ​วาง​วัว 3 ​ตัว​ให้​ทุก​คู่​ห่าง​กัน​อย่าง​น้อย d ​ได้​ไหม? ​เช็ก​ด้วย​ตะกละ: ​วาง​วัว​ตัว​แรก​ที่​คอก​ซ้าย​สุด ​แล้ว​หยิบ​คอก​ถัดไป​ที่​ห่าง​จาก​วัว​ตัว​ก่อน​อย่าง​น้อย d ​เสมอ; ​นับ​จำนวน​ที่​วาง​ได้ ​ตัว​เช็ก​นี้​ต้องการ​บทพิสูจน์​สลับ​ชิ้น​เล็กๆ ​ของ​ตัวเอง: ​ถ้า​มี​การวาง k ​ตัว​ที่​ช่องไฟ d ​แบบ​ใช้ได้​จริงอยู่​สัก​แบบ ​การเลื่อน​วัว​ซ้าย​สุด​ของ​มัน​ไป​คอก​ซ้าย​สุด ​และ​วัว​ตัว​ถัดๆ ​ไป ​ไป​ยัง​คอก​เร็ว​ที่สุด​ที่ ≥ d ​เลย​ตัว​ก่อนหน้า ​มี​แต่​จะ​เลื่อน​วัว​ไป​ทางซ้าย​หรือ​อยู่​ที่​เดิม ​ไม่​มี​วัน​ละเมิด d — ​การวาง​แบบ​ตะกละ-​ชิด​ซ้าย​จึง​นั่ง​วัว​ได้​ไม่​น้อยกว่า​แบบ​ไหนๆ ​ดังนั้น "​ตะกละ​นั่ง​ได้ ≥ 3" ​สมมูล​กับ​ความเป็นไปได้ ​ความเป็นไปได้​โม​โน​โทน — d ​ยิ่งใหญ่​ยิ่ง​ยาก — ​จึง​ไบนารี​เสิร์ช d ​บน [1, 8]:

​คำตอบ d = 3 ​โดย​แสดง​แล้ว​ว่า d = 4 ​เป็นไปไม่ได้ ∎

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

​ท่า — ​ละลาย "​ทำ​ค่า​น้อย​สุด​ให้​มาก​สุด" ​ให้​เป็นความ​เป็นไปได้. ​ค่า​เหมาะ​ที่สุด​คือ​ธรณีประตู; ​จง​ล่า​ธรณีประตู ​ไม่​ใช่​ล่า​คำตอบ

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

​คิดย้อน​จาก​ปลายทาง

​เครื่องมือ. ​เริ่ม​จาก​สถานะ​เป้าหมาย​แล้ว​คำนวณ​ตัว​ก่อนหน้า ​แทน​การสำรวจ​เดินหน้า​จาก​จุดเริ่ม ​ใน​เกม​นี่​คือ​อุปนัย​ย้อนกลับ (backward induction): ​ป้าย​ตำแหน่ง​จบเกม​ว่า ​ชนะ ​หรือ ​แพ้ ​แล้ว​แพร่​ป้าย​ออก​ไป — ​ตำแหน่ง​หนึ่ง​เป็น​ฝ่าย​ชนะ​ถ้า​มี​สัก​ท่า​เดิน​ที่​พา​ไป​ถึง​ตำแหน่ง​ซึ่ง​แพ้​สำหรับ​คู่ต่อสู้ ​เป็น​ฝ่าย​แพ้​ถ้า​ทุก​ท่า​เดิน​พา​ไป​ถึง​ตำแหน่ง​ชนะ​ทั้งหมด ​ใน​ปริศนา​มัน​คือ "​ก้าว​สุดท้าย​จำต้อง​เป็น​อะไร?" — ​ก้าว​สุดท้าย​มัก​ถูก​บีบรัด​ยิ่งกว่า​ก้าว​แรก​มาก ​ต้นไม้​จาก​ปลาย​ด้าน​นั้น​จึง​ผอม​กว่า

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

★★ · ​วิ่ง​สู่ 100

​สอง​โจทย์​คลาสสิก ​โครงกระดูก​เดียวกัน (ก) ​หิน 21 ​ก้อน; ​ผู้​เล่น​ผลัดกัน​หยิบ 1, 2 ​หรือ 3 ​ก้อน; ​ใคร​หยิบ​ก้อน​สุดท้าย​ชนะ (ข) ​ผู้​เล่น​ผลัดกัน​บวก 1 ​ถึง 10 ​เข้า​ยอดรวม​ที่​เริ่ม​จาก 0; ​ใคร​พูด 100 ​ชนะ ​ใคร​ชนะ​ใน​แต่ละ​เกม ​และ​ชนะ​อย่างไร?

​หยุด​ก่อน ​เริ่ม​จาก​ตอนจบ — ​ตามตัว​อักษร​เลย

​เฉลย. (ก) ​ป้าย​ย้อนกลับ ​เผชิญ​หิน 0 ​ก้อน​คือ​คุณ​แพ้​ไป​แล้ว — ​ผู้​เล่น​ก่อนหน้า​หยิบ​ก้อน​สุดท้าย​ไป ​เผชิญ 1–3 ​คุณ​ชนะ (​หยิบ​หมด​กำมือ) ​เผชิญ 4 ​ทุก​ท่า​เดิน​ยื่น​ชัยชนะ​ให้​คู่ต่อสู้: 4 ​คือ​ฝ่าย​แพ้ ​แพร่​ป้าย​ต่อไป ​ตำแหน่ง​แพ้​คือ​พหุคูณ​ของ 4 ​พอดิบพอดี — ​จาก 4k ​การหยิบ t ​ใดๆ ​เหลือ​จำนวน​ที่​ไม่​ใช่​พหุคูณ; ​จาก 4k + r (r = 1, 2, 3) ​จง​หยิบ r ​เนื่องจาก 21 ≡ 1 (mod 4) ​ผู้​เล่น​คน​แรก​ชนะ: ​หยิบ 1 ​แล้ว​ตอบ​ทุก t ​ด้วย 4 − t ​คืน​สภาพ​พหุคูณ​ของ 4 ​เสมอ (ข) ​เครื่องยนต์​เดียวกัน ​ฉบับ​บวก​เลข: ​เป้า​ที่​ต้อง*​ยื่น​ให้​คู่ต่อสู้*​ไล่​ย้อน​จาก 100 ​ทีละ 11 — 100, 89, 78, …, 12, 1 — ​เพราะ k ​ของ​คู่ต่อสู้​ถูก​ตอบ​ด้วย 11 − k ​ของ​คุณ ​ผู้​เล่น​คน​แรก​พูด 1 ​แล้ว​ไต่ 12, 23, …, 89, 100 ∎

​เล่น​เดินหน้า​ที่ 21 ​เห็น​ต้นไม้​พุ่ม​หนา​ทึบ; ​การป้าย​ย้อนกลับ​ให้​ทฤษฎี​ทั้งหมด​ออกมา​เป็นลำดับ​เลขคณิต​เดียว ​มัน​ยัง​ปลูก​มโนทัศน์​ทั่วไป​ไว้​ด้วย — ​ตำแหน่ง​เย็น (​แพ้​สำหรับ​ผู้​ถึงตา​เดิน) ​ปะทะ​ตำแหน่ง​ร้อน — ​โครงกระดูก​เป็น​คาบ​ที่​รองรับ​ทฤษฎี​เกม​ตระกูล Nim: ​คอลัมน์​สมดุล​ของ​บท​ที่ 9 ​ก็​คือ​ตำแหน่ง​เย็น​ของ Nim ​เป๊ะๆ ​และ​ทฤษฎี​ฉบับ​ทั่วไป (Sprague–Grundy) ​ก็​งอก​จาก​เมล็ด​นี้

​ท่า — ​ป้าย​จาก​ตอนจบ. ​เป้าหมาย​คือ​สถานะ​เดียว ​จุดเริ่ม​มี​นับไม่ถ้วน ​จง​คำนวณ ​ชนะ/​แพ้ ​กระจาย​ออกจาก​เป้าหมาย ​แล้ว​อ่าน​คำตอบ​ออกจาก​ตาราง​ของ​คุณ​เอง


★★★★ · ​เกม​ของ Wythoff ​กับ​อัตราส่วน​ทอง

​กอง​หิน​สอง​กอง ​ท่า​เดิน: ​หยิบ​จำนวนบวก​เท่าใด​ก็ได้​จาก​กอง​เดียว ​หรือ ​หยิบ​จำนวนบวก*​เท่ากัน*​จาก​ทั้งสอง​กอง ​หิน​ก้อน​สุดท้าย​เป็น​ของ​ผู้ชนะ ​จง​บรรยาย​ลักษณะ​ตำแหน่ง​แพ้​ทั้งหมด

​หยุด​ตรงนี้ ​บด​กรณี​เล็กๆ ​ก่อน​จะ​ตั้ง​ทฤษฎี

​เฉลย. ​ป้าย​ย้อนกลับ​สถานะ​เล็กๆ ​นับ​คู่​แบบ​ไม่​จัดอันดับ (0,0) ​คือ​แพ้ — ​ผู้​ถึงตา​เดิน​เผชิญ​ความว่างเปล่า ​ผู้​เล่น​ก่อนหน้า​หยิบ​ก้อน​สุดท้าย​ไป​แล้ว ​ทุกอย่าง​ที่​ไป​ถึง (0,0) ​ได้​ใน​หนึ่ง​ท่า — ​ทุก (k,0) ​และ (k,k) — ​คือ​ชนะ ​กวาด​ขึ้นไป​หา​สถานะ​ถัดไป​ที่ทาง​ออก​ทุก​ทาง​เป็น​ชนะ: (1,2) ​ท่า​เดิน​ของ​มัน​ไป​ถึง (0,2), (1,1), (1,0) ​และ​ทาง​ทแยง (0,1) — ​แต่ละ​ตัว​ชนะ (​แต่ละ​ตัว​ถึง (0,0) ​ได้​ใน​หนึ่ง​ท่า) ​ดังนั้น (1,2) ​แพ้ ​ตัด​ทุกอย่าง​ที่​ไป​ถึง (0,0) ​หรือ (1,2) ​ได้​ทิ้ง​ไป ​ผู้สมัคร​ถัดไป​คือ (3,5) ​ท่า​กอง​เดียว​ของ​มัน​ไป​ถึง (0,5), (1,5), (2,5), (3,4), (3,3), (3,2), (3,1), (3,0); ​ท่า​ทแยง​ไป​ถึง (2,4), (1,3), (0,2) ​ทุก​ตัว​ชนะ​หมด: (0,5), (3,0), (0,2) ​แตะ (0,0) ​ได้​ตรงๆ ​และ (3,3) ​แตะ​ได้​ทาง​ทแยง; (1,5) → (1,2) ​โดย​หยิบ 3; (2,5) → (2,1) ​โดย​หยิบ 4; (3,2) → (1,2) ​โดย​หยิบ 2; (1,3) → (1,2) ​โดย​หยิบ 1; (3,1) → (2,1) ​โดย​หยิบ 1; (3,4) → (1,2) ​ด้วย​ทแยง −2; (2,4) → (2,1) ​โดย​หยิบ 3 (​คู่​ไม่​จัดอันดับ: (2,1) ​ก็​คือ (1,2)) ​ดังนั้น (3,5) ​แพ้ ​ตะแกรง​ร่อน​ต่อไป: (0,0), (1,2), (3,5), (4,7), (6,10), (8,13), …

​ข้อเท็จจริง​เชิง​โครงสร้าง​สอง​ข้อ​ร่วง​ออกมา​จาก​ตาราง: ​จำนวนเต็มบวก​ทุก​ตัว​ปรากฏ​ใน​คู่​แพ้​เพียง​คู่​เดียว​พอดี ​และ​คู่​ตัว​ที่ k ​ต่างกัน k ​พอดี ​รูป​ปิด (Wythoff, 1907): ​ตำแหน่ง​แพ้​ตัว​ที่ k ​คือ (⌊kφ⌋, ⌊kφ²⌋) ​โดย φ = (1 + √5)/2 ​ตรวจ — k = 1: (1, 2); k = 2: (⌊3.236⌋, ⌊5.236⌋) = (3, 5); k = 3: (⌊4.854⌋, ⌊7.854⌋) = (4, 7) ✓ ​ทำไม​ต้อง​อัตราส่วน​ทอง: ​ทฤษฎีบท​ของ Beatty ​กล่าวว่า​ลำดับ ⌊kα⌋ ​กับ ⌊kβ⌋ ​แบ่ง​กั้น​เซต​จำนวนเต็มบวก​พอดี ​ก็ต่อเมื่อ 1/α + 1/β = 1 — ​และ 1/φ + 1/φ² = 1; ​ขณะที่ φ² = φ + 1 ​ทำให้​ช่องว่าง​ของ​คู่​ตัว​ที่ k ​เท่ากับ k ​พอดี ​สมบัติ​สอง​ข้อ​นี้​คือ​กฎ​ของ​ตะแกรง​เป๊ะๆ: ​คู่​แพ้​ใหม่​แต่ละ​คู่​ใช้​จำนวนเต็ม​ตัวเล็ก​สุด​ที่​ยัง​ไม่​ถูก​ใช้ (​สมบัติ​การแบ่ง​กั้น) ​พร้อม​ช่องว่าง k (​สมบัติ​ท่า​ทแยง) ∎

​การวิเคราะห์​ถอยหลัง (retrograde analysis) ​คือ​การทดลอง; ​อัตราส่วน​ทอง​คือ​ทฤษฎี ​เวิร์ก​โฟลว์​ที่​ซื่อตรง — ​บด​ตาราง​ย้อนกลับ ​จ้องมอง ​ตั้ง​ข้อ​คาดการณ์ ​แล้ว​พิสูจน์​ผ่าน Beatty — ​คือ​วิธี​ที่​ผลลัพธ์​นี้​ถูก​ค้นพบ​จริงๆ ​ใน​ประวัติศาสตร์ ​และ​มัน​จำลอง​เครื่องยนต์​สอง​จังหวะ​ที่​หนังสือ​เล่ม​นี้​พบ​เจอ​ซ้ำแล้วซ้ำเล่า: ​เครื่องจักร​ผลิต​ข้อมูล; ​การจด​จำ​บีบ​อัด​มัน; ​บทพิสูจน์​รับรอง​มัน

​ท่า — ​บด​ตาราง​ก่อน ​แล้ว​ค่อย​คู่ควร​กับ​สูตร. ​อุปนัย​ย้อนกลับ​ให้​ความจริง​โดย​ไร้​การปิ๊ง; ​การบีบ​อัด​ตาราง​ให้​เป็น​รูป​ปิด​คือ​การปิ๊ง — ​และ​จากนั้น​มัน​ต้อง​ถูก​พิสูจน์ ​ไม่​ใช่​จับ​แพตเทิร์น​เอา​เฉยๆ

​เครื่องจักร​กับ​ท่า​นี้. ​การวิเคราะห์​ถอยหลัง​คือ​สนาม​เหย้า​ของ​เครื่องจักร — ​ตาราง​จบเกม​หมากรุก (endgame tablebase) ​ที่​ทุก​ตำแหน่ง​ซึ่ง​เหลือ​หมาก​เจ็ด​ตัว​หรือ​น้อยกว่า​ถูก​แก้​ย้อนหลัง​จน​หมด ​คือ​อนุสาวรีย์​อุตสาหกรรม​ของ​มัน; ​จังหวะ​ของ​มนุษย์​คือ​การบีบ​ตาราง​ให้​เหลือ φ ​ซึ่ง​ไม่​มี tablebase ​ตัว​ไหนจะ​อาสา​บอก​ให้​เด็ดขาด

​ห้า​ท่า ​ใน​พริบตาเดียว

​ท่า​กลิ่น​ตรา​ประจำ​ท่า
​เสริม​แรง​สมมุติฐาน​ขั้น​อุปนัย​เกือบจะ​ทำงาน​เบาะ 2 − 1/n
​บีบ​อัด​ประวัติศาสตร์​เป็น​สถานะ​นับ/​หา​ค่า​เหมาะ​ที่สุด​บน​ลำดับ; ​อดีต​ที่​เกี่ยวข้อง​มี​ขนาดเล็ก12 ​ของ knapsack ​ชนะ 11 ​ของ​ตะกละ
​การพิสูจน์​แบบ​สลับ​ชิ้นsort ​ตาม​กุญแจ​สัก​ตัว​ฟัง​ดู​มี​เค้า9534330
​ไบนารี​เสิร์ช​บน​คำตอบ​ทำ​ค่า​มาก​สุด​ให้​น้อย​สุด​วัว​ที่ d = 3
​ป้าย​จาก​ตอนจบ​เป้าหมาย​แคบ ​จุดเริ่ม​พร่ามัวφ ​ของ Wythoff

​ทั้ง​ห้า​คือ​นัก​สร้าง: ​แต่ละ​ท่า​คืนให้​ไม่​ใช่​แค่​คำตอบ ​แต่​คือ​สิ่งก่อสร้าง​พร้อม​ใบรับ​ประกัน ​เหลือ​อีก​หนึ่ง​ตระกูล — ​เครื่องมือ​ที่​เปลี่ยน​ว่า​ปัญหา*​คือ*​อะไร ​ก่อนที่​ใคร​จะ​เริ่ม​ลงมือ​แก้

บทถัดไป · 16 / 21สายตานักจำลองแบบ
Size
Page
Font

Natural Intelligence — A Field Manual of Human Wit

❦
100 Titlepages2วิธีใช้หนังสือเล่มนี้3บทนำ — ทำไมต้องไหวพริบ4ภาคผนวก ค — คลังสำรอง {#appC}5ภาคผนวก ก — ดัชนีท่าคิด {#appA}6ปริศนาหน้าประตู7ยุคทองของนักปริศนา8คิดเรื่องการคิด9ทลายกรอบ10นิรนัยบริสุทธิ์11ตัวเลข โอกาส และรูปทรง12ห้องบอส13แชมป์คิดอย่างไร14ท่าสังหาร15เครื่องมือนักสร้าง16สายตานักจำลองแบบ17กระดานคะแนน18คูเมือง19การไล่กวด20ฝึกแต้มต่อ21หลักสูตรสามสิบวัน