Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Đỗ Ngọc Như Loan
Số trang: 31
Loại file: pptx
Dung lượng: 206.88 KB
Lượt xem: 22
Lượt tải: 0
Xem trước 4 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Cấu trúc dữ liệu và giải thuật - Chương 1: Tổng quan về cấu trúc dữ liệu & giải thuật" cung cấp cho người học các kiến thức: Độ phức tạp của thuật toán, biểu diễn thời gian chạy bởi ký hiệu O. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Đỗ Ngọc Như LoanGV:ĐỗNgọcNhưLoanCấutrúcdữliệulàgì?CấutrúcdữliệulàcáchtổchứclưutrữdữliệusaochohiệuquảnhấtThếnàolàhiệuquả?1.Chínhxác2.Dùngítbộnhớ3.Khảnăngtìmkiếm/truyxuất4.Khảnăngcậpnhật,thêm(modification,insertion/deletion)5.Đơngiản,dễhiểuGiảithuậtlàgì?Thuậttoánlàmộtphươngphápbaogồmmộtdãycácbướctínhtoánđểgiảiquyếtmộtbàitoán.Thuậttoáncóthểđượcdiễntảdướingônngữtựnhiên(tiếngViệt,tiếngAnh…),mãgiảhayngônngữlậptrình(C++,Java…)Thếnàolàmộtthuậttoántốt?1.Đúngđắn2.Nhanh3.Ítbộnhớ4.Đơngiản,dễhiểuVídụTìmxtrongdãya1,a2,....,anInput:Sốx,dãynsốa1,a2,...,anOutput:MộtgiátrịlogictruehoặcfalseSearch(x,a,n)fori1ton doifai=x thenreturntruereturnfalseMộtvấnđềcóthểđượcgiảiquyếtbẳngnhiềuthuậttoánkhácnhauVídụTínhtổngcácsốnguyêntừ1đếnn.Input:n(n>1)Output:Tổngcácsốnguyêntừ1đếnnCách1sum=0;for(inti=1;i ĐộphứctạpCách1 O(n)sum=0;for(inti=1;iĐỘPHỨCTẠPTHUẬTTOÁNĐộphứctạpcủagiảithuậtlàchiphívềtàinguyêncủahệthống(chủyếulàthờigian,bộnhớ,CPU,đườngtruyền)cầnthiếtđểthựchiệngiảithuật Độphứctạpvềkhônggian(dunglượngbộ nhớsửdụng) ĐộphứctạpvềthờigianPhântíchgiảithuật(AnalyzingofAlgorithm)làquátrìnhtìmranhữngđánhgiávềtàinguyêncầnthiếtđểthựchiệngiảithuậtĐỘPHỨCTẠPTHUẬTTOÁNĐộphứctạpvềthờigiancủagiảithuật:•Đượcquivềđếmsốlệnhcầnthựcthicủagiảithuật•ĐólàmộthàmT(n)phụthuộcvàokíchthướcncủainput•Coinhưcómộtmáytrừutượng(abstractmachine)đểthựchiệngiảithuậtĐỘPHỨCTẠPTHUẬTTOÁN•Thờigiantốithiểuđểthựchiệngiảithuậtvớikíchthướcđầuvàongọilàthờigianchạytốtnhất(bestcase)củagiảithuật•Thờigiannhiềunhấtđểthựchiệngiảithuậtvớikíchthướcđầuvàonđượcgọilàthờigianchạyxấunhất(worstcase)củagiảithuật•Thờigiantrungbìnhđểthựchiệngiảithuậtvớikíchthướcđầuvàonđượcgọilàthờigianchạytrungbình(averagecase)củagiảithuậtVídụĐánhgiáđộphứctạpvềthờigiancủagiảithuậtSearch(x,a,n)fori1ton doifai=x thenreturntruereturnfalse dssdsdsssssssssssslkcddkcf;dxkacBIỂUDIỄNTHỜIGIANCHẠYBỞIKÝHIỆUOGiảsửf(n)vàg(n)làhàmthựckhôngâmcủađốisốnguyêndươngn, tanóif(n)=O(g(n))nếucóhằngsốc>0vàsốnguyêndươngNsaochof(n)=NNếugiảithuậtcóthờigianchạytốtnhất(trungbình,xấunhất)làT(n)vàT(n)=O(g(n))thìtanóiđộphứctạpcủagiảithuậttrongtrườnghợptốtnhất(trungbình,xấunhất)làO(g(n))Vídụ:Giảsửf(n)=5n3+2n2+13n+6,tacó:f(n)=5n3+2n2+13n+6=1)f(n)=O(n3)Tổngquátnếuf(n)làmộtđathứcbậckcủan:f(n)=aknk+ak1nk1+...+a1n+a0thìf(n)=O(nk)QuyTắc QUYTẮCCỘNG:NếuđoạnchươngtrìnhP1 cóthờigianthựchiệnT1(n)=O(f(n))vàđoạn chươngtrìnhP2cóthờigianthựchiệnlà T2(n)=O(g(n))thìthờigianthựchiệnP1rồi đếnP2tiếptheosẽlà:T1(n)+T2(n)=O(f(n) +g(n)) QUYTẮCNHÂN:NếuđoạnchươngtrìnhP cóthờigianthựchiệnlàT(n)=O(f(n)).Khi đó,nếuthựchiệnk(n)lầnđoạnchươngtrình Pvớik(n)=O(g(n))thìđộphứctạptínhtoán sẽlàO(g(n).f(n)) QUYTẮCMAX:NếuđoạnchươngtrìnhPcó thờigianthựchiệnT(n)=O(f(n)+g(n))thìcó thểcoiđoạnchươngtrìnhđócóđộphứctạpĐộphứctạp(tăngdần)•O(1)Hằngsố•O(log2n)Logarithm•O(n)Tuyếntính•O(nlog2n)nlogn•O(n2)Bậchai•O(n3)Bậcba•O(nm)Đathức•O(mn),m>=2Hàmmũ•O(n!)GiaithừaVÍDỤ Viếtvàphântíchgiảithuậttínhgiaithừacủa sốtựnhiênn.
Nội dung trích xuất từ tài liệu:
Bài giảng Cấu trúc dữ liệu và giải thuật: Chương 1 - Đỗ Ngọc Như LoanGV:ĐỗNgọcNhưLoanCấutrúcdữliệulàgì?CấutrúcdữliệulàcáchtổchứclưutrữdữliệusaochohiệuquảnhấtThếnàolàhiệuquả?1.Chínhxác2.Dùngítbộnhớ3.Khảnăngtìmkiếm/truyxuất4.Khảnăngcậpnhật,thêm(modification,insertion/deletion)5.Đơngiản,dễhiểuGiảithuậtlàgì?Thuậttoánlàmộtphươngphápbaogồmmộtdãycácbướctínhtoánđểgiảiquyếtmộtbàitoán.Thuậttoáncóthểđượcdiễntảdướingônngữtựnhiên(tiếngViệt,tiếngAnh…),mãgiảhayngônngữlậptrình(C++,Java…)Thếnàolàmộtthuậttoántốt?1.Đúngđắn2.Nhanh3.Ítbộnhớ4.Đơngiản,dễhiểuVídụTìmxtrongdãya1,a2,....,anInput:Sốx,dãynsốa1,a2,...,anOutput:MộtgiátrịlogictruehoặcfalseSearch(x,a,n)fori1ton doifai=x thenreturntruereturnfalseMộtvấnđềcóthểđượcgiảiquyếtbẳngnhiềuthuậttoánkhácnhauVídụTínhtổngcácsốnguyêntừ1đếnn.Input:n(n>1)Output:Tổngcácsốnguyêntừ1đếnnCách1sum=0;for(inti=1;i ĐộphứctạpCách1 O(n)sum=0;for(inti=1;iĐỘPHỨCTẠPTHUẬTTOÁNĐộphứctạpcủagiảithuậtlàchiphívềtàinguyêncủahệthống(chủyếulàthờigian,bộnhớ,CPU,đườngtruyền)cầnthiếtđểthựchiệngiảithuật Độphứctạpvềkhônggian(dunglượngbộ nhớsửdụng) ĐộphứctạpvềthờigianPhântíchgiảithuật(AnalyzingofAlgorithm)làquátrìnhtìmranhữngđánhgiávềtàinguyêncầnthiếtđểthựchiệngiảithuậtĐỘPHỨCTẠPTHUẬTTOÁNĐộphứctạpvềthờigiancủagiảithuật:•Đượcquivềđếmsốlệnhcầnthựcthicủagiảithuật•ĐólàmộthàmT(n)phụthuộcvàokíchthướcncủainput•Coinhưcómộtmáytrừutượng(abstractmachine)đểthựchiệngiảithuậtĐỘPHỨCTẠPTHUẬTTOÁN•Thờigiantốithiểuđểthựchiệngiảithuậtvớikíchthướcđầuvàongọilàthờigianchạytốtnhất(bestcase)củagiảithuật•Thờigiannhiềunhấtđểthựchiệngiảithuậtvớikíchthướcđầuvàonđượcgọilàthờigianchạyxấunhất(worstcase)củagiảithuật•Thờigiantrungbìnhđểthựchiệngiảithuậtvớikíchthướcđầuvàonđượcgọilàthờigianchạytrungbình(averagecase)củagiảithuậtVídụĐánhgiáđộphứctạpvềthờigiancủagiảithuậtSearch(x,a,n)fori1ton doifai=x thenreturntruereturnfalse dssdsdsssssssssssslkcddkcf;dxkacBIỂUDIỄNTHỜIGIANCHẠYBỞIKÝHIỆUOGiảsửf(n)vàg(n)làhàmthựckhôngâmcủađốisốnguyêndươngn, tanóif(n)=O(g(n))nếucóhằngsốc>0vàsốnguyêndươngNsaochof(n)=NNếugiảithuậtcóthờigianchạytốtnhất(trungbình,xấunhất)làT(n)vàT(n)=O(g(n))thìtanóiđộphứctạpcủagiảithuậttrongtrườnghợptốtnhất(trungbình,xấunhất)làO(g(n))Vídụ:Giảsửf(n)=5n3+2n2+13n+6,tacó:f(n)=5n3+2n2+13n+6=1)f(n)=O(n3)Tổngquátnếuf(n)làmộtđathứcbậckcủan:f(n)=aknk+ak1nk1+...+a1n+a0thìf(n)=O(nk)QuyTắc QUYTẮCCỘNG:NếuđoạnchươngtrìnhP1 cóthờigianthựchiệnT1(n)=O(f(n))vàđoạn chươngtrìnhP2cóthờigianthựchiệnlà T2(n)=O(g(n))thìthờigianthựchiệnP1rồi đếnP2tiếptheosẽlà:T1(n)+T2(n)=O(f(n) +g(n)) QUYTẮCNHÂN:NếuđoạnchươngtrìnhP cóthờigianthựchiệnlàT(n)=O(f(n)).Khi đó,nếuthựchiệnk(n)lầnđoạnchươngtrình Pvớik(n)=O(g(n))thìđộphứctạptínhtoán sẽlàO(g(n).f(n)) QUYTẮCMAX:NếuđoạnchươngtrìnhPcó thờigianthựchiệnT(n)=O(f(n)+g(n))thìcó thểcoiđoạnchươngtrìnhđócóđộphứctạpĐộphứctạp(tăngdần)•O(1)Hằngsố•O(log2n)Logarithm•O(n)Tuyếntính•O(nlog2n)nlogn•O(n2)Bậchai•O(n3)Bậcba•O(nm)Đathức•O(mn),m>=2Hàmmũ•O(n!)GiaithừaVÍDỤ Viếtvàphântíchgiảithuậttínhgiaithừacủa sốtựnhiênn.
Tìm kiếm theo từ khóa liên quan:
Bài giảng Cấu trúc dữ liệu Cấu trúc dữ liệu Cấu trúc dữ liệu và giải thuật Độ phức tạp của thuật toán Biểu diễn thời gianTài liệu có liên quan:
-
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 360 0 0 -
Giải thuật và cấu trúc dữ liệu
305 trang 187 0 0 -
Bài giảng Phân tích thiết kế phần mềm: Chương 1 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
64 trang 175 0 0 -
Giáo trình cấu trúc dữ liệu và giải thuât part 2
16 trang 172 0 0 -
57 trang 171 1 0
-
Giáo trình Cấu trúc dữ liệu và giải thuật: Phần 2 - Trần Hạnh Nhi
123 trang 166 0 0 -
3 trang 165 3 0
-
Tài liệu tham khảo: Cấu trúc dữ liệu và giải thuật
229 trang 149 0 0 -
Tập bài giảng Thực hành kỹ thuật lập trình
303 trang 146 0 0 -
10 trang 145 0 0