Phân tích và thiết kế và giải thuật - Chương 1 Các khái niệm cơ bản pps

57 325 0
Phân tích và thiết kế và giải thuật - Chương 1 Các khái niệm cơ bản pps

Đ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

Mơn h c: Phân tích thi t k gi i thu t Ch ng CÁC KHÁI NI M C N B N N i dung Ki u d li u tr u t ng quy Phân tích gi i thu t 1.Ki u d li u tr u t ng • Mơ t m t c u trúc d li u theo tác v operations) làm vi c c u trúc d li u ti n l i h n di n t theo nh ng chi ti t thi cơng (implementation details) • Chúng ta nên tách nh ng khái ni m v c u trúc d li u kh i nh ng chi ti t thi cơng c nh ngh a theo cách nh • Khi m t c u trúc d li u v y ta s có m t ki u d li u tr u t ng (abstract data type) hay ADT M t ki u d li u tr u t ng m t mơ hình tốn h c i v i nh ng tác v c nh ngh a mơ hình Vài thí d v Ki u d li u tr u t ng • M t t p (set) m t t p h p g m zero hay nhi u ph n t M t ph n t không c phép xu t hi n nhi u h n m t c ký hi u {a1 l n t p M t t p g m n ph n t a2 … n} nh ng v trí c a m t ph n t m t t p khơng quan tr ng • M t a t p (multiset) m t t p mà ó m t ph n t c phép xu t hi n nhi u h n m t l n Thí d { 2} m t a t p M t a t p có th có nh ng tác v sau: initialize (kh i t o) insert (thêm vào) is_empty (th a t p có r ng) delete (xố) findmin (tìm ph n t bé nh t) Vài thí d v Ki u d li u tr u t ng • M t chu i (sequence) m t t p h p c th t c a zero hay nhi u ph n t ; c ký hi u V trí c a m t ph n t m t chu i có ý nghi M t chu i có th có nh ng tác v sau: initialize (kh i t o) length (chi u dài) head (ph n t u) tail (ph n uôi) concatenate (ghép k hai chu i) Gi i m t toán b ng th y ch l i c a ki u d li u tr u t ng th xét toán sau: Cho m t m ng (array) g m n s A[1 n] ãy xác nh k ph n t l n nh t m ng i k n Thí d u A {5 6} k k t qu {5 6} Khơng d xây d ng m t gi i thu t gi i toán Ta th dùng ki u d li u tr u t ng a t p (multiset) v i tác v : initialize(M insert(x deleteMin(M findMin(M) Suy ngh tr n a t p M ta có th vi t m t gi i thu t nh sau: ( for to k Insert(A[i], M); for i:= k + to n if A[i] > FindMin(M) then begin DeleteMin(M); Insert(A[i],M) end; Trong th d trên, ta th y ki u d li u tr u t ng ã l m n gi n hóa vi c xây d ng gi i thu t b ng cách không b n tâm n nh ng chi ti t thi cơng hay hi n th c hóa 10 Thi c ng m t ki u d li u tr u t ng Qu trình dùng m t c u trúc d li u c th hi n th c hóa m t ADT c g i thi công ki u d li u tr u t ng Trong s thi công này, ph n d li u tr u t ng c hi n th c hóa b ng m t c u trúc d li u c th ph n tác v tr u c hi n th c hóa b ng tác v c th h n t ng Abstract Data Data Structure Operations Concrete operations 11 Thi công m t ki u d li u tr u t ng Có th d ng m ng (array) hay danh sách liên k t (linked list) thi công t p h p (set) Có th dùng m ng (array) hay danh sách liên k t (linked list) thi công chu i V i ki u d li u tr u t ng a t p nh thí d tr c, ta u tiên (priority queue thi có th dùng hàng i có cơng Và sau ó ta có th dùng c u trúc d li u heap thi u tiên công hàng i có 12 quy H th c truy h i Th d 1: Hàm t nh giai th a v iN N = N.(N-1 =1 quy mà ch a nh ng i s nguyên Nh ng nh ngh a hàm c g i nh ng h th c truy h i (recurrence relation) function ( begin if then factorial: = else factorial: = N*factorial (N-1); end; 13 Ph n tích m t gi i thu t l p tt Th d (So trùng dòng ký t - string matching): Tìm t t c nh ng s xu t hi n c a m t khuôn m u (pattern) m t v n b n (text) V n b n m t m ng T[1 n] g m n ký t m ng P[1 m] g m m ký t ki u m u m t Ki u m u P xu t hi n v i d ch chuy n (shift) s v n b n T (t c là, P xu t hi n b t u t v trí s v n b n T n u s n – m T[s+1 s+m] = P[1 m] 46 M hi ki th t gi i thu t n gi n nh t tìm t t c nh ng s xu t n c a P T s dùng m t vòng l p mà ki m tra i u n P[1 m] = T[s+1 s+m] v i m i tr n m tr có có c a s procedure begin ( for to n – m if P[1 m] = T[s+1, ,s+m] then print “Pattern occurs with shift s; end 47 procedure NATIVE-STRING-MATCHING(T,P); begin n: = |T|; m: = |P|; for s:= to n – m begin exit:= false; k:=1; while k ≤ m and not exit if P[k] ≠ T[s+k] then exit := true else k:= k+1; if not exit then print “Pattern occurs with shift s; end end 48 Gi i thu t NAIVE STRING MATCHER có hai v ng l p l ng nhau: v ng l p l p n m + l n v ng l p l p t i a m l n ph c t p c a gi i thu t tr ng h p Do ó, x u nh t là: O((n – m + 1)m) 49 Ph n tích gi i thu t h ic nb n Có m t ph ng pháp c n b n quy gi i thu t quy: công th c truy phân t ch ph c t p c a th i gian ch y i T nh ch t c a m t gi i thu t quy v i b d li u nh p k ch th c N tùy thu c vào th i gian ch y c a nh ng b d li u nh p nh h n Tính ch t c mô t b ng m t cơng th c tốn h c g i h th c truy h i (recurrence relation) d n xu t ph c t p c a m t gi i thu t ta ph i gi i h th c truy h i c quy, chúng 50 Ph n tích gi i thu t quy b ng ph ng pháp l p Công th c 1: M t ch ng trình quy mà l p qua b d li u nh p lo i i m t ph n t H th c truy h i c a nh sau: CN = CN-1 + N N C1 = Cách suy t p b ng ph pháp l p: ph c ng CN = CN-1 + N = CN-2 + (N – 1) + N = CN-3 + (N – 2) + (N – 1) + N = C1 + + … + (N – 2) + (N – 1) + N = + + … + (N – 1) + N = N(N-1)/2 = N2/2 51 Thí d Cơng th c 2: M t ch ng trình quy mà tách b d li u nh p m t b c làm vi c H th c truy h i là: CN = CN/2 + N C1 = Cách suy ph c t p: Gi s N = 2n C(2n) = C(2n-1) + = C(2n-2 )+ + = C(2n-3 )+ F = C(20 ) + n = C1 + n = n CN = n = lgN CN lgN 52 Thí d Cơng th M t ch ng trình quy mà tách ôi b d li u nh p m t b c làm vi c nh ng ph i xem xét t ng ph n t d li u nh p H th c truy h i CN = 2CN/2 + N for N C1 = Cách suy ph c t p: Assume N = 2n C(2n) = 2C(2n-1) + 2n C(2n)/2n = C(2n-1)/ 2n-1 + = C(2n-2)/ 2n-2 + +1 =n C(2n ) = n.2n CN = NlgN CN NlgN 53 Thí d Cơng th c M t ch ng trình quy mà tách d li u nh p thành hai n a m t b c làm vi c H th c truy h i C(N) = 2C(N/2) + Cách suy for N C(1) = ph c t p: Gi s N = 2n C(2n) = 2C(2n-1) + C(2n)/ 2n = 2C(2n-1)/ 2n + 1/2n =C(2n-1)/ 2n-1 + 1/2n =[C(2n-2)/ 2n-2 + 1/2n-1 ]+ 1/2n =C(2n-i)/ 2n -i + 1/2n – i +1 + … + 1/2n 54 Cu i cùng, i = n 1, ta c: C(2n)/2n = C(2)/2 + ¼ + 1/8 + + 1/2n = ẵ + ẳ + .+1/2n C(2n) = 2n C(N) N M t s h th c truy h i có v gi ng nh ng m c khó gi i chúng tìm ph c t p có th r t khác 55 Nguy n t c ph n tích ph c t p trung bình t nh ph c t p trung bình c a m t gi i thu t A, ta ph i làm m t s b c: di n t Quy t nh m t không gian l y m u (sampling space) nh ng d li u u vào (kích th c n) có th có Gi s khơng gian l y m u S = { I1, I2,…, Ik} Ta ph i nh ngh a m t phân b xác xu t p S mà bi u di n m c ch c ch n mà d li u u vào ó có th x y Ta ph i tính t ng s tác v c n b n c gi i thu t th c hi n x lý m t tr ng h p m u Ta dùng v(Ik ý hi u t ng s tác c th c hi n b i d li u u vào thu c tr ng h p v Ik 56 Ph n tích ph c t p trung bình Ta t nh tr trung bình c a s tác v c n b n b ng cách tính k v ng sau: Cavg(n) = v(I1).p(I1) + v(I2).p(I2) + …+v(Ik).p(Ik) Thí d : Cho m t m ng A có n ph n t Tìm ki m v trí mà tr X xu t hi n m ng A begin 1; while i

Ngày đăng: 05/08/2014, 20:21

Từ khóa liên quan

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

Tài liệu liên quan