Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản - Đậu Ngọc Hà Dương

44 83 0
Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản - Đậu Ngọc Hà Dương

Đ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

Bài giảng Cấu trúc dữ liệu và giải thuật: Các khái niệm cơ bản - Đậu Ngọc Hà Dương có nội dung trình bày tổng quan về cấu trúc dữ liệu, tiêu chuẩn đánh giá thuật toán, độ tăng của hàm, độ phức tạp thuật toán, các phương pháp đánh giá độ phức tạp,... Mời các bạn cùng tham khảo!

Cấu trúc dữ liệu và giải thuật CÁC KHÁI NiỆM CƠ BẢN Giảng viên: Đậu Ngọc Hà Dương Tài liệu tham khảo  Kenneth H.Rosen, Toán rời rạc ứng dụng Tin học, ltb 5, nxb Giáo Dục, 2007, tr 131 -143  Mark A Weiss, Data Structures & Algorithm Analysis in C++, 2nd edition, Addision Wesley, 1998, p 41 – 67 Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Nội dung Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Dẫn nhập  According to Peter J Denning, the fundamental question underlying computer science is, "What can be (efficiently) automated?“ [Wikipedia.org, tháng – 2009] Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Dẫn nhập   Để giải nhu cầu tự động hóa, nhu cầu Khoa học Máy tính, nhà khoa học máy tính phải tạo trừu tượng hóa tốn giới thực,  để người sử dụng máy tính có thể hiểu được  và có thể biểu diễn và xử lý được bên trong máy  tính.  Ví dụ: Cấu trúc d ữ liệu và giải thuậệt ­ HCMUS 2011  Mơ hình hóa vi c biểu diễn cầu thủ bóng đá Dẫn nhập  Thơng thường, tìm trừu tượng hóa thường khó, vì:  Giới hạn về khả năng xử lý của máy  Phải cung cấp cho máy một mơ hình về thế giới đến  mức chi tiết như những gì con người có, khơng chỉ là  sự kiện mà cịn cả các ngun tắc và mối liên hệ Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Trừu tượng hóa: đơn giản hóa  Sự trừu tượng hóa sử dụng đơn giản hóa, thay tình phức tạp nhiều chi tiết giới thực mơ hình dễ hiểu để giải tốn  Có thể hiểu loại bớt chi tiết có tác dụng khơng có tác dụng lời giải tốn -> tạo mơ hình cho phép giải với chất tốn Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Mơ hình liệu  Mơ hình liệu (data model) trừu tượng dùng để mơ tả tốn, thơng thường mơ tả cách thức mà liệu (data) biểu diễn (represented) truy xuất (accessed) Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Kiểu liệu  Kiểu liệu (của biến) khái niệm lập trình, tập giá trị mà biến chấp nhận  Ví dụ:  Kiểu dữ liệu kiểu số nguyên,   Kiểu dữ liệu kiểu số thực,  Kiểu dữ liệu chuỗi Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Kiểu liệu 10  Kiểu liệu sơ cấp kiểu liệu mà giá trị đơn   Ví dụ: Trong ngơn ngữ lập trình C chuẩn, kiểu int  gọi là kiểu sơ cấp vì kiểu này bao gồm các số  ngun từ  ­32768 đến 32767 và các phép tốn +, ­, *, /, %… Mỗi ngơn ngữ có cung cấp sẵn kiểu liệu (basic data type), gọi kiểu liệu chuẩn Ví dụ, trong ngơn ngữ C thì các kiểu sau là kiểu dữ  Cấu trúc d  liệơ u và gi ải thuật ­ HCMUS 2011 liệữu c  bản: int, char, float…  Độ phức tạp cố định thuật tốn 30  Vì phép sơ cấp sử dụng thuật toán phép so sánh, nên phép so sánh dùng làm thước đo độ phức tạp  Tại số hạng, ta thực phép so sánh, phép xem hết dãy hay chưa phép so với cực đại tạm thời  Vì hai phép so sánh dùng từ số hạng thứ đến n, thêm phép so sánh để khỏi vòng lặp, nên ta có xác 2(n-1) + = 2n – phép so sánh  Do vậy, độ phức tạp thuật toán O(n) Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 31 Độ phức tạp trường hợp xấu  Bước Gán i =  Bước Trong i ≤ n x tăng i thêm while (i ≤ n and x ai) i = i +  Bước  Nếu i ≤ n, trả giá trị i Ngược lại, i > n, trả giá trị cho biết khơng tìm x dãy a Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011  32 Độ phức tạp trường hợp xấu  Số phép so sánh dùng làm thước đo  Ở bước vòng lặp, thực phép so sánh  Cuối vòng lặp, thực phép so sánh  Như vậy, x = ai, số phép so sánh thực (2i +1)  Trong trường hợp xấu nhất, khơng tìm x tổng số phép so sánh 2n +  Từ đó, thuật tốn tìm kiếm đòi hỏi tối đa O(n) phép so sánh Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 33 Độ phức tạp trường hợp tốt  Trong trường hợp tốt nhất, ta bắt gặp x phần tử nên cần tốn phép so sánh  Khi đó, ta nói thuật tốn tìm kiếm địi hỏi O(1) phép so sánh Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 34 Độ phức tạp trường hợp trung bình  Nếu x số hạng thứ i, số phép so sánh sử dụng để tìm x 2i +  Do đó, số phép so sánh trung bình ta cần sử dụng là: n(n 1) (2n 1) n  2(1 n) n n 2 n n n Như độ phức tạp trung bình thuật tốn tìm kiếm O(n) Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Ghi 35  Trong thực tế, phép so sánh cần để xác định xem tới cuối vòng lặp hay chưa thường bỏ qua, không đếm  Trong đa số trường hợp khơng địi khỏi khắt khe tính xác, người ta sử dụng Big-O cho trường hợp Hệ số hàm theo đa thức không tính phân tích độ phức tạp, ví dụ O(n3) Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 O(20000n3) nhau, thực tế đôi  Sự phân lớp độ phức tạp 36 Độ phức tạp Thuật ngữ/tên phân lớp O(1) Độ phức tạp số O(log2n) Độ phức tạp logarit O(n) Độ phức tạp tuyến tính O(nlog2n) Độ phức tạp nlog2n O(na) Độ phức tạp đa thức O(an), a > Độ phức tạp hàm mũ O(n!) Độ phức tạp giai thừa Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Sự phân lớp độ phức tạp 37 • logn n nlogn n2 2n n! 10 3.10-9 10-8 3.10-8 10-7 10-6 3.10-3 102 7.10-9 10-7 7.10-7 10-5 4.1013 năm * 103 1,0.10-8 10-6 1.10-5 10-3 * * 104 1,3.10-8 10-5 1.10-4 10-1 * * 105 1,7.10-8 10-4 2.10-3 10 * * 106 2.10-8 10-3 2.10-2 17 phút * * Lưu ý: • Mỗi phép tốn giả sử thực 10-9 giây (~ CPU 1GHz) • *: thời gian lớn 100100 năm Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Một số lưu ý mở rộng 38  Có số thuật tốn có độ phức tạp trường hợp xấu lớn trường hợp trung bình lại chấp nhận  Đơi khi, thực tế ta phải tìm nghiệm gần thay nghiệm xác  Có số tốn tồn chứng minh khơng có lời giải cho chúng (ví dụ toán Halting)  Trong thực tế, đa số ta khảo sát tốn có độ phức tạp đa thức trở xuống Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 39 Các phương pháp đánh giá độ phức tạp  Phương pháp đếm  Phương pháp hàm sinh  Một số kết hoán vị  Các kết quả, định lý liên quan đến cấu trúc liệu cụ thể  … Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Bài tập 40 Các hàm sau có O(x) hay không? a) f(x) = 10 b) f(x) = 3x + c) f(x) = 2x2 + 2 Mô tả thuật tốn tìm số nhỏ dãy hữu hạn số tự nhiên Có phép so sánh, phép gán thuật toán? Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Bài tập 41 Phân tích độ phức tạp thuật tốn tính tổng dãy 1 số sau: S n! Cho biết số phép gán, số phép so sánh đoạn code sau theo n: sum = 0; for (i = 0; i < n; i++) { Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Bài tập 42 Cho biết số phép gán, số phép so sánh đoạn code sau theo n: for (i = 0; i < n ; i++) for (j = 0; j < n; j++) { C[i][j] = 0; for (k = 0; k < n; k++) C[i][j] = C[i][j] + A[i][k]*B[k][j]; } Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 Bài tập 43 Hãy cho biết hàm g(n) cho hàm f(n) (f(n) = O(g(n)))  f(n) = (2 + n) * (3 + log2n)  f(n) = 11 * log2n  + n/2 – 3542  f(n) = n * (3 + n) – 7 * n  f(n) = log2(n2) + n Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 44 Hỏi Đáp Cấu trúc dữ liệu và giải thuật ­ HCMUS 2011 ... 1 0-5 4.1013 năm * 103 1,0.1 0-8 1 0-6 1.1 0-5 1 0-3 * * 104 1,3.1 0-8 1 0-5 1.1 0-4 1 0-1 * * 105 1,7.1 0-8 1 0-4 2.1 0-3 10 * * 106 2.1 0-8 1 0-3 2.1 0-2 17 phút * * Lưu ý: • Mỗi phép toán giả sử thực 1 0-9 ... tạp hàm mũ O(n!) Độ phức tạp giai thừa Cấu? ?trúc? ?dữ liệu? ?và? ?giải? ?thuật ­ HCMUS 2011 Sự phân lớp độ phức tạp 37 • logn n nlogn n2 2n n! 10 3.1 0-9 1 0-8 3.1 0-8 1 0-7 1 0-6 3.1 0-3 102 7.1 0-9 1 0-7 7.1 0-7 ... phép so sánh bao nhiêu? Cấu? ?trúc? ?d ữ liệu? ?và? ?giải? ?thuật ­ HCMUS 2011  Gán: f(2n + 2), So sánh: f(n) Độ tăng hàm 19  Big-O  Một số kết Big-O quan trọng Cấu? ?trúc? ?dữ liệu? ?và? ?giải? ?thuật ­ HCMUS 2011

Ngày đăng: 11/09/2021, 13:41

Từ khóa liên quan

Mục lục

  • Slide 1

  • Tài liệu tham khảo

  • Nội dung

  • Dẫn nhập

  • Dẫn nhập

  • Dẫn nhập

  • Trừu tượng hóa: sự đơn giản hóa

  • Mô hình dữ liệu

  • Kiểu dữ liệu

  • Kiểu dữ liệu cơ bản

  • Kiểu dữ liệu có cấu trúc

  • Kiểu dữ liệu trừu tượng

  • Cấu trúc dữ liệu

  • Chương trình

  • Tiêu chuẩn đánh giá thuật toán

  • Thời gian giải quyết 1 bài toán?

  • Đánh giá thời gian thực thi theo phép toán

  • Ví dụ

  • Độ tăng của hàm

  • Nguồn gốc lịch sử

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

Tài liệu liên quan