DANH MỤC TÀI LIỆU
Bài giảng cấu trúc dữ liệu và giải thuật
ĐẠI HC ĐÀ NNG
TRƯỜNG CAO ĐẲNG CÔNG NGH THÔNG TIN
BÀI GING
CU TRÚC D LIU VÀ
GII THT
NGUYÃÙN ÂÆÏC HIÃØN
ÂAÌÔNG 2007
4 Cu trúc d liu và Gii thut
http://www.ebook.edu.vn TRUNG CAO ĐẲNG CÔNG NGH THÔNG TIN
MC LC
MC LC................................................................................................................................................................. 4
TNG QUAN V THUT TOÁN VÀ CU TRÚC D LIU............................................................................6
I. CÁC BƯỚC CƠ BN KHI GII QUYT BÀI TOÁN TIN HC..............................................................6
I.1. Xác định bài toán ............................................................................................................................... 6
I.2. Xác đinh cu trúc d liu ................................................................................................................... 6
I.3. Tìm thut toán .................................................................................................................................... 7
I.4. Lp trình............................................................................................................................................. 8
I.5. Kim th............................................................................................................................................. 9
I.6. Ti ưu hoá chương trình ..................................................................................................................10
II. DIN T THUT TOÁN..........................................................................................................................11
II.1. Dùng lưu đồ...................................................................................................................................... 11
II.2. Dùng ngôn ng lp trình c th....................................................................................................... 12
II.3. Dùng ngôn ng gi........................................................................................................................... 13
III. THUT TOÁN ĐỆ QUI .......................................................................................................................16
III.1. Khái nim đệ qui ..............................................................................................................................16
III.2. Thut toán đệ qui ............................................................................................................................. 16
III.3. Hiu lc ca đệ qui ..........................................................................................................................18
III.4. Thut toán quay lui .......................................................................................................................... 19
IV. ĐÁNH GIÁ THUT TOÁN.................................................................................................................20
IV.1. Phân tích thut toán ......................................................................................................................... 20
IV.2. Xác đinh độ phc tp tính toán ca thut toán ................................................................................ 22
DANH SÁCH.......................................................................................................................................................... 26
I. KHÁI NIM DANH SÁCH.......................................................................................................................26
II. BIU DIN DANH SÁCH TRÊN MÁY TÍNH ........................................................................................27
III. MNG DANH SÁCH ĐẶC...........................................................................................................27
III.1. Cài đặt mng .................................................................................................................................... 27
III.2. Các thao tác trên danh sách............................................................................................................. 27
IV. DANH SÁCH LIÊN KT .....................................................................................................................30
IV.1. Danh sách ni đơn ........................................................................................................................... 31
IV.2. Danh sách ni vòng..........................................................................................................................34
IV.3. Danh sách ni kép............................................................................................................................ 37
IV.4. Đa danh sách.................................................................................................................................... 39
V. NGĂN XP ...............................................................................................................................................39
V.1. Định nghĩa ngăn xếp ........................................................................................................................ 39
V.2. Cài đặt ngăn xếp bng mng............................................................................................................ 40
V.3. Cài đặt ngăn xếp bng danh sách liên kết đơn ................................................................................ 42
V.4. ng dng ngăn xếp để kh đệ qui.................................................................................................... 43
VI. HÀNG ĐỢI ...........................................................................................................................................45
VI.1. Định nghĩa hàng đợi ........................................................................................................................ 45
VI.2. Cài đặt hàng đợi bng mng............................................................................................................ 46
VI.3. Cài đặt hàng đợi bng danh sách liên kết đơn................................................................................. 48
CÂY .........................................................................................................................................................................50
I. MT S KHÁI NIM V CÂY................................................................................................................50
I.1. Khái nim ......................................................................................................................................... 50
I.2. Biu din cây .................................................................................................................................... 51
I.3. Duyt cây..........................................................................................................................................53
II. CÂY NH PHÂN .......................................................................................................................................54
II.1. Định nghĩa........................................................................................................................................ 54
II.2. Cài đặt cây nh phân ........................................................................................................................ 55
II.3. Các phép duyt cây nh phân ........................................................................................................... 57
III. CÂY BIU DIN BIU THC............................................................................................................58
Cu trúc d liu và Gii thut 5
TRƯỜNG CAO ĐẲNG CÔNG NGH THÔNG TIN
III.1. Biu din biu thc dưới dng cây................................................................................................... 58
III.2. Các ký pháp dùng cho biu thc ...................................................................................................... 59
III.3. Mt s thut toán đối vi biu thc.................................................................................................. 60
IV. CÂY TNG QUÁT ..............................................................................................................................62
IV.1. Cây K – phân.................................................................................................................................... 63
IV.2. Cây tng quát ................................................................................................................................... 63
THUT TOÁN SP XP..................................................................................................................................... 66
I. BÀI TOÁN SP XP ................................................................................................................................ 66
II. MT S THUT TOÁN SP XP ĐƠN GIN......................................................................................68
II.1. Sp xếp kiu chn............................................................................................................................. 68
II.2. Sp xếp kiu ni bt ......................................................................................................................... 69
II.3. Sp xếp kiu chèn ............................................................................................................................. 69
III. SP XP KIU PHÂN ĐON (QUICK SORT) ......................................................................................70
IV. SP XP KIU VUN ĐỐNG...............................................................................................................72
V. MT S THUT TOÁN KHÁC ..............................................................................................................75
V.1. Phương pháp đếm ............................................................................................................................ 75
V.2. Phương pháp dùng hàng đợi............................................................................................................ 76
V.3. Phương pháp sp xếp trn ............................................................................................................... 77
CÁC THUT TOÁN TÌM KIM...........................................................................................................................80
I. BÀI TOÁN TÌM KIM..............................................................................................................................80
II. TÌM KIM TUN T...............................................................................................................................80
III. TÌM KIM NH PHÂN.........................................................................................................................81
IV. PHÉP BĂM (HASH)............................................................................................................................. 81
V. CÂY TÌM KIM NH PHÂN ....................................................................................................................82
V.1. Định nghĩa........................................................................................................................................ 82
V.2. Cài đặt cây tìm kiếm nh phân.......................................................................................................... 82
VI. CÂY TÌM KIM CƠ S (RADIX SEARCH TREE RST).................................................................86
BIU DIN ĐỒ TH...............................................................................................................................................90
I. MT S KHÁI NIM...............................................................................................................................90
II. CÁC CÁCH BIU DIN ĐỒ TH.............................................................................................................91
II.1. Biu din đồ th bng ma trn k..................................................................................................... 91
II.2. Biu din đồ th bng danh sách các đỉnh k:.................................................................................. 93
III. CÁC PHÉP DUYT ĐỒ TH (TRAVERSALS OF GRAPH) ..............................................................94
III.1. Duyt theo chiu sâu (depth-first search) ........................................................................................94
III.2. Duyt theo chiu rng (breadth-first search)...................................................................................95
IV. MT S BÀI TOÁN TRÊN ĐỒ TH...................................................................................................96
IV.1. Bài toán tìm đung đi ngn nht t mt đỉnh ca đồ th................................................................. 97
IV.2. Tìm đường đi ngn nht gia tt c các cp đỉnh ........................................................................... 99
TÀI LIU THAM KHO ...................................................................................................................................100
6 Cu trúc d liu và Gii thut
http://www.ebook.edu.vn TRUNG CAO ĐẲNG CÔNG NGH THÔNG TIN
CHƯƠNG 1
TNG QUAN V THUT TOÁN VÀ CU TRÚC D
LIU
I. CÁC BƯỚC CƠ BN KHI GII QUYT BÀI TOÁN TIN HC
I.1. Xác định bài toán
Vic xác định bài toán tc là phi xác định xem ta phi gii quyết vn đề gì?, vi gi thiết
nào đã cho và li gii cn phi đạt nhng yêu cu nào.
Input Process Output
(D liu vào X Kết qu ra)
Đối vi nhng bài toán tin hc ng dng trong thc tế, li gii cn tìm ch cn tt ti mc
nào đó, thm chí là ti mc chp nhn được. Bi li gii tt nht đòi hi quá nhiu thi gian
và chi phí.
Ví d:
Khi cài đặt các hàm s phc tp trên máy tính. Nếu tính bng cách khai trin chui vô hn
thì độ chính xác cao hơn nhưng thi gian chm hơn hàng t ln so vi phương pháp xp x.
Trên thc tế vic tính toán luôn luôn cho phép chp nhn mt sai s nào đó nên các hàm s
trong máy tính đều được tính bng phương pháp xp x ca gii tích s
Xác định đúng yêu cu bài toán là rt quan trng bi nó nh hưởng ti cách thc gii quyết
và cht lượng ca li gii. Mt bài toán thc tế thường cho bi nhng thông tin khá mơ h
hình thc, ta phi phát biu li mt cách chính xác và cht ch để hiu đúng bài toán.
Ví d:
Bài toán: Mt d án có n người tham gia tho lun, h mun chia thành các nhóm và
mi nhóm tho lun riêng v mt phn ca d án. Nhóm có bao nhiêu người thì được
trình lên by nhiêu ý kiến. Nếu ly mi nhóm mt ý kiến đem ghép li thì được mt b
ý kiến trin khai d án. Hãy tìm cách chia để s b ý kiến cui cùng thu được là ln
nht.
Phát biu li: Cho mt s nguyên dương n, tìm các phân tích n thành tng các s
nguyên dương sao cho tích ca các s đó là ln nht.
Trên thc tế, ta nên xét mt vài trường hp c th để thông qua đó hiu được bài toán rõ
hơn và thy được các thao tác cn phi tiến hành. Đối vi nhng bài toán đơn gin, đôi khi ch
cn qua ví d là ta đã có th đưa v mt bài toán quen thuc để gii.
I.2. Xác đinh cu trúc d liu
Kiu d liu (data type): kiu d liu ca mt biến là tp hp các giá tr mà biến đó có th
nhn. Ví d mt biến kiu Boolean ch có th nhn TRUE hoc FALSE mà không nhn giá tr
nào khác. Các kiu d liu cơ bn (như Integer, Char, Real, Boolean) được cung cp khác nhau
trong các ngôn ng lp trình khác nhau.
Cu trúc d liu và Gii thut 7
TRƯỜNG CAO ĐẲNG CÔNG NGH THÔNG TIN
Mt kiu d liu tru tượng (abstract data type): là mt mô hình toán hc cùng vi mt
tp hp các phép toán trên nó. Có th nói kiu d liu tru tượng là mt kiu d liu do chúng
ta định nghĩa mc khái nim (conceptual), nó chưa được cài đặt c th bng mt ngôn ng
lp trình. Như đã dn ra trên, chúng ta dùng kiu d liu tru tượng để thiết kế gii thut,
nhưng để cài đặt gii thut vào mt ngôn ng lp trình chúng ta phi tìm cách biu din kiu d
liu tru tượng trên các kiu d liu và toán t do ngôn ng lp trình cung cp.
Cu trúc d liu: Tp hp các biến có th thuc mt hoc vài kiu d liu khác nhau được
ni kết vi nhau to thành nhng phn t. Các phn t này chính là thành phn cơ bn xây
dng nên cu trúc d liu. Cu trúc d liu là nguyên tc kết ni các phn t này vi nhau
trong b nh khi được biu din bng mt ngôn ng lp trình c th.
Khi gii mt bài toán, ta cn phi định nghĩa tp hp d liu để biu din tình trng c th.
Vic la chn này tu thuc vào vn đề cn gii quyết và nhng thao tác s tiến hành trên d
liu vào. Có nhng thut toán ch thích ng vi mt cách t chc d liu nht định, đối vi
nhng cách t chc d liu khác thì s kém hiu qu hoc không th thc hin được. Chính
vy nên bước xây dng cu trúc d liu không th tách ri bước tìm kiếm thut toán gii quyết
vn đề.
Các tiêu chun khi la chn cu trúc d liu
Cu trúc d liu trước hết phi biu din được đầy đủ các thông tin nhp và xut ca bài
toán
Cu trúc d liu phi phù hp vi các thao tác ca thut toán mà ta la chn để gii
quyết bài toán.
Cu trúc d liu phi cài đặt được trên máy tính vi ngôn ng lp trình đang s dng
Đối vi mt s bài toán, trước khi t chc d liu ta phi viết mt đon chương trình nh
để kho sát xem d liu cn lưu tr ln ti mc độ nào.
I.3. Tìm thut toán
Thut toán và Cu trúc d liu có mi quan h mt thiết vi nhau. Do đó, khi xây dng mt
cu trúc d liu thì đi đôi vi vic xác lp các thut toán x lý trên cu trúc d liu đó.
Data Structure + Algorithm =Program
Thut toán là mt h thng cht chrõ ràng các quy tc nhm xác định mt dãy thao tác
trên cu trúc d liu sao cho: Vi mt b d liu vào, sau mt s hu hn bước thc hin các
thao tác đã ch ra, ta đạt được mc tiêu đã định.
Các đặc trưng ca thut toán
¾ 1. Tính đơn định
mi bước ca thut toán, các thao tác phi hết sc rõ ràng, không gây nên s nhp nhng,
ln xn, tu tin, đa nghĩa. Thc hin đúng các bước ca thut toán thì vi mt d liu vào, ch
cho duy nht mt kết qu ra.
¾ 2. Tính dng
Thut toán không được rơi vào quá trình vô hn, phi dng li và cho kết qu sau mt s
hu hn bước.
¾ 3. Tính đúng
8 Cu trúc d liu và Gii thut
http://www.ebook.edu.vn TRUNG CAO ĐẲNG CÔNG NGH THÔNG TIN
Sau khi thc hin tt c các bước ca thut toán theo đúng quá trình đã định, ta phi được
kết qu mong mun vi mi b d liu đầu vào. Kết qu đó được kim chng bng yêu cu bài
toán.
¾ 4. Tính ph dng
Thut toán phi d sa đổi để thích ng được vi bt k bài toán nào trong mt lp các bài
toán và có th làm vic trên các d liu khác nhau.
¾ 5. Tính kh thi
a) Kích thước phi đủ nh: Ví d: Mt thut toán s có tính hiu qu bng 0 nếu lượng b
nh mà nó yêu cu vượt quá kh năng lưu tr ca h thng máy tính.
b) Thut toán phi được máy tính thc hin trong thi gian cho phép, điu này khác vi li
gii toán (Ch cn chng minh là kết thúc sau hu hn bước). Ví d như xếp thi khoá biu cho
mt hc k thì không th cho máy tính chy ti hc k sau mi ra được.
c) Phi d hiu và d cài đặt.
Ví d:
Input: 2 s nguyên t nhiên a và b không đồng thi bng 0
Output: Ước s chung ln nht ca a và b
Thut toán s tiến hành được mô t như sau: (Thut toán Euclide)
Bước 1 (Input): Nhp a và b: S t nhiên
Bước 2: Nếu b 0 thì chuyn sang bước 3, nếu không thì b qua bước 3, đi làm bước 4
Bước 3: Đặt r := a mod b; Đặt a := b; Đặt b := r; Quay tr li bước 2.
Bước 4 (Output): Kết lun ước s chung ln nht phi tìm là giá tr ca a. Kết thúc
thut toán.
Mt s vn đề cn lưu ý
Khi mô t thut toán bng ngôn ng t nhiên, ta không cn phi quá chi tiết các bước
và tiến trình thc hin mà ch cn mô t mt cách hình thc đủ để chuyn thành ngôn
ng lp trình. Viết sơ đồ các thut toán đệ quy là mt ví d.
Đối vi nhng thut toán phc tp và nng v tính toán, các bước và các công thc nên
mô t mt cách tường minh và chú thích rõ ràng để khi lp trình ta có th nhanh chóng
tra cu.
Đối vi nhng thut toán kinh đin thì phi thuc. Khi gii mt bài toán ln trong mt
thi gian gii hn, ta ch phi thiết kế tng th còn nhng ch đã thuc thì c vic lp
ráp vào. Tính đúng đắn ca nhng mô-đun đã thuc ta không cn phi quan tâm na mà
tp trung gii quyết các phn khác.
I.4. Lp trình
Sau khi đã có thut toán, ta phi tiến hành lp trình th hin thut toán đó. Mun lp trình
đạt hiu qu cao, cn phi có k thut lp trình tt. K thut lp trình tt th hin k năng viết
chương trình, kh năng g ri và thao tác nhanh. Lp trình tt không phi ch cn nm vng
ngôn ng lp trình là đủ, phi biết cách viết chương trình uyn chuyn, khôn khéo và phát trin
dn dn để chuyn các ý tưởng ra thành chương trình hoàn chnh. Kinh nghim cho thy mt
thut toán hay nhưng do cài đặt vng v nên khi chy li cho kết qu sai hoc tc độ chm.
thông tin tài liệu
Tài liệu cung cấp những kiến thức chung về cấu trúc dữ liệu và cách giải thuật
Mở rộng để xem thêm
từ khóa liên quan
xem nhiều trong tuần
yêu cầu tài liệu
Giúp bạn tìm tài liệu chưa có

LÝ THUYẾT TOÁN


×