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

สรุปสูตร ขั้นตอนวิธีทำที่สำคัญของทุกหัวข้อ และโจทย์ฝึก 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.อัลกอริทึมและความซับซ้อนปานกลาง

อัลกอริทึมการเรียงลำดับใดเป็นแบบเสถียร (stable)

  1. AMerge sort
  2. BSelection sort (แบบทั่วไป)
  3. CHeap sort
  4. DQuicksort (แบบทำในที่เดิมทั่วไป)
2.อัลกอริทึมและความซับซ้อนยาก

การเรียงลำดับทอพอโลยีทำได้เฉพาะกับ

  1. Aกราฟบริบูรณ์
  2. Bกราฟมีทิศทางแบบไม่มีวงจร (DAG)
  3. Cกราฟที่มีน้ำหนักติดลบ
  4. Dกราฟไม่มีทิศทาง
3.โครงสร้างข้อมูลปานกลาง

โครงสร้างข้อมูลใดที่การค้นหาในแนวลึก (DFS) แบบวนซ้ำใช้

  1. Aคิว
  2. Bตารางแฮชเท่านั้น
  3. Cฮีป
  4. Dสแตก
4.โครงสร้างข้อมูลยาก

ในบัฟเฟอร์วงกลม front == rear อาจหมายถึงว่างหรือเต็ม วิธีทั่วไปในการแยกสองกรณีคืออะไร

  1. Aเก็บจำนวนสมาชิกแยกต่างหาก หรือเว้นหนึ่งช่องไว้เสมอ
  2. Bเก็บ front และ rear ในตัวแปรเดียวกัน
  3. Cทำให้ขนาดบัฟเฟอร์เป็นเลขกำลังสอง
  4. Dล้างบัฟเฟอร์ทุกครั้งที่ front เท่ากับ rear ดังนั้นสถานะจึงเป็นว่าง
5.ทฤษฎีกราฟปานกลาง

กราฟเชื่อมโยงมี 11 จุดยอดและ 21 เส้นเชื่อม ต้องเอาเส้นเชื่อมออกกี่เส้น k เพื่อให้เหลือต้นไม้ทอดข้าม

|V| = 11|E| = 21
k =
6.ทฤษฎีกราฟยาก
61217313472ABCDEF

ขั้นตอนวิธีของพริมสร้างต้นไม้ทอดข้ามค่าน้อยที่สุดโดยเริ่มจากจุดยอด C ให้คลิกเส้นเชื่อมที่เพิ่มเป็นเส้นหมายเลข 3

เริ่มต้น: Ck = 3
  1. 1เส้นเชื่อม AB
  2. 2เส้นเชื่อม AC
  3. 3เส้นเชื่อม BC
  4. 4เส้นเชื่อม BD
  5. 5เส้นเชื่อม CE
  6. 6เส้นเชื่อม DF
  7. 7เส้นเชื่อม EF
  8. 8เส้นเชื่อม BE

3สารละลาย

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

คำตอบ: A · Merge sort

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

Merge sort เสถียรเมื่อการผสานหยิบจากครึ่งซ้ายก่อนในกรณีที่เท่ากัน ส่วน quicksort แบบทำในที่เดิม heap sort และ selection sort มักไม่เสถียร

คำตอบ

A · Merge sort
2.อัลกอริทึมและความซับซ้อน

คำตอบ: B · กราฟมีทิศทางแบบไม่มีวงจร (DAG)

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

ลำดับทอพอโลยีมีอยู่ก็ต่อเมื่อกราฟมีทิศทางไม่มีวงจร และหาได้ใน O(V + E) ด้วย DFS หรืออัลกอริทึมของ Kahn

คำตอบ

B · กราฟมีทิศทางแบบไม่มีวงจร (DAG)
3.โครงสร้างข้อมูล

คำตอบ: D · สแตก

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

DFS สำรวจลึกที่สุดเท่าที่ทำได้ โดยใช้สแตกตามธรรมชาติ (หรือสแตกการเรียกของการเรียกซ้ำ) ส่วน BFS ใช้คิว

คำตอบ

D · สแตก
4.โครงสร้างข้อมูล

คำตอบ: A · เก็บจำนวนสมาชิกแยกต่างหาก หรือเว้นหนึ่งช่องไว้เสมอ

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

เมื่อมีตัวนับ ว่างคือ count = 0 และเต็มคือ count = ความจุ เมื่อเว้นหนึ่งช่อง เต็มนิยามเป็น (rear + 1) mod n == front

คำตอบ

A · เก็บจำนวนสมาชิกแยกต่างหาก หรือเว้นหนึ่งช่องไว้เสมอ
5.ทฤษฎีกราฟ

คำตอบ: k = 11

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

เส้นเชื่อมของต้นไม้ทอดข้าม

11 − 1 = 10

เส้นเชื่อมที่ต้องเอาออก

k = 21 − 10 = 11

คำตอบ

k = 11
6.ทฤษฎีกราฟ

คำตอบ: เส้นเชื่อม BE

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

ขั้นตอนวิธีของพริม

1. AC (12)
2. AB (6)
3. BE (2)
4. BD (3)
5. DF (4)

เส้นเชื่อมหมายเลข 3

BE

คำตอบ

เส้นเชื่อม BE

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