โครงสร้างข้อมูลและอัลกอริทึม: ชุดสรุปเร่งรัด

สรุปสูตร ขั้นตอนวิธีทำที่สำคัญของทุกหัวข้อ และโจทย์ฝึก 6 ข้อ พร้อมเฉลยละเอียดไว้ท้ายเล่ม

โจทย์ใหม่กลับไปที่รายวิชา

ในหน้าต่างพิมพ์ ให้เลือก “บันทึกเป็น PDF” เพื่อเก็บสำเนาไว้ในอุปกรณ์ของคุณ

1สูตรและวิธีทำ

ทฤษฎีกราฟ

เล็มมาการจับมือ
Σ deg(v) = 2|E|
กราฟบริบูรณ์
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
กราฟปรกติ
|E| = n·k/2
ต้นไม้และป่า
|E| = n − 1, |E| = n − c
ใบของต้นไม้
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
ออยเลอร์
วงจร: ดีกรีเป็นคู่ทุกจุดยอด; ทางเดิน: มีดีกรีคี่พอดี 2 จุดยอด
วงจรแฮมิลตันใน Kn
(n − 1)!/2
การปรับค่าของไดก์สตรา
d(v) = min(d(v), d(u) + w(u, v))
วอล์กความยาว L
(Mᴸ)ij

วิธีการ

  1. เขียนดีกรีของทุกจุดยอด ผลบวกของดีกรีเท่ากับสองเท่าของจำนวนเส้นเชื่อม
  2. สำหรับโจทย์ออยเลอร์ ให้ตรวจว่ากราฟเชื่อมโยงกัน และนับจุดยอดที่มีดีกรีคี่
  3. สำหรับต้นไม้ ให้ใช้ว่ามี n − 1 เส้นเชื่อม และเล็มมาการจับมือ
  4. สำหรับไดก์สตรา ให้เก็บตารางระยะทางชั่วคราว และยืนยันจุดยอดที่ยังไม่ยืนยันซึ่งมีค่าน้อยที่สุดในแต่ละรอบ
  5. สำหรับต้นไม้ทอดข้ามค่าน้อยที่สุด ให้เรียงเส้นเชื่อมตามน้ำหนักและข้ามทุกเส้นที่ทำให้เกิดวัฏจักร (ครัสคัล) หรือขยายต้นไม้ต้นเดียวจากจุดยอดเริ่มต้น (พริม)

2โจทย์ฝึก

1.อัลกอริทึมและความซับซ้อนปานกลาง

อัลกอริทึม Floyd–Warshall คำนวณอะไรและเร็วเพียงใด

  1. Aต้นไม้ทอดข้ามที่น้อยที่สุดใน O(E log V)
  2. Bลำดับทอพอโลยีใน O(V²)
  3. Cเส้นทางสั้นที่สุดจากจุดยอดต้นทางหนึ่งไปยังจุดยอดอื่นทั้งหมดใน O(V + E)
  4. Dเส้นทางสั้นที่สุดระหว่างจุดยอดทุกคู่ใน O(V³)
2.อัลกอริทึมและความซับซ้อนยาก

เหตุใดการค้นหาแบบเปรียบเทียบใด ๆ ในอาร์เรย์ที่เรียงแล้วจึงต้องใช้ Ω(log n) การเปรียบเทียบในกรณีเลวร้ายที่สุด

  1. Aการเปรียบเทียบแต่ละครั้งใช้เวลาแบบลอการิทึม
  2. Bต้นไม้ตัดสินใจที่มีผลลัพธ์ที่เป็นไปได้ n แบบต้องมีความลึกอย่างน้อย log₂ n
  3. Cทุกสมาชิกต้องถูกเปรียบเทียบอย่างน้อยหนึ่งครั้ง
  4. Dการค้นหาแบบทวิภาคเป็นอัลกอริทึมเดียวที่เป็นไปได้ และต้องใช้ log₂ n การเปรียบเทียบ
3.โครงสร้างข้อมูลปานกลาง

extract-min ใน min-heap ทวิภาคทำงานอย่างไร

  1. Aค้นหาใบทั้งหมดเพื่อหาค่าต่ำสุดใหม่
  2. Bย้ายสมาชิกสุดท้ายไปที่รากและเลื่อนลง (sift down)
  3. Cลบสมาชิกสุดท้ายของอาร์เรย์
  4. Dลบรากและเลื่อนสมาชิกทั้งหมดไปทางซ้ายหนึ่งตำแหน่ง
4.โครงสร้างข้อมูลยาก

การแฮชซ้อน (double hashing) ลดปัญหาใดของ linear probing เป็นหลัก

  1. Aความจำเป็นต้องเก็บคีย์ในตาราง
  2. Bต้นทุน O(n) ในการอ่านค่าของคีย์
  3. Cความจำเป็นต้องมีฟังก์ชันแฮช
  4. Dการจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว
5.ทฤษฎีกราฟปานกลาง

ต้นไม้มี 2 จุดยอดดีกรี 3, 4 จุดยอดดีกรี 4, 4 จุดยอดดีกรี 5, 4 จุดยอดดีกรี 2 และจุดยอดอื่นทั้งหมดเป็นใบ (ดีกรี 1) มีกี่ใบ L

2 × deg 34 × deg 44 × deg 54 × deg 2
L =
6.ทฤษฎีกราฟยาก
14127159121111ABCDEF

ใช้ขั้นตอนวิธีของไดก์สตราเพื่อหาความยาว d(F) ของเส้นทางที่สั้นที่สุดจาก A ไป F ในกราฟถ่วงน้ำหนัก

เริ่มต้น: Aสิ้นสุด: F
d(F) =

3สารละลาย

1.อัลกอริทึมและความซับซ้อน

คำตอบ: D · เส้นทางสั้นที่สุดระหว่างจุดยอดทุกคู่ใน O(V³)

เหตุผลที่เป็นคำตอบนี้

Floyd–Warshall เป็นอัลกอริทึมการโปรแกรมพลวัตที่อนุญาตให้ทีละจุดยอดเป็นจุดผ่านกลาง โดยใช้เวลา O(V³)

คำตอบ

D · เส้นทางสั้นที่สุดระหว่างจุดยอดทุกคู่ใน O(V³)
2.อัลกอริทึมและความซับซ้อน

คำตอบ: B · ต้นไม้ตัดสินใจที่มีผลลัพธ์ที่เป็นไปได้ n แบบต้องมีความลึกอย่างน้อย log₂ n

เหตุผลที่เป็นคำตอบนี้

การเปรียบเทียบแต่ละครั้งลดเซตความเป็นไปได้ที่เหลือลงอย่างมากที่สุดครึ่งหนึ่ง การแยกแยะ n ตำแหน่งจึงต้องใช้อย่างน้อย log₂ n การเปรียบเทียบ

คำตอบ

B · ต้นไม้ตัดสินใจที่มีผลลัพธ์ที่เป็นไปได้ n แบบต้องมีความลึกอย่างน้อย log₂ n
3.โครงสร้างข้อมูล

คำตอบ: B · ย้ายสมาชิกสุดท้ายไปที่รากและเลื่อนลง (sift down)

เหตุผลที่เป็นคำตอบนี้

สมาชิกสุดท้ายเติมช่องว่างที่ราก และสลับกับลูกที่เล็กกว่าจนคุณสมบัติฮีปเป็นจริง ใช้ O(log n)

คำตอบ

B · ย้ายสมาชิกสุดท้ายไปที่รากและเลื่อนลง (sift down)
4.โครงสร้างข้อมูล

คำตอบ: D · การจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว

เหตุผลที่เป็นคำตอบนี้

Linear probing ก้าวทีละ 1 สายที่ถูกใช้จึงโตและรวมกัน ส่วน double hashing ใช้แฮชที่สองกำหนดขนาดก้าว คีย์ต่างกันจึงตรวจลำดับต่างกัน

คำตอบ

D · การจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว
5.ทฤษฎีกราฟ

คำตอบ: L = 24

ออยเลอร์ แฮมิลตัน และต้นไม้: กราฟเชื่อมโยงมีวงจรออยเลอร์ (ผ่านทุกเส้นเชื่อมครั้งเดียวและกลับจุดเริ่มต้น) เมื่อทุกจุดยอดมีดีกรีคู่ และมีทางเดินออยเลอร์ที่ไม่ใช่วงจรเมื่อมีจุดยอดดีกรีคี่พอดีสองจุด ทางเดินนั้นไปจากจุดยอดคี่จุดหนึ่งถึงอีกจุดหนึ่ง วงจรแฮมิลตันผ่านทุกจุดยอดครั้งเดียว Kn มีวงจรแบบนี้ (n − 1)!/2 วงจร ต้นไม้ที่มี n จุดยอดมี n − 1 เส้นเชื่อม และกราฟเชื่อมโยงที่มี m เส้นเชื่อมจะเหลือต้นไม้ทอดข้ามหลังเอาเส้นเชื่อมออก m − n + 1 เส้น

เล็มมาการจับมือสำหรับต้นไม้

L + 50 = 2(L + 14) − 2
L = 24

คำตอบ

L = 24

ทางลัด: L = 2 + Σ (d − 2) ของจุดยอดที่มีดีกรี d ≥ 3

6.ทฤษฎีกราฟ

คำตอบ: d(F) = 36

เส้นทางที่สั้นที่สุดและต้นไม้ทอดข้าม: ขั้นตอนวิธีของไดก์สตรายืนยันหนึ่งจุดยอดต่อรอบ: จุดยอดที่ยังไม่ยืนยันซึ่งมีระยะทางชั่วคราวน้อยที่สุด ระยะทางของมันเป็นค่าสุดท้ายแล้ว และเพื่อนบ้าน v ทุกจุดได้ d(v) = min(d(v), d(u) + w(u, v)) ขั้นตอนวิธีของครัสคัลสร้างต้นไม้ทอดข้ามค่าน้อยที่สุดโดยเลือกเส้นเชื่อมจากเบาไปหนักและข้ามเส้นที่ทำให้เกิดวัฏจักร ขั้นตอนวิธีของพริมขยายต้นไม้หนึ่งต้นจากจุดยอดเริ่มต้นโดยเพิ่มเส้นเชื่อมที่เบาที่สุดที่ออกจากต้นไม้เสมอ ต้นไม้ทอดข้ามที่มี n จุดยอดมี n − 1 เส้นเชื่อม

ไดก์สตราทีละรอบ

แต่ละบรรทัด: จุดยอดที่ยืนยัน ระยะทางสุดท้ายของมัน และเพื่อนบ้านที่ระยะทางดีขึ้น

A (0): B: 14, C: 12
C (12): E: 27
B (14): E: 25
E (25): D: 34, F: 36
D (34)
F (36)

เส้นทางที่สั้นที่สุด

A → B → E → F
d(F) = 36

คำตอบ

d(F) = 36

ExamProblems · examproblems.com/courses/data-structures-and-algorithms