Chương 2: Phân tích độ phức tạp của một số gải thuật sắp thứ tự và tìm kiếm docx

56 475 0
Chương 2: Phân tích độ phức tạp của một số gải thuật sắp thứ tự và tìm kiếm docx

Đ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

Ch ng Phân tích ph c t p c a m t s gi i thu t s p th t tìm ki m N i dung Vài ph ng ph p s p th t c n b n Quicksort X p th t d a vào c s X p th t b ng ph ng ph p tr n X p th t ngo i Vài ph ng ph p tìm ki m c n b n Nguy n t c v s p th t Xét nh ng ph ng pháp s p th t m t t p tin g m m u tin (record) có ch a khóa (key) Khóa mà m t ph n c dùng i u n vi c s p th t c a m u tin, M c tiêu: s p x p m u tin cho tr khóa c a chúng có th t theo m t qui lu t th t ó c s p th t có th ch a b nh N u t p tin gi i thu t s p th t c g i s p th t n i (internal sorting) Vi c s p th t t p tin l u t ngo i (external sorting) b nh ph c g i s p th Hai nh m ph ng ph p s p th t Chúng ta quan t m n th i gian tính tốn c a gi i thu t s p th t M t nhóm g m ph ng pháp c n b n òi h i th i gian tính tốn t l v i N s p th t N ph n t Các ph ng pháp tiên ti n h n có th s p th t N ph n t th i gian ch y t l v i NlgN M t c tính c a ph ng pháp s p th t tính n nh (stability) M t ph ng pháp s p th t c g i n nh c th t t ng i c a ph n t b o tồn tr khóa t p tin Nh m ph ng ph p c n b n V i nh m n y, c hai ph ch n kh o sá t: ng ph p s p th t c - s p th t b ng ph ng phá p ch n (selection sort) - s p th t b ng ph ng phá p chèn (insertion sort) V i m c ích t p trung v o khía c nh gi i thu t ta s m vi c v i c c ph ng phá p mà n ch s p th t cá c m ng s nguyên theo th t l n d n c a s S p th t b ng ph ng ph p ch n Ý t ng: Tr c tiên t m ph n t nh nh t m ng v hoán i v i ph n t ang v trí th nh t m ng r i tìm ph n t nh th nhì m ng hốn i v i c th cho ph n t ang v trí th nhì m n toàn m ng ã c s p th t ” 390 205 182 45 235 → 205 182 390 235 → 205 390 235 → 390 235 → Gi i thu t s p th t b ng ph ng ph p ch n procedure selection; var i, j, min, t: integer; begin for i :=1 to N-1 begin :=i; for j :=i+1 to N if a[j] v begin a[j] := a[j-1]; // pull down j:= j-1 end; a[j]:=v; end; end; 10 X p th merg t ngo i b ng p.p tr n External Sor K thu t thông d ng nh t s p th t ngo i l gi i thu t s p th t ngo i b ng ph ng pháp tr n (external sort-merge algorithm) Ph ng pháp s p th t ngo i g m b c: t o run tr n run M: s trang (page) c a b buffer) m b nh (memory- 42 X p th Trong b sau: i = 0; repeat t ngo i b ng p.p tr n c 1, m t s run c th t c t o b ng cách blocks of the file, or the rest of the file, whichever is smaller; sort the in-memory part of the file; write the sorted data to the run file Ri; i = i+1; until the end of the file Trong b ác run c tr n l i 43 Tr n run Tr ng h p c bi t: s s r < M Ta c th d nh trang c a b m cho m i run v d nh ch b nh l i ch a m t trang c a k t qu xu t Gi i thu t ph n tr n run nh sau: ead one block of each of the N files Ri into a buffer page in memory; repeat choose the first record (in sort order) among all buffer pages; write the tuple to the output, and delete it from the buffer page; if the buffer page of any run Ri is empty and not end-of-file(Ri) then read the next block of Ri into the buffer page; until all buffer pages are empty 44 Tr n run ng h p t ng qu Tác v tr n s khái quát hóa c a phép tr n hai ng (two-way merge) c dùng b i gi i thu t s p th t n i b ng ph ng pháp tr n Nó tr n N run, ó c g i tr n nhi u ng (n-way merge) Tr ng h p t ng quát: V t ng quát, n u t p tin l n h n s c ch a c a b m N>M khơng th dành m t trang b m cho m i run b c tr n Trong tr ng h p này, s tr n ph i tr i qua nhi u chuy n (passes) Vì ch có M-1 trang c a b m dành cho u vào, s tr n có th ti p nh n M-1 runs nh u vào 45 Tr n run [tr ng h p t ng qu t] tt Chuy n tr n u tiên l m vi c nh sau: M-1 run u tiên c tr n l i th nh m t run cho chuy n k ti p R i th M-1 runs s c tr n theo cách t ng t c th cho n t t c run u tiên u c gi i quy t T i i m này, t ng s run c gi m i m t th a s M-1 N u s run ã c gi m i v n M, m t chuy n n as c th c thi v i run c t o b i chuy n u tiên làm u vào M i chuy n làm gi m t ng s run m t th a s M – Các chuy n c l p l i nhi u nh c n thi t cho n t ng s run nh h n M; chuy n cu i s t o k t qu m t t p tin có th t 46 M t thí d c a th t ngo i b ng p.p tr n s : i) m t m u tin chi m v a m t kh i ii) b m chi m trang Trong giai o n tr n, hai trang c dùng làm m t trang c dùng ch a k t qu u vào Giai o n tr n òi h i hai chuy n 47 a 19 d 31 a 19 d 31 c 33 b 14 e 16 r 16 d 21 m3 p d a 14 a b c d e b 14 c 33 e 16 d 31 m r 16 a 14 d d 21 m3 p r 16 a 14 d 17 p T o run 19 14 33 31 16 tr n pass a 14 a 19 b 14 c 33 d d 21 d 31 e 16 g 24 m3 p r 16 tr n pass 48 ph c t p c a x p th t ngo i H y tính s truy t kh i (block accesses) c a gi i thu t s p th t ngo i b ng ph ng pháp tr n br : t ng s kh i c a t p tin Trong giai o n t o run, m t kh i m t t ng s 2br truy t kh i T ng s run ban u T ng s chuy n tr n: c c ghi, em l i br/M log M-1(br/M) Trong m i chuy n tr n, t ng kh i c a t p tin l n ghi m t l n c cm t 49 ph c t p c a x p th t ngo i T ng s truy t a cho gi i thu t s p th t ngo i b ng ph ng pháp tr n là: 2br + 2br logM-1(br/M) t o run = 2br( logM-1 (br/M) +1) chuy n tr n 50 Tìm ki m tu n t Ph ng pháp n gi n nh t tìm ki m l u tr m u tìm ki m m t m u t uy t qua tin m t m ng toàn b m ng m t cách tu n t type node = record key, info: integer end; var a: array [0 maxN] of node; N: integer; procedure initialize; begin N: = end; function seq_search (v: integer, x: integer): integer; begin a[N+1].key: = v; /*sentinel */ if xr); if v = a[x].key then binarysearch: = x else binarysearch: = N+1 end; Ph 55 ph c t p c a gi i thu t tìm ki m chia i H th c truy h i c a gi i thu t n y l : CN CN/2 + Tính ch t: T m ki m chia khơng bao gi ịi h i nhi u h n lgN + so sánh cho m t s tìm ki m thành công hay không thành công 56 ... òi h i n so sánh nh n úng v trí th nh t H n n a, sau ó phân r ng nên o n bên trái r ng và phân o n bên ph i g m n – ph n t Do ó v i l n phân ho ch k , ph n t th hai s òi h i n-1 so sánh nh n... th t hai n a t p tin N chi phí c a vi c xét t ng ph n t phân ho ch l n u T ch ng 1, vi c gi i h th c truy h i ã a n l i gi i: CN N lgN 18 Phân tích ph c t p: tr ng h p x u nh t M t tr ng h p x... quicksort2(left,k-1); quicksort2(k+1,right) end; end; 17 Phân tích ph c t p: tr ng h p t t nh t Tr ng h p t t nh t x y v i Quicksort l m i l n phân ho ch chia t p tin làm hai ph n b ng i u làm cho

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

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan