Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN PhạmThế Bảo ptbao@math.hcmuns.edu.vn http://www.math.hcmuns.edu.vn/~ptbao/AlgorithmAnalysis/ Nội dung • Tổng quan về thuậttoánvàđộ phứctạpcủathuậttoán • Đánh giá thuậttoánbằng: – Công cụ toán họcsơ cấp – Thựcnghiệm – Hàm sinh – Hoán vị • Đệ quy và phương pháp đánh giá • Đánh giá mộtsố thuật toán thông dụng • Các phương pháp giảiquyết bài toán trên máy tính: – Trựctiếp – Gián tiếp • Kỹ thuậtthiếtkế thuật toán: – Chia để trị – Greedy – Quy hoạch động – Tìm kiếmcụcbộ (địaphương) Phạm Thế Bảo Hình thứckiểmtra • Thựchành(4 điểm): – Làm việc theo nhóm – Mỗi nhóm sẽđánh giá mộtthuật toán: • Chạy 20 loạibộ dữ liệu: 50*i phầntử, với i=1 20 • Mỗiloạibộ dữ liệuchạy 300*k lần, với k=1 10 • Mộilầnchạydữ liệu được phát sinh ngẫu nhiên – Vẽđồthị, tính phương sai độ lệch chuNn – Ướclượng độ phứctạp – Viết báo cáo • Lý thuyết(6 điểm) Phạm Thế Bảo Tài liệuthamkhảo 1. Cẩmnangthuật toán – cuốn 1 – Robert Sedgewich – Trần Đan Thư. 2. Lập trình = Thuật toán + CTDL, N. Wirth 3. Algorithm Complexity & Communication Problems, J.P.Barthélemy,G.Cohen&a.Lobstein,UCLPress, London 1996. 4. Elementary Introduction to new Generalized Functions, Jean Francois Colombeau, 1991. 5. Algorithm and Complexity, Herbert S.Wilf, 1994. 6. Giảimột bài toán trên máy tính như thế nào, Hoàng Kiếm, 2003. 7. TheArtofComputerVol.1,2,3,DonaldKnuth, Addison-Wesley Phạm Thế Bảo Tổng quan về thuật toán 1. Thuậttoánlàgì? Tậphợphữuhạncáchướng dẫnrõràngđể giải quyếtmột bài toán (vấn đề). • Mở rộng (máy tính): mộtdãyhữuhạn các bước không mậpmờ và có thể thựcthiđược, quá trình hành động theo các bướcnàyphải dừng và cho được kếtquả như mong muốn. 2. Tính chấtcơ bảncủathuật toán: – Xác định = không mậpmờ +thựcthiđược – Hữuhạn – Đúng Phạm Thế Bảo 3. Ví dụ: – Mộtlớphọccầnchọnlớptrưởng theo các bước: 1. Lập danh sách sinh viên 2. Sắpthứ tự 3. Chọnngười đứng đầulàmlớptrưởng – Danh sách cầngì? – Sắptheothứ tự nào? (tăng giảm, tiêu chí nào) – Nếu trùng tiêu chí thì giảiquyếtrasao? Phạm Thế Bảo Sửalại: a) Lập danh sách theo: họ tên, ngày tháng năm sinh, điểmcácmôn,điểm trung bình cuốinăm. b) SắpxếptheoĐTB giảm. Nếu ĐTB bằng nhau Æ cùng hạng. c) Nếucó01HSđứng đầu Æ chọn, ngượclạichọn ngườicóđiểmtoáncaonhất, nếu không chọn được Æ bốcthăm. • Phân biệtmậpmờ và lựachọncóquyết định: – Mậpmờ là thiếuthôngtinhoặc có nhiềulựachọn nhưng không đủ điềukiệnquyết định, ví dụ:bước1, 2. – Lựachọncóquyết định là hoàn toàn xác định duy nhấttrongđiềukiệncụ thể củavấn đề,vídụ bướcc. Phạm Thế Bảo • Tính thựcthiđược, ví dụ: – Tính ? – Chạyxethẳng từ nhà hát lớn đến nhà thờđứcbà theo đường Đồng Khởi? • Tính dừng, ví dụ: – B1: nhậpn; – B2: s=0; – B3 i=1; – B4 nếu i=n+1 sang B8, ngượclạisang B5 – B5 cộng i vào s – B6 cộng 2 vào i – B7 quay lạiB4 – B8 Tổng cầntínhlàs 1− Phạm Thế Bảo • Đặctrưng khác củathuậttoán: – Xác định đầuvào/ra – Tính hiệuquả: khốilượng tính toán, không gian, thờigian. – Tính tổng quát Ví dụ: – giảiax 2 + bx + c = 0 – Cho mảng các số nguyên A, tìm phầntử lớnnhất. • Các phương pháp biểudiễnthuậttoán: – Ngôn ngữ tự nhiên – Sơđồ(lưu đồ) khối – Mã giả (Pseudo-code) Phạm Thế Bảo Khái niệmthuậtgiải 1. Thuậtgiảilàgì? Các cách giảichấpnhận đượcnhưng không hoàn toàn đáp ứng đầy đủ các tiêu chuẩn củathuậttoánthường đượcgọilàcácthuật giải. Đây là khái niệmmở rộng củathuậttoándựa trên tính xác định và tính đúng đắn. Ví dụ thuậtgiải Heuristic: – Nguyên lý vét cạn thông minh – Nguyên lý Greedy (tham lam) – Nguyên lý thứ tự Phạm Thế Bảo [...]... kiểm tra từ 2 đến n ⇒ độ phức tạp là O( n ) – Nếu n khoảng vài tỷ và n=2m với m là số bit lưu trữ, nếu chọn m là kích thước thuật tốn thay cho n ⇒ độ phức tạp của thuật tốn trên trong hai trường hợp là O(2m) và O(2m/2) là hàm mũ Phạm Thế Bảo Vai trò của hằng số trong phân tích • Thuật tốn A và B có độ phức tạp 1 2n + α n + O ( ) n 1 β n + O( ) n α Và β có vai trò như thế nào? • Lý thuyết: do n khá lớn... QuickSort Phạm Thế Bảo Cách tính O • Quy tắc cộng: Nếu K(n) và H(n) là thời gian thực hiện hai đọan chương trình P và Q liên tiếp, với K(n)=O(f(n)) và H(n)=O(g(n)) thì thời gian thực hiện hai đoạn này là T(n)=O(max(f(n),g(n))) • Quy tắc nhân: Nếu K(n) và H(n) là thời gian thực hiện hai đọan chương trình P và Q lồng vào nhau, với K(n)=O(f(n)) và H(n)=O(g(n)) thì thời gian thực hiện hai đoạn này là T(n)=O(f(n).g(n))... tốn học: – Kỹ thuật sơ cấp – Hàm sinh – Hốn vị và nghịch thế Phạm Thế Bảo Hướng tiếp cận thực nghiệm Các bước thực hiện: 1 2 3 4 Viết chương trình cài đặt Thực thi chương trình với nhiều bộ dữ liệu Đo và thống kê thời gian Xấp xỉ biểu đồ Hạn chế: 1 Cần phải cài đặt CT và đo thời gian 2 Bộ dữ liệu không thể đặc trưng hết 3 Khó so sánh 02 thuật giải Phạm Thế Bảo Ước lượng tiệm cận 1 Ý nghĩa: Phân lớp cấp... Bảo 2 + 1∈ O (n 2 ) • Thuật tốn T có thời gian thực hiện là f(n) và f = O(g) Ta nói thuật tóan T có độ phức tạp g (hàm g chỉ là một chặn trên của f, vẫn có thể có cách ước lượng chặt hơn) Định nghĩa: Ta nói f tương đương g nếu f=O(g) và g=O(f), ta viết f ∼ g Ví dụ: Thuật tốn T, kích thước n, có thời gian chạy f (n) = 1 n3 + 100n 10 Phạm Thế Bảo • Ta có thể chứng minh: f=O(n3) và n3=O(f) ⇒ 1 n3 + 100n... N R, ta nói f = O(g) nếu ∃n0∈N và M>0, sao cho ⏐f(n)⏐≤M⏐g(n)⏐, ∀n≥n0 Phạm Thế Bảo M*g(n) Running Time f(n) n0 Phạm Thế Bảo Ước lượng tiệm cận Mục đích: Tìm f(n) được ước lượng dựa trên những hàm g(n) đã biết Ví dụ: 1,000,001 ≈ 1,000,000 3n2 ≈ n2 Ví dụ: • Xem f(n)=n và g(n)=n2, ta có f=O(g), vì với M=1 và n0=1 Ta có ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥1 Phạm Thế Bảo • Xét f(n)=10000n và g(n)=n2 ta vẫn có f=O(g) vì... nên khơng đáng kể • Thực nghiệm: đơi khi rất quan trọng ⇒ cN n thận Phạm Thế Bảo Sự phụ thuộc/khơng phụ thuộc vào phân bố dữ liệu • Xét bài tốn A có thuật tốn T có kích thước n • Độ phức tạp của T: 1 2 • Hồn tồn xác định theo n Ví dụ: Tìm số lớn nhất của mảng các số ngun Ngẫu nhiên tùy theo phân bố của dữ liệu nhập Ví dụ: Tìm phần tử x có hay khơng có trong tập dữ liệu Cách giải quyết: 1 2 Vận dụng... f(n) và g(n) a) Nếu g(n) ≠ 0 khi n đủ lớn và f=O(g) lim n →∞ f ( n) g ( n) tồn tại thì • Nếu lim n →∞ f ( n) ≠ 0 khi n đủ lớn thì f∼g g ( n) • Nếu lim f ( n) = 0 thì f=O(g) nhưng g≠O(f) g ( n) n →∞ (-1)n f ( n) n và g(n)=n+7, lim khơng tồn tại n →∞ g ( n) Ví dụ: f(n) = do n chẵn hay lẻ Tuy nhiên lim n →∞ f ( n) = 1 ⇒ f∼g g ( n) Phạm Thế Bảo b) Nếu f là đa thức bậc ≤ m thì f=O(nm) c) Nếu f=O(g) và g=O(h)...Độ phức tạp của thuật tốn 1 Giới thiệu Bài tốn Kích thước n ? {thuật tốn giải quyết} Làm sao chọn? Cái nào tốt? Ví dụ: • Tìm số nhỏ nhất trong n số cho trước • Xác định số ngun dương m có phải là số ngun tố? • Cho một số ngun dương gồm n chữ... ∀n≥10000 • Câu hỏi: g=O(f) ? Giả sử g=O(f) thì có M và n0 sao cho n2 ≤ M (10000n), ∀n≥ n0 ⇒ n≤ 10000 M ), ∀n≥ n0 ⇒ vơ lý • Xét f(n)=10n thì ta thấy f = O(n) f = O(n2) f = O(n3) Phạm Thế Bảo • Cách viết khác: f∈ O(g) Ví dụ: 10n ∈ O(n) ∈ O(n2) • Tránh lý luận ngụy biện: 1 n 2 ⇒ 2 = O (n 1 n 2 2 • Thực chất = n 1 n 2 2 2 2 ) = n + 1 2 + 1 ⇒ ∈ O (n 2 S ai ) và n Tránh viết: O(n2) = n2+1 Viết hợp lệ: n2+1 =... bậc ≤ m thì f=O(nm) c) Nếu f=O(g) và g=O(h) thì f=O(h) d) Một số cơng thức: 1 1 1 1+ + + = ln(n) + C + O( ) 2 n n với C=0.577216 (hằng số Euler) 1 1 1 + 2 + + 2 = ? 2 n 2 Phạm Thế Bảo Phân lớp các hàm Dạng O Tên Phân loại O(1) Hằng O(log2 (n)) logarit O( n ) O( 3 n ) … Căn thức O( m n ) O(n) Tuyến tính O(n2) Bình phương O(n3) Bậc ba Đa thức … O(nm) O(cn), với c>1 O(n!) Đa thức Mũ Giai thừa Phạm Thế . PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN PhạmThế Bảo ptbao@math.hcmuns.edu.vn http://www.math.hcmuns.edu.vn/~ptbao/AlgorithmAnalysis/ Nội dung • Tổng quan về thuậttoánvàđộ phứctạpcủathuậttoán •. Đánh giá thuậttoánbằng: – Công cụ toán họcsơ cấp – Thựcnghiệm – Hàm sinh – Hoán vị • Đệ quy và phương pháp đánh giá • Đánh giá mộtsố thuật toán thông dụng • Các phương pháp giảiquyết bài toán trên. toàn đáp ứng đầy đủ các tiêu chuẩn củathuậttoánthường đượcgọilàcácthuật giải. Đây là khái niệmmở rộng củathuậttoándựa trên tính xác định và tính đúng đắn. Ví dụ thuậtgiải Heuristic: – Nguyên lý vét