1. Trang chủ
  2. » Giáo Dục - Đào Tạo

CTDL 01 basic concepts bigo

17 63 0

Đ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

33  Big-O  Một số kết Big-O quan trọng Cấu trúc liệu giải thuật - HCMUS 2016 34    Khái niệm Big-O lần đưa nhà toán học người Đức Paul Bachmann vào năm 1892 Big-O trở nên phổ biến nhờ nhà toán học Landau Do vậy, Big-O gọi ký hiệu Landau, hay Bachmann-Landau Donald Knuth xem người truyền bá khái niệm Big-O tin học từ năm 1970 Ông người đưa khái niệm BigOmega Big-Theta Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 35  Cho f g hai hàm số từ tập số nguyên số thực đến số thực Ta nói f(x) O(g(x)) tồn số C k cho: |f(x)| ≤ C |g(x)| với x > k Cấu trúc liệu giải thuật - HCMUS 2016 36  Cho f g hai hàm số từ tập số nguyên số thực đến số thực Ta nói f(x) O(g(x)) tồn số C k cho: |f(x)| ≤ C |g(x)| với x > k • Ví dụ, hàm f(x) = x2 + 3x + O(x2) Thật vậy, x > x < x2 < 2x2 Do x2 + 3x + < 6x2 Nghĩa ta chọn C = k = Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 37   Big-O giúp xác định mối quan hệ f(x) g(x), g(x) thường hàm ta biết trước Từ ta xác định tăng trưởng hàm f(x) cần khảo sát C k định nghĩa khái niệm Big-O gọi chứng mối quan hệ f(x) O(g(x)) Cấu trúc liệu giải thuật - HCMUS 2016 38   Big-O phân hoạch hàm với độ tăng khác Nếu có hai hàm f(x) g(x) cho f(x) O(g(x)) g(x) O(f(x)) ta nói hai hàm f(x) g(x) có bậc Ví dụ: f(x) 7x2 O(x2) (chọn k = 0, C = 7) Do 7x2 x2 + 3x + 2, x2 hàm có bậc Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 39   Lưu ý: 7x2 O(x3) x3 không O(7x2) Thật vậy: Nếu x3 O(7x2) ta phải tìm C k cho |x3| ≤ C|7x2|  x ≤ 7C với x > k Điều xảy khơng thể tìm k C Do vậy, quan hệ f(x) O(g(x)), hàm g(x) thường chọn nhỏ Cấu trúc liệu giải thuật - HCMUS 2016 40 Hàm đa thức: f(x) = anxn + an-1xn-1 + … + a1x + a0 Khi f(x) O(xn) Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 41  Nếu f(x) O(g(x)) c.f(x) O(g(x)) với c số Cho f1(x) O(g1(x)) f2(x) O(g2(x)) Khi đó:  tắc tổng: (f1(x)+f2(x)) O(max(|g1(x)|, |g2(x)|))  Quy tắc nhân: (f1(x) * f2(x)) O(g1(x) * g2(x))  Quy Cấu trúc liệu giải thuật - HCMUS 2016 42 Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 43 Cấu trúc liệu giải thuật - HCMUS 2016 44    Nói sau khơng xác: f(x) = O(g(x)) Nói lại khơng xác: f(x) > O(g(x)) Chỉ sử dụng sau: f(x) O(g(x)), f(x) với bậc g(x) Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 45 Cấu trúc liệu Giải thuật Chương trình Cấu trúc liệu giải thuật - HCMUS 2016 46      Tốc độ thực thi Tính xác Đơn giản, dễ hiểu, dễ bảo trì Mức phổ dụng … Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 47  Thời gian giải toán phụ thuộc vào nhiều yếu tố:  Tốc độ thực thi máy tính (phần cứng lẫn phần mềm)  Tài nguyên (ví dụ: nhớ)  Thuật toán  Làm đánh giá thời gian thực thi hiệu quả? Cấu trúc liệu giải thuật - HCMUS 2016 48  Đánh giá thời gian thực dựa phép toán quan trọng như:  Phép so sánh  Phép gán   Đánh giá cách tính số lượng phép toán quan trọng theo độ lớn liệu Từ đó, thời gian thực thuật tốn đánh giá theo hàm phụ thuộc vào độ lớn đầu vào Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 49     Bước Gán tổng = Gán i = Bước  Tăng i thêm đơn vị  Gán Tổng = Tổng + i Bước So sánh i với 10  Nếu i < 10, quay lại bước  Ngược lại, i ≥ 10, dừng thuật toán Số phép gán thuật toán bao nhiêu? Số phép so sánh bao nhiêu?  Gán: g(n) = 2n + 2, So sánh: s(n) = n Cấu trúc liệu giải thuật - HCMUS 2016 50 Độ phức tạp thuật tốn khơng đổi Khi thuật tốn cho lời giải thỏa đáng? Phải cho đáp số Phải hiệu (độ phức tạp tính tốn) Trường hợp xấu Độ phức tạp thời gian Trường hợp trung bình Độ phức tạp không gian Trường hợp tốt Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 51  Thuật toán:  B1 Đặt giá trị cực đại tạm thời số nguyên dãy  B2 So sánh số nguyên tiếp sau với giá trị cực đại tạm thời Nếu lớn giá trị cực đại tạm thời đặt cực đại tạm thời số nguyên  B3 Lặp lại B2 số nguyên dãy  B4 Dừng khơng số ngun dãy Cực đại tạm thời số nguyên lớn dãy Cấu trúc liệu giải thuật - HCMUS 2016 52     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 liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 10 53   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 liệu giải thuật - HCMUS 2016 54       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 liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 11 55   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 liệu giải thuật - HCMUS 2016 56   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) 2(1     n)  n   n n  2 n n  n2 Như độ phức tạp trung bình thuật tốn tìm kiếm O(n) Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 12 57    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) O(20000n3) nhau, thực tế hệ số quan trọng Cấu trúc liệu giải thuật - HCMUS 2016 58 Độ 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), O(n!) a>1 Độ phức tạp hàm mũ Độ phức tạp giai thừa Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 13 59 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 toán giả sử thực 10-9 giây (~ CPU 1GHz) • *: thời gian lớn 100100 năm Cấu trúc liệu giải thuật - HCMUS 2016 60     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 liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 14 61      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 liệu giải thuật - HCMUS 2016 62 Các hàm sau có O(x) hay khơng? a) b) c) f(x) = 10 f(x) = 3x + 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 liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 15 63 Phân tích độ phức tạp thuật tốn tính tổng dãy số sau: 1 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++) { scanf("%d", &x); sum = sum + x; } Cấu trúc liệu giải thuật - HCMUS 2016 64 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 liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 16 65 Hãy cho biết hàm số f(n) Big-O hàm số g(n) nào?  f(n) = (2 + n) * (3 + log2n)  f(n) = 11 * log2n + n/2 – 3542  f(n) = n * (3 + n) – * n  f(n) = log2(n2) + n Cấu trúc liệu giải thuật - HCMUS 2016 66 Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 17 ... * g2(x))  Quy Cấu trúc liệu giải thuật - HCMUS 2016 42 Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 43 Cấu trúc liệu giải thuật - HCMUS 2016 44    Nói sau khơng xác: f(x) = O(g(x)) Nói... chọn nhỏ Cấu trúc liệu giải thuật - HCMUS 2016 40 Hàm đa thức: f(x) = anxn + an-1xn-1 + … + a1x + a0 Khi f(x) O(xn) Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 41  Nếu f(x) O(g(x)) c.f(x)... f(x) với bậc g(x) Cấu trúc liệu giải thuật - HCMUS 2016 ©FIT-HCMUS 45 Cấu trúc liệu Giải thuật Chương trình Cấu trúc liệu giải thuật - HCMUS 2016 46      Tốc độ thực thi Tính xác Đơn giản,

Ngày đăng: 05/11/2019, 00:05

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w