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

Phân tích và thiết kế giải thuật doc

349 551 1

Đ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 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}, 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 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. 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 giá tr x u nh t c a các i l ng quan tr ng 33 Hai tr ng h p phân tí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ân tí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ân tích • V nguyên t c, m t gi i thu... c0 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 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ân tí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ân tí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ân tí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ân tích B c 1: c tr ng hóa d li u nh p quy t nh ki u phân tí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ân tí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ân tí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ân tí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ân tích B c... : Gi i thu t không quy th ng làm vi c h u hi u 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 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 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 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

Ngày đăng: 27/06/2014, 05:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w