1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuong 1 KTPhantichTT SV (2)

71 18 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

Cấu trúc

  • CHƯƠNG 1 KỸ THUẬT PHÂN TÍCH THUẬT TOÁN

  • MỤC TIÊU

  • Khái niệm THUẬT TOÁN

  • THUẬT TOÁN LÀ GÌ ?

  • VÍ DỤ VỀ THUẬT TOÁN ?

  • Các tính chất của THUẬT TOÁN

  • Đặc tả THUẬT TOÁN

  • Slide 8

  • Slide 9

  • Sự cần thiết phải phân tích, đánh giá thuật toán

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

  • Thời gian thực hiện chương trình

  • Ðơn vị đo thời gian thực hiện

  • Tính ĐỘ PHỨC TẠP

  • Thời gian thực hiện: 3 trường hợp

  • Thời gian thực hiện trong trường hợp xấu nhất

  • Tỷ suất tăng của hàm

  • Ví dụ về tỷ suất tăng

  • Khái niệm độ phức tạp của thuật toán

  • Slide 20

  • Các hàm độ phức tạp thường gặp

  • Đồ thị biến thiên các hàm độ phức tạp thường gặp

  • Cách tính độ phức tạp

  • Quy tắc tổng quát tính độ phức tạp

  • Phương pháp tính độ phức tạp

  • Ví dụ 1. Thủ tục sắp xếp “nổi bọt”

  • Tính độ phức tạp của thủ tục sắp xếp “nổi bọt”

  • Ví dụ 2. Thủ tục tìm kiếm tuần tự

  • Tính độ phức tạp của hàm tìm kiếm tuần tự

  • Bài tập

  • Ðộ phức tạp của chương trình có gọi chương trình con không đệ qui

  • Ví dụ 3. Sắp xếp “nổi bọt” gọi chương trình con

  • Tính độ phức tạp của sắp xếp “nổi bọt” có gọi chương trình con

  • Phân tích các chương trình đệ qui

  • Chương trình đệ quy

  • Thành lập phương trình đệ quy

  • Dạng phương trình đệ quy

  • Ví dụ 1. Phương trình đệ quy của chương trình đệ quy tính n!

  • Thuật toán MergeSort

  • Mô hình minh hoạ Mergesort

  • Ví dụ 2. Phương trình đệ quy của thuật toán MergeSort

  • Giải phương trình đệ quy

  • Phương pháp truy hồi

  • Ví dụ 1. Giải phương trình đệ quy bằng phương pháp truy hồi

  • Một số tổng thông dụng

  • Một số công thức Logarit

  • Lời giải tổng quát cho một lớp các phương trình đệ quy

  • Bài toán đệ quy tổng quát

  • Thành lập phương trình đệ quy tổng quát

  • Ví dụ MergeSort

  • Giải phương trình đệ quy tổng quát

  • Giải phương trình đệ quy tổng quát

  • Nghiệm thuần nhất và nghiệm riêng

  • Slide 54

  • Hàm nhân

  • Tính nghiệm riêng khi d(n) là hàm nhân

  • Ba trường hợp

  • Slide 58

  • Ba trường hợp

  • Tính nghiệm riêng khi d(n) không phải là hàm nhân

  • Quy tắc chung để giải phương trình đệ quy

  • Ví dụ 1. GPT với T(1) = 1 và

  • Ví dụ 2. GPT với T(1) = 1 và

  • Ví dụ 3. GPT với T(1) = 1 và

  • Ví dụ 4. GPT với T(1) = 1 và

  • Ví dụ 4. (tt)

  • Bài tập 4-1. GPT với T(1) = 1 và

  • Bài tập 4-2. GPT với T(1) = 1 và

  • PowerPoint Presentation

  • Bài tập 8.

  • Bài tập 8. (tt)

Nội dung

CHƯƠNG KỸ THUẬT PHÂN TÍCH THUẬT TỐN Bộ mơn CƠNG NGHỆ PHẦN MỀM Khoa Cơng nghệ Thơng tin & Truyền thông ĐẠI HỌC CẦN THƠ Võ Huỳnh Trâm MỤC TIÊU • Sau học xong chương này, sinh viên cần: – Hiểu cần thiết phải phân tích đánh giá thuật toán – Biết tiêu chuẩn để đánh giá thuật toán – Hiểu khái niệm độ phức tạp thuật toán – Vận dụng quy tắc để tính độ phức tạp chương trình khơng gọi chương trình con, chương trình có gọi chương trình khơng đệ quy – Vận dụng phương pháp thành lập phương trình đệ quy – Vận dụng phương pháp giải phương trình đệ quy Khái niệm THUẬT TỐN • Khái niệm thuật tốn (Algorithm) – Thuật toán dãy xác định thao tác áp dụng liệu vào nhằm đạt giải pháp cho vấn đề – Hai vấn đề : (1) Tìm phương pháp giải vấn đề ? – Giải pháp cho ax2 + bx + c = : rõ ràng xác định – Giải pháp cho ax5 + bx4 + cx3 + dx2 + ex + f = : khơng có giải pháp tổng quát (2) Tìm giải pháp hiệu ? – Phân biệt thuật tốn chương trình •Chương trình cài đặt thuật tốn ngơn ngữ lập trình THUẬT TỐN LÀ GÌ ? • Thuật tốn – Thủ tục tính tốn nhận tập liệu vào (input) tạo liệu (output) – Thuật toán gọi đắn (correct), thuật toán dừng cho kết với liệu vào VÍ DỤ VỀ THUẬT TỐN ? • Thuật toán ngày sống – Nấu cơm – Gọi điện thoại –… • Thuật tốn tốn học/tin học – – – – Nhân hai ma trận Tính tích phân Giải hệ phương trình bậc … Các tính chất THUẬT TỐN – Tính đắn: Thuật toán cần đảm bảo cho kết – Tính tổng qt: Thuật tốn phải giải cho lớp tốn tương tự – Tính hữu hạn: Thuật toán phải dừng sau số bước xác định – Tính xác định: Các thao tác thuật toán phải đặc tả chặt chẽ, rõ ràng, cụ thể – Tính hiệu quả: Thuật tốn phải sử dụng hiệu nguồn tài nguyên máy tính: Thời gian, Bộ nhớ Đặc tả THUẬT TỐN – Có nhiều cách đặc tả thuật tốn • Khơng hình thức : Ngơn ngữ tự nhiên Đặc tả THUẬT TỐN • Nửa hình thức : Kết hợp ngơn ngữ tự nhiên kí hiệu tốn học : Lưu đồ, Sơ đồ khối, … Đặc tả THUẬT TỐN • Hình thức : Ngôn ngữ giả (pseudocode) Ngôn ngữ Z, ngôn ngữ B, … if Delta > then begin x1=(-b-sqrt(delta))/(2*a) x2=(-b+sqrt(delta))/(2*a) xuất kết : phương trình có hai nghiệm x1 x2 end else if delta = then xuất kết : phương trình có nghiệm kép -b/(2*a) else {trường hợp delta < } xuất kết : phương trình vơ nghiệm Sự cần thiết phải phân tích, đánh giá thuật tốn • Cần phải phân tích, đánh giá thuật tốn để: – Lựa chọn thuật toán tốt thuật toán để cài đặt chương trình giải tốn đặt – Cải tiến thuật tốn có để thuật toán tốt 10 Ba trường hợp a k - [d(b)]k NR  a -1 d(b) • Trường hợp 1: a > d(b) Trong công thức trên: ak > [d(b)]k Theo quy tắc tính độ phức tạp: NR O(ak) = O(nlogba) = NTN Do T(n) = O(nlogba) Nhận xét : T(n) phụ thuộc vào a, b mà không phụ thuộc hàm tiến triển d(n)  Cải tiến thuật toán = Giảm a : giảm số toán 57 Ba trường hợp a k - [d(b)]k NR  a -1 d(b) • Trường hợp 2: a < d(b) Trong công thức trên: [d(b)]k > ak Theo quy tắc tính độ phức tạp : NR O([d(b)]k) = O(nlogbd(b)) > NTN Do T(n) = O(nlogbd(b)) Nhận xét : T(n) phụ thuộc vào b hàm tiến triển d(b)  Cải tiến thuật toán = Giảm d(b) : cải tiến việc phân chia toán tổng hợp kết 58 a k - [d(b)]k NR  a -1 d(b) Ba trường hợp Trường hợp 3: a = d(b) Công thức không xác định nên phải tính trực tiếp nghiệm riêng: k -1 j k -1  a  k k k NR [d(b)] ∑   a  a k ∑  j 0  d(b)  j 0 (do a d(b)) Do n = bk nên k = logbn ak = nlogba Vậy NR nlogbalogbn > NTN Do T(n) = O(nlogbalogbn) 59 Tính nghiệm riêng d(n) khơng phải hàm nhân • Trong trường hợp hàm tiến triển d(n) khơng phải hàm nhân khơng thể áp dụng cơng thức ứng với ba trường hợp nói mà phải tính trực tiếp NR, sau so sánh với NTN lấy MAX(NR,NTN) Nguyễn Văn Linh 60 Quy tắc chung để giải phương trình đệ quy • Lưu ý giải phương trình đệ quy cụ thể: (1)Xem phương trình có thuộc dạng phương trình tổng qt khơng ? (2)Nếu có, xem hàm tiến triển d(n) có dạng hàm nhân khơng? a) Nếu có: xác định a, d(b); so sánh a, d(b) để vận dụng ba trường hợp b) Nếu không : tính trực tiếp nghiệm để so sánh (3) Suy nghiệm phương trình = Max(NTN,NR) 61 Ví dụ GPT với T(1) = n 1/ T(n) 4T   n  2 • Phương trình cho có dạng phương trình tổng qt • d(n)=n hàm nhân • a = b = • d(b) = b = < a (Trường hợp 1)  T(n) = O(nlogba) = O(nlog4) = O(n2) 62 Ví dụ GPT với T(1) = n 2/ T(n) 4T   n  2 • Phương trình cho có dạng phương trình tổng qt • d(n)=n2 hàm nhân • a = b = • d(b) = b2 = = a (Trường hợp 3)  T(n) = O(nlogbalogbn) = O(nlog4logn) =(n2logn) 63 Ví dụ GPT với T(1) = n 3/ T(n) 4T   n  2 • Phương trình cho có dạng phương trình tổng quát • d(n)=n3 hàm nhân • a = b = • d(b) = b3 = > a (Trường hợp 2)  T(n) = O(nlogbd(b)) = O(nlog8) = O(n3) 64 Ví dụ GPT với T(1) = n T(n) 2T   nlogn  2 • PT thuộc dạng phương trình tổng qt d(n) = nlogn hàm nhân • a = b = • NTN = nlogba = nlog2 = n • Do d(n) = nlogn khơng phải hàm nhân nên ta phải tính nghiệm riêng cách xét trực tiếp 65 Ví dụ (tt) k -1   k -1 NR ∑ a jd b k - j  j k - j log2 k - j j0 k -1 j= k(k  1) 2  (k - j) 2 O(2k k ) j0 k k • Theo cách giải phương trình đệ quy tổng quát n = b k nên k = logbn, b = nên 2k = n k = logn, • NR= O(2log n log2n) = O(nlog2n) > NTN = n  T(n) = O(nlog2n) 66 Bài tập 4-1 GPT với T(1) = n T(n) T    2 • Phương trình cho có dạng phương trình tổng qt • d(n)=1 hàm nhân • a = b = • d(b) = = a  T(n) = O(nlogbalogbn) = O(nlog1logn)=O(logn) 67 Bài tập 4-2 GPT với T(1) = • • • • n T(n) 2T   logn  2 Phương trình cho có dạng phương trình tổng qt d(n)=logn khơng phải hàm nhân a = b = NTN = O(nlogba)=O(nlog2)=O(n) • Tính trực tiếp nghiệm riêng 68 Bài tập 4-2 (tt) k1 k1 j 0 j 0 NR  a j d (b k  j )  j log k  j k1 k1 j 0 j 0 NR  j (k  j )  k j  k1 k1  j2 j j 0 k 1 NR O(k  ) O(k ) 2 j 0 j NR O(k k ) O(n log n)  n NTN T (n) O(n log n) 69 Bài tập C k n 1   neu k 0 hoac k n C k  1n   C k n  • Gọi T(n) thời gian để tính Ckn • Thì thời gian để tính Ckn-1 T(n-1) • Khi n=1 k=0 k=1 => chương trình trả giá trị 1, tốn O(1) = C1 • Khi n>1, trường hợp xấu nhất, chương trình phải làm việc: – Tính Ckn-1 Ck-1n-1 : tốn 2T(n-1) – Thực phép cộng trả kết quả: tốn C a) Ta có phương trình: T(1)=C1 T(n)=2T(n-1) +C2 70 Bài tập (tt) b) Giải phương trình T(n) = 2T(n-1) + C •T(n) = 2[2T(n-2)+C2] + C2 = 4T(n-2) + 3C2 = 4[2T(n-3) + C2] + 3C2 = 8T(n-3) + 7C2 …… = 2iT(n-i) + (2i-1) C2 •T(n) = 2n-1C1 + (2n-1-1) C2 = (C1+ C2)2n-1 - C2 = O(2n) 71 ... gian, lệnh {3} tốn O (1) thời gian • Vịng lặp {2} thực (n-i -1) lần, lần O (1) vịng lp {2} tn O((n-i -1) ? ?1) = O(n-i -1) ã Vũng lp {1} có i chạy từ đến n-2 nên thời gian thực vòng lặp {1} độ phức tạp thuật... tốn O (1) , độ phức tạp Swap O (1) • Trong BubbleSort: lệnh {10 } gọi Swap nên tốn O (1) ; lệnh {9} có điều kiện so sánh a[j] < a[j -1] tốn O (1) ; vòng lặp {8} thực (n – i - 1) lần, lần tốn O (1) nên... mũ cao 18 Khái niệm độ phức tạp thuật tốn • Giả sử có thuật tốn P1 P2 với thời gian thực tương ứng T1(n) = 10 0n2 T2(n) = 5n3 - Vấn đề : P1 hay P2 nhanh hơn? - Cách giải quyết: So sánh T1(n) T2(n)

Ngày đăng: 21/11/2020, 22:42

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