Nối tiếp phần 1 bộ bài giảng Tin học đại cương mời các bạn cùng tìm hiểu phần 2 (Chương 1) với các nội dung chính như: Giải quyết bài toán bằng máy tính: Khái niệm về bài toán; quá trình giải quyết bài toán bằng máy tính; các phương pháp giải quyết bài toán bằng máy tính; phân loại bài toán;...
Trang 1IT1110 Tin h c đ i c ọ ạ ươ ng
Ph n II Gi i quy t bài toán ầ ả ế
Nguy n Bá Ng cễ ọ
Trang 2Ôn t p n i dung ph n I ậ ộ ầ
Trang 3N i dung ph n II ộ ầ
Ch ươ ng 1: Gi i quy t bài toán b ng máy tính ả ế ằ
Khái ni m v bài toánệ ề
Quá trình gi i quy t bài toán b ng máy tínhả ế ằ
Các phương pháp gi i quy t bài toán b ng máy tínhả ế ằ
Thu t toán đ quyậ ệ
Thu t gi i heuristicậ ả
Trang 4N i dung ph n II ộ ầ
Ch ươ ng 1: Gi i quy t bài toán b ng máy tính ả ế ằ
Khái ni m v bài toánệ ề
Quá trình gi i quy t bài toán b ng máy tínhả ế ằ
Các phương pháp gi i quy t bài toán b ng máy tínhả ế ằ
Trang 51.1. Khái ni m v v n đ và bài toán ệ ề ấ ề
V n đ r ng h n bài toán? ấ ề ộ ơ
Pitago chia v n đ ra: ấ ề
Theorema là v n đ c n đấ ề ầ ược kh ng đ nh đúngsaiẳ ị
Problema là v n đ c n tìm gi i pháp đ đ t đấ ề ầ ả ể ạ ược m t ộ
m c tiêu xác đ nh t nh ng đi u ki n ban đ u.ụ ị ừ ữ ề ệ ầ
Trang 61.2. Các b ướ c gi i quy t bài toán b ng ả ế ằ
máy tính
B ướ c 1: Xác đ nh v n đ bài toán ị ấ ề
B ướ c 2: L a ch n ph ự ọ ươ ng pháp gi i ả
B ướ c 3: Xây d ng thu t toán ho c thu t ự ậ ặ ậ
gi i ả
B ướ c 4: Cài đ t ch ặ ươ ng trình
B ướ c 5: Hi u ch nh ch ệ ỉ ươ ng trình
B ướ c 6: Th c hi n ch ự ệ ươ ng trình
Trang 71.3. Các ph ươ ng pháp gi i quy t v n đ ả ế ấ ề
b ng máy tính ằ
Gi i quy t v n đ theo h ả ế ấ ề ướ ng xác đ nh tr c ti p ị ự ế
l i gi i ờ ả
xác đ nh tr c ti p l i gi i qua th t c tính toán ho c th ị ự ế ờ ả ủ ụ ặ ủ
t c bao g m m t s h u h n các thao tác s c p.ụ ồ ộ ố ữ ạ ơ ấ
Gi i quy t v n đ theo h ả ế ấ ề ướ ng tìm ki m l i gi i ế ờ ả
Trang 81.4. Phân lo i bài toán ạ
Bài toán đa th c ứ
Bài toán không đa th c ứ
NP Problems
Trang 9N i dung ph n II ộ ầ
Ch ươ ng 1: Gi i quy t bài toán b ng máy tính ả ế ằ
Khái ni m v bài toánệ ề
Quá trình gi i quy t bài toán b ng máy tínhả ế ằ
Các phương pháp gi i quy t bài toán b ng máy tínhả ế ằ
Thu t toán đ quyậ ệ
Thu t gi i heuristicậ ả
Trang 102.1. Đ nh nghĩa thu t toán ị ậ
Là m t khái ni m c s c a toán h c và tin ộ ệ ơ ở ủ ọ
h c ọ
Bao g m m t dãy h u h n các l nh/ch th ồ ộ ữ ạ ệ ỉ ị
rõ ràng và có th thi hành đ ể ượ c đ h ể ướ ng
d n th c hi n m t hành đ ng nh m đ t ẫ ự ệ ộ ộ ằ ạ
đ ượ c m c tiêu đ ra ụ ề
Thu t toán là s th hi n c a m t ph ậ ự ể ệ ủ ộ ươ ng pháp đ gi i quy t m t v n đ ể ả ế ộ ấ ề
Trang 11Ví d 1: Thu t toán tìm ph n t l n nh t ụ ậ ầ ử ớ ấ
c a m t dãy h u h n các s nguyên ủ ộ ữ ạ ố
Các b ướ c:
1. Đ t giá tr l n nh t t m th i là s nguyên đ u tiên.ặ ị ớ ấ ạ ờ ố ầ
2. So sánh s nguyên k ti p trong dãy v i giá tr l n ố ế ế ớ ị ớ
nh t t m th i, n u s nguyên này l n h n giá tr l n ấ ạ ờ ế ố ớ ơ ị ớ
nh t t m th i thì đ t giá tr l n nh t t m th i b ng s ấ ạ ờ ặ ị ớ ấ ạ ờ ằ ốnguyên này
3. L p l i bặ ạ ước 2 n u còn s nguyên trong dãy ch a ế ố ư
được xét
4. D ng n u không còn s nguyên nào trong dãy ch a ừ ế ố ư
được xét. Giá tr l n nh t t m th i lúc này chính là giá ị ớ ấ ạ ờ
tr l n nh t trong dãy s ị ớ ấ ố
Trang 12Ví d 2: Thu t toán gi i ph ụ ậ ả ươ ng trình b c ậ hai: ax2 + bx + c = 0 (a 0)
3.2. Xu t k t qu : phấ ế ả ương trình có hai nghi m xệ 1 và x2.
4. N u ế Δ là 0 thì xu t k t qu : ph ấ ế ả ươ ng trình có
nghi m kép là b/(2*a) ệ
5. N u ế Δ<0 thì xu t k t qu : ph ấ ế ả ươ ng trình vô
Trang 13m t s tiêu chu n (kh i lộ ố ẩ ố ượng tính toán, không gian, th i ờgian s d ng).ử ụ
các bài toán có d ng nh mong mu nạ ư ố
Trang 142.2. Bi u di n thu t toán ể ễ ậ
Trang 16Ngôn ng l u đ (2) ữ ư ồ
Nút đi u ki n: là m t hình thoi có ghi đi u ki n ề ệ ộ ề ệ
c n ki m tra, th ầ ể ườ ng có 1 cung đi vào và 2 cung đi
ra (t ươ ng ng v i 2 tr ứ ớ ườ ng h p đúng/sai) ợ
a<b SaiĐúng
Cung: là đ ườ ng n i t nút này đ n nút khác c a ố ừ ế ủ
l u đ ư ồ
Trang 17Ví d : l u đ bi u di n thu t toán gi i ụ ư ồ ể ễ ậ ả
Xu t: : Không ấ
ph i ả
ph ươ ng trình b c ậ
2
Trang 19Mã gi (2) ả
Các c u trúc th ấ ườ ng g p: ặ
C u trúc ch n:ấ ọ
if (đi u ki n) then (hành đ ng) end if ề ệ ộ
if (đi u ki n) then (hành đ ng 1) ề ệ ộ else (hành đ ng 2) ộ
end if
C u trúc l pấ ặ
while (đi u ki n) do (hành đ ng) end while ề ệ ộ
repeat (hành đ ng) until (đi u ki n) ộ ề ệ
for (bi n)=(giá tr đ u) to (giá tr cu i) do (hành đ ng) end for ế ị ầ ị ố ộ
for (bi n)=(giá tr cu i) downto (giá tr đ u) do (hành đ ng) end ế ị ố ị ầ ộ for
C u trúc nh yấ ả
goto nhãn x;
Trang 20Ví d : thu t toán gi i ph ụ ậ ả ươ ng trình b c 2 ậ
Trang 212.3. M t s thu t toán thông d ng ộ ố ậ ụ
Thu t toán ki m tra s nguyên t ậ ể ố ố
Thu t toán tìm USCLN, BSCNN c a 2 s ậ ủ ố
Trang 22Tìm ph n t l n nh t trong m t dãy h u h n s ầ ử ớ ấ ộ ữ ạ ố
Trang 232.4. Thu t toán đ quy ậ ệ
Có m t s tr ộ ố ườ ng h p, cách gi i có th vi ph m ợ ả ể ạ các tính ch t c a thu t toán nh ng l i khá đ n ấ ủ ậ ư ạ ơ
Trang 24Thu t toán đ quy (2) ậ ệ
Thu t toán đ quy tính giai th a c a 1 s t ậ ệ ừ ủ ố ự nhiên:
Trang 25Thu t toán đ quy (3) ậ ệ
Thu t toán đ quy tính s h ng th n c a ậ ệ ố ạ ứ ủ dãy s Fibonacci: ố
Trang 26Thu t toán đ quy (4) ậ ệ
Đ c đi m c a thu t toán đ quy: ặ ể ủ ậ ệ
Trang 282.5. Thu t gi i heuristic ậ ả
Th ườ ng tìm đ ượ ờ c l i gi i t t (nh ng ch a ả ố ữ ư
Trang 29Thu t gi i heuristic (2) ậ ả
Các nguyên lý
Nguyên lý vét c n thông minh: trong bài toán tìm ki m ạ ếkhi không gian tìm ki m l n => gi i h n không gian tìm ế ớ ớ ạ
ki m ho c th c hi n dò tìm đ c bi t d a vào đ c thù ế ặ ự ệ ặ ệ ự ặ
c a bài toán đ nhanh chóng tìm ra m c tiêuủ ể ụ
Nguyên lý tham lam: l y tiêu chu n t i u toàn c c làm ấ ẩ ố ư ụtiêu chu n ch n l a hành đ ng c c b c a t ng bẩ ọ ự ộ ụ ộ ủ ừ ước trong quá trình tìm ki m l i gi iế ờ ả
Nguyên lý th t : th c hi n hành đ ng theo th t h p ứ ự ự ệ ộ ứ ự ợ
lý c a không gian kh o sát nh m nhanh chóng đ t ủ ả ằ ạ
được m t l i gi i t t. ộ ờ ả ố