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

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

ความซับซ้อนเชิงเวลาของการคำนวณจำนวนฟีโบนักชีตัวที่ n ด้วยตารางแบบล่างขึ้นบนคือเท่าใด

  1. AO(n²)
  2. BO(log n)
  3. CO(n)
  4. DO(2ⁿ)
2.อัลกอริทึมและความซับซ้อนยาก

เพื่อแสดงว่าปัญหาใหม่ X เป็น NP-hard คุณต้องทำอะไร

  1. Aลดรูปปัญหา NP-hard ที่ทราบมาเป็น X ในเวลาพหุนาม
  2. Bแสดงว่า X ตรวจสอบได้ในเวลาพหุนาม
  3. Cแสดงว่า X ไม่มีอัลกอริทึมพหุนามสำหรับอินพุตเล็ก
  4. Dลดรูป X ไปเป็นปัญหา NP-hard ที่ทราบในเวลาพหุนาม
3.โครงสร้างข้อมูลปานกลาง

ต้นไม้ AVL รักษาเงื่อนไขสมดุลใดที่ทุกโหนด

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

เหตุใดเซิร์ฟเวอร์จึงเลือกฟังก์ชันแฮชแบบสุ่มจากตระกูลสากล (universal family)

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

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

|V| = 18|E| = 26
k =
6.ทฤษฎีกราฟยาก
15111820461101612ABCDEFG

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

k = 5
  1. 1เส้นเชื่อม AB
  2. 2เส้นเชื่อม BC
  3. 3เส้นเชื่อม BD
  4. 4เส้นเชื่อม CE
  5. 5เส้นเชื่อม DE
  6. 6เส้นเชื่อม DF
  7. 7เส้นเชื่อม EF
  8. 8เส้นเชื่อม GB
  9. 9เส้นเชื่อม GD
  10. 10เส้นเชื่อม GE

3สารละลาย

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

คำตอบ: C · O(n)

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

การเติมตารางจาก 0 ถึง n ใช้การบวกหนึ่งครั้งต่อช่อง งานจึงเป็นเชิงเส้นแทนที่จะเป็นเอกซ์โพเนนเชียล

คำตอบ

C · O(n)
2.อัลกอริทึมและความซับซ้อน

คำตอบ: A · ลดรูปปัญหา NP-hard ที่ทราบมาเป็น X ในเวลาพหุนาม

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

ถ้าปัญหายากที่ทราบแปลงเป็น X ได้อย่างมีประสิทธิภาพ อัลกอริทึมเร็วสำหรับ X ก็จะแก้ปัญหาที่ทราบได้ด้วย

คำตอบ

A · ลดรูปปัญหา NP-hard ที่ทราบมาเป็น X ในเวลาพหุนาม
3.โครงสร้างข้อมูล

คำตอบ: A · ความสูงของต้นไม้ย่อยซ้ายและขวาต่างกันไม่เกิน 1

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

ตัวประกอบสมดุล (ความสูงซ้าย − ความสูงขวา) ต้องเป็น −1, 0 หรือ 1 การหมุนคืนสมดุลหลังการแทรกและการลบ

คำตอบ

A · ความสูงของต้นไม้ย่อยซ้ายและขวาต่างกันไม่เกิน 1
4.โครงสร้างข้อมูล

คำตอบ: C · เพื่อทำให้ผู้โจมตีเลือกคีย์จำนวนมากที่ชนกันทั้งหมดได้ยากมาก

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

ด้วยการแฮชสากล จำนวนการชนกันคาดหมายน้อยสำหรับเซตคีย์ใด ๆ เพราะผู้โจมตีไม่ทราบว่าเลือกฟังก์ชันใด

คำตอบ

C · เพื่อทำให้ผู้โจมตีเลือกคีย์จำนวนมากที่ชนกันทั้งหมดได้ยากมาก
5.ทฤษฎีกราฟ

คำตอบ: k = 9

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

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

18 − 1 = 17

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

k = 26 − 17 = 9

คำตอบ

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

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

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

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

1. EF (1)
2. DE (4)
3. GB (10)
4. BC (11)
5. GE (12)
6. AB (15)

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

GE

คำตอบ

เส้นเชื่อม GE

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