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

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

อัลกอริทึมของ Prim สร้างต้นไม้ทอดข้ามที่น้อยที่สุดอย่างไร

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

กฎละโมบ "หยิบสิ่งของตามลำดับมูลค่าต่อน้ำหนัก" ให้คำตอบเหมาะสมที่สุดเสมอในปัญหา knapsack แบบใด

  1. A0/1 knapsack ซึ่งต้องหยิบสิ่งของทั้งชิ้นเสมอ
  2. Bfractional knapsack ซึ่งแบ่งสิ่งของได้
  3. Cทั้งสองแบบ
  4. Dไม่ใช่ทั้งสองแบบ
3.โครงสร้างข้อมูลปานกลาง

รายการประชิดใช้หน่วยความจำเท่าใดสำหรับกราฟที่มี V จุดยอดและ E เส้นเชื่อม

  1. AO(V²)
  2. BO(V × E)
  3. CO(V + E)
  4. DO(E²)
4.โครงสร้างข้อมูลยาก

ความซับซ้อนเชิงเวลาของ decrease-key ในฮีปทวิภาค (เมื่อทราบตำแหน่งของสมาชิก) คือ

  1. AO(1)
  2. BO(n log n)
  3. CO(n)
  4. DO(log n)
5.ทฤษฎีกราฟปานกลาง

กราฟบริบูรณ์ K6 มีวงจรแฮมิลตันที่แตกต่างกันกี่วงจร H วงจรที่ต่างกันเพียงจุดยอดเริ่มต้นหรือทิศทางนับเป็นวงจรเดียวกัน

K6
H =
6.ทฤษฎีกราฟยาก
ABCDE

มีวอล์กความยาว 2 จาก E ไป C กี่วอล์ก วอล์กอาจซ้ำจุดยอดและเส้นเชื่อมได้ เรียกจำนวนนี้ว่า N

M = เมทริกซ์ประชิดL = 2
N =

3สารละลาย

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

คำตอบ: D · ขยายต้นไม้ต้นเดียวจากจุดยอดเริ่มต้น โดยเพิ่มเส้นเชื่อมที่ถูกที่สุดที่ออกจากต้นไม้

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

อัลกอริทึมของ Prim ที่ใช้คิวลำดับความสำคัญของเส้นเชื่อมที่ข้ามขอบเขตทำงานใน O(E log V) เมื่อใช้ฮีปไบนารี

คำตอบ

D · ขยายต้นไม้ต้นเดียวจากจุดยอดเริ่มต้น โดยเพิ่มเส้นเชื่อมที่ถูกที่สุดที่ออกจากต้นไม้
2.อัลกอริทึมและความซับซ้อน

คำตอบ: B · fractional knapsack ซึ่งแบ่งสิ่งของได้

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

เมื่อแบ่งสิ่งของได้ การเลือกอัตราส่วนดีที่สุดก่อนเหมาะสมที่สุด ใน 0/1 knapsack สิ่งของอัตราส่วนสูงอาจขวางชุดที่ดีกว่า จึงต้องใช้การโปรแกรมพลวัต

คำตอบ

B · fractional knapsack ซึ่งแบ่งสิ่งของได้
3.โครงสร้างข้อมูล

คำตอบ: C · O(V + E)

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

แต่ละจุดยอดมีรายการ และแต่ละเส้นเชื่อมปรากฏหนึ่งครั้ง (มีทิศทาง) หรือสองครั้ง (ไม่มีทิศทาง) ได้ O(V + E)

คำตอบ

C · O(V + E)
4.โครงสร้างข้อมูล

คำตอบ: D · O(log n)

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

หลังลดคีย์ สมาชิกเลื่อนขึ้นไม่เกินความสูงของฮีป ฮีปฟีโบนักชีทำ decrease-key แบบกระจายต้นทุนได้ใน O(1)

คำตอบ

D · O(log n)
5.ทฤษฎีกราฟ

คำตอบ: H = 60

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

นับ

H = (6 − 1)!/2 = 120/2 = 60

คำตอบ

H = 60
6.ทฤษฎีกราฟ

คำตอบ: N = 1

ดีกรี: ดีกรีของจุดยอดคือจำนวนเส้นเชื่อมที่มาบรรจบที่จุดนั้น เส้นเชื่อมแต่ละเส้นมีสองปลาย ดังนั้นผลบวกของดีกรีเท่ากับสองเท่าของจำนวนเส้นเชื่อม: Σ deg(v) = 2|E| (เล็มมาการจับมือ) ดังนั้นจำนวนจุดยอดที่มีดีกรีคี่เป็นจำนวนคู่ Kn มีเส้นเชื่อม n(n − 1)/2 เส้น กราฟปรกติดีกรี k ที่มี n จุดยอดมี nk/2 เส้น และต้นไม้ที่มี n จุดยอดมี n − 1 เส้นเชื่อม

เมทริกซ์ประชิด

A: 0 1 1 0 0
B: 1 0 1 1 1
C: 1 1 0 0 1
D: 0 1 0 0 1
E: 0 1 1 1 0

เพื่อนบ้านร่วม

(M²)EC = 0·1 + 1·1 + 1·0 + 1·0 + 0·1 = 1

คำตอบ

N = 1

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