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

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

เหตุใดการโปรแกรมพลวัตจึงไม่ช่วยเร่ง merge sort ได้จริง

  1. Aปัญหาย่อยของมันไม่ซ้อนทับกัน จึงไม่มีอะไรให้ใช้ซ้ำ
  2. Bการโปรแกรมพลวัตใช้ได้กับปัญหากราฟเท่านั้น ไม่ใช่กับอาร์เรย์
  3. CMerge sort เป็น O(n) อยู่แล้ว
  4. DMerge sort ไม่มีโครงสร้างแบบเรียกซ้ำ
2.อัลกอริทึมและความซับซ้อนยาก

การคำนวณจำนวนฟีโบนักชีตัวที่ n ด้วยลูปที่เก็บเพียงสองค่าล่าสุดมีต้นทุนด้านเวลาและพื้นที่เท่าใด

  1. Aเวลา O(2ⁿ) และพื้นที่ O(1)
  2. Bเวลา O(log n) และพื้นที่ O(n)
  3. Cเวลา O(n) และพื้นที่ O(1)
  4. Dเวลา O(n) และพื้นที่ O(n)
3.โครงสร้างข้อมูลปานกลาง

แทรกคีย์ 50, 30, 70, 20, 40 ตามลำดับนี้ลงใน binary search tree ว่าง ลูกซ้ายของ 30 คืออะไร

  1. A50
  2. B20
  3. C70
  4. D40
4.โครงสร้างข้อมูลยาก

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

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

กราฟเชื่อมโยงนี้มีวงจรออยเลอร์ ทางเดินออยเลอร์ที่ไม่ใช่วงจร หรือไม่มีทั้งสองอย่าง ให้คลิกคำตอบของคุณ

|V| = 7|E| = 8
  1. 1วงจรออยเลอร์
  2. 2ทางเดินออยเลอร์ ไม่มีวงจร
  3. 3ไม่ใช่ทั้งสองอย่าง
6.ทฤษฎีกราฟยาก
7251521061ABCDEF

ขั้นตอนวิธีของไดก์สตราเริ่มจาก A ให้คลิกจุดยอดที่ถูกยืนยัน (ทำให้เป็นค่าถาวร) ในรอบที่ 4 โดย A เองคือรอบที่ 1

เริ่มต้น: Aรอบ 4
  1. 1A
  2. 2B
  3. 3C
  4. 4D
  5. 5E
  6. 6F

3สารละลาย

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

คำตอบ: A · ปัญหาย่อยของมันไม่ซ้อนทับกัน จึงไม่มีอะไรให้ใช้ซ้ำ

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

ครึ่งของ merge sort ไม่ซ้อนกันและแต่ละส่วนถูกแก้ครั้งเดียว DP ช่วยเฉพาะเมื่อปัญหาย่อยเกิดซ้ำ เช่น ฟีโบนักชี

คำตอบ

A · ปัญหาย่อยของมันไม่ซ้อนทับกัน จึงไม่มีอะไรให้ใช้ซ้ำ
2.อัลกอริทึมและความซับซ้อน

คำตอบ: C · เวลา O(n) และพื้นที่ O(1)

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

แต่ละขั้นต้องการเพียงสองค่าก่อนหน้า ตารางของวิธีล่างขึ้นบนจึงแทนที่ด้วยตัวแปรสองตัวได้

คำตอบ

C · เวลา O(n) และพื้นที่ O(1)
3.โครงสร้างข้อมูล

คำตอบ: B · 20

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

20 น้อยกว่า 50 และน้อยกว่า 30 จึงเป็นลูกซ้ายของ 30 ส่วน 40 เป็นลูกขวา

คำตอบ

B · 20
4.โครงสร้างข้อมูล

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

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

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

คำตอบ

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

คำตอบ: ไม่ใช่ทั้งสองอย่าง

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

ดีกรี

deg(A) = 1, deg(B) = 1, deg(C) = 2, deg(D) = 3, deg(E) = 4, deg(F) = 2, deg(G) = 3

จุดยอดคี่

A, B, D, G → 4
ไม่ใช่ทั้งสองอย่าง

คำตอบ

ไม่ใช่ทั้งสองอย่าง
6.ทฤษฎีกราฟ

คำตอบ: C

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

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

1. A (0): B: 7
2. B (7): C: 9, D: 12, E: 8
3. E (8): D: 10, F: 14
4. C (9)
5. D (10)
6. F (14)

รอบ 4

C

คำตอบ

C

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