1.ง่าย
counting sort สำหรับจำนวนเต็ม n ตัวในช่วง 0 ถึง k ใช้เวลาเท่าใด
- AO(n²)
- BO(n + k)
- CO(n log n)
- DO(k log n)
2.ง่าย
ข้อใดเติบโตช้าที่สุดเมื่อ n มีค่ามาก
- AO(n²)
- BO(n log n)
- CO(n)
- DO(log n)
3.ง่าย
เวลาทำงานในกรณีเฉลี่ยอธิบายสิ่งใด
- Aเวลาสำหรับอินพุตที่มีความยาวเฉลี่ย
- Bค่ากลางระหว่างเวลาทำงานในกรณีดีที่สุดกับกรณีเลวร้ายที่สุด
- Cเวลาบนคอมพิวเตอร์ที่พบบ่อยที่สุด
- Dเวลาคาดหมายภายใต้การแจกแจงของอินพุตขนาด n ที่กำหนด
4.ปานกลาง
อัลกอริทึมการเรียงลำดับใดเป็นแบบเสถียร (stable)
- AHeap sort
- BSelection sort (แบบทั่วไป)
- CQuicksort (แบบทำในที่เดิมทั่วไป)
- DMerge sort
5.ปานกลาง
อัลกอริทึมของ Prim สร้างต้นไม้ทอดข้ามที่น้อยที่สุดอย่างไร
- Aรัน BFS และเก็บต้นไม้ BFS ไว้
- Bเรียงเส้นเชื่อมทั้งหมดตามน้ำหนักและเพิ่มทีละเส้น เว้นแต่จะก่อวงจรในป่า
- Cขยายต้นไม้ต้นเดียวจากจุดยอดเริ่มต้น โดยเพิ่มเส้นเชื่อมที่ถูกที่สุดที่ออกจากต้นไม้
- Dลบเส้นเชื่อมที่แพงที่สุดจนไม่เหลือวงจร
6.ปานกลาง
การโปรแกรมพลวัต (dynamic programming) มีประโยชน์เมื่อปัญหามี
- Aปัญหาย่อยที่ซ้อนทับกันและโครงสร้างย่อยเหมาะสมที่สุด
- Bลูปเพียงชั้นเดียว
- Cไม่มีปัญหาย่อยเลย จึงแก้ได้ในขั้นตอนเดียว
- Dอินพุตสุ่มเท่านั้น
7.ยาก
ปัญหา 0/1 knapsack ที่แก้ด้วยการโปรแกรมพลวัตใช้เวลา O(nW) เหตุใดจึงเรียกว่าเวลาแบบกึ่งพหุนาม (pseudo-polynomial)
- Aเพราะอัลกอริทึมเป็นแบบสุ่มและเวลาทำงานแปรผันไปตามอินพุตแต่ละครั้ง
- Bเพราะ n มีค่าน้อยเสมอ
- Cเพราะใช้ได้เฉพาะ W = 0
- DW เป็นตัวเลข เวลาจึงเป็นเอกซ์โพเนนเชียลเมื่อเทียบกับจำนวนบิตที่ใช้เขียน W
8.ยาก
การเรียงลำดับทอพอโลยีทำได้เฉพาะกับ
- Aกราฟมีทิศทางแบบไม่มีวงจร (DAG)
- Bกราฟบริบูรณ์
- Cกราฟที่มีน้ำหนักติดลบ
- Dกราฟไม่มีทิศทาง
เฉลย
- 1. B · O(n + k)
- 2. D · O(log n)
- 3. D · เวลาคาดหมายภายใต้การแจกแจงของอินพุตขนาด n ที่กำหนด
- 4. D · Merge sort
- 5. C · ขยายต้นไม้ต้นเดียวจากจุดยอดเริ่มต้น โดยเพิ่มเส้นเชื่อมที่ถูกที่สุดที่ออกจากต้นไม้
- 6. A · ปัญหาย่อยที่ซ้อนทับกันและโครงสร้างย่อยเหมาะสมที่สุด
- 7. D · W เป็นตัวเลข เวลาจึงเป็นเอกซ์โพเนนเชียลเมื่อเทียบกับจำนวนบิตที่ใช้เขียน W
- 8. A · กราฟมีทิศทางแบบไม่มีวงจร (DAG)
เฉลยทีละขั้นตอนฉบับเต็ม: ฝึกหัวข้อนี้ได้ที่ examproblems.com