Bài giảng Cấu trúc dữ liệu và Giải thuật - Chương I: Các kiến thức cơ bản - Đỗ Bích Diệp

Cu trúc dliu và Gii thut  
Cu trúc dliu và Gii thut  
Chương I: Các kiến thc cơ bn  
Các kiến thc cơ bn  
Ni dung  
™ Các khái nim  
™ Gii thut  
™ Cu trúc dliu  
™ Phân tích gii thut  
™ Gingôn ngữ  
™ Thi gian thc hin gii thut  
™ Đánh giá độ phc tp sdng tim cn  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
1
Cu trúc dliu và Gii thut  
Gii thut  
Mt thtc bao gm mt dãy hu hn các bước  
cn thc hin để thu được đầu ra cho đầu vào  
cho trước ca mt bài toán  
Gii thut  
z Đặc trưng ca gii thut  
Đầu vào  
Đầu ra  
Tính hu hn  
Tính hiu quả  
Tính xác định  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
2
Cu trúc dliu và Gii thut  
Gii thut và Chương trình  
Chương trình là mt thhin ca Gii thut trong mt  
ngôn nglp trình nào đó  
Cu trúc dliu  
z Kiu dliu tru tượng (Abstract Data Type)  
Là mô hình toán hc và nhng phép toán thc  
hin trên mô hình toán hc này  
Ví d: ADT List  
z Dliu: Các nút  
z Các phép toán:  
Bsung mt nút mi  
Loi bmt nút  
Tìm kiếm mt nút có giá trcho trước  
…  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
3
Cu trúc dliu và Gii thut  
Cu trúc dliu  
z Cu trúc dliu  
Sdng để biu din mô hình toán hc trong  
ADT  
Vic cài đặt các kiu dliu tru tượng đòi hi  
phi chn các cu trúc dliu để biu din  
Liên quan đến cách thc tchc và truy nhp  
các phn tdliu  
Ví d: ADT List  
z Cài đặt sdng cu trúc mng đơn gin  
z Cài đặt sdng cu trúc con trỏ  
Xây dng chương trình gii bài toán  
Li gii mt bài toán bao gm  
z Cu trúc dliu  
z Thut toán  
Xây dng chương trình gii bài toán  
z Tương tnhư vòng đời ca phn mm  
z Gm các bước  
Thu thp yêu cu: Hiu rõ đầu vào và kết quả đầu ra  
Thiết kế : Xây dng gii thut, bqua các chi tiết vcách thc  
cài đặt dliu hay các phương thc, tp trung vào các bước xử  
lý  
Phân tích : Tìm, so sánh vi gii thut khác  
Cài đặt: Xây dng chương trình, quan tâm đến cách thc tổ  
chc, biu din và cài đặt các phương thc  
Kim th: Bao gm chng minh tính đúng đắn ca chương  
trình, kim thcác trường hp , tìm, sa li  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
4
Cu trúc dliu và Gii thut  
Thut toán và độ phc tp  
Đánh giá lượng tài nguyên các loi mà mt gii  
thut đã sdng.  
z Gii thut này thc hin trong thi gian thế nào Æ  
Phân tích vthi gian thc hin gii thut  
z Gii thut này sdng bao nhiêu bnhÆ Phân tích  
độ không gian nhmà gii thut (chương trình) cn có.  
Phân tích thi gian thc hin gii thut  
Mc tiêu ca vic xác định thi gian thc hin  
mt gii thut:  
z Để ước lượng mt chương trình sthc hin trong bao  
lâu  
z Để ước lượng kích thước dliu đầu vào ln nht có  
thcho mt gii thut  
z Để so sánh hiu quca các gii thut khác nhau, từ đó  
la chn ra mt gii thut thích hp cho mt bài toán  
z Để giúp tp trung vào đon gii thut được thc hin  
vi thi gian ln nht  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
5
Cu trúc dliu và Gii thut  
Phân tích thi gian thc hin gii thut  
z Cách thc  
Xác định độ phthuc ca thi gian tính ca  
thut toán vào kích thước ca dliu đầu vào  
Các phương pháp thc hin  
z Phương pháp thc nghim  
z Phương pháp phân tích da trên mô hình lý thuyết  
Phân tích thi gian thc hin gii thut  
z Phương pháp thc nghim  
Cài đặt gii thut bng ngôn nglp trình  
Chy chương trình vi các dliu đầu vào khác nhau  
Đo thi gian thc thi chương trình và đánh giá độ tăng  
trưởng so vi kích thước ca dliu đầu vào  
z Hn chế:  
Shn chế vslượng và cht lượng ca mu thử  
Đòi hi môi trường kim th(phn cng và phn mm)  
thng nht , n định  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
6
Cu trúc dliu và Gii thut  
Phân tích thi gian thc hin gii thut  
z Phương pháp lý thuyết  
Có khnăng xem xét dliu đầu vào bt kỳ  
Sdng để đánh giá các gii thut mà không phthuc  
vào môi trường kim thử  
Sdng vi nhng mô tả ở mc cao ca gii thut  
z Thc hin phương pháp này cn quan tâm  
Ngôn ngmô tgii thut  
Xác định độ đo thi gian tính  
Mt cách tiếp cn để khái quát hóa độ phc tp vthi gian  
Mô tgii thut – Gingôn ngữ  
z Gingôn ng(Pseudo-code)  
Mô tmc khái quát cao được sdng trong din tả  
gii thut  
Gingôn ng= Cu trúc lp trình + Ngôn ngtnhiên  
Algorithm arrayMax(A,n)  
Input: Mng cha n phn tlà snguyên  
Output: Phn tln nht trong mng  
Begin  
currentMax = A[0]  
for i = 1 to n-1 do  
if currentMax < A[i] then currentMax = A[i]  
return currentMax  
End.  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
7
Cu trúc dliu và Gii thut  
Gingôn ngữ  
Các cu trúc lp trình trong gingôn ngữ  
z Câu lnh gán: V = E hoc V Å E  
z Cu trúc điu khin:  
]
if B then S1 [else S2  
Case  
B1 : S1 ;  
B2 : S2 ;  
Bn : Sn  
else Sn+1  
end case;  
Gingôn ngữ  
z Câu lnh lp  
z Vòng lp vi sln lp biết trước  
for i = m to n do S hoc for i = n down to m do S  
z Vi sln lp không biết trước  
while B do S hoc repeat S until B  
z Câu lnh vào ra  
Đọc dliu vào  
read (<danh sách biến>);  
ƒ Ghi dliu  
write (<danh sách biến hoc dòng ký t>);  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
8
Cu trúc dliu và Gii thut  
Gingôn ngữ  
z Khai báo hàm  
Function <tên hàm> (<danh sách tham s>)  
Begin  
<các câu lnh>  
return (giá tr)  
End  
z Gi hàm: Hàm được gi bng tên hàm cùng danh sách  
giá trtham sthc s, nm trong biu thc  
Gingôn ngữ  
Function AVERAGE(A,n)  
Begin  
{A là mt mng gm n phn tlà snguyên. Gii thut trra giá trị  
trung bình ca các giá trtrong mng}  
1. sum = 0;  
2. {Duyt mng} for I = 1 to n do  
sum = sum + A[i];  
3. average = sum/n  
4. return(average)  
End.  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
9
Cu trúc dliu và Gii thut  
Gingôn ngữ  
Khai báo thtc  
Procedure <tên thtc> (<danh sách tham s>)  
Begin  
<các câu lnh>  
End  
Thtc được gi bng cách sdng câu lnh  
Call <tên thtc> (<danh sách giá trtham s>)  
Phân tích thi gian thc hin gii thut  
Độ đo thi gian tính sdng trong phương pháp  
phân tích lthuyết  
z Phép toán cơ bn là phép toán có thể được thc hin  
vi thi gian bi chn bi mt hng skhông phthuc  
vào kích thước dliu  
Thi gian tính ca gii thut được xác định bng  
cách đếm sphép toán cơ bn mà gii thut thc  
hin  
T(n) cop*C(n)  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
10  
Cu trúc dliu và Gii thut  
Phân tích thi gian thc hin gii thut  
Các phép toán cơ bn thường dùng  
z Gán giá trcho biến số  
z Gi hàm hay thtc  
z Thc hin các phép toán shc  
z Tham chiếu vào mng  
z Trkết quả  
z Thc hin các phép so sánh  
Phân tích thi gian thc hin gii thut  
Dòng 1: 2 phép toán cơ bn  
Function ARRAY-MAX(A,n)  
Dòng 2: phép gán giá trị đầu  
cho i, phép so sánh i < n  
được thc hin n ln  
Đâu vào : mng A gm n phn t.  
Đầu ra: phn tln nht trong  
mng  
Begin  
Thân vòng lp thc hin n-1  
ln, trong thân, ti thiu phi  
thc hin phép so sánh (2 phép  
toán cơ bn) , tăng i lên 1 (2 phép  
toán cơ bn) ti đa phi có thêm  
phép gán (2 phép toán cơ bn)  
Dòng 3: 1 phép toán cơ bn  
Tng sphép toán cơ bn trong  
Trường hp xu nht : 7n-2  
1. currentMax = A[0]  
2. for i = 1 to n-1 do  
if currentMax < A[i] then  
currentMax = A[i]  
3. return currentMax  
End.  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
11  
Cu trúc dliu và Gii thut  
Phân tích thi gian thc hin gii thut  
Thi gian tính ti nht (Worst-case)  
z Thi gian nhiu nht để thc hin thut toán vi mt bộ  
dliu vào kích thước n  
Thi gian tính tt nht (Best-case)  
z Thi gian ít nht để thc hin thut toán vi mt bdữ  
liu cũng vi kích thước n  
Thi gian tính trung bình (Average case)  
z Thi gian trung bình cn thiết để thc hin thut toán  
trên tp hu hn các đầu vào kích thước n  
Phân tích thi gian thc hin gii thut  
5 ms  
worst-case  
4 ms  
average-case?  
}
3 ms  
best-case  
2 ms  
1 ms  
A
B
D
E
F
G
CInput  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
12  
Cu trúc dliu và Gii thut  
Phân tích thi gian thc hin gii thut  
Ví d: Tìm kiếm tun tmt giá trtrên mt mng  
a[1]  
a[2]  
a[3]  
a[4]  
a[5]  
a[6]  
a[7]  
a[8]  
a[9] a[10] a[11] a[12]  
4
8
7
10  
21  
14  
22  
36  
62  
91  
77  
81  
Thi gian xu nht : n  
Thi gian tt nht : 1  
Thi gian trung bình: T(n) = i.pi  
trong đó pi là xác sut giá trcn tìm xut hin ti  
a[i]. pi = 1/n thì thi gian slà (n+1)/2  
Ký hiu tim cn  
Khái nim Big-O  
Cho hàm st(n) và g(n), ta nói rng t(n) là O(g(n)) nếu tn ti  
2 hng snguyên dương c và n0 sao cho  
t(n) cg(n) for n n0  
t(n) thuc O(g(n))  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
13  
Cu trúc dliu và Gii thut  
Ký hiu tim cn Big - O  
7n -2  
z 7n-2 là O(n)  
tìm c > 0 và n0 1 sao cho 7n-2 c*n vi n n0  
điu này đúng vi c = 7 và n0 = 1  
3n3 + 20n2 + 5  
z 3n3 + 20 n2 + 5 là O(n3)  
tìm c > 0 và n0 1 sao cho 3n3 + 20n2 + 5 c*n3 vơi n n0  
điu này đúng vi c = 4 và n0 = 21  
3 log n + 5  
z 3 log n + 5 là O(log n)  
cn c > 0 và n0 1 sao cho 3 log n + 5 c*log n vi n n0  
ta xác định được c = 8 và n0 = 2  
Ký hiu tim cn Big - O  
Ví d: Gii thut có T(n)  
= 2n + 10 thì có độ  
10,000  
phc tp là O(n)  
3n  
z 2n + 10 cn  
2n+10  
n
1,000  
100  
10  
z (c 2) n 10  
z n 10/(c 2)  
z Ly c = 3 và n0 = 10  
1
1
10  
100  
1,000  
n
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
14  
Cu trúc dliu và Gii thut  
Ký hiu tim cn Big - O  
Đồ thmt shàm cơ bn  
Ký hiu tim cn Big - O  
Big-O và độ tăng trưởng  
z Big-O là ký hiu tim cn trên ca mt hàm  
z Nếu ta có T(n) là O(g(n)) thì độ tăng trưởng ca T(n)  
không vượt quá độ tăng trưởng ca g(n)  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
15  
Cu trúc dliu và Gii thut  
Ký hiu tim cn Big - O  
Qui tc xác định độ phc tp vthi gian  
z Hàm thi gian T(n) ca mt đon ca thut toán là đa  
thc bc k thì T(n) là O(nk)  
z nx = O(an), vi bt kx > 0 và a > 1  
z log nx = O(log n), vi x > 0  
Ký hiu tim cn Big - O  
Qui tc xác định độ phc tp  
z Cu trúc tun t- Qui tc tng  
z Cho 2 đon ca thut toán P1 và P2 vi thi gian  
thc hin tương ng là T1(n) và T2(n) . Thi  
gian thc hin P1 và P2 kế tiếp nhau là: T1(n) +  
T2(n)  
z Độ phc tp ca hai đon chương trình P1 và  
P2 liên tc nhau có thxác định là O(max(f(n),  
g(n))) nếu T1(n) = O(f(n)) và T2(n) = O(g(n)).  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
16  
Cu trúc dliu và Gii thut  
Ký hiu tim cn Big - O  
Qui tc xác định độ phc tp  
z Cu trúc lng - Quy tc nhân  
Cho 2 đon chương trình P1 và P2 vi thi gian thc  
hin tương ng là T1(n) và T2(n) . Thi gian thc hin  
P1 và P2 lng vào nhau là: T1(n)T2(n)  
Độ phc tp ca hai đon chương trình P1 và P2 liên  
tc nhau có thxác định là O(f(n)*g(n)) nếu T1(n) =  
O(f(n)) và T2(n) = O(g(n)).  
Ký hiu tim cn Big - O  
for i = 1 to n  
begin  
P; {đon gii thut vi thi  
gian thc hin T}  
end  
i: = 1  
while (i <= n) do  
begin  
P; {đon gii thut vi thi  
gian thc hin T}  
i: = i+2;  
end  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
17  
Cu trúc dliu và Gii thut  
Ký hiu tim cn Big - O  
i := 1  
while (i<= n) do  
begin  
P; {đon gii thut vi thi  
gian thc hin T}  
i:= i *2;  
end  
i :=n  
while (i >= 1) do  
begin  
P; {đon gii thut vi thi  
gian thc hin T}  
i:= i/2  
end  
Ký hiu tim cn Big - O  
i = 1  
while (i <= n) do  
begin  
j := 1 ;  
while (j <= n) do  
begin  
P ; {đon gii thut vi  
thi gian thc hin T}  
j := j × 2;  
end  
i =: i + 1;  
end  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
18  
Cu trúc dliu và Gii thut  
Ký hiu tim cn Big - O  
z Ví dụ  
i = 1  
while (i <= n) do  
begin  
j := 1 ;  
while (j <= n) do  
begin  
P;  
j := j +1;  
end  
i =: i + 1;  
end  
Các khái nim tim cn khác  
- Big- Omega  
z t(n) được coi là Ω(g(n)) nếu tn ti mt hng sc >0 và  
mt snguyên n0 1 sao cho T(n) c*g(n) vi mi n ≥  
n0  
t(n) ∈ Ω(g(n))  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
19  
Cu trúc dliu và Gii thut  
Các khái nim tim cn khác  
Big-Theta  
z t(n) đựoc coi là Θ(g(n)) nếu tn ti hai hng sc’ > 0 và  
c’’ > 0 và mt snguyên n0 1 sao cho c’*g(n) T(n) ≤  
c’’*g(n) vi mi n n0  
t(n) ∈ Θ(g(n))  
Các khái nim tim cn khác  
5n2 = Ω(n2) vi c = 5 và n0 = 1  
5n2 = Ω(n) vi c = 1 và n0 = 1  
5n2 = Θ(n2) vi c = 5 và n0 = 1  
3 log(n) + log (log n) = Ω(log n) vi c = 3 và n0 = 2  
Đỗ Bích Dip - Khoa CNTT- ĐHBKHN  
20  
Tải về để xem bản đầy đủ
pdf 21 trang baolam 26/04/2022 9300
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cấu trúc dữ liệu và Giải thuật - Chương I: Các kiến thức cơ bản - Đỗ Bích Diệp", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_cau_truc_du_lieu_va_giai_thuat_chuong_i_cac_kien_t.pdf