“การค้นหา (Search) คือหัวใจของปัญญาประดิษฐ์ - ตั้งแต่การเดินหมากรุกไปจนถึงการที่ ChatGPT เลือกคำตอบให้คุณ”
ลองนึกภาพว่าคุณอยู่ที่ MRT จตุจักร และต้องการไปตลาด อ.ต.ก. คุณมีทางเลือกมากมาย - จะเดินตรงไป? จะอ้อมไปตามถนนใหญ่? หรือจะลัดซอย? การตัดสินใจนี้คือสิ่งที่เราเรียกว่า “Search Problem” ในโลกของ AI
แต่ “Search” ในที่นี้ไม่ได้หมายถึงการค้นหาแบบ Google Search นะครับ แต่หมายถึง การสำรวจทางเลือกต่างๆ อย่างเป็นระบบเพื่อหาคำตอบที่ดีที่สุด ไม่ว่าจะเป็น:
ทั้งหมดนี้ใช้หลักการ "Search" เหมือนกันหมด!
หัวใจของการแก้ปัญหาด้วย Search คือการแปลงปัญหาในโลกจริงให้เป็น “State-Space Representation” ลองดูองค์ประกอบสำคัญ:
“ตอนนี้อยู่ตรงไหน” — การบรรยายสถานการณ์ ณ ขณะใดขณะหนึ่ง
“จุดเริ่มต้นของปัญหา” เช่น “ตอนนี้อยู่ที่ MRT จตุจักร”
“ทำอะไรได้บ้างในแต่ละสถานะ”
“ถ้าทำ Action X ใน State Y จะไปอยู่ State ไหน” เช่น “ถ้าเลี้ยวซ้ายที่สี่แยกลาดพร้าว → จะไปอยู่ที่ถนนพหลโยธิน”
“ถึงจุดหมายหรือยัง?” เช่น “ถึงตลาด อ.ต.ก. แล้วหรือยัง?”
“ใช้ทรัพยากรไปเท่าไหร่” เช่น ระยะทาง, เวลา, ค่าน้ำมัน, ค่าผ่านทาง
Initial State: Goal State:
2 8 3 1 2 3
1 6 4 → 4 5 6
7 _ 5 7 8 _
States: การจัดเรียงตัวเลขที่เป็นไปได้ทั้งหมด (362,880 แบบ!)
Actions: เลื่อนช่องว่างไปทิศทางที่เป็นไปได้
Path Cost: จำนวนครั้งที่เลื่อน
คำถามคือ: จะหาลำดับการเลื่อนที่น้อยที่สุดได้อย่างไร? 🤔
[Start State]
/ | \
[State A] [State B] [State C]
/ \ | / \
[...] [...] [Goal!] [...] [...]
Root (ราก): สถานะเริ่มต้น
Branches (กิ่ง): การกระทำที่เป็นไปได้
Nodes (โหนด): สถานะต่างๆ
Leaves (ใบ): สถานะที่ไม่มีทางไปต่อ หรือเป้าหมาย
ปัญหาคือ: ต้นไม้นี้ใหญ่มาก! Bangkok มีสี่แยก ~50,000 แห่ง ถ้าแต่ละแยกไปได้ 4 ทิศ...นั่นคือทางเลือกมหาศาล! 😱
หลักการ: สำรวจทีละระดับ เหมือนคลื่นน้ำที่กระจายออกไป
ระดับ 0: [Start]
ระดับ 1: [ทุกจุดที่ห่าง 1 ก้าว]
ระดับ 2: [ทุกจุดที่ห่าง 2 ก้าว]
...จนเจอเป้าหมาย
เหมาะกับปัญหาที่เป้าหมายอยู่ไม่ลึก หรือต้องการเส้นทางที่สั้นที่สุดแน่ๆ
หลักการ: ดำดิ่งลงไปให้สุดก่อน ถ้าติดก็ถอยกลับมาลองทางอื่น
Start → A → B → C → ติด!
↑
กลับมาที่ B
↓
D → E → Goal!
เหมาะกับปัญหาที่มีคำตอบหลายทาง และไม่จำเป็นต้องดีที่สุด
Heuristic h(n) คือ "การประมาณการ" ว่าจากจุด n ไปถึงเป้าหมายน่าจะไกลแค่ไหน
ตัวอย่าง Heuristics ที่ดี:
A* ผสมผสานระหว่าง:
เลือกสำรวจ node ที่มี f(n) ต่ำสุดก่อน:
จาก จตุจักร → สยาม:
Node A: ผ่านพหลโยธิน
- g(A) = 2 km
- h(A) = 4 km
- f(A) = 6 km
Node B: ผ่านลาดพร้าว
- g(B) = 1.5 km
- h(B) = 4.5 km
- f(B) = 6 km
Node C: ผ่านรัชดา
- g(C) = 2.5 km
- h(C) = 3 km
- f(C) = 5.5 km ← A* จะเลือกทางนี้!
Nodes: สี่แยก, ทางแยก (~50,000 จุดใน กทม.)
Edges: ถนนที่เชื่อมระหว่างจุด
Weights: ระยะทาง, เวลา, ค่าผ่านทาง
เทคนิคเพิ่มเติม: Hierarchical A*, Bidirectional Search, Contraction Hierarchies
State: ประโยคที่สร้างมาแล้ว
Actions: เลือกคำถัดไป
Goal: ประโยคที่สมบูรณ์และตอบโจทย์
State space ใหญ่ (50,000n สำหรับ n คำ), ไม่มี goal state ชัดเจน
"The weather" →
1. "The weather is" (score: 0.8)
2. "The weather was" (score: 0.7)
3. "The weather will" (score: 0.6)
[ตัดทิ้ง: "The weather cat" (score: 0.1)]
State: ตำแหน่งหมาก
Actions: การเดินที่ถูกกฎ
Evaluation: ประเมินความได้เปรียบ
Modern approach: Alpha-Beta Pruning, Monte Carlo Tree Search, Neural Networks for evaluation
ความท้าทาย: Continuous space, Dynamic obstacles, Multiple dimensions
Search algorithms เป็นเพียงจุดเริ่มต้น สัปดาห์หน้าเราจะเรียนรู้ว่า:
บทความนี้เป็นส่วนหนึ่งของ AI Course Week 2: Search & Pathfinding
สามารถใช้ควบคู่กับ slides และ lab materials