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

Giáo trình giải thuật - phân tích giải thuật

12 7 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

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 345,22 KB

Nội dung

* Tính đúng đắn của giải thuật có thể được chứng minh bằng công cụ toán học (sử dụng bộ test chỉ giúp phát hiện giải thuật sai) * Giải thuật dẫn đến chương trình được cài đặt dễ dàng (tiết kiệm thời gian viết mã lệnh) * Đối với chương trình cần xử lý dữ liệu lớn thì thời gian thực hiện là tiêu chí đặc biệt quan trọng.

11/30/2010 Phân tích gi i thu t GVGD: Tr ng Ph cH i N i dung ánh giá gi i thu t ph c t p c a gi i thu t Quy t c xác đ nh đ ph c t p ánh giá c u trúc u n ánh giá gi i thu t  M i tốn có th thu t) đ gi i quy t  có nhi u ph ng pháp (gi i ánh giá gi i thu t vi c làm c n thi t đ ch n gi i thu t t i u cho toán  Gi i thu t đ l a c đánh giá d a tiêu chí  Tính đ n  Tính đ n gi n  Th i gian th c hi n 11/30/2010 ánh giá gi i thu t  Tính đ n c a gi i thu t có th đ c ch ng minh b ng cơng c toán h c (s d ng b test ch giúp phát hi n gi i thu t sai)  Gi i thu t đ n gi n d n đ n ch ng trình đ c cài đ t d dàng (ti t ki m th i gian vi t mã l nh)  i v i ch ng trình c n x lý d li u l n th i gian th c thi tiêu chí đ c bi t quan tr ng ánh giá gi i thu t  Tính hi u qu c a gi i thu t đ c đo l ng d a vào t c đ th c thi đ c cài đ t máy tính  Th i gian th c thi ph  Kích th cd li u  Tr ng thái d li u  T c đ c máy tính  Ngơn ng thu c l p trình ánh giá gi i thu t  Th i gian th c thi đ c đánh giá d a s tác s c p mà gi i thu t ph i th c hi n     Phép Phép Phép Phép thao so sánh gán toán s h c toán logic  Th i gian th c thi đ c bi u di n t ng đ i b ng hàm T(N) v i N kích th c c a d li u đ u vào  Th i gian th c thi m t hàm không âm T(N) ≥ 0, N ≥ 11/30/2010 ánh giá gi i thu t  Xét ví d tính S = A[0] + A[1] + … + A[N-1] int S = 0; for (int i = 0; i < N; i++) S = S + A[i];    Thao tác đ th c hi n tính S phép c ng phép gán câu l nh S = S + A[i] S l n th c hi n thao tác S = S + A[i] b ng s l n th c thi vòng l p: N V y th i gian th c hi n đo n ch c m t h ng s ng trình T(N) = c*N, ánh giá gi i thu t  Xét đo n ch ng trình sau int max = A[0][0]; for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) if (max < A[i][j]) max = A[i][j];     Thao tác c a đo n ch ng trình so sánh phép gán S phép so sánh b ng s l n l p c a vòng l p: N2 S phép gán max = A[i][j] đ c th c hi n ph thu c vào u ki n if (max 100) T1(N) < T2(N) => th i gian th c hi n T1 h n th i gian th c hi n T2 Ta nói th i gian th c hi n T1 t l th c hi n T2 t l thu n v i N2 thu n v i N th i gian  Cách đánh giá th i gian th c hi n nh đánh giá đ ph c t p c a gi i thu t g i 10 ph c t p c a gi i thu t  Xét gi i thu t t ng quát v i N kích th c c a toán, T(N) th i gian th c thi v i kích th c N   f(N) đ c g i đ ph c t p c a T(N) n ut n t i h ng s d ng c N0 cho T(N) ≤ c*f(N) N ≥ N0 Kí hi u đ ph c t p c a gi i thu t T(N) = O(f(N)) 11 ph c t p c a gi i thu t  Ví d tính đ ph c t p c a T(N) = (N + 1)2  Ch n c = 4, N0 = ta có (N + 1)2 ≤ c*N2, N ≥ N0  V y đ ph c t p c a hàm th i gian T(N) = O(N2)  Ví d tính đ ph c t p c a T(N) = 3*N3 + 2*N2  Ch n c = 5, N0 = ta có 3*N3 + 2*N2 ≤ c*N3, N ≥ N0  V y đ ph c t p c a hàm th i gian T(N) = O(N3) 12 11/30/2010 ph c t p c a gi i thu t  Các tr    ng h p đánh giá đ ph c t p gi i thu t Tr ng h p t t nh t: s thao tác s c p nh t mà gi i thu t th c hi n b d li u c p Tr ng h p x u nh t: s thao tác s c p nhi u nh t mà gi i thu t th c hi n b d li u c p Tr ng h p trung bình: s thao tác trung bình c ng mà gi i thu t th c hi n b d li u c p  Vi c tính tốn hàm th i gian tr ng h p trung bình khó kh n nên đ ph c t p đ c đánh giá tr ng h p x u nh t 13 ph c t p c a gi i thu t  Ví d : xét đo n ch ng trình sau for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (A[i] > A[j]) { int t = A[i]; A[i] = A[j]; A[j] = t; }  Các thao tác s c p: phép so sánh, phép gán 14 ph c t p c a gi i thu t  Phân tích phép so sánh if (A[i] > A[j])  Luôn đ  S phép so sánh (N – 1) + (N – 2) + … + = N*(N – 1)/2  c th c hi n vòng l p ph c t p theo phép so sánh c a đo n ch T(N) = O(N2) ng trình 15 11/30/2010 ph c t p c a gi i thu t  Phân tích phép gán     Vi c th c hi n ph thu c u ki n if (A[i] > A[j]) Tr ng h p x u nh t: u ki n A[i] > A[j] đúng, s phép gán 3*((N – 1) + (N – 2) + … + 1) = 3*N*(N – 1)/2 Tr ng h p t t nh t: u ki n A[i] > A[j] sai, s phép gán b ng ph c t p theo phép gán tr đo n ch ng trình T(N) = O(N2) ng h p x u nh t c a 16 N i dung ánh giá gi i thu t ph c t p c a gi i thu t Quy t c xác đ nh đ ph c t p ánh giá c u trúc u n 17 Quy t c xác đ nh đ ph c t p  Vi c xác đ nh đ ph c t p c a m t gi i thu t theo hàm th i gian có th vơ ph c t p  Tuy nhiên m t s hàm th i gian có th xác đ nh đ ph c t p theo m t s quy t c đ n gi n sau  Quy t c b h ng s  Quy t c l y max  Quy t c c ng  Quy t c nhân 18 11/30/2010 Quy t c xác đ nh đ  Quy t c b  ph c t p h ng s N u đo n ch ng trình P có th i gian th c hi n T(N) = O(k*f(N)) v i k m t h ng s d ng đ ph c t p T(N) = O(f(N)) 19 Quy t c xác đ nh đ ph c t p  Quy t c l y max  N u đo n ch ng trình có th i gian th c hi n T(N) = O(f(N), g(N)) đ ph c t p O(max{f(N), g(N)}) 20 Quy t c xác đ nh đ ph c t p  Quy t c t ng   N u đo n ch ng trình th c hi n công vi c T1 T2 v i th i gian th c hi n T1(N) = O(f(N)) T2(N) = O(g(N)) T1(N) + T2(N) = O(f(N) + g(N)) o n l nh P1 có đ ph c t p f(N), đo n l nh P2 có đ ph c t p g(N) N u th c hi n P1 r i sau th c hi n P2 đ ph c t p c a c ch ng trình f(N) + g(N) 21 11/30/2010 Quy t c xác đ nh đ ph c t p  Quy t c nhân  o n ch ng trình P có th i gian th c hi n T(N) = O(f(N)) N u th c hi n P th i gian K(N) v i K(N) = O(g(N)) đ ph c t p s O(g(N)* f(N)) 22 Quy t c xác đ nh đ M ts    tính ch t c a bi u th c đ ph c t p P(N) đa th c b c k O(P(N)) = O(Nk) f(N) > N, logaf(N) = logab*logbf(N) => O(logaf(N)) = O(logbf(N)) ph c t p c a gi i thu t c p logarit c a f(N) O(logf(N)) ph c t p hàm h ng, kí hi u O(1)   ph c t p Gi i thu t có đ ph c t p c p 2N, N!, NN gi i thu t có đ ph c t p hàm m log2N < N < N.log2N < N2 < N3 < 2N < N! < NN v i N l n 23 N i dung ánh giá gi i thu t ph c t p c a gi i thu t Quy t c xác đ nh đ ph c t p ánh giá c u trúc u n 24 11/30/2010 ánh giá c u trúc u n  L nh gán  =  Th i gian c a thao tác b ng th i gian th c hi n bi u th c vd: d = sqrt(b*b – 4*a*c): ph thu c hàm sqrt a = sin(x): ph thu c hàm sin 25 ánh giá c u trúc u n  L nh r nhánh if (đi u ki n) //th i gian th c hi n T1(N) L nh 1; //th i gian th c hi n T2(N) else L nh 2; //th i gian th c hi n T3(N)  Th i gian th c hi n T(N) = T1(N) + max(T2(N), T3(N)) 26 ánh giá c u trúc u n  L nh vòng l p: while (đi u ki n) //th i gian th c hi n T0(N) câu l nh; //th i gian th c hi n Ti(N)  Th i gian th c hi n: X(N): s l n l p Ti(N): th i gian th c hi n T0(N): u ki n l p  l n th i Trong tr ng h p vịng l p khơng xác đ nh đ c s l n l p ta ph i xét s l n l p tr ng h p x u nh t 27 11/30/2010 Bài t p  Tính th i gian th c hi n đ ph c t p c a đo n ch ng trình tính t ng n giá tr ng i dùng nh p vào t bàn phím s = 0; for (int i = 0; i < n; i++) { cin>>x; s = s + x; } 28 Bài t p  Tính th i gian th c hi n đ ph c t p c a đo n ch ng trình tìm ma tr n tích c a A kích th c NxK v i ma tr n B kích th c KxM for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) { C[i][j] = 0; for (int p = 0; p < K; p++) C[i][j] = C[i][j] + A[i][p]*B[p][j]; } 29 Bài t p  D a vào hàm th i gian c a gi i thu t đ đánh giá đo n ch ng trình sau t t h n đ gi i tốn tính v i N, k ngun d ng Cho bi t đ ph c t p c a đo n ch ng trình 30 10 11/30/2010 Bài t p  Cách int GiaiThua(int N) { int P = 1; for (int i = 1; i

Ngày đăng: 11/05/2021, 08:12

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

TÀI LIỆU LIÊN QUAN