Bài giảng cấu trúc dữ liệu và giải thuật giới thiệu TS đào nam anh

46 94 0
Bài giảng cấu trúc dữ liệu và giải thuật giới thiệu  TS đào nam anh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

DATA STRUCTURE AND ALGORITHM INTRODUCTION CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT GIỚI THIỆU Dr Dao Nam Anh Data Structure and Algorithm Outline – Nội dung • • • • • • Giải thuật Dữ liệu Quan hệ Dữ liệu – Giải thuật Đánh giá độ phức tạp giải thuật Đánh giá độ phức tạp liệu Ký hiệu độ phức tạp Data Structure and Algorithm Resource - Reference Slides of Simonas Šaltenis, modified by Dao Nam Anh, “Algorithms and Data Structures” Nykredit Center for Database Research, Aalborg University Major Reference: • Robert Sedgewick, and Kevin Wayne, “Algorithms” Princeton University, 2011, Addison Wesley • Giải thuật lập trình, Lê Minh Hồng, Đại Học Sư Phạm, 2002 • Cấu trúc liệu giải thuật, Đinh Mạnh Tường Data Structure and Algorithm Algorithm – Giải thuật Dữ liệu đầu vào Algorithm Kết phụ thuộc liệu đầu vào Simonas Šaltenis slide Data Structure and Algorithm Algorithm – Giải thuật Wiki: • Thuật tốn, cịn gọi giải thuật, tập hợp hữu hạn thị hay phương cách định nghĩa rõ ràng cho việc hoàn tất số việc từ trạng thái ban đầu cho trước; thị áp dụng triệt để dẫn đến kết sau dự đốn • Thuật tốn qui tắc hay qui trình cụ thể nhằm giải vấn đề số bước hữu hạn, nhằm cung cấp kết từ tập hợp kiện đưa vào Data Structure and Algorithm Algorithm – Giải thuật • Việc nghiên cứu thuật tốn có vai trị quan trọng khoa học máy tính máy tính giải vấn đề có hướng dẫn giải rõ ràng Nếu hướng dẫn giải sai không rõ ràng máy tính khơng thể giải tốn • Trong khoa học máy tính, thuật tốn định nghĩa dãy hữu hạn bước không mập mờ thực thi được, q trình hành động theo bước phải dừng cho kết mong muốn Data Structure and Algorithm Algorithm – Giải thuật Ví dụ: thuật tốn để giải phương trình bậc P(x): ax + b = c, (a, b, c số thực), tập hợp số thực bước sau đây: Nếu a = b = c P(x) có nghiệm b ≠ c P(c) vơ nghiệm Nếu a ≠ P(x) có nghiệm x = (c - b)/a Data Structure and Algorithm Algorithm – Giải thuật Mục đích thiết kế Giải thuật Mục đích triển khai Chạy đầu vào có lỗi Đúng Thích ứng Hiệu Tái sử dụng Simonas Šaltenis slide Data Structure and Algorithm Algorithm – Giải thuật Lịch sử • Nhà tốn học Batư Mohammed al-Khowarizmi, (850-780BC) đưa hệ thống giải phương trình tuyến tính phương trình bậc 2, tên ơng tiếng latin dịch Algorismus • Thuật tốn đầu tiên: Euclidean Algorithm, tìm ước số chung lớn số nguyên, 400-300 B.C • • Thế kỷ 19 – Charles Babbage, Ada Lovelace Thế kỷ 20 – Alan Turing, Alonzo Church, John von Neumann Simonas Šaltenis slide Data Structure and Algorithm Algorithm – Giải thuật Ví dụ: Sắp xếp Kết Đầu vào Dãy số theo thứ tự lớn dần Dãy số nguyên a1, a2, a3,….,an 10 Tính đắn: • b1 < b2 < b3 < … < bn Sort b1,b2,b3,….,bn 10 Thời gian chạy Phụ thuộc •Số phần tử (n) • Cách xếp (Giải thuật) Simonas Šaltenis slide Data Structure and Algorithm 10 Đánh giá giải thuật • Trường hợp xấu thường sử dụng: Rất cần thiết phải biết trường hợp xấu xảy để phòng ngừa (điều hành không lưu, phẫu thuật) Trường hợp xấu xảy thường xuyên cho số thuật toán Trường hợp trung bình cần xem xét Tuy nhiên thường khó tìm trường hợp trung bình Data Structure and Algorithm 32 Đánh giá giải thuật 1,00E+10 1,00E+09 1,00E+08 n log n sqrt n n log n 100n n^2 n^3 1,00E+07 T(n) 1,00E+06 1,00E+05 1,00E+04 1,00E+03 1,00E+02 1,00E+01 1,00E+00 1,00E-01 16 32 64 128 256 512 1024 n Data Structure and Algorithm 33 Đánh giá giải thuật 1,00E+155 1,00E+143 1,00E+131 1,00E+119 n log n sqrt n n log n 100n n^2 n^3 2^n 1,00E+107 T(n) 1,00E+95 1,00E+83 1,00E+71 1,00E+59 1,00E+47 1,00E+35 1,00E+23 1,00E+11 1,00E-01 16 32 64 128 256 512 1024 n Data Structure and Algorithm 34 Đánh giá giải thuật Insertion Sort • • • Thuật tốn Insertion Sort có phải thuật sẵp xếp tốt nhất? Có chiến lược khác dựa chia nhóm MergeSort Bài toán xếp chia thành Sắp xếp sau Ghép kết với Thời gian thực f(n log n) Data Structure and Algorithm 35 Ký hiệu độ phức tạp • Cho giải thuật thực liệu với kích thước n Giả sử T(n) thời gian thực giải thuật đó, g(n) hàm xác định dương với n Khi ta nói độ phức tạp tính tốn giải thuật là: • Θ(g(n)) tồn số dương c1, c2 n0 cho c1.g(n) ≤ f(n) ≤ c2.g(n) với n≥ n0 Ký pháp gọi ký pháp Θ lớn (big-theta notation) Trong ký pháp Θ lớn, hàm g(.) gọi giới hạn chặt (asymptotically tight bound) hàm T(.) Data Structure and Algorithm 36 Ký hiệu độ phức tạp • O(g(n)) tồn số dương c n0 cho T(n) ≤ c.g(n) với n ≥ n0 Ký pháp gọi ký pháp chữ O lớn (big-oh notation) Trong ký pháp chữ O lớn, hàm g(.) gọi giới hạn (asymptotic upper bound) hàm T(.) • Ω(g(n)) tồn số dương c n0 cho c.g(n) ≤ T(n) với n ≥ n0 Ký hiệu gọi ký pháp Ω lớn (big-omega notation) Trong ký pháp Ω lớn, hàm g(.) gọi giới hạn (asymptotic lower bound) hàm T(.) Data Structure and Algorithm 37 Ký hiệu độ phức tạp Ví dụ • • • • O(n) O(ln n) O(n2) O(nln n) Data Structure and Algorithm 38 Đánh giá độ phức tạp liệu • • Tìm xem thuật tốn sử dụng nhớ nào, hàm số phụ thuộc độ lớn liệu đầu vào Tương tự đánh giá thuật toán Data Structure and Algorithm 39 Đánh giá giải thuật Insertion Sort for j=2 to length(A) key=A[j] “chèn A[j] vào phần xếp A[1 j-1]” i=j-1 while i>0 and A[i]>key A[i+1]=A[i] i-A[i+1]:=key • • Thời gian tính tốn : O(n2) Khơng gian tính tốn: O(n) Data Structure and Algorithm 40 Ví dụ 2: Tìm kiếm Kết Đầu vào • Cho dãy số (cơ sở liệu) • số a1, a2, a3,….,an; q • Vị trí số dãy số NIL j 10 7; 2 10 7; NIL Data Structure and Algorithm 41 Ví dụ 2: Tìm kiếm j=1 while j

Ngày đăng: 06/11/2017, 12:35

Tài liệu cùng người dùng

Tài liệu liên quan