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

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

อัลกอริทึมละโมบ (greedy) คือ

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

อัลกอริทึมของ Strassen คูณเมทริกซ์โดยใช้การคูณแบบเรียกซ้ำของบล็อกครึ่งขนาด 7 ครั้งแทนที่จะเป็น 8 ครั้ง เวลาทำงานของมันคือเท่าใด

  1. AΘ(n² log n)
  2. BΘ(n³)
  3. CΘ(n2)
  4. DΘ(nlog₂ 7) ประมาณ n2.81
3.โครงสร้างข้อมูลปานกลาง

การท่องแบบ in-order ของ binary search tree เยี่ยมคีย์ตามลำดับ

  1. Aเรียงจากน้อยไปมาก
  2. Bเรียงจากมากไปน้อยเสมอ
  3. Cตามระดับ
  4. Dตามลำดับการแทรก
4.โครงสร้างข้อมูลยาก

การแทรกคีย์ในต้นไม้ AVL ทำให้ต้นไม้ย่อยซ้ายของโหนดสูงเกินไป และคีย์ใหม่อยู่ในต้นไม้ย่อยซ้ายของลูกซ้าย (กรณีซ้าย–ซ้าย) ใช้วิธีแก้ใด

  1. Aหมุนซ้ายหนึ่งครั้งที่โหนดที่ไม่สมดุล
  2. Bหมุนซ้ายที่ลูก แล้วหมุนขวาที่โหนด
  3. Cหมุนขวาหนึ่งครั้งที่โหนดที่ไม่สมดุล
  4. Dเปลี่ยนสีโหนดและลูกของมัน
5.ทฤษฎีกราฟปานกลาง

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

K8
H =
6.ทฤษฎีกราฟยาก
1316631248151720ABCDEFG

จงหาน้ำหนักรวม W ของต้นไม้ทอดข้ามค่าน้อยที่สุดของกราฟถ่วงน้ำหนัก

|V| = 7|E| = 10
W =

3สารละลาย

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

คำตอบ: B · เลือกทางที่ดีที่สุดเฉพาะที่ในแต่ละขั้น

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

อัลกอริทึมละโมบเร็วและให้ผลเหมาะสมที่สุดในบางปัญหา (เช่น Dijkstra, การเข้ารหัส Huffman) แต่ไม่ใช่โดยทั่วไป (เช่น การทอนเหรียญในระบบเหรียญบางแบบ)

คำตอบ

B · เลือกทางที่ดีที่สุดเฉพาะที่ในแต่ละขั้น
2.อัลกอริทึมและความซับซ้อน

คำตอบ: D · Θ(nlog₂ 7) ประมาณ n2.81

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

เมื่อ a = 7 และ b = 2 ค่า nlog₂ 7 ครอบงำงานบวก O(n²) ได้ประมาณ n2.81

คำตอบ

D · Θ(nlog₂ 7) ประมาณ n2.81
3.โครงสร้างข้อมูล

คำตอบ: A · เรียงจากน้อยไปมาก

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

การเยี่ยมต้นไม้ย่อยซ้าย แล้วโหนด แล้วต้นไม้ย่อยขวา ให้คีย์ของ BST ตามลำดับเรียง

คำตอบ

A · เรียงจากน้อยไปมาก
4.โครงสร้างข้อมูล

คำตอบ: C · หมุนขวาหนึ่งครั้งที่โหนดที่ไม่สมดุล

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

ในกรณีซ้าย–ซ้าย การหมุนขวาหนึ่งครั้งยกลูกซ้ายขึ้นและคืนสมดุล กรณีซิกแซกต้องหมุนสองครั้ง

คำตอบ

C · หมุนขวาหนึ่งครั้งที่โหนดที่ไม่สมดุล
5.ทฤษฎีกราฟ

คำตอบ: H = 2520

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

นับ

H = (8 − 1)!/2 = 5040/2 = 2520

คำตอบ

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

คำตอบ: W = 49

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

ขั้นตอนวิธีของครัสคัล

BD (3): เลือก
DF (4): เลือก
BC (6): เลือก
EF (8): เลือก
CE (12): ข้าม ทำให้เกิดวัฏจักร
AB (13): เลือก
GC (15): เลือก

น้ำหนักรวม

W = 3 + 4 + 6 + 8 + 13 + 15 = 49

คำตอบ

W = 49

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