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

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

56 25 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 56
Dung lượng 1,3 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài Giảng điện tử Phân tích và thiết kế giải thuật. Tiến sĩ Dương Tuấn Anh. Chương 2: Phân tích độ phức tạp của một số giải thuật sắp thứ tự và tìm kiếm. Xét những phương pháp sắp thứ tự một tập tin gồm các mẫu tin có chứa khoá. Khoá mà lại 1 phần của mẫu tin, được dùng để điều khiển việc sắp thứ tự.

Trang 1

Ch ng 2

Trang 3

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 c#c

m u tin (record) c% ch a kh%a (key) Kh%a m' l' m t ph n

c a m u tin, c d)ng i u khi n vi c s p th t

M c ti+u: s p x p c#c m u tin sao cho c#c tr kh%a c a

ch-ng c% th t theo m t qui lu t th t n'o %

Trang 4

c)ng tr kh%a trong t p tin.

Trang 6

S p th t b ng ph ng ph p ch n

3 t ng:

Tr c ti+n t m ph n t nh nh t trong m ng v ho#n in% v i ph n t ang v tr th nh t trong m ng ' r it/m ph n t nh th nh/ trong m ng v' ho#n i n% v i

ph n t ang v tr th nh/ trong m v' c th cho

Trang 7

min :=i;

for j :=i+1 to N do

if a[j]<a[min] then min :=j;

t :=a[min]; a[min] :=a[i];

a[i] :=t;

end;

end;

Trang 10

v:=a[i]; j:= i;

while a[j-1]> v dobegin

a[j] := a[j-1]; // pull downj:= j-1 end;

a[j]:=v;

end;

end;

Trang 11

Nh ng l v gi i thu t insertion sort

Ch-ng ta d)ng m t tr kh%a 5c m canh8 (sentinel) t i

a[0], l'm cho n% nh h n ph n t nh nh t trong m ng

2 V1ng l p ngo'i c a gi i thu t c th c thi N-1 l n

3 Trung b/nh c% kho ng ch ng (i-1)/2 so s#nh c th c

thi trong v1ng l p trong Do %, trong tr ng h p trungb/nh, t ng s l n so s#nh l':

(N-1)/2 + (N-2)/2 + + 1/2 =N(N-1)/4

=O(N2)

Trang 13

2 Gi i thu t Quick sort

i thu t c n b n c a Quick sort c ph#t minh n m

Trang 15

ii) t t c nh ng ph n t trong nh%m a[left], , a[i-1] th/ nh

h n hay b ng a[i]

iii) t t c nh ng ph n t trong nh%m a[i+1], , a[right] th/

l n h n hay b ng a[i]

Example:

Trang 16

Th# d v ph n ho ch

s ch-ng ta ch n ph n t th nh t hay ph n t t n c)ng tr#i (leftmost ) nh l' ph n t s c a v v tr -ng c an% ( Ph n t n'y c g i l' ph n t ch t - pivot)

Trang 17

repeat j:=j+1 until a[j] >= a[left];

repeat k:=k-1 until a[k]<= a[left];

if j< k then swap(a[j],a[k]) until j>k;

swap(a[left],a[k]); //finish partitioning quicksort2(left,k-1);

quicksort2(k+1,right) end;

end;

Trang 18

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 ra v i Quicksort l khi m i l n

ph0n ho ch chia t p tin ra l'm hai ph n b ng nhau

i u n'y l'm cho s l n so s#nh c a Quicksort th a m6n h

th c truy h i:

CN = 2CN/2 + N

S h nh 2CN/2 l' chi ph c a vi c s p th t hai n a t p tin

v' N l' chi ph c a vi c x t t ng ph n t khi ph0n ho ch l nu

T ch ng 1, vi c gi i h th c truy h i n'y 6 a n l i

gi i:

CN N lgN

Trang 19

Nh v y t ng s l n so s#nh s l':

n + (n-1) + ; + 2 + 1 = n(n+1) 2 =

(n2 + n) 2 = O(n2)

ph c t p tr ng h p x u nh t c a Quicksort l' O(n2)

Trang 22

Chia c hai v v i N(N+1) ta c h th c truy h i:

CN (N+1) = CN-1/N + 2/(N+1)

= CN-2 /(N-1) + 2/N + 2/(N+1)

.

Trang 24

Kh quy gi i thu t Quicksort

if (i left) > (right i) then

begin push(left); push(i-1); left := i+1 end

else begin push (i+1);push(right); right:=i-1

end;

end else begin right := pop; left := pop end;

until stackempty;

end;

D)ng ng n x p (stack) ta c% th chuy n Quicksort th'nh m t

gi i thu t kh9ng quy

Trang 25

3 S p th t d a v%o c s

Trong nhi u ng d n #c tr kh%a c% th l' nh ng kh%a

thu c m t t m h n nh n'o %

C#c ph ng ph#p s p th t m' l i d ng t.nh ch t s c ac#c kh%a c g i l' s p th t d a v#o c s (radix sort)

Trang 26

Cho m t kh a c di n t d i d ng m t s nh ph0

m t t#c v c n thi t l' tr ch c#c t p bit k nhau t m t s

V I ng9n ng m#y, c#c bit c tr.ch t s nh ph0n nh

c#c t#c v nh 5and8 v' 5shift8 tr+n c#c bit

Th d : Ta c% th tr.ch hai bit u c a m t s 10 bit b ng

c#ch d)ng t#c v 5shift right8(d ch sang ph i) 8 bit r i th c

hi n t#c v 5and8 t ng bit v i m t n 0000000011

Trong ng9n ng Pascal, nh ng t#c v tr+n c% th c gi

l p b ng hai t#c v div v' mod

Trang 27

Trong gi i thu t s p th t d a v'o c s gi s 6 t n t i

h'm bit x,k,j :integer):integer m' tr v j bit xu t hi n c#ch kbit k t m c b+n ph i trong s x

Trang 28

Gi i thu t s p th t ho n v c s

Ph ng ph#p c n b n c a gi i thu t s p th t ho n v c s(exchange radix sort) l' xem x t t ng bit c a tr kh%a t tr#isang ph i

3 t ng: K t qu c a s so s#nh gi a hai tr kh%a ch t)y

thu c v'o gi# tr c a t ng bit t i v tr u ti+n m' ch-ng kh#cnhau ( c t tr#i sang ph i)

Trang 29

S p th t ho n v c s

S p th t ho#n v c s (Radix Exchange Sort)

Vi c s p th t t p tin c th c hi n theo m t c#ch gi ng

nh thao t#c ph0n ho ch trong Quicksort

duy t t tr#i sang ph i t/m tr kh%a m' b t u b ng

bit 1,

duy t t ph i sang tr#i t/m tr kh%a m' b t u b ng

bit 0,

ho#n v hai tr kh%a n'y,

v' ti p t c qu# tr/nh n'y cho n khi hai con tr giao

nhau

Trang 30

procedure ix_exchange(1, r, b : integer);

while (bits(a[i], b, 1)=0) and (i <j) do i:=i+1;

while (bits(a[j], b, 1)=1) and (i<j) do j:= j-1;

Trang 31

S p th t ho n v c s tt

s m ng a[1 N] ch a c#c s nguy+n d ng nh h n 232

(sao cho ch-ng c% th c di n t th'nh c#c s nh ph0n bit)

Trang 33

CN = 2CN/2 + N.

Trong gi i thu t s p th t ho#n v c s , s ph0n ho ch

th ng d ph m vi trung t0m h n l' trong in Quicksort

Trang 34

th ng xuy+n c th+m v'o t p tin l n.

Nh%m c#c ph n t c nh v'o u9i c a t p tin l n v' to'n b t p tin c s p th t tr l i.

T/nh hu ng % r t th.ch h p cho thao t#c tr n.

Trang 35

Ghi ch-: Gi i thu t d)ng a[M+1] v' b[N+1] l'm ph n

t c m canh ch a hai gi# tr l n h n m i tr kh%a kh#c

Nh ch-ng, khi m t trong hai m ng 6 c n th/ v1ng l p s

a ph n c1n l i c a m ng c1n l i v'o m ng c

Trang 36

S p th t b ng ph ng ph p tr n

M t khi ta c th t c tr n ta d)ng n% l'm c s x0y

d ng m t th t c s p th t quy

s p th t m t t p tin n'o %, ta chia th'nh hai o n

b ng nhau, s p th t hai o n n'y m t c#ch quy v' r i

tr n hai o n l i v i nhau

Gi i thu t sau s p th t m ng a[1 r], d)ng m ng b[1 r]

l'm trung gian,

Trang 37

end;

Trang 39

T.nh ch t 1: S p th t b ng ph ng ph p tr n c n

kho ng NlgN so s nh s p b t k t p tin N ph n t n#o

i v i gi i thu t mergesort quy, s l n so s#nh c m9 t b ng h th c truy h i: CN = 2CN/2 + N, v i C1 = 0 Suy ra:

Trang 40

5 S p th t ngo i

S p th t c#c t p tin l n l u tr tr+n b nh ph c g i l'

s p th t ngo i (external sorting)

S p th t ngo i r t quan tr ng trong c#c h qu n tr c s

Trang 42

X p th t ngo i b ng p.p tr n External Sor merg

K thu t th9ng 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-mergealgorithm)

Trang 43

(memory-X p th t ngo i b ng p.p tr n

1 Trong b c 1, m t s run c th t c t o ra b ng c#ch sau:

i = 0;

repeat

blocks of the file, or the rest of the file, whichever issmaller;

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

2 Trong b #c run c tr n l i

Trang 44

Tr n run

Tr ng h p c bi t:

s s r < M Ta c th d nh 1 trang c a b

m cho m i run v d nh ch b nh c1n l i ch a m t trang

c a k t qu xu t ra 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

Trang 45

Tr n run ng h p t ng qu

T#c v tr n l' 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

th/ kh9ng th d'nh m t trang trong b m cho m i run

trong 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 c#c u v'o, s

tr n c% th ti p nh n M-1 runs nh l' c#c u v'o

Trang 46

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 v' c

th cho n khi t t c c#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 6 c gi m i n'y v n c1n M, m t chuy n

n a s c th c thi v i c#c run c t o ra b i chuy n uti+n l'm u v'o

M i chuy n l'm gi m t ng s run m t th a s M : 1 C#c

chuy n c l p l i nhi u nh c n thi t cho n khi t ng s run

nh h n M; chuy n cu i c)ng s t o ra k t qu l' m t t p tinc% th t

Trang 47

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 3 trang.

Trong giai o n tr n, hai trang c d)ng l'm u v'o v' m t trang c d)ng ch a k t qu

Giai o n tr n 1i h i hai chuy n.

Trang 51

6 T'm ki m tu n t

type node = record key, info: integer end;

var a: array [0 maxN] of node;

Trang 52

unction seq_insert (v: integer): integer;

Trang 55

T'm ki m chia i binary searc

function binarysearch(v:integer): integer;var x, 1, r: integer;

begin1: = 1; r: = N;

repeatx: = (1+r) div 2

if v < a[x].key then r: = x 1else l: = x+1

Ngày đăng: 09/05/2021, 18:16

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w