Page 49 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 49

การวัดประสิทธิภาพและความซับซ้อนของขั้นตอนวิธี 2-39

ตอน​วิธี​มาก สามารถ​เลือก​ใช้​ขั้น​ตอน​วิธี​ใด​ใน 4 ขั้น​ตอน​วิธี​นี้​ก็ได้ แต่​ใน​ทาง​กลับ​กัน ส�ำหรับ​ข้อมูล​ที่​มี​ขนาด​ใหญ่
โปรแกรม​ท่ี​ประมวล​ผล​ข้อมูล​ขนาด​เล็ก​ได้​เร็ว​นั้น​อาจ​ประมวล​ผล​ข้อมูล​ขนาด​ใหญ่​ได้​ช้า​มาก​ก็ได้ ท้ังน้ี​เน่ืองจาก​ใน​ข้ัน​
ตอน​วิธีน​ ้ันๆ อาจ​มี​การท​ �ำงานซ​ ํ้าซ้อน​และ​ไม่มีป​ ระสิทธิภาพ จาก​ตาราง​ท่ี 2.3 จะเ​ห็น​ว่า เม่ือ​ข้อมูลม​ ี​ขนาดใ​หญ่ ขั้น​ตอน​
วิธีท​ ี่ 4 ท�ำงานไ​ด้​รวดเร็ว​ที่สุดซ​ ่ึงถ​ ือว่า​มีป​ ระสิทธิภาพท​ ่ีสุด

   ตาราง​ท่ี 2.3 เวลา​ที่​ใชป้​ ระมวล​ผล​ขัน้ ต​ อน​วธิ ต​ี ่างๆ ในก​ ารแ​ ก้ป​ ญั หาก​ าร​หา​ค่าผ​ ลร​ วม​มาก​ท่สี ุดข​ อง​ล�ำ ดบั ​ยอ่ ย (วนิ าท)ี

ขนาดของขอ้ มลู เข้า    ขั้นตอนวธิ ที ่ี 1           ข้ันตอนวธิ ที ี่ 2         ข้ันตอนวิธีที่ 3                           ขัน้ ตอนวธิ ที ่ี 4
      (n)                 O(n3)                        O(n2)                    O(n log n)                                   O(n)
        10               0.00103                       0.00045                   0.00066                                    0.00034
       100               0.47015                       0.01112                   0.00486                                    0.00063
      1,000               488.77                       1.1233                    0.05843                                     0.0033
     10,000                                            111.13                    0.68631                                    0.03042
                     ไม่สามารถหาค่าได้                                                                                      0.29832
    100,000          ไม่สามารถหาค่าได้            ไม่สามารถหาค่าได้               8.0113

ทม่ี า:  Mark Allen Weiss, Data Structures and Algorithm Analysis in C, 2008.

ขัน้ ต​ อน​วิธท​ี ่ี 1 พิจารณาต​ รวจส​ อบท​ ุกล​ �ำดับ​ย่อยท​ ่ี​เป็น​ไปไ​ด้ โดย​ อาศัยลูป for ทั้งหมด 3 ลูป จึงท​ �ำให้​ข้ันต​ อน​
วิธีน​ ้ีใ​ช้เ​วลาใ​นก​ าร​ประมวลผ​ ลเ​ป็น O(n3)

ลูป for แรก ​เพื่อ​ให้ i เป็นด​ ัชนีช​ ี้​ต�ำแหน่ง​เริ่มต​ ้นข​ อง​ล�ำดับ​ย่อย ซ่ึง i มีค​ ่าท่ีเ​ป็น​ได้​ต้ังแต่ 1 ถึง n

ลูป for ที่ 2 ซ้อนอยู่​ภาย​ในลูป for แรก เพื่อ​ให้ j เป็น​ดัชนี​ช้ี​ต�ำแหน่ง​ของ​ล�ำดับ​ย่อย ซ่ึง j มี​ค่าท่ี​เป็น​ได้​ต้ังแต่

1 ถึง n เช่น​กัน เช่น เมื่อ i เป็น 3 และ j เป็น 5 ล�ำดับย​ ่อย​ท่ีก​ �ำลังพ​ ิจารณา​คือ ล�ำดับย​ ่อยต​ ้ังแต่ล​ �ำดับท​ ่ี 3 ถึง 5 นั่นเอง

ลูป for ที่ 3 ซ้อนอ​ ยู่​ภายใ​นลูป for ที่ 2 เพ่ือใ​ห้ k เป็นด​ ัชนีช​ ้ี​ต�ำแหน่ง​ของข​ ้อมูลใ​นล​ �ำดับ​ย่อยท​ ี​ละต​ ัว ดังน​ ้ัน k
                                                                                                                           j
ม​ีค่าที่​เปน็ ​ได้​ต้ังแต่ i ถึง j เพอ่ื ​หา​ผล​รวม​ค่า​ของ​ข้อมูล​ใน​ล�ำดับ​ย่อย​ท​่ีก�ำลัง​พิจารณา คอื  ​ค�ำน​ ว​ณ​หา        Ak  เช่น  เมอื่  i
                                                                                                                          kΣ=i
เป็น 3 และ j เป็น 5 ล�ำดับย​ ่อยท​ ่ีก​ �ำลัง​พิจารณา​คือ ล�ำดับ​ย่อยต​ ั้งแต่ล​ �ำดับ​ท่ี 3 ถึง 5 จึงห​ า​ผลร​ วมข​ ้อมูลต​ ้ังแต่ต​ �ำแหน่งที่

3 ถึง 5 ของอ​ าร์เรย์ไ​ว้พ​ ิจารณา

จะ​เห็น​ว่า เมื่อ​เสร็จ​จาก​การ​หา​ผล​รวม จึง​น�ำผ​ ล​รวม​ท่ี​ได้​มา​พิจารณา​หา​ว่า​ผล​รวม​ช่วง​ใด​ของ​ล�ำดับ​ท่ี​ให้​ล�ำดับ​

ย่อยท​ ่ี​มี​ผล​รวม​มาก​ที่สุด ซึ่ง​คือ​ค�ำต​ อบ​ที่ต​ ้องการ​น่ันเอง ข้ัน​ตอนว​ ิธี​ท่ี 1 สามารถ​เขียนเ​ป็นข้ันตอนวิธี​ได้ ดังนี้
   44   45   46   47   48   49   50   51   52   53   54