Page 50 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 50
2-40 โครงสร้างข้อมูลและขั้นตอนวิธี
Procedure MaxSubSequenceSum (A1, A2, …, An)
1 BEGIN
2 MaxSum := 0 /* ให้ค่าเริ่มต ้นของผ ลรวมมากท ี่สุด MaxSum เป็น 0 */
3 FOR i := 1 to n DO /* ลูป for แรก เพื่อเป็นดัชนีเริ่มต้นข องลำ�ดับย่อย */
4 BEGIN /* ลูป for ซ้อน เพื่อเป็นดัชนีส ุดท้ายข องลำ�ดับย ่อย */
5 FOR j := i to n DO /* ให้ค่าเริ่มต้นข องผลร วมล ำ�ดับย ่อย ThisSum เป็น 0 */
6 BEGIN /* ลูป for ซ้อน เพื่อเป็นด ัชนีไปย ังส มาชิกของล ำ�ดับย่อย */
7 ThisSum := 0 /* หาผ ลรวมของล ำ�ดับย่อย */
8 FOR k := i to j DO /* ตรวจส อบผ ลรวมย่อยเพื่อห าผ ลรวมท ี่ม ากที่สุด */
9 BEGIN
10 ThisSum := ThisSum + Ak /* คืนค่าผลรวมที่ม ากที่สุด */
11 END
12 IF ThisSum > MaxSum THEN
13 MaxSum := ThisSum
14 END
15 END
16 RETURN MaxSum
17 END
ขั้นต อนวธิ ีที่ 2 จากข ้ันตอนว ิธีที่ 1 จะเห็นว ่า มีก ารใช้เวลาแ บบก �ำลังส าม (cubic) ซ่ึงท �ำให้เมื่อข้อมูลมีขนาด
ใกAหkΣาk=jญรiไเว่จพA้แะ่ิมkทท=คโ�นำดง่าAาเยพนjjจทไ่ือะ+ดกีลส ้ช าัะง้ารเหkΣjกค—ข=1นต�้ัiนำน่ึงเตห=ทวอ็นณ ี่ล นวAูปว่าkิธkΣjใf—=ีทดoน1iี่ังrข2นAทั้นจั้นkี่ตึง2สใอพานจนมิจระวาาอตริธรบณถี้ทอถลี่งา1ัดหลดไมดกาปผีลขาขรั้นูปลอคตรงf�ำoวอลนrมนูปวทกณfี่าokΣ2j ร—= r1ททiทkΣ�่ีม=ำjA่ีง2iีลาkนAูปเปใทkหf็น่ีซoโมผํ้าrดซ่ทลทย้อรุกล่ี น3วบคมลซกรงข้อั้งาเอรนพงซวอ่ือลึ่นงยก�เลำู่ปดาเูปรพ็ับนลท่ืยอกด่ี ห่อ3าลยราอูปคททอ่าf�ี่กกำoง�rำาแkΣลอน=jลังiอพซ้วกA้ําเิจกซไาkป็บ้รอแหคณนตน่าา ่ลน่ึงน ะล่ันั่นรูปkΣj—เคอ=อ1iบือง
ดังน้ัน ข้ันตอนวิธีท ี่ 2 จึงใช้เวลาในการป ระมวลผลน้อยล งเป็น O(n2) และเขียนเป็นขั้นตอนวิธีได้ ดังนี้
Procedure MaxSubSequenceSum (A1, A2, …, An)
1 BEGIN
2 MaxSum := 0 /* ให้ค ่าเริ่มต ้นของผ ลรวมม ากท ี่สุด MaxSum เป็น 0 */
3 FOR i := 1 to n DO /* ลูป for แรก เพื่อเป็นดัชนีเริ่มต ้นของล ำ�ดับย่อย */
4 BEGIN /* ให้ค่าเริ่มต้นข องผ ลร วมล ำ�ดับย่อย ThisSum เป็น 0 */
5 ThisSum := 0 /* ลูป for ซ้อน เพื่อเป็นด ัชนีส ุดท้ายข องล ำ�ดับย ่อย */
6 FOR j := i to n DO /* หาผลรวมของล ำ�ดับย ่อย */
7 BEGIN /* ตรวจส อบผ ลรวมย่อยเพื่อห าผลรวมที่มากท ี่สุด */
8 ThisSum := ThisSum + TAHj EN
9 IF ThisSum > MaxSum /* คืนค่าผ ลรวมที่ม ากที่สุด */
10 MaxSum := ThisSum
11 END
12 END
13 RETURN MaxSum
14 END