Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 349 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
349
Dung lượng
7,84 MB
Nội dung
4 Ch ng1 CÁCKHÁINI M C N B N Mônh c:Phântíchvàthi tk gi ithu t 5 N i dung 1. Ki u d li u tr u t ng 2. quy 3. Phân tíchgi i thu t 6 1.Ki u d li utr ut ng • Mô t m tc utrúcd li utheocáctácv (operations) làm vi ctrên c utrúc d li uthì ti n l i h n là di n t nó theo nh ng chiti t thi công (implementation details). • Chúngtanêntáchnh ngkháini mv c utrúcd li ura kh i nh ngchiti tthi công. • Khim tc utrúcd li u c nhngh atheocáchnh v ytas cóm tki ud li utr ut ng (abstractdata type) hay ADT. M tki u d li utr u t ng là m tmôhìnhtoán h c icùng v inh ngtác v c nhngh atrên mô hìnhnày. 7 Vàithí d v Ki u d li utr u t ng • M t t p (set)làm tt ph pg mzero hay nhi uph nt . M tph nt không cphépxu thi nnhi uh nm t l ntrongt p. M t t p g m n ph n t cký hi u là {a 1 , a 2 ,…,a n },nh ngv trí c am tph nt trongm tt plà khôngquantr ng. • M t at p(multiset)làm t t pmàtrong ó m t ph n t c phép xu t hi nnhi u h n m t l n.Thí d ,{5,7,5,2} là m t at p. M t a t p có th có nh ngtác v sau: initialize (kh i t o) insert (thêm vào) is_empty (th a t pcór ng) delete (xoá) findmin (tìm ph n t bé nh t) 8 Vàithí d v Ki u d li utr u t ng(tt) • M t chu i (sequence)làm tt ph pcóth t c azero hay nhi uph nt ; cký hi ulà<a 1 , a 2 ,…, a n >. V trí c a m tph nt trongm tchu i là cóý nghiã.M t chu icóth có nh ngtá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) 9 Gi i m t bàitoán b ngADT th y íchl i c aki ud li utr ut ng,th xétbàitoán sau: Cho m t m ng(array) g m n s , A[1 n], hãyxác nh k ph n t l nnh ttrongm ng,v ik n.Thí d , n uA là {5,3, 1, 9, 6}, và k = 3, thì k t qu là {5, 9, 6}. Không d xây d ng m t gi ithu t gi i bàitoántrên. Tath dùngki ud li utr ut ng at p(multiset) v i các tác v : initialize(M), insert(x, M), deleteMin(M), findMin(M) 10 Suy ngh trên a t pM,tacóth vi t m tgi ithu tnh sau: Initialize(M); for i:= 1 to k do Insert(A[i],M); for i:= k+ 1 to n do if A[i]>FindMin(M) then begin DeleteMin(M);Insert(A[i],M) end; Trongthí d trên,tath yki ud li utr ut ng ã làm ngi nhóavi cxây d ng gi ithu tb ngcáchkhông b n tâm nnh ng chiti tthi cônghayhi nth c hóa. 11 Thicông m tki ud li utr ut ng Quá trìnhdùngm tc utrúc d li uc th hi nth chóa m tADT cg ilàthicôngki ud li utr ut ng.Trong s thi công này, ph n d li utr u t ng c hi nth c hóa b ng m t c utrúc d li u c th và ph ncáctác v tr u t ng c hi nth c hóa b ngcáctác v c th h n. Abstract Data Operations Data Structure Concrete operations 12 Thicông m tki u d li utr u t ng(tt.) Có th dùng m ng (array) hay danhsáchliênk t(linkedlist) thicông t ph p(set). Có th dùng m ng (array) hay danhsáchliên k t (linkedlist) thi công chu i. V iki ud li utr ut ng at pnh trongthí d tr c,ta có th dùng hàng icó utiên (priority queue) thi công. Và sau ó tacóth dùng c utrúc d li u heap thi công hàng i có utiên. 13 2. quy H th ctruyh i Thí d 1:Hàmtínhgiaith a N! = N.(N-1)! v iN 1 0!= 1 Nh ng nhngh ahàm quymàch anh ng i s nguyên cg ilành ng h th ctruyh i(recurrencerelation). function factorial(N:integer):integer; begin if N= 0 then factorial:= 1 else factorial:= N*factorial(N-1); end; [...]... thao tác tr u t ng th ng tùy thu c vào m t vài i l ng B c 3: th c hi n phân tích toán h c tìm ra các giá tr trung bình và giá tr x u nh t c a các i l ng quan tr ng 33 Hai tr ng h p phântích • Th ng thì không khó tìm ra c n trên c a th i gian tính toán c a m t gi i thu t • Nh ng phântích tr ng h p trung bình th ng òi h i m t s phân tích toán h c c u k , ph c t p c phântích • V nguyên t c, m t gi i thu... c0 và N0 sao cho g(N) nh h n c0f(N) v i m i N > N0 37 Ký hi u O Ký hi u O là m t cách h u ích phát bi u c n trên v th i gian tính toán mà c l p i v i c tính d li u nh p và chi ti t hi n th c hóa Chúng ta c g ng tìm c “c n trên” l n “c n d i” c a th i gian tính toán trong phântích tr ng h p x u nh t Nh ng c n d i (lower-bound ) thì th ng khó xác nh 38 Phântích tr ng h p trung bình V i ki u phân tích. .. thu t là vòng l p l ng hai 6 N3 (cubic) khi gi i thu t là vòng l p l ng ba 7 2N m t s gi i thu t có th i gian ch y lu th a M t vài gi i thu t khác có th có th i gian ch y N3/2, N1/2 , (lgN)2 … 36 ph c t p tính toán Chúng ta t p trung vào phântích tr ng h p x u nh t Khi phân tích, b qua nh ng th a s h ng s xác nh s ph thu c hàm c a th i gian tính toán i v i kích th c d li u nh p Thí d : Th i gian tính... c c a s phântích B c 1: c tr ng hóa d li u nh p và quy t nh ki u phântích thích h p Thông th ng, ta t p trung vào vi c - ch ng minh r ng th i gian tính toán luôn nh h n m t “c n trên” (upper bound), hay - d n xu t ra th i gian ch y trung bình i v i m t d li u nh p ng u nhiên B c 2: nh n d ng thao tác tr u t ng (abstract operation) mà gi i thu t d a vào ó làm vi c Thí d : thao tác so sánh trong gi... (add == 1) goto L1; else if (add == 2) goto L2; } return c; } } 30 3 Phântích ph c t p gi i thu t V i ph n l n các bài toán, th ng có nhi u gi i thu t khác nhau gi i m t bài toán Làm cách nào ch n gi i thu t t t nh t gi i m t bài toán? so sánh các gi i thu t cùng gi i cm t Làm cách nào bài toán? ph c t p c a m t gi i thu t: d Phântích nguyên mà gi i thu t ó c n Tài nguyên: oán các tài Ch b nh Th i... Hai cách phântích Th i gian tính toán c a m t gi i thu t th m t hàm c a kích th c d li u nh p Chúng ta quan tâm ng là n: Tr ng h p trung bình (average case): th i gian tính toán mà m t gi i thu t c n i v i m t “d li u nhâp thông th ng” (typical input data) Tr ng h p x u nh t (worst case): th i gian tính toán mà m t gi i thu t c n i v i m t “d li u nhâp x u nh t” 32 Khung th c c a s phântích B c... : Gi i thu t không quy th ng làm vi c h u hi u và d ki m soát h n 1 gi i thu t quy Làm cách nào chuy n i m t ch ng trình quy ng thành m t ch ng trình không- -quy t ng Ph ng pháp: Cho m t th t c quy P, m i l n có m t l nh g i quy n P, giá tr hi n hành c a các tham s và các bi n c c b c c t vào các ng n x p (stack) x lý sau M i l n có m t s quay v tham s và các bi n c c b s x p quy v P, giá tr c a các... ch t ch v i nhau Nh ng gi i thu t nh v y tuân theo cách ti p c n chia- -tr (divide and conquer): thành nh ng v n con, gi i Gi i thu t phân rã v n nh ng v n con này và k t h p nh ng l i gi i c a nh ng v n con thành l i gi i cho v n nguyên th y Chi n l c này bao g m 3 b phân chia (divide) tr (conquer) k t h p (combine) c sau ây m ic p quy: 16 Thí d : Xét vi c v ch nh ng v ch cách nhau 1 inch trên 1 cây... ng thô v th i gian tính toán c a m t gi i thu t (nh m m c ích phân l p ph c t p) 34 Phân l p ph c t p H u h t các gi i thu t th ng có m t thông s chính, N, s m u d li u nh p mà c x lý Thí d : Kích th c c a m ng (array) S nút c a m t th c s p th t ho c tìm ki m Gi i thu t có th có th i gian tính toán t l v i 1 N u tác v chính c th c thi m t vài l n th i gian tính toán là h ng s 2 lgN (logarithmic)... stack_empty; end; 27 tránh a nh ng cây con r ng vào stack, ta có th s a ch ng trình trên thành: procedure traverse(t: link); begin push(t); repeat t: = pop; visit(t); if t.r < > z then push(t.r); if t.l < > z then push(t.l); until stack_empty; end; ây là ch ng trình không quy hoàn ch nh nh phân duy t cây 28 Kh hàm quy N u th t c quy P là m t hàm, ta c n b sung vào qui t c chuy n i t ng quát m t s i m . 4 Ch ng1 CÁCKHÁINI M C N B N Mônh c:Phântíchvàthi tk gi ithu t 5 N i dung 1. Ki u d li u tr u t ng 2. quy 3. Phân tíchgi i thu t 6 1.Ki u d li utr ut ng • Mô t m tc utrúcd. andconquer): Gi ithu tphânrãv n thànhnh ngv n con, gi i nh ngv n con nàyvàk th pnh ngl igi i c anh ng v n conthànhl igi ichov n nguyênth y. Chi n l c này bao g m 3 b csau ây m i c p quy: phân chia (divide) tr. ncóm tl nhg i quy nP, giá tr hi nhànhc acácthams vàcácbi nc cb cc tvàocácng nx p(stack) x lý sau. M i l ncóm ts quay v quyv P,giá tr c acác tham s và cácbi n c c b s ckhôiph cl i t cácng n x p. 19 Kh