Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
4,89 MB
Nội dung
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Chương MỘT SỐ VẤN ĐỀ CƠ BẢN VỀ CTDL> 1.1 Thuật toán giải thuật 1.2 Cấu trúc liệu 1.3 Độ phức tạp thuật toán 1.4 Một số giải thuật 1.5 CASE STUDY Chương Một số giải thuật quan trọng 2.1 Thuật toán vét cạn 2.2 Thuật toán sinh (Generation Algorithm) 2.3 Thuật toán đệ qui (Recursive Algorithm 2.4 Thuật toán quay lui (Back Track Alogorithm) 2.5 Thuật toán tham lam (Greedy Algorithm) 2.6 Thuật toán chia để trị (Divide and Conquer Algorithm) 2.7 Thuật toán qui hoạch động (Dynamic Algorithm) 2.8 Thuật toán nhánh cận (Branch an Bound) 2.9 Thuật tốn tìm kiếm mẫu (Pattern Searching) 2.10 CASE STUDY Chương Stack – Queue – Link List 3.1 Một số thuật toán dựa vào ngăn xếp 3.2 Một số Thuật toán dựa vào hàng đợi 3.3 Một số Thuật toán dựa danh sách liên kết 3.4 Khử đệ qui dựa vào ngăn xếp 3.5 Ứng dụng ngăn xếp 3.6 Ứng dụng hàng đợi 3.7 Ứng dụng danh sách liên kết 3.8 CASE STUDY Chương Cây nhị phân 4.1 Một số thuật thuật ngữ 4.2 Các thao tác nhị phân 4.3 Cây nhị phân tìm kiếm 4.4 Cây nhị phân cân 4.5 B-Tree 4.6 Cây đỏ đen 4.7 Cây tổng quát 4.8 CASE STUDY Chương Các thuật toán đồ thị 5.1 Một số thuật toán đồ thị vơ hướng 5.2 Một số thuật tốn đồ thị có hướng 5.3 Một số thuật tốn đồ thị Euler 5.4 Một số thuật toán đồ thị Hamilton 5.5 Một số thuật toán đồ thị đầy đủ 5.6 Một số thuật tốn đồ thị hai phía 5.7 Luồng cực đại mạng 5.8 CASE STUDY Chương Sắp xếp tìm kiếm 6.1 Sắp xếp đơn giản 6.2 Sắp xếp nhanh (Quick Sort) 6.3 Sắp xếp kiểu hòa nhập (Merge Sort) 6.4 Sắp xếp kiểu vun đống (Heap Sort) 6.5 Tìm kiếm tuyến tính 6.6 Tìm kiếm nhị phân 6.7 Tìm kiếm theo số 6.8 Tìm kiếm nhị phân 6.9 CASE STUDY TÀI LIỆU THAM KHẢO: [1] Robert Sedgewick, “Algorihms”, McGraw Hill Company, 2006, Vol 1, 2, 3, [2] N Knuth, “The Art of Programming”, McGraw Hill Company, 2006, Vol 1, 2, 3, [3] Robert Sedgewick, “Cẩm nang thuật toán”, Nhà xuất khoa học kỹ thuật Hà Nội, 2004, Vol 1, 2, 3, [4] Lê Minh Hoàng, “Bài giảng chuyên đề”, Nhà xuất khoa học kỹ thuật Hà Nội, 2008 YÊU CẦU: Hiểu phương pháp biểu diễn thuật toán Đánh giá độ phức tạp thuật tốn Cài đặt thuật tốn ngơn ngữ C++ Hoàn thành CASE STUDY theo chương PHƯƠNG PHÁP ĐÁNH GIÁ: • CASE STUDY : 10% • CASE STUDY : 10% • CASE STUDY : 10% • CASE STUDY : 10% • CASE STUDY : 10% • CASE STUDY : 10% • Chuyên cần : 20% • Trả lời vấn đáp : 20% CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT NỘI DUNG: Chương MỞ ĐẦU 1.1 Qui trình giải vấn đề máy tính 1.2 Thuật tốn giải thuật 1.3 Cấu trúc liệu 1.4 Độ phức tạp thuật toán 1.5 Một số thuật toán 1.6 CASE STUDY 1.1 Qui trình giải vấn đề máy tính •Xác định u cầu tốn: Xem xét tốn cần xử lý vấn đề gì? Giả thiết biết trước lời giải cần đạt u cầu gì? Ví dụ thời gian, hay khơng gian nhớ •Tìm cấu trúc liệu biểu diễn tốn: Cấu trúc liệu phải biểu diễn đầy đủ đối tượng thơng tin vào tốn Các thao tác cấu trúc liệu phải phù hợp với thao tác thuật toán lựa chọn Cấu trúc liệu phải cài đặt ngôn ngữ lập trình cụ thể đáp ứng u cầu tốn •Tìm thuật tốn: ứng với cấu trúc liệu lựa chọn: • Cài đặt thuật tốn cấu trúc liệu lựa chọn • Kiểm thử chương trình cài đặt theo thuật tốn • Tối ưu chương trình: Cải tiến để chương trình tốt Ghi Các số C, n0 thỏa mãn điều kiện khơng Nếu có đồng thời f(x) O(g(x)) h(x) thỏa mãn g(x) < h(x) với x>n0 ta có f(x) O(h(n)) Ví dụ Cho f x an x n an 1 x n 1 a1 x a0 Trong đó, số thực (i =0,1, 2, ,n) Khi f(x) = O(xn) Chứng minh Thực vậy, với x>1: f x an x n an 1 x n 1 a1 x a0 an x n an 1 x n 1 a1 x a0 an x n an 1 x n a1 x n a0 x n x n an an 1 a1 a0 C.x n O( x n ) C an an 1 a1 a0 Ví dụ Tìm độ phức tạp thuật toán xếp kiểu Bubble-Sort? Void Bubble-Sort ( int A[], int n ) { for ( i=1; ik; Trong đó, C = C1 + C2; g(x) = max( g1(x), g2(x)); k = max (k1, k2) Tổng quát Nếu độ phức tạp f1(x), f2(x), , fm(x) O(g1(x)), O(g2(x)), , O(gn(x)) độ phức tạp f1(x) + f2(x) + +fm(x) O(max(g1(x), g2(x), ,gm(x)) Qui tắc nhân: Nếu f(x) có độ phức tạp O(g(x) độ phức tạp fn(x) O(gn(x) Trong đó: fn(x) = f(x).f(x)….f(x) //n lần f(x) gn(x) = g(x).g(x)…g(x).//n lần g(x) Nói cách khác, đoạn chương trình P có thời gian thực T(n)= O(f(n)) Khi đó, thực k(n) lần đoạn chương trình P với k(n) O(g(n)) độ phức tạp tính tốn O(f(n) g(n)) Chứng minh Thật theo giả thiết f(x) O(g(x)) nên tồn số C k cho với x>k |f(x)| C.|g(x) Ta có: f n x f x f x f n x C.g x .C.g x C.g n x C n g n x O g n x 1.4.3 Một số tính chất độ phức tạp thuật tốn: •Với P(n) đa thức bậc k O(P(n)) = O(nk) Vì ta nói, thuật tốn có độ phức tạp cấp đa thức O(nk) •Với a, b hai số tùy ý f(n) hàm xác định dương logaf(n)=logab.logb(f(n) Vì độ phức tạp thuật tốn cấp logarit ký hiệu O(log(f(n)) mà khơng cần quan tâm đến số •Nếu độ phức tạp thuật tốn số, nghĩa thời gian tính tốn khơng phụ thuộc vào độ dài liệu ký hiệu O(1) •Một giải thuật có cấp 2n, n!, nn gọi giải thuật hàm mũ Những giải thuật thường có tốc đọ chậm •Độ phức tạp tính tốn đoạn chương trình P số lần thực phép tốn tích cực Trong đó, phép tốn tích cực đoạn chương trình phép tốn mà số lần thực khơng phép tốn khác ... NỘI DUNG: Chương MỞ ĐẦU 1.1 Qui trình giải vấn đề máy tính 1.2 Thuật toán giải thuật 1.3 Cấu trúc liệu 1.4 Độ phức tạp thuật toán 1.5 Một số thuật tốn 1.6 CASE STUDY 1.1 Qui trình giải vấn đề... chương trình cài đặt theo thuật tốn • Tối ưu chương trình: Cải tiến để chương trình tốt 1.2 Thuật tốn giải thuật 1.2 .1 Định nghĩa thuật toán (Algorithm): Thuật toán F giải toán P dãy thao tác sơ cấp... return(a); } 1.3 Cấu trúc liệu (Data Structure) Cấu trúc liệu hiểu phương pháp biểu diễn đối tượng hành vi đối tượng giới thực hệ thống máy tính Dưới số khái niệm cấu trúc liệu 1.3 .1 Một số thuật