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

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

เหตุใดจึงมักละฐานของลอการิทึมใน Big O เช่น O(log n)

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

เหตุใดการค้นหาเฉลี่ยในตารางแฮชจึงเป็น O(1) แต่กรณีเลวร้ายที่สุดเป็น O(n)

  1. Aคีย์จำนวนมากอาจชนกันไปอยู่ในถังเดียวกัน
  2. Bต้องเรียงคีย์ก่อน
  3. Cฟังก์ชันแฮชช้า
  4. Dอาร์เรย์เข้าถึงใน O(n)
3.โครงสร้างข้อมูลปานกลาง

จุดประสงค์ของโหนดยามเฝ้า (sentinel หรือ dummy) ในลิงก์ลิสต์คืออะไร

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

การแฮชซ้อน (double hashing) ลดปัญหาใดของ linear probing เป็นหลัก

  1. Aการจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว
  2. Bความจำเป็นต้องเก็บคีย์ในตาราง
  3. Cต้นทุน O(n) ในการอ่านค่าของคีย์
  4. Dความจำเป็นต้องมีฟังก์ชันแฮช
5.ทฤษฎีกราฟปานกลาง

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

|V| = 19|E| = 23
k =
6.ทฤษฎีกราฟยาก
391913101518512ABCDEF

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

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

3สารละลาย

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

คำตอบ: D · ลอการิทึมที่ฐานต่างกันต่างกันเพียงตัวคูณคงที่

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

การเปลี่ยนฐานคูณลอการิทึมด้วยค่าคงที่ และ Big O ไม่สนใจตัวคูณคงที่

คำตอบ

D · ลอการิทึมที่ฐานต่างกันต่างกันเพียงตัวคูณคงที่
2.อัลกอริทึมและความซับซ้อน

คำตอบ: A · คีย์จำนวนมากอาจชนกันไปอยู่ในถังเดียวกัน

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

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

คำตอบ

A · คีย์จำนวนมากอาจชนกันไปอยู่ในถังเดียวกัน
3.โครงสร้างข้อมูล

คำตอบ: C · ทำให้โค้ดง่ายขึ้นโดยตัดกรณีพิเศษที่หัวหรือท้าย

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

ด้วย sentinel ทุกโหนดจริงมีโหนดก่อนหน้า การแทรกหรือลบที่หัวจึงไม่ต้องจัดการพิเศษ

คำตอบ

C · ทำให้โค้ดง่ายขึ้นโดยตัดกรณีพิเศษที่หัวหรือท้าย
4.โครงสร้างข้อมูล

คำตอบ: A · การจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว

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

Linear probing ก้าวทีละ 1 สายที่ถูกใช้จึงโตและรวมกัน ส่วน double hashing ใช้แฮชที่สองกำหนดขนาดก้าว คีย์ต่างกันจึงตรวจลำดับต่างกัน

คำตอบ

A · การจับกลุ่มปฐมภูมิ (primary clustering) ซึ่งช่องที่ถูกใช้ต่อกันเป็นสายยาว
5.ทฤษฎีกราฟ

คำตอบ: k = 5

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

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

19 − 1 = 18

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

k = 23 − 18 = 5

คำตอบ

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

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

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

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

1. EF (5)
2. CE (10)
3. AC (9)
4. AB (3)
5. BD (13)

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

CE

คำตอบ

เส้นเชื่อม CE

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