Tải bản đầy đủ (.pdf) (30 trang)

Cấu trúc đống và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (395.07 KB, 30 trang )

Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT
1
Mc Lc
Phn 1:M U ................................................................. 3

I.

Lớ do chn ti. .................................................................................................... 3

Phn 2:Ni Dung ................................................................. 3

Chng 1 : C s lý thuyt v cõy nh phõn. ............................................................. 3

I. nh ngha v cỏc vớ d .................................................................................. 3

1. nh ngha. ................................................................................................................ 4
2.Vớ d .......................................................................................................................... 4
II. Cõy nh phõn. ................................................................................................ 5

1. nh ngha v cỏc tớnh cht. ...................................................................................... 5
2. Biu din cõy nh phõn .............................................................................................. 5
Chng 2. Cu trỳc ng. ........................................................................................... 8

I. nh ngha . .................................................................................................... 8

1.nh ngha. ................................................................................................................. 8
2. Heap cú cỏc tớnh cht sau : ....................................................................................... 9
3. Vớ d : ....................................................................................................................... 9
4) Thut gii. ............................................................................................................... 10


II. Cỏc phộp toỏn ca Heap. ............................................................................ 10

1. Thờm mt phn t vo Heap. .................................................................................. 10
2. Xoỏ mt phn t nh nht khi Heap. .................................................................... 12
Chng 3: Cỏc ng dng ca ng ......................................................................... 13

I. ng dng ca Heap trong gii thut Heap_sort. ........................................ 13

1.Gii thut. ................................................................................................................. 13
II.ng dng ng t chc hng i cú u tiờn ............................................... 19

1.ng dng ca ng trong gii thut Hufman. .............................................. 19

2.ng dng ca ng trong gii thut xõy dng cõy bao trựm nh nht ca th liờn
thụng : ..................................................................................................................................... 23
THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT
2
Chng 4: Mụ phng v ci t cu trỳc ng v ng dng. .................................. 26

I.Mụ phng thut toỏn. .................................................................................... 26

1.Khỏi nim chung v mụ phng thut toỏn. .............................................................. 26
2.Mc ớch ca mụ phng thut toỏn. ......................................................................... 26
3.Cu trỳc tng quan ca mụ phng thut toỏn: ......................................................... 27
4. Quy trỡnh thit k nhim v ca mụ phng thut toỏn. ........................................... 27

THệ VIEN ẹIEN Tệ TRệẽC TUYEN

Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT
3
Phn 1:M U
I. Lớ do chn ti.
Hin nay, cụng ngh thụng tin vi tc phỏt trin rt nhanh. Cỏc nh khoa hc
khng nh rng cha cú mt ngnh khoa hc - cụng ngh no li cú nhiu ng dng
nh cụng ngh thụng tin. Vic ng dng cụng ngh thụng tin vo trong giỏo dc ó
tr thnh mi u tiờn hng u ca nhiu quc gia trong ú cú Vit Nam.
Trong quỏ trỡnh hc cỏc gii thut núi chung v mụn cu trỳc d liu núi riờng,
chỳng ta rỳt ra mt nhn nh chung l: nhiu gii thut phc tp tru tng, khú hiu,
khú hỡnh dung vn . Do ú chỳng ta luụn mong mun trong quỏ trỡnh hc gii thut
nờn cú nhng mụ phng trc quan chỳng ta cú th tip thu gii thut mt cỏch d
dng hn. Tuy nhiờn, vic hc tt gii thut cú rt nhiu thn li dú l giỳp cho quỏ
trỡnh t duy gii tht tt hn, phỏt hin vn nhanh hn, c bit giỳp cho vic hc
cỏc mụn hc khỏc cú tớnh logic cao c thun li hn. Nhng hc tt gii thut thỡ
khụng d dng vi nhiu ngi. Vy giỳp ngi hc tip thu mt cỏch d dng cỏc
gii thut thỡ phi xõy dng cỏc phn mn mụ phng thut toỏn.
Cu trỳc ng cú rt nhiu ng vo cỏc gii thut nhgi thut sp xp ng,
vo hng i u tiờn. Nghiờn cu cu trỳc ng hiu thờm v nú phc v trong vic
gii quyt cỏc bi toỏn
Phn 2:Ni Dung
Chng 1 : C s lý thuyt v cõy nh phõn.
I. nh ngha v cỏc vớ d
THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Báo cáo nghiên cứu khoa học Cấu trúc đống và ứng dụng

Nguyễn Thị Ngọc Anh_lớp K54A-CNTT
4

1. Định nghĩa
.
Cây là một cấu trúc phi tuyến tính. Một cây (tree) là một tập hữu hạn các nút
trong đó có một nút đặc biệt gọi là nút gốc (root), giữa các nút có một mối quan
hệ phân cấp gọi là quan hệ “cha - con”.
Có thể định nghĩa cây một cách đệ quy như sau:
1. Một nút là một cây. Nút đó cũng là gốc của cây ấy.
2. Nếu T
1
, T
2
, ..., T
n
là các cây, với n
1
, n
2
, ... n
k
lần lượt là các gốc, n là một nút
và n có quan hệ cha - con với n
1
, n
2
, ... n
k
thì lúc đó một cây mới T sẽ được tạo
lập, với n là gốc của nó. n được gọi là cha của n
1
, n

2
, ... n
k
; ngược lại n
1
, n
2
, ...
n
k
được gọi là con của n. Các cây T
1
, T
2
, ..., T
n
được gọi là các cây con
(substrees) của n.
Ta quy ước : Một cây không có nút nào được gọi là cây rỗng (null tree).
Có nhiều đối tượng có cấu trúc cây.
2.Ví dụ .
a) Mục lục của một cuốn sách, hoặc một chương trong sách, có cấu trúc cây.
b) Biểu thhức số học x + y * (z – t) + u/v, ta có thể biểu diến dưới dạng cây như
hình 1.


THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN
Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT

5
Hỡnh 1

II. Cõy nh phõn.
1. nh ngha v cỏc tớnh cht.
Cõy nh phõn l mt dng quan trng ca cu trỳc cõy. Cõy nh phõn cú cỏc c
im l: Mi nỳt trờn cõy ch cú ti a l 2 con. i vi cõy con ca mt nỳt
ngi ta cng phõn bit cõy con trỏi (left subtree) v cõy con phi (right subtree).
Nh vy cõy nh phõn l cõy cú th t.
Vớ d : Cõy hỡnh 1 l cõy nh phõn vi toỏn t ng vi gc, toỏn hng 1 ng
vi cõy con trỏi, toỏn hng 2 ng vi cõy con phi. Cỏc cõy nh phõn sau õy l
khỏc nhau, nhng nu coi l cõy khụng cú th t thỡ chỳng ch l 1.
2. Biu din cõy nh phõn
a) Lu tr k tip
Nu cú mt cõy nh phõn y , ta cú th d dng ỏnh s cho cỏc nỳt trờn cõy
ú theo th t ln lt t mc 1 tr lờn, ht mc ny n mc khỏc v t trỏi
sang phi i vi cỏc nỳt mi mc.
Vớ d : Vi hỡnh .... cõy f) cú th ỏnh s nh sau :
THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT
6

Hỡnh 2
Ta thy ngay mt quy lut quy trỏi nh sau :
Con ca cỏc nỳt th i l cỏc nỳt th 2i v 2i + 1 hoc
Cha ca nỳt th j l j/2
Nu nh vy thỡ ta cú th lu tr cõy nh phõn y bng mt vect V, theo
nguyờn tc: nỳt th i ca cõy c lu tr V[i]. ú chớnh l cỏch lu tr k tip

i vi cõy nh phõn. Vi cỏch lu tr ny nu bit c a ch nỳt cha s tớnh
c a ch nỳt con v ngc li.
Nh vy vi cõy y nờu trờn thỡ hỡnh nh lu tr s nh sau :

Tt nhiờn vi cõy nh phõn hon chnh, m cỏc nỳt mc cui u t v phớa
trỏi ( vic ỏnh s cỏc nỳt ny c liờn tc ) thỡ cỏch lu tr ny vn thớch
hp. Cũn vi cõy nh phõn dng khỏc thỡ cỏch lu tr ny cú th gõy lóng phớ do
cú nhiu phn t nh b b trng(ng vi cõy con rng). Chng hn i vi cõy
lch trỏi thỡ phi lu tr bng mt vộc t .
THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT
7
Ngoi ra nu cõy luụn bin ng ngha l cú phộp b sung, loi b cỏc nỳt
thng xuyờn tỏc ng, thỡ cỏch lu tr ny tt khụng trỏnh c cỏc nhc
im nh ó nờu trờn.
Cỏch lu tr múc ni sau õy va khc phc c nhc im ny, va phn
ỏnh c dng t nhiờn ca cõy.
b) Lu tr múc ni
Trong cỏch lu tr ny, mi nỳt ng vi mt phn t nh cú quy cỏch nh sau :

LPTR INFO RPTR
Trong ú :
- Trng INFO ng vi thụng tin (d liu) ca nỳt.
- Trng LPTR ng vi con tr, tr ti cõy con trỏi ca nỳt ú.
- Trng RPTR ng vi con tr, tr ti cõy con phi ca nỳt ú.
Vớ d : Cõy nh phõn



Hỡnh 3
THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Báo cáo nghiên cứu khoa học Cấu trúc đống và ứng dụng

Nguyễn Thị Ngọc Anh_lớp K54A-CNTT
8
Cây nhị phân trong hình 3 có dạng lưu trữ móc nối như hình sau :

Hình 4
Để có thể truy nhập vào các nút trên cây cần có một con trỏ T, trỏ tới nút gốc của
cây đó.
Người ta quy ước : Nếu cây nhị phân rỗng thì T = Null.
Với cách biểu diễn này từ nút cha có thể truy nhập trực tiếp vào nút con, nhưng
ngược lại thì không làm được.
Chương 2. Cấu trúc đống.
I. Định nghĩa
.
1.Định nghĩa.
Đống (Heap) là một cây nhị phân gắn nhãn với các nhãn là các giá trị thuộc tập
hợp được sắp thứ tự tuyến tính, sao cho những điều kiện sau đây được thực hiện:
1.Tất cả các mức của cây đều đầy, trừ mức thấp nhất có thể thiếu một số đỉnh.
2.Ở mức thấp nhất, tất cả các lá đều xuất hiện liên tiếp từ bên trái.
3. Giá trị ở mỗi đỉnh không lớn hơn giá trị của các đỉnh con của nó
THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN
Báo cáo nghiên cứu khoa học Cấu trúc đống và ứng dụng

Nguyễn Thị Ngọc Anh_lớp K54A-CNTT
9
Với điều kiện này thì không đảm bảo Heap là một cây nhị phân tìm kiếm.
2. Heap có các tính chất sau :

Tính chất 1 : Nếu ap , a2 ,... , aq là một Heap thì khi cắt bỏ một số phần tử ở hai
đầu của Heap, dãy con còn lại vẫn là một Heap.
Tính chất 2 : Mọi dãy ap , a2 ,... , aq, dãy con aj, aj+1,…, ar tạo thành một Heap
với j=(q div 2 +1).
3. Ví dụ :
Đống được lưu trong máy bởi một mảng a[1..n], với gốc ở phần tử thứ nhất, con
bên trái của đỉnh a[i] là a[2*i] con bên phải là a[2*i+1] (với 2*i<=n và
2*i+1<=n).
Khi đó nếu như a[i] <= a[2*i] và a[2*i+1] với mọi i = 1.. int(n/2). thì trong đống
a[1] (tương ứng là gốc của cây) là phần tử nhỏ nhất.




Đây là Heap (Hình 5)
THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN
Bỏo cỏo nghiờn cu khoa hc Cu trỳc ng v ng dng

Nguyn Th Ngc Anh_lp K54A-CNTT
10
4) Thut gii.
1.Xem mng ban u l mt cõy nh phõn. Mi nỳt trờn cõy lu tr mt phn t
mng, trong ú a[1] l nỳt gc v mi nỳt khụng l nỳt lỏ a[i] cú con trỏi l a[2*i]
v con phi l a[2*i+1]. Vi cỏch t chc ny thỡ cõy nh phõn thu c s cú cỏc
nỳt trong l cỏc nỳt a[1], a[n DIV 2]. Tt c cỏc nỳt trong u cú hai con,
ngoi tr nỳt a[n DIV 2] cú th ch cú mt con trỏi (trong trng hp n l mt s
chn).
2.Sp xp dóy ban u thnh Heap cn c vo giỏ tr khoỏ ca cỏc nỳt.
3.Hoỏn i a[1] cho phn t cui cựng.
4.Sp li cõy sau khi ó b i phn t cui cựng nú tr thnh mt heap mi.

Lp li quỏ trỡnh (3) v (4) cho ti khi cõy ch cũn mt nỳt ta s c mng sp
theo th t gim
II. Cỏc phộp toỏn ca Heap.
1. Thờm mt phn t vo Heap.
xen mt phn t mi vo Heap, u tiờn ta thờm mt lỏ mi lin k vi cỏc lỏ
mc thp nht, nu mc thp nht cha y; cũn nu mc thp nht y, thỡ ta
thờm vo mt lỏ mc mi sao cho cỏc iu kin 1 v 2 ca Heap c bo
tn.Trong hỡnh 6a di sau khi thờm nỳt lỏ cú giỏ tr 3 vo mc cui cựng thỡ cõy
khụng cũn l Heap. Nu sau khi thờm vo lỏ mi cõy khụng cũn l heap, thỡ ta
theo ng t lỏ mi ti gc cõy. Nu mt nh cú giỏ tr nh hn nh cha ca
nú, thỡ ta trao i nh ú vi cha ca nú. Sau quỏ trỡnh bin i ú thỡ ta cú mt
Heap hỡnh 6c.
THệ VIEN ẹIEN Tệ TRệẽC TUYEN
Báo cáo nghiên cứu khoa học Cấu trúc đống và ứng dụng

Nguyễn Thị Ngọc Anh_lớp K54A-CNTT
11

Hình 6a

Hình 6b

THÖ VIEÄN ÑIEÄN TÖÛ TRÖÏC TUYEÁN
Báo cáo nghiên cứu khoa học Cấu trúc đống và ứng dụng

Nguyễn Thị Ngọc Anh_lớp K54A-CNTT
12
Hình 6c
2. Xố một phần tử nhỏ nhất khỏi Heap.
Sét một Min Heap thì hiển nhiên gốc của cây sẽ có giá trị nhỏ nhất. Tuy nhiên

nếu loại bỏ gốc thì cây khơng còn là cây nữa. Do đó ta tiến hành như sau: đặt vào
gốc phần tử của hàng ưu tiên chứa trong lá ngồi cùng bên phải ở mức thấp nhất,
sau đó loại bỏ lá này ra khỏi cây. Hình 6a minh hoạ cây nhận được từ cây trong
hình 6 sau phép biến đổi.Tới đây cây khơng còn là heap vì điều kiện 3 của định
nghĩa Heap bị vi phạm ở gốc cây. Bây giờ ta đi từ gốc xuống. Giả sử tại một
bước nào đó ta đang ở đỉnh a và hai đỉnh con của nó tại b và c. Để xác định, ta
giả sử rằng giá trị ưu tiên của ít nhất hơn giá trị ưu tiên của đỉnh c pri(b) <=
pri(c). Khi đó ta sẽ trao đổi đỉnh a với đỉnh b và đi xuống đỉnh b. Q trình đi sẽ
dừng lại cùng lắm là khi ta đạt tới một lá của cây. Có thê thấy q trình diễn ra ở
hình 7b và 7c


(a)

THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN

×