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

Chương 3: Phân tích độ phức tạp một số giải thuật trên cấu trúc dữ liệu pps

52 407 3

Đ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

Tiêu đề Phân tích độ phức tạp một số giải thuật trên cấu trúc dữ liệu
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Kỹ thuật và Công nghệ Thông tin
Thể loại Giáo trình
Thành phố Hà Nội
Định dạng
Số trang 52
Dung lượng 1,02 MB

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

Nội dung

Trang 1

Ch ng 3

Phân tích ph c t p m t s

gi i thu t trên c u trúc d li u

Trang 3

1.Tìm ki m tu n t trên danh s ch liên k t

Tìm ki m tu n t sequential search) c th c th c

hi n th ng qua vi c d ng danh s ch liên k t (linked

list) bi u di n c c m u tin trong t p tin.

M t l i i m: d làm cho danh s ch liên k t có th t

mà giúp cho vi c tìm ki m nhanh chóng h n.

Trang 4

Qui c: z là nút gi trong danh sách liên k t.

type link = ↑ node

node = record key, info: integer;

next: link

end;

var head, t, z: link;

i: integer;

Trang 5

Gi i thu t tìm ki m tu n t trên danh s ch

repeat t:= t↑.next until v < = t↑.key;

if v = t↑.key then listsearch:= t

else listsearch: = z

end;

Trang 6

Gi i thu t tìm ki m tu n t trên danh s ch liên

function listinsert (v: integer; t: link): link;

begin

z↑.key: = v;

while t↑.next↑.key < v do t: = t↑.next;

new(x); x↑.next: = t↑.key; t↑.next: = x;

x↑.key: = v;

listinsert: = x;

end;

Tính ch t: Tìm ki m tu n t trên danh sách liên k t có

th t dùng trung bình kho ng N/2 thao tác so sánh cho c

s tìm ki m thành công hay không thành

Trang 7

b ng nhau (1/(N+1)) c tìm th y v trí sau c ng c a

quá trình tìm ki m, s l n so sánh trung bình s là:

(1 + 2+ …+ (N+1))/(N+1) = (N+2)(N+1)/(2(N+1)) = (N+2)/2.

Trang 8

Trong m t cây tìm ki m nh phân binary search tree),

t t c các m u tin v i khóa nh h n khóa t i nút ang xét

thì cây con bên trái c a nút và

các m u tin v i khóa l n h n hay b ng khóa t i nút ang

xét thì cây con bên ph i c a nút

Trang 11

x↑.1: = z; x↑.r: = z; /* create a new node */

if v < p↑ key then p↑.1: = x /* p denotes the parent of

the new node */

else p↑.r: = x;

tree p↑.r: = x

end

Trang 13

T c v tìm ki m

type link = ↑ node;

node = record key, info: integer;

l, r: link end;

var t, head, z: link;

function treesearch (v: integer, x: link): link; /* search the node with

the key v in the binary search tree x */

Trang 14

Tính ch t c a s tìm ki m trên cây nh phân

Tính ch t: M t tác v thêm vào hay tìm ki m trên m t cây nhphân òi h i ch ng 2lnN so sánh trên m t cây c t o ra t N

tr khóa ng u nhiên

Ch ng minh:

Chi u dài l i i c a út: là s c nh c n duy t qua t nút

y v nút r

i v i m i nút trên cây nh phân, s so sánh c d ng

cho m t s tìm ki m nút y thành công chính là chi u dài

l i i c a nút y

T ng t t c chi u dài l i i c a m i nút trên cây nh phân

c g i là chi u dài l i i c a cây nh phân

Trang 15

Ch ng minh tt.)

Khi chia chi u dài l i i toàn cây v i N, ta s c s so sánhtrung bình i v i m t s tìm ki m thành công trên cây

Nh ng n u CN bi u th chi u dài l i i trung bình c a toàn

cây, ta có m t h th c truy h i sau ây, v i C1 = 1

∑N1

l n l t ch a k-1 nút và N-k

Trang 18

L

Trang 19

The following procedure is to delete the node t from the binarytree x.

procedure treedelete (t, x: link);

if t↑.r = z then /* the node t has no right child */

x: = x↑.1 /* replace the deleted node with the left child of

t */

else if t↑.r↑.1 = then /* the right chile of t has no left child */begin x: = x↑.r; x↑.1: = t↑.1 end /* replace the deleted node with its right child */

Trang 20

begin

e: = x↑.r;

while c↑.1↑.1 <> z do c: = x↑.1; /* find the leftmost node

of the right subtree */

x: = c↑.1; /* x denotes the node that will replace the

if t↑.key < p↑.key then p↑.1: = x /* connect x to the parent

of the deleted node */

else p↑.r: = x;

end;

Trang 23

Thi c ng hàng i có u tiên

u tiên:

gi n khi thêm vào m t ph n t m i nh ng khi xóa b ph n t có

u tiên l n nh t ra kh i hàng i thì ph c t p s cao.)

2 D ng c u trúc d li u heap

Trang 24

Các tr khóa trong c u trúc cây th a i u ki n heap nh sau:

Khóa t i m i nút c n ph i l n h n hay b ng) các khóa

hai con c a nó (n u có) i u này hàm ý r ng tr khóa l n

nh t nút r

Trang 25

Thí d : Heap d i d ng cây nh phân

Trang 28

C c gi i thu t trên Heap

C hai t c v quan tr ng làm vi c trên heap: thêm vào

Trang 29

T c v thêm vào

procedure upheap(k:integer)

var v: integer;

begin

v :=a[k]; a[0]:= maxint;

while a[k div 2] <= v do begin a[k]:= a[k div 2 ]; k:=k div 2 end;

a[k]:= v end;

procedure insert(v:integer);

begin

N:= N+1; a[N] := v ; unheap(N) end;

Trang 30

Thêm P ào heap

Trang 31

T c v x a b ph n t l n nh t

T c v x a s làm gi m kích th c c a heap m t n v ,

t c n làm gi m N m t n v

Nh ng ph n t l n nh t c a[1] s c x a b và cthay th b ng ph n t mà ã v trí a[N] N u tr kh a t inút r qu nh , n ph i c di chuy n xu ng th a mãn

Trang 32

a[1] := a[N]; N := N-1;

downheap(1);

end;

Trang 35

Th a s 2 là do t c v downheap mà c n hai thao t c so

s nh trong vòng l p trong và các thao tác khác ch òi h ilgN l n so sánh

Trang 37

1

9 8

3

1 5

9 8

3

2

5 1

Trang 38

9 8

3

2

8 5

3

2 1

5 3

Trang 39

ph c t p c a heap sort

Gi i h n trên này xu t ph t t gi i thu t heapsort

và tính ch t c a hai t c v thêm vào/x a b trên

Trang 42

Ví d

Kích th c b ng b m = 101 Gi s m i tr khóa g m 4 ký

t N u khó “AKEY” c mã hóa thành m t mã g m 5bit, ta có th coi khóa y là m t tràng s nh ph n nh sau:

u tham gia vào vi c chuy n i m thành v trí

Trong thí d trên, n u M = 32, hàm b m c a b t k khóa

nào c ng ch b m m i ký t sau c ng!

Trang 43

m m t khóa dài

N u khóa là m t dòng ký t khá dài thì chúng ta v n có thtính b ng m t hàm b m mà bi n i khóa t ng ký t m t

K thu t ó th hi n b ng gi i thu t l p nh sau:

Trang 44

Ph ng ph p gi i quy t ng : Xâu riêng

Separate chainin

Trong k thu t b m, chúng ta ph i quy t nh d ng cách

nào gi i quy t v n hai khóa khác nhau b m thành

type link = ↑ node;

node = record key, info: integer;

next: link end;

var heads: array [0 M] of link; t, x: link;

Trang 46

Key: A S E A R C H I N G E X A M P L E

Hash: 1 8 5 1 7 3 8 9 3 7 5 2 1 2 5 1 5

A A A L

M X

C

E

E P

G R

H S

I

Trang 47

Ph ng ph p gi i quy t ng : Dò tuy n tính

Ph ng pháp xâu riêng có th áp d ng trong tr ng h p

M < N M: kích th c b ng b m, N: s tr khóa có th có

Có m t s ph ng pháp l u N m u tin trong b ng b m cókích th c M mà M > N, nh vào nh ng v trí tr ng trong

Trang 51

Key: A S E A R C H I N G E X A M P L E

Hash: 1 0 5 1 18 3 8 9 14 7 5 5 1 13 16 12 5

R P

N M L E X I H G E E A C A A S

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

HÌNH ẢNH LIÊN QUAN

Hình v minh h a - Chương 3: Phân tích độ phức tạp một số giải thuật trên cấu trúc dữ liệu pps
Hình v minh h a (Trang 10)
Hình v sau trình bày vi c a vào b ng b m m t dãy c c ký - Chương 3: Phân tích độ phức tạp một số giải thuật trên cấu trúc dữ liệu pps
Hình v sau trình bày vi c a vào b ng b m m t dãy c c ký (Trang 50)

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