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

2-38 โครงสร้างข้อมูลและขั้นตอนวิธี

ข้อมูลม​ ีข​ นาดใ​หญ่ โดย​ให้พ​ ิจารณา​ปัญหา​ต่อ​ไปน​ ี้

1. 	ปญั หาก​ าร​หา​ผล​รวมท​ ​มี่ าก​ทสี่ ุดข​ องล​ �ำ ดบั ย​ ่อย

       ปัญหา​การ​หา​ผล​รวม​ท่ี​มาก​ที่สุด​ของ​ล�ำดับ​ย่อย (maximum subsequence sum problem) คือ การ​หา
ผ​ ลร​ วมข​ องล​ �ำดับย​ ่อยท​ ี่​ให้ผ​ ลร​ วมม​ ากท​ ี่สุดจ​ ากล​ �ำดับข​ องจ​ �ำนวนเต็มท​ ี่ก​ �ำหนดใ​ห้ เป็นป​ ัญหาห​ นึ่งท​ ี่น​ ่าส​ นใจแ​ ละอ​ ธิบาย​
ไว้​ใน​หนังสือ​ที่​แต่ง​โดย Mark Allen Weiss (ใน​หนังสือ “Data Structures and Algorithm Analysis in C”)
จึง​ได้​น�ำ​มา​เป็น​ตัวอย่าง​เพื่อ​ให้​ได้​ศึกษา​กัน​อย่าง​กว้าง​ขวาง​และ​เข้าใจ​การ​เปรียบ​เทียบ​ประสิทธิภาพ​ของ​ขั้น​ตอน​วิธี​
มากย​ ่ิง​ขึ้น ดังต​ ่อไ​ป​นี้

น้ีท​ ่ีม​ ี​ค่า​มกากล​ท่าว่ีสค​ุดือนถ่ัน้า​ค​กือ�ำหกนาดรห​ล​ �าำด​คับ่า​ม​ขาอกงท​​จ่ีส�ำนุดว​ขนอเงต็มkΣ=nA11,AAk2, …, An ปัญหาค​ ือ​การห​ าผ​ ล​รวม​ล�ำดับย​ ่อยใ​ดๆ ของล​ �ำดับ
       เช่น ถ้าข​ ้อมูลเ​ข้า คือ ล�ำดับ​ต่อไ​ปน​ ้ี 2, -3, 1, 4
       ล�ำดับ​ย่อยท​ ี่​เป็นไ​ป​ได้​ท้ังหมด ได้แก่
            ล�ำดับย​ ่อยท​ ่ีม​ ีส​ มาชิก​ตัว​เดียว ได้แก่
                 	 2 	 ผล​รวม​ของล​ �ำดับย​ ่อย​น้ี​คือ 	 2
                หรือ	 -3 	 ผล​รวมข​ อง​ล�ำดับ​ย่อย​นี้​คือ 	 -3
                 หรือ	 1 	 ผลร​ วมข​ อง​ล�ำดับ​ย่อยน​ ้ีค​ ือ 	 1
                หรือ 	 4 	 ผล​รวม​ของ​ล�ำดับ​ย่อยน​ ี้​คือ 	 4
            ล�ำดับย​ ่อย​ท่ี​มี​สมาชิก 2 ตัว ได้แก่
                 	 2, 	-3 	 ผล​รวมข​ องล​ �ำดับ​ย่อยน​ ี้​คือ 	2 + (-3) = -1
                 หรือ 	-3, 	 1 	 ผลร​ วมข​ อง​ล�ำดับย​ ่อย​นี้ค​ ือ 	(-3) + 1 = -2
                 หรือ	 1, 	 4 	 ผลร​ วม​ของล​ �ำดับ​ย่อยน​ ้ี​คือ 	1 + 4 = 5
            ล�ำดับย​ ่อย​ท่ี​มีส​ มาชิก 3 ตัว ได้แก่
                 	 2, -3, 1 	ผล​รวม​ของ​ล�ำดับ​ย่อยน​ ี้​คือ 2 + (-3) + 1 = 0
                หรือ	 -3, 1, 4 	ผลร​ วมข​ องล​ �ำดับย​ ่อย​น้ีค​ ือ (-3) + 1 + 4 = 2
            ล�ำดับย​ ่อยท​ ่ี​มี​สมาชิก 4 ตัว คือ 2, -3, 1, 4 ผลร​ วมข​ อง​ล�ำดับย​ ่อย​นี้ค​ ือ 2 + (-3) + 1 + 4 = 4
       จะ​เห็น​ว่า ผล​รวม​ของ​ล�ำดับ​ย่อย 1, 4 มี​ค่า​เท่ากับ 5 มี​ค่า​มาก​ท่ีสุด (คือ​มากกว่า​ผล​รวม​ของ​สมาชิก​ใน​แต่ละ​

ล�ำดับ​ย่อย​อ่ืน) ดัง​นั้น ล�ำดับ​ย่อย 1, 4 จึงเ​ป็น​ค�ำต​ อบข​ องป​ ัญหา​ส�ำหรับ​ล�ำดับท​ ่ี​ก�ำหนดใ​ห้ใ​น​ตัวอย่าง​นี้น​ ั่นเอง

2. 	ข้ัน​ตอน​วิธี​ส�ำ หรับป​ ัญหาก​ าร​หา​ผล​รวม​ที่ม​ าก​ท่ีสุด​ของล​ �ำ ดับย​ อ่ ย

       ในก​ ารแ​ ก้ป​ ัญหาน​ ี้ มีข​ ้ันต​ อนว​ ิธดี​ ้วยก​ ันห​ ลายแ​ บบ  ซ่ึงแ​ ต่ละว​ ิธีต​ ่างก​ ็​ให้ป​ ระสิทธิภาพท​ ี่​แตกต​ ่างก​ ันอ​ อกไ​ป โดย
Mark Allen Weiss ได้​แนะน�ำไ​ว้ท​ ั้งหมด 4 ขั้น​ตอนว​ ิธี ดังนี้

       ข้ัน​ตอนว​ ิธีท​ ี่ 1 ใช้​เวลาใ​นก​ ารป​ ระมวลผ​ ล​เป็น O(n3)
       ขั้น​ตอนว​ ิธี​ที่ 2 ใช้​เวลาใ​น​การป​ ระมวล​ผลเ​ป็น O(n2)
       ขั้น​ตอน​วิธี​ที่ 3 ใช้เ​วลา​ในก​ ารป​ ระมวลผ​ ล​เป็น O(n log n)
       ขั้น​ตอน​วิธี​ที่ 4 ใช้​เวลา​เป็น O(n) เท่านั้น ซ่ึงถ​ ือว่า​เร็ว​ที่สุดใ​นบ​ รรดา​ขั้น​ตอนว​ ิธีท​ ้ังหมด
       เวลา​จริง​ที่​ใช้​ประมวล​ผล​แต่ละ​ขั้น​ตอน​วิธี​แสดง​ไว้​ใน​ตาราง​ที่ 2.3 จะ​เห็น​ว่า ส�ำหรับ​ข้อมูล​เข้า​ขนาด​เล็ก
ทุก​ขั้น​ตอน​วิธี​สามารถ​ประมวล​ผล​ได้​อย่าง​รวดเร็ว ดัง​นั้น ถ้า​คาด​ว่า​ข้อมูล​จะ​มี​ขนาด​เล็ก ก็​ไม่​จ�ำเป็น​ต้อง​ออกแบบ​ขั้น​
   43   44   45   46   47   48   49   50   51   52   53