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

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

Đ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

Nội dung

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