CHNG III GIAI QUYET BAI TOAN BANG MAY
CHƯƠNG III GIAÛI QUYEÁT BAØI TOAÙN BAÈNG MAÙY TÍNH 133
CHƯƠNG III GIAÛI QUYEÁT BAØI TOAÙN BAÈNG MAÙY TÍNH 3. 1 Kyõ thuaät laäp trình 3. 2 Thuaät toaùn vaø Thuaät giaûi 3. 3 Bieåu dieãn thuaät toaùn 3. 4 Caùc böôùc giaûi quyeát baøi toaùn treân maùy 134
3. 1 Kyõ thuaät laäp trình 135
Khaùi quaùt • Kyõ thuaät xaây döïng phaàn meàm chính laø kyõ thuaät laäp trình. Laäp trình vöøa laø moät kyõ thuaät vöøa laø moät ngheä thuaät. • Laäp trình (Programming) thöïc chaát laø ñieàu khieån - baèng moät ngoân ngöõ laäp trình cuï theå - caùch xöû lyù thoâng tin treân maùy theo yeâu caàu cuûa baøi toaùn ñaët ra. • Ñeå laäp trình, phaûi bieát caùch toå chöùc döõ lieäu (nguyeân lieäu ñeå maùy xöû lyù) vaø caùch thöùc xöû lí döõ lieäu (thuaät giaûi) ñeå cho ra keát quaû mong muoán. 136
PROGRAMMING = ALGORITHMS + DATA STRUCTURE 137
• PHAÛI TOÅ CHÖÙC DÖÕ LIEÄU THEO CAÙCH TOÁT NHAÁT : Döõ lieäu trong tin hoïc phaûi ñöôïc phaân loaïi, xaùc ñònh moät caùch raïch roøi theo nhöõng quy ñònh chaët cheõ, chính xaùc ñeå maùy coù theå phaân bieät, nhaän bieát, löu tröõ vaø xöû lyù • PHAÛI TÌM ÑÖÔÏC THUAÄT TOAÙN TOÁT NHAÁT, TOÁI ÖU NHAÁT 138
• 4 TIE U CHUAÅN ÑAÙNH GIAÙ MOÄT CHÖÔNG TRÌNH : üTính tin caäy üTính uyeån chuyeån üTính trong saùng üTính höõu hieäu 139
LAÄP TRÌNH CAÁU TRUÙC üCaáu truùc veà maët döõ lieäu üTöø nhöõng leänh ñôn giaûn ñaõ coù hoaëc nhöõng leänh ñaõ coù caáu truùc, coù theå xaây döïng nhöõng leänh coù caáu truùc phöùc taïp hôn üCaáu truùc veà maët chöông trình : Moät chöông trình lôùn coù theå chia thaønh nhieàu modun chöông trình con ñoäc laäp • Moãi chöông trình con laïi coù theå phaân chia thaønh caùc chöông trình con khaùc. PASCAL laø moät trong caùc ngoân ngöõ tieâu bieåu veà coù caáu truùc 140
3. 2 Thuaät toaùn vaø Giaûi thuaät 141
KHAÙI NIE M THUAÄT TOAÙN Lµ kh¸i niÖm c¬ së cña To¸n häc vµ Tin häc ThuËt to¸n (Algorithm) lµ mét hÖ thèng chÆt chÏ vµ râ rµng c¸c quy t¾c nh» m x¸c ®Þnh mét d·y c¸c thao t¸c trªn những ®èi t îng, sao cho sau mét sè hữu h¹n b íc thùc hiÖn c¸c thao t¸c ta ®¹t ® îc môc tiªu ®Þnh tr íc. 142
Ng êihoÆc m¸y thùc hiÖn mét thuËt to¸n ® îcgäi lµ mét bé xö lý. Nh vËy mét bé xö lý cña mét thuËt to¸n T nµo ®ã lµ mét c¬ chÕ cã khả năng thùc hiÖn c¸c thao t¸c trªn c¸c ®èi t îng theo mét trình tù do T quy ®Þnh. 143
Cïng mét bµi to¸n cã thÓ cã nhiÒu thuËt to¸n kh¸c nhau. Ôiaûn, ®¬n ThuËt to¸n hiÓu, cã ®é chÝnh x¸c cao, ® îc baûo ®aûm vÒ mÆt to¸n häc, dÔ triÓn khai trªn m¸y, thêi gian thao t¸c ng¾n, ® îc gäi lµ thuËt to¸n tèi u. 144
Nghiªn cøu thuËt to¸n lµ mét trong nhöõng vÊn ®Ò quan träng nhÊt cña Tin häc. Lý thuyÕt vÒ thuËt to¸n phaûi giaûi quyÕt c¸c vÊn ®Ò sau : Nhöõng bµi to¸n nµo giaûi ® îcb» ng thuËt to¸n; bµi to¸n nµo kh «ng giaûi ® îc b» ng thuËt to¸n Tìm thuËt to¸n tèt nhÊt, tèi ucña mét bµi to¸n TriÓn khai thuËt to¸n trªn m¸y 145
Vaøi ví duï ThuËt to¸n giaûi ph ¬ng trình bËc hai : A X 2 + BX + C = 0 (A 0) B íc 1 : TÝnh. DELTA = B*B 4*A*C B íc 2 : So s¸nh. DELTA víi sè 0 B íc 3 : RÏ lµm 3 tr êng hîp : Tr êng hîp. DELTA < 0 : th «ng b¸o ph ¬ng trình v « nghiÖm ; kÕt thóc thuËt to¸n. Tr êng hîp. DELTA = 0 : tÝnh nghiÖm kÐp : X 1 = X 2 th «ng b¸o nghiÖm kÐp; kÕt thóc thuËt to¸n. Tr êng hîp. DELTA > 0 : tÝnh hai nghiÖm ph©n biÖt: X 1, X 2 146
ThuËt to¸n Hoocne tÝnh gi¸ trÞ cña ®a thøc : Cho Pn(X)=An. Xn + An 1 Xn 1 +. . . . +A 1 X 1 +A 0 TÝnh Pn(c) ? Pn(c)=(. . . ((An. c +An 1). c + An 2 ). . . ). c + A 0 B íc 1 : Cho i = n ; Q = An B íc 2 : Cho i nhËn gi¸ trÞ cò cña i trõ 1 : i = i 1 So s¸nh i víi 0. B íc 3 : RÏ lµm 2 tr êng hîp : 1 Tr êng hîp i >= 0 : tÝnh Q b» ng gi¸ trÞ cò cña Q nh©n víi c céng víi Ai ; Quay trë l¹i b íc 2. 2 Tr êng hîp i < 0 : th «ng b¸o kÕt quaû Q; KÕt thóc thuËt to¸n. 147
ý nghÜa cña thuËt to¸n hoocne +A 0 Cho Pn(X)=An. Xn + An 1 Xn 1 +. . . . +A 1 X 1 ViÕt ®a thøc d íi d¹ng : Pn(c)=(. . . ((An. c +An 1). c + An 2 ). . . ). c + ChØ bao gåm c¸c phÐp nh©n, céng liªn tiÕp P 2(c)=(A 2. c +A 1). c + A 0 P 3(c)=((A 3. c +A 2). c + A 1). c + A 0 148
6 TÍNH CHAÁT CUÛA THUAÄT TOAÙN 1 tÝnh dõng kÕt thóc 2 tÝnh x¸c ®Þnh 3 tÝnh hµng lo¹t 4 tÝnh KHẢ THI 5 tÝnh ®Çy ®ñ vÐt c¹n 6 tÝnh ®óng ®¾n 149
TÍNH DÖØNG ThuËt to¸n phaûi kÕt thóc sau mét sè höõu haïn b íc. VÝ dô : ThuËt to¸n kh «ng dõng 1) Xo¸ bảng 2) ViÕt sè 9 3) Thùc hiÖn b íc 1 VÝ dô 7 : ThuËt to¸n kh «ng dõng Đäc c¸c sè tù nhiªn liªn tiÕp, b¾t ®Çu tõ 1 150
TÍNH XAÙC ÑÒNH C¸c thao t¸c ë mçi b ícphải hÕt søc râ rµng vµ chØ ® îchiÓu theo mét nghÜa duy nhÊt. Trong cïng mét ®iÒu kiÖn, hai bé xö lý kh¸c nhau hoÆc hai lÇn thao t¸c kh¸c nhau phải cho cïng mét kÕt quả khi thùc hiÖn cïng mét thuËt to¸n. C¸c ng êikh¸c nhau cïng sö dông mét thuËt to¸n, sÏ hµnh ®éng gièng nhau cho dï hä kh «ng hiÓu gì vÒ bản chÊt vµ ý nghÜa cña vÊn ®Ò. 151
TÍNH HAØNG LOAÏT ThuËt to¸n cã hiÖu lùc nh nhau ®èi víi c¸c bµi to¸n cïng lo¹i, cã cïng miÒn ¸p dông thuËt to¸n. ThuËt to¸n Hooc ne cã tÝnh hµng lo¹t trªn tËp số thực R và bÊt kì ®a thøc ®¹i sè bËc nµo. ThuËt to¸n Giải phương trình bậc 2 không cã tÝnh hµng lo¹t nÕu sè liÖu g¸n cho a, b, c nhËp tõ bµn phÝm. Ch¼ng h¹n khi nhËp a=0 hoÆc a kh «ng phải lµ sè …. 152
TÍNH KHAÛ THI ThuËt to¸n phải bao gåm những thao t¸c mµ m¸y cã thÓ thùc hiÖn ® îc. Máy tính chØ cã thÓ thùc hiÖn ® îc những phÐp to¸n sè häc, c¸c phÐp so s¸nh, c¸c phÐp logic, c¸c phÐp nhËp xuÊt th «ng tin tiªu chuÈn. ThuËt to¸n Hooc ne cã tÝnh khả thi. ThuËt to¸n Giải phương trình bậc 2 kh «ng cã tÝnh khả thi trong tr êng hîp DELTA > 0 vì m¸y kh «ng thÓ thùc hiÖn phÐp tÝnh khai căn DELTA. 153
TÍNH ÑAÀY ÑUÛ-VEÙT CAÏN ThuËt to¸n phải vÐt ® îchÕt c¸c tình huèng, c¸c khả năng cã thÓ xẩy ra, kh «ng bá sãt bÊt kỳ mét tr êng hîp nµo trong miÒn ¸p dông. ThuËt to¸n Hooc ne và Giải phương trình bậc 2 kh «ng cã tÝnh ®Çy ®ñ nÕu dữ liÖu nhËp tõ bµn phÝm 154
TÍNH ÑUÙNG ÑAÉN ThuËt to¸n phải cho kÕt quả ®óng cña bµi to¸n nghÜa lµ phải ® îc chøng minh vÒ mÆt to¸n häc. 155
MOÄT THUAÄT TOAÙN PHAÛI THOAÛ MAÕN ÑOÀNG THÔØI CAÙC TÍNH CHAÁT TRE N 156
CAÁU TRUÙC CÔ BAÛN CUÛA THUAÄT TOAÙN 157
CAÁU TRUÙC TUAÀN TÖÏ THAO TÁC 1 THAO TÁC 2 THAO TÁC 3 158
CAÁU TRUÙC REÕ NHAÙNH ĐIỀU KIỆN THAO TÁC 1 THAO TÁC 2 159
CAÁU TRUÙC VOØNG LAËP THAO TÁC ĐIỀU KIỆN THAO TÁC 160
CAÙC PHÖÔNG PHAÙP BIEÅU DIEÃN THUAÄT TOAÙN 161
1) Dïng ng «n ngữ mẹ đẻ hoặc ngôn ngữ mã giả 2) Ng «n ngữ l u ®å 3) Ng «n ngữ lËp trình BiÓu diÔn thuËt to¸n b» ng ng «n ngữ lËp trình chÝnh lµ thảo ch ¬ng, môc tiªu quan träng trong Tin häc. 162
Ngoân ngöõ maõ giaû ThuËt. To¸n. Ph ¬ng. Trinh. BËc. Hai; BiÕn A, B, C, DELTA, X 1, X 2 : SèThùc ; B¾tĐÇu NhËp A, B, C; DELTA: =B*B 4*A*C; NÕu DELTA <0 Thi XuÊt 'Ph ¬ng trinh v « nghiÖm '; Dõng; NÕu DELTA =0 Thi X 1: =( B/2/A); X 2: =X 1; XuÊt 'NghiÖm kÐp X 1, X 2 '; Dõng; NÕu DELTA =0 Thi X 1: =( B Can. BËc. Hai(DELTA))/2/A; X 2: =( B+Can. BËch. H(DELTA))/2/A; XuÊt 'NghiÖm ph©n biÖt X 1, X 2 '; Dõng; KÕt. Thóc. 163
Löu ñoà BEGIN NhËp A, B, C DELTA =B*B 4*A*C X 1=X 2= B/2/A DELTA ? V¤ NGHI£M THùC X 1= X 2= IN KÕt QUa END 164
Ngoân ngöõ laäp trình PASCAL PROGRAM Phuongtrinh Bac. Hai; USES Crt; LABEL 20; VAR a, b, c : Real; Delta, X 1, X 2: Real; BEGIN 20 : Clrscr; Go. TOXY(10, 4); Writeln(' Giai phuong trinh bac hai'); Go. TOXY(10, 5); Writeln('*************'); Write('Ban hay nhap vao gia tri cua A : '); Readln(a); IF a = 99999 THEN Halt; IF a = 0 THEN BEGIN Writeln(' a khong hop le !'); Delay(500); GOTO 20; END; 165
Write('Ban hay nhap vao gia tri cua B: '); Readln(b); Write('Ban hay nhap vao gia tri cua C: '); Readln(c); Delta : = spr(b)- 4*a*c; IF Delta <0 THEN Writeln(' Phuong trinh vo nghiem '); IF Delta = 0 THEN BEGIN Writeln('Phuong trinh co nghiem kep'); Writeln(' X = ', -b/(2*a) : 9 : 2); END; IF Delta > 0 THEN BEGIN Writeln('Phuong trinh coù 2 nghiem : '); X 1 : = (-b+sqrt(delta))/(2*a); X 2 : = (-b-sqrt(delta))/(2*a); Writeln(' X 1 = ', X 1: 9 : 2); Writeln(' X 2 = ', X 2: 9 : 2); END; Readln; END. 166
THUËT GI¶I Kh¸i niÖm thuËt to¸n đã trình bày chÝnh lµ c¸nh cöa khÐp kÝn cho viÖc gỉai c¸c bµi to¸n vì: -NhiÒu bµi to¸n kh «ng tháa c¸c ®Æc tr ng c¬ bản cña thuËt to¸n. Cã nhiều bµi to¸n ch a ìtm ra thuËt to¸n hoÆc ch a chøng minh ® îc lµ cã thuËt to¸n hay kh «ng. Cã những bµi to¸n cã thuËt to¸n nh ng khã thùc hiÖn hoÆc kh «ng thùc hiÖn ® îc 167
Cã những bµi to¸n ® îcgiải tuy vi ph¹m c¸c quy ®Þnh cña thuËt to¸n nh ng lêi giải vÉn ® îc thùc tiÔn chÊp nhËn · THUẬT GIẢI CŨNG LÀ THUẬT TOÁN NHƯNG MỞ RỘNG CHO CÁC ĐIỀU KIỆN 168
NHỮNG MỞ RỘNG CHO CÁC ĐIỀU KIỆN Më réng tÝnh x¸c ®Þnh TÝnh x¸c ®Þnh thùc chÊt lµ tÝnh ®¬n trÞ cña c¸ch giải cña mét thuËt to¸n vµ sù râ rµng tèi ®a. Trong thùc tÕ cã nhiÒu bµi to¸n vi ph¹m tÝnh x¸c ®Þnh mµ vÉn cho kÕt qủa. Nh vËy thay cho viÖc x©y dùng toµn bé qu¸ trình giải chØ cÇn chØ ra c¸ch chuyÓn tõ b íc i sang b íc i+1. C¸ch gỉai ngÉu nhiªn, ®Ö quy lµ më réng tÝnh x¸c ®Þnh · 169
Më réng tÝnh ®óng ®¾n TÝnh ®óng ®¾n ® îchiÓu lµ cho kÕt quả ®óng. Nh ngtrong thùc tÕ thì sè gÇn ®óng lµ cã thÓ chÊp nhËn. Ngoµi ra dïng c¸ch gỉai heuristic ®¬n giản, ®éc ®¸o vÉn cã thÓ cho kÕt qủa mét c¸ch s¸ng t¹o. 170
NAÊM BÖÔÙC GIAÛI BAØI TOAÙN TRE N MAÙY TÍNH a) B íc 1 171
c) B íc 3 DiÔn tả thuËt to¸n b» ng ng «n ngữ LËp trình Đ©y lµ c «ng viÖc chuyÓn l u®å hoÆc ng «n ngữ Mô tả thuật toán thµnh ng «n ngữ lËp trình. Qu¸ trình nµy gäi lµ thảo ch ¬ng. d) B íc 4 Ch¹y thö vµ söa lçi. B ícnµy cã thÓ thùc hiÖn xen kÏ trong b íc 3 vµ thùc hiÖn nhiÒu lÇn víi nhiÒu ng êikh¸c nhau nh» m ph¸t hiÖn tèi ®a c¸c sai sãt. Phải söa hÕt tÊt cả c¸c lçi dï nhá nhÊt. 172
e) B íc 5 иnh gi¸ sù ®óng ®¾n vµ ®é tin cËy cña kÕt qña. ViÖc ®¸nh gi¸ nµy th êng dùa trªn : ý nghÜa thùc tiÔn cña bµi to¸n Kinh nghiÖm dù ®ãan kÕt qña cña ng êigiải So s¸nh kÕt qña víi kÕt qña cña bµi to¸n ®· cã lêi giai ®óng Giải bµi to¸n trong những tr ênghîp ®Æc biÖt, tr ênghîp thu gän dÔ thÊy kÕt qña lµ ®óng hay sai. NÕu kÕt quả sai phải rµ so¸t l¹i tõ b íc 1 và cã thÓ sai tõ thuËt to¸n. C «ng viÖc tìm lçi sai vµ söa lçi cña thuËt to¸n rÊt khã NÕu kÕt qủa tìm ® îclµ ®óng ®¾n vµ tin cËy, 173 ghi ch ¬ngtrình lªn ®Üa ®Ó l u.
CAÙC PHÖÔNG PHAÙP THO NG DUÏNG • PH¦¬ng ph¸p ®óng • Ph ¬ng ph¸p gÇn ®óng ph ¬ng ph¸p tÝnh • Ph ¬ng ph¸p ngÉu nhiªn • Ph ¬ng ph¸p kinh nghiÖm HEURISTIC 174
- Slides: 42