Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 24 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
24
Dung lượng
104 KB
Nội dung
Môn: CẤU TRÚC DỮ LIỆU VÀ GiẢI THUẬT NỘI DUNG MÔN HỌC Chương 0: GIỚI THIỆU CHUNG Chương 1: DANH SÁCH (LIST) Chương 2: STACK-QUEUE Chương 3: ĐỆ QUY Chương 4: KỸ THUẬT TÌM KIẾM (SEARCHING) Chương 5: KỸ THUẬT SẮP XẾP (SORTING) Chương 6: CÂY (TREE) ÔN TẬP - KIỂM TRA (REVIEW – TEST) TÀI LIỆU THAM KHẢO [1] Bài giảng & Bài thực hành CTDL - Trường ĐHCN [2] Giáo trình Cấu trúc liệu 1, Trần Hạnh Nhi – Dương Anh Đức, Trường DHKHTN – DHQG TP.HCM [3] Cấu trúc liệu, Nguyễn Trung Trực, Trường DHBK – DHQG TP.HCM [4] Data structures and Program Design in C++ Môn: CẤU TRÚC DỮ LIỆU VÀ GiẢI THUẬT Chương 0: GIỚI THIỆU CHUNG NỘI DUNG CHƯƠNG 1.1 Tầm quan trọng cấu trúc liệu 1.2 Thiết kế giải thuật 1.3 Phân tích giải thuật 1.4 Phân tích thời gian thực giải thuật 1.5 Các tiêu chuẩn đánh giá cấu trúc liệu 1.6 Các kiểu liệu 1.1 Tầm quan trọng CTDL & giải thuật * Mối quan hệ cấu trúc liệu giải thuật Theo Niklaus Wirth: Giải thuật + Cấu trúc liệu = Chương trình Điều hàm ý cấu trúc liệu giải thuật có mối quan hệ mật thiết với chương trình Do việc nghiên cứu cấu trúc liệu sau đôi với việc xác lập giải thuật xử lý cấu trúc 1.2 THIẾT KẾ GIẢI THUẬT Chia toán lớn thành toán nhỏ (module) Và dĩ nhiên module chia nhỏ thành module khác nữa, việc tổ chức lời giải thể theo cấu trúc phân cấp A B E C F D G H I 1.2 THIẾT KẾ GIẢI THUẬT Ví dụ: Chương trình quản lý đầu sách thư viện nhằm phục vụ độc giả tra cứu sách Cụ thể, giả sử ta có file liệu gồm ghi thông tin liên quan đến đầu sách như: tên sách, mã số, tác giả, nhà xuất bản, năm xuất bản, giá tiền, Yêu cầu: - Cập nhật liệu - Tìm kiếm - In ấn 1.2 THIẾT KẾ GIẢI THUẬT Hệ chương trình quản lý sách Cập nhật liệu Bổ sung thêm sách Sửa thơng tin file liệu Tìm kiếm Xoá liệu Xem với ghi In ấn Tra cứu Thẻ sách Thống kê Theo mã Theo ngày nhập 1.3 Phân tích giải thuật: Tính đắn Tính đơn giản (dễ hiểu, dễ quản lý, dễ lập) Tính tối ưu (hiệu quả) mặt thời gian không gian nhớ 10 1.4 Phân tích thời gian thực giải thuật: Độ phức tạp tính tốn giải thuật: Nếu thời gian thực giải thuật T(n) = Cn2 (C: hằng), ta nói rằng: Độ phức tạp tính tốn giải thuật có cấp n2 ta ký hiệu T(n) = O(n2) Tổng quát: T(n) = O(g(n)) ta nói độ phức tạp giải thuật có cấp g(n) 11 1.4 Phân tích thời gian thực giải thuật: Xác định độ phức tạp giải thuật: Việc xác định độ phức tạp tính tốn giải thuật nói chung phức tạp Tuy nhiên, thực tế độ phức tạp giải thuật xác định từ độ phức tạp phần giải thuật Cụ thể, ta có số quy tắc sau: - 12 1.4 Phân tích thời gian thực giải thuật: Xác định độ phức tạp giải thuật: - Quy tắc tính tổng: Nếu chương trình P phân tích thành phần: P1, P2 độ phức tạp P1 T1(n) = O(g1(n)) độ phức tạp P2 T2(n) = O(g2(n)) độ phức tạp P là: T(n) = O(g1(n) + g2(n)) = O(max(g1(n), g2(n))) Ví dụ: g1(n) = n2, g2(n) = n3 Suy ra: T(n) = O(n3) Lưu ý: Nếu g1(n) ≤ g2(n), ∀ n ≥ n0 Ví dụ: O(g1(n) + g2(n)) = O(g2(n)) O(n + log2n) = O(n) 13 1.4 Phân tích thời gian thực giải thuật: Xác định độ phức tạp giải thuật: - Quy tắc nhân: Nếu độ phức tạp P1 O(g1(n)), độ phức tạp P2 O(g2(n)) độ phức tạp tính tốn P1 lồng P2 O(g1(n).g2(n)) 14 1.4 Phân tích thời gian thực giải thuật: Lưu ý: Câu lệnh gán, cout, cin, If có thời gian thực số C = O(1) Câu lệnh lặp vòng g(n) lần có thời gian thực O(g(n)) O(Cg(n)) = O(g(n)) (C: hằng) Ví dụ: 1) Câu lệnh: For( i=1; i