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

Ứng dụng thuật toán lai giải bài toán cây khung truyền thông tối ưu

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 (3.66 MB, 122 trang )

NGUYỄN DUY HIỆP

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

---------------------------------------

NGUYỄN DUY HIỆP

NGHÀNH CNTT

ỨNG DỤNG THUẬT TOÁN LAI
GIẢI BÀI TỐN CÂY KHUNG TRUYỀN
THƠNG TỐI ƯU

LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH CƠNG NGHỆ THƠNG TIN

KHĨA 2008-2010

Hà nội – 2010


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

---------------------------------------

NGUYỄN DUY HIỆP

ỨNG DỤNG THUẬT TOÁN LAI


GIẢI BÀI TOÁN
CÂY KHUNG TRUYỀN THÔNG TỐI ƯU

LUẬN VĂN THẠC SĨ KHOA HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC
PGS.TS. NGUYỄN ĐỨC NGHĨA

Hà nội – 2010


Lời cảm ơn
Đầu tiên tôi xin bày tỏ sự biết ơn sâu sắc PGS. TS. Nguyễn Đức Nghĩa, thầy đã tận
tình giảng dạy chúng tơi các mơn học chun ngành và nhiệt tình hướng dẫn, giúp
đỡ tơi hồn thành luận văn này.
Tơi cũng muốn bày tỏ lịng biết ơn các thầy cô khoa Công nghệ Thông tin trường
Đại học Bách khoa Hà Nội đã giảng dạy cho chúng tôi các mơn học chun đề
trong khóa học.
Cuối cùng tơi xin gửi lời cảm ơn sâu sắc đến gia đình, và bạn bè, những người luôn
ở bên cạnh giúp đỡ, động viên tơi trong q trình hồn thành đồ án.
Mặc dù đã có nhiều cố gắng, nhưng vì kiến thức và thời gian hạn chế nên chắc chắn
luận văn này còn nhiều thiếu sót. Tơi xin chân thành cảm ơn và rất mong nhận được
những ý kiến đóng góp từ các thầy cơ và các bạn. Những góp ý xin gửi về địa chỉ:
Nguyễn Duy Hiệp
Bộ mơn Khoa học máy tính, viện Công nghệ thông tin và truyền thông,
trường Đại học Bách Khoa Hà Nội.
Email: hoặc

Hà Nội, ngày 31 tháng 10 năm 2010

Nguyễn Duy Hiệp
Học viên cao học
Lớp Công nghệ thông tin 2008 – 2010
Trường Đại học Bách Khoa Hà Nội

~1~


Lời mở đầu
Việc phát triển các thuật toán hiệu quả để giải các bài tốn NP – khó (NP – hard) là
một vấn đề được quan tâm của nhiều nhà khoa học nghiên cứu về máy tính. Bởi vì
chúng thường có rất nhiều ứng dụng trong thực tiễn, ví dụ như bài tốn người du
lịch, bài tốn đóng thùng, bài toán cây Steiner, bài toán người đưa thư Trung Hoa,
… Đối với các bài toán này các thuật toán giải chính xác thường có thời gian tính
lớn do độ phức tăng rất nhanh khi kích thước bài tốn tăng. Do đó hiện nay người ta
thường sử dụng cách tiếp cận giải gần đúng. Các phương pháp giải gần đúng
thường dùng là: các thuật tốn xấp xỉ (approximation schemes), tìm kiếm cục bộ
(local search), các phương pháp xác xuất (probabilistic methods), tính tốn tiến hóa
(evolutionary computation), thuật tốn di truyền (genetic algorithm), …
Luận văn này tập trung vào xây dựng thuật toán di truyền lai để giải bài toán cây
khung truyền thông tối ưu (Optimal Communication Spanning Tree - OCST). Đây
là một trong những bài toán trên đồ thị thuộc lớp NP-khó, và có ứng dụng trong
nhiều lĩnh vực thực tế như thiết kế vi mạch và các mơ hình mạng.
Thuật toán đề xuất đã được chạy thử nghiệm trên các bộ dữ liệu thường dùng bởi
các nhà khoa học để đánh giá các thuật toán giải bài toán OCST, và một số bộ dữ
liệu có kích thước lớn được sinh ngẫu nhiên. Kết quả thực nghiệm cho thấy thuật
toán cho kết quả là tốt hơn so với một số một số thuật toán di truyền tốt nhất hiện
biết. Những kết quả đạt được được trình bày thành một bài báo và đã được chấp
nhận đăng trong hội thảo quốc tế lần thứ 26 về tính tốn ứng dụng (Symposium On
Applied Computing – SAC) diễn ra vào 21-24/3/2011 tại đại học Tunghai,

TaiChung, Taiwan.
Luận văn được bố cục như sau :
Chƣơng 1 trình bày một số kiến thức cơ sở trong lý thuyết về độ phức tạp tính tốn,
lớp bài tốn NP-khó làm nền tảng cho các chương tiếp theo.

~2~


Chƣơng 2 trình bày tổng quan về bài tốn cây khung truyền thông tối ưu và các
hướng tiếp cận đã được đề xuất để giải quyết bài tốn.
Chƣơng 3 trình bày sơ đồ của hai giải thuật meta-heuristic gồm giải thuật di truyền
và giải thuật tối ưu hóa bày đàn.
Chƣơng 4 đề xuất giải thuật di truyền lai dựa trên giải thuật di truyền chuẩn kết hợp
với giải thuật tối ưu hóa bày đàn để giải bài tốn cây khung truyền thơng tối ưu.
Chƣơng 5 trình bày kết quả thực nghiệm của giải thuật di truyền lai đề xuất trong
chương 4. Giải thuật được thực hiện với sáu loại mã hóa cây khung và hai phương
pháp lai ghép nhằm so sánh hiệu quả so với các giải thuật hiện biết.
Kết luận và hƣớng phát triển
Đánh giá tổng quan lại những kết quả đã thực hiện được, những hạn chế của luận
văn và một số vấn đề mở cần tiếp tục giải quyết.

~3~


Mục lục
Lời cảm ơn ............................................................................................................... 1
Lời mở đầu ............................................................................................................... 2
Danh mục hình vẽ.................................................................................................... 7
Danh mục bảng ...................................................................................................... 10
Danh mục thuật ngữ tiếng Anh ........................................................................... 11

CHƢƠNG 1 CÁC KHÁI NIỆM CƠ BẢN ....................................................... 13
1.1. Thuật toán và đánh giá độ phức tạp của thuật toán ................................................. 13
1.1.1 Khái niệm thuật toán ...........................................................................................13
1.1.2. Đánh giá thuật tốn ............................................................................................19
1.2. Độ phức tạp tính toán của bài toán ......................................................................... 24
1.2.1. Khái niệm về độ phức tạp của bài toán ..............................................................24
1.2.2 Các bài toán NP ..................................................................................................27
1.3. Một số cách tiếp cận giải các bài toán NP-khó ....................................................... 36
1.3.1 Phương pháp xấp xỉ ............................................................................................36
1.3.2 Phương pháp xác xuất .........................................................................................37
1.3.3. Phương pháp heuristic .......................................................................................38
1.3.4. Phương pháp tính tốn tiến hóa .........................................................................40

CHƢƠNG 2 BÀI TỐN CÂY KHUNG TRUYỀN THƠNG TỐI ƢU ......... 46
2.1. Bài tốn cây khung truyền thơng tối ưu .................................................................. 46
2.2 Một số tính chất của các trường hợp đặc biệt của bài toán OCST .......................... 49
2.2.1 Bài toán MRCT ...................................................................................................49
2.2.2. Bài toán cây khung truyền thơng tối ưu tích nhu cầu (PROCT) .......................51
2.2.3. Bài tốn cây khung truyền thông tối ưu tổng nhu cầu (SROCT) ......................52
2.2.4. Bài toán nhiều nguồn (Multiple Source)............................................................52
2.3. Một số ứng dụng của bài tốn cây khung truyền thơng .......................................... 54
~4~


2.4. Các phương pháp tiếp cận để giải bài toán OCST .................................................. 57

CHƢƠNG 3 THUẬT TOÁN DI TRUYỀN VÀ TỐI ƢU HĨA BẦY
ĐÀN …………… ................................................................................................... 67
3.1 Tính tốn tiến hóa .................................................................................................... 67
3.2 Giải thuật di truyền .................................................................................................. 69

3.3 Giải thuật tối ưu hóa bầy đàn ................................................................................... 74

CHƢƠNG 4 GIẢI THUẬT DI TRUYỀN LAI GIẢI BÀI TỐN OCST ..... 79
4.1. Mơ hình lai ghép đề xuất......................................................................................... 79
4.2. Sơ đồ giải thuật đề xuất ........................................................................................... 80
4.3. Mã hóa cá thể .......................................................................................................... 83
4.3.1. Mã hóa Prufer ....................................................................................................83
4.3.2. Mã hóa NetKeys (Network Random Keys Encoding) ......................................85
4.3.3. Mã hóa CB-TCR ................................................................................................87
4.3.4. Mã hóa NB (Node Biased Encoding) ................................................................90
4.3.5. Mã hóa LB (Link Biased Encoding) ..................................................................91
4.3.6. Mã hóa LNB (Link and Node Biased Encoding) ...............................................92
4.4. Chọn lọc cá thể ........................................................................................................ 94
4.5. Toán tử di truyền ..................................................................................................... 95
4.5.1. Toán tử lai ghép .................................................................................................95
4.5.2. Toán tử đột biến .................................................................................................96

CHƢƠNG 5 KẾT QUẢ THỰC NGHIỆM ....................................................... 97
5.1. Cài đặt thử nghiệm .................................................................................................. 97
5.1.1. Dữ liệu thực nghiệm ..........................................................................................97
5.1.2. Các tham số cho các thử nghiệm .......................................................................99
5.2. Kết quả thực nghiệm ............................................................................................. 100
5.2.1. Kết quả trên các bộ test chuẩn .........................................................................100
5.2.2. Kết quả trên các bộ test ngẫu nhiên .................................................................107
~5~


5.3. So sánh với các thuật toán khác ............................................................................ 108
5.3.1. So sánh với giải thuật tiến hóa (Sang-moon 2006) ..........................................109
5.3.2. So sánh với giải thuật di truyền, mô phỏng tôi luyện, tìm kiếm cục bộ

(Rothlauf 2009) ..........................................................................................................111
5.3.3. So sánh với giải thuật tối ưu hóa bầy đàn (2010) ............................................113

KẾT LUẬN .......................................................................................................... 115
TÀI LIỆU THAM KHẢO .................................................................................. 117

~6~


Danh mục hình vẽ
Hình 1-1 Minh họa thuật tốn .................................................................................................. 15
Hình 1-2 Minh họa bài tốn chọn lịch xem phim ............................................................. 17
Hình 1-3 Phản ví dụ của thuật tốn 1 ................................................................................... 17
Hình 1-4 Phản ví dụ của thuật tốn 2 ................................................................................... 17
Hình 1-5 Cận trên và cận dưới để đánh giá cho độ phức tạp của hàm .................. 20
Hình 1-6 Ký hiệu -lớn ............................................................................................................... 21
Hình 1-7 Ký hiệu -lớn ............................................................................................................... 21
Hình 1-8 Ký hiệu -lớn ............................................................................................................... 22
Hình 1-9 Tốc độ tăng theo kích thước đầu vào của một số hàm .............................. 23
Hình 1-10 Mối quan hệ giữa thời gian thực hiện và kích thước đầu vào của một
số lớp hàm ......................................................................................................................................... 24
Hình 1-11 Mối quan hệ giữa 3 lớp bài tốn P, NP và Co-NP. ...................................... 32
Hình 1-12 Sơ đồ phép quy dẫn ................................................................................................ 32
Hình 1-13 Minh họa mối quan hệ giữa các lớp bài tốn ............................................... 35
Hình 1-14 Danh sách một số bài tốn NP-khó và sơ đồ quy dẫn giữa chúng ..... 35
Hình 1-15 Đồ thị vơ hướng và đồ thị có hướng ................................................................ 41
Hình 1-16 Danh sách kề và ma trận kề ................................................................................ 44
Hình 2-1 Minh họa cách tính giá cây khung trong bài tốn OCST ............................ 47
Hình 2-2 Minh họa bài tốn SROCT và PROCT ................................................................. 48
Hình 2-3 Các biến thể của bài tốn cây khung truyền thơng tối ưu tổng qt ... 49

Hình 2-4 Minh họa cách tính độ trễ của cặp đỉnh ............................................................ 50
Hình 2-5 Một cây khung 3-star, trong đó B,C,E là các nút trong và A,D,E,F,G,H,I
là các nút lá ....................................................................................................................................... 51
Hình 2-6 Cây khung 1-star, với B là nút trong và các nút cịn lại là nút lá ........... 51
Hình 2-7 Thiết kế mạng truyền thơng .................................................................................. 56
Hình 2-8 Thủ tục xây dựng cây – tree building ................................................................ 60
~7~


Hình 2-9 Thủ tục cải tiến cây – tree improvement ......................................................... 61
Hình 2-10 Cấu trúc của thuật tốn Memetic ...................................................................... 64
Hình 3-1 Mơ hình một thuật tốn tiến hóa ......................................................................... 68
Hình 3-2 Minh họa Allele, Gen và nhiễm sắc thể.............................................................. 69
Hình 3-3 Sơ đồ chung của thuật tốn di truyền ............................................................... 71
Hình 3-4 Bài tốn tối ưu có thể có rất nhiều cực trị ....................................................... 73
Hình 3-5 Mơ tả giải thuật PSO .................................................................................................. 76
Hình 3-6 Mơ tả giải thuật PSO .................................................................................................. 78
Hình 4-1 Sơ đồ giải thuật di truyền lai đề xuất ................................................................. 82
Hình 4-2 Giải thuật mã hóa cây khung thành chuỗi Prufer ......................................... 83
Hình 4-3 Cây khung được mã hóa bởi chuỗi Prufer 2565 ........................................... 84
Hình 4-4 Giải thuật giải mã cây khung từ một chuỗi Prufer ....................................... 85
Hình 4-5 Giải thuật xây dựng cây khung từ chuỗi NetKeys ........................................ 86
Hình 4-6 Cây thu được theo mã hóa NetKeys ................................................................... 87
Hình 4-7 Giải thuật xây dựng cây khung từ một chuỗi CB-TCR ................................ 88
Hình 4-8 Đồ thị minh họa cho mã hóa CB-TCR................................................................. 89
Hình 4-9 Cây khung sinh ra từ chuỗi CB-TCR (1,5,2,1,4,3,2,5) ................................. 90
Hình 4-10 Giải thuật Prim .......................................................................................................... 91
Hình 4-11 Cây khung thu được từ mã hóa LNB ............................................................... 94
Hình 4-12 Mơ tả phương pháp chọn lọc theo vịng quay Roulette .......................... 94
Hình 4-13 Các bước trong phương pháp chọn lọc theo vòng quay Roulette ...... 95

Hình 4-14 Minh họa phương pháp lai ghép một điểm cắt........................................... 95
Hình 4-15 Minh họa phương pháp lai ghép đồng bộ ..................................................... 96
Hình 5-1 So sánh tốc độ hội tụ khi sử dụng hai mã hóa CB-TCR và NB .............. 105
Hình 5-2 So sánh kết quả tìm được bởi hai toán tử lai ghép trên bộ Raidl100
............................................................................................................................................................. 106

~8~


Hình 5-3 So sánh tốc độ hội tụ của giải thuật với hai loại lai ghép trên bộ
Raidl100 .......................................................................................................................................... 106
Hình 5-4 So sánh tốc độ hội tụ của giải thuật trên bộ test NE-RAND-200 ........ 107
Hình 5-5 So sánh tốc độ hội tụ của giải thuật trên bộ test E-RAND-200 ........... 108

~9~


Danh mục bảng
Bảng 1-1 Mối tương quan giữa quá trình tiến hóa và tính tốn tiến hóa ..................40
Bảng 2-1 Các bài toán OCT và tỉ lệ xấp xỉ tốt nhất hiện biết của nó .......................54
Bảng 4-1 Chuỗi NetKeys cùng nhãn của các cạnh trong đồ thị ...............................86
Bảng 5-1 Các bộ test chuẩn .......................................................................................98
Bảng 5-2 Kết quả chạy các bộ test chuẩn sử dụng mã hóa Prufer và CB-TCR......101
Bảng 5-3 Kết quả chạy các bộ test chuẩn sử dụng mã hóa NetKeys và NB ..........102
Bảng 5-4 Kết quả chạy trên các bộ test chuẩn sử dụng mã hóa LNB và LB ..........103
Bảng 5-5 So sánh về độ lệch của kết quả tìm được so với kết quả đã biết .............109
Bảng 5-6 So sánh thời gian tìm ra kết quả tốt nhất .................................................110
Bảng 5-7 So sánh số lượng thế hệ tối thiểu để tìm ra kết quả tốt nhất ..................111
Bảng 5-8 So sánh với một số giải thuật meta-heuristic ..........................................112
Bảng 5-9 So sánh với giải thuật tối ưu hóa bầy đàn ...............................................114


~ 10 ~


Danh mục thuật ngữ tiếng Anh
STT

Thuật ngữ

Viết tắt

Đề nghị dịch tiếng Việt

1

Approximation scheme

Mơ hình xấp xỉ

2

Probabilistic method

Phương pháp xác xuất

3

Evolutionary computation

Tính tốn tiến hóa


4

Local search

Tìm kiếm cục bộ

5

Genetic algorithm

6

Hybrid GA

7

Bin packing problem

GA

Thuật tốn di truyền lai
BPP

Bài tốn đóng thùng
Đảm bảo về tỷ số chênh lệch

8
Relative performance ration


tương đối

9

Absolute performance guarantee

10

Polynomial time approximation
schemes

Thuật toán di truyền

Đảm bảo về sai số tuyệt đối
PTAS

Sơ đồ xấp xỉ trong thời gian
đa thức

11

Population

Quần thể

12

Chromosomes

Nhiễm sắc thể


13

Individual

Cá thể

14

Genetic-inspired operators

Toán tử di truyền

15

Selection

Chọn lọc tự nhiên

16

Crossover

Lai ghép

17

Mutation

đột biến


18

Inversion

Đảo chỗ

19

Fitness

Độ thích nghi

20

Object function

Hàm mục tiêu

~ 11 ~


21

Generation

Thế hệ
Cơ chế lựa chọn theo bánh xe

22

Roulette wheel selection

Roulette

23

K-point crossover

Lai ghép k-điểm cắt

24

Uniform crossover

Lai ghép đồng bộ

25

Order-based crossover

Lai ghép theo thứ tự

26

Uniform order-based crossover

Lai ghép đồng bộ theo thứ tự

27


Optimal Communication

OCST

Spanning Tree
28

Minimum Routing Cost Spanning
Tree

29

Optimal Product Requirement
Communication Spanning Tree

30

Optimal Sum Requirement
Communication Spanning Tree

31
p-Source OCT
32

Minimum Average Stretch
Spanning Tree

MRCT

PROCT


SROCT

Cây khung truyền thơng tối
ưu
Cây khung định tuyến tối
thiểu
Cây khung truyền thơng tích
nhu cầu
Cây khung truyền thông tổng
nhu cầu

p-Source Cây khung truyền thông tối
OCT
MAST

ưu p nguồn
Cây khung tối thiểu khoảng
giãn

33

Particle Swarm Optimization

PSO

Tối ưu hóa bầy đàn

34


Swarm Intelligence

SI

Bầy đàn thơng minh

~ 12 ~


CHƢƠNG 1
CÁC KHÁI NIỆM CƠ BẢN
Chương này trình bày tổng quan về các khái niệm và các thuật ngữ cơ sở được sử
dụng trong luận văn. Các khái niệm và thuật ngữ được trình bày dựa trên các tài
liệu [10] [22] [23] [32] [38].

1.1. Thuật toán và đánh giá độ phức tạp của thuật toán
1.1.1 Khái niệm thuật toán
Ngày nay máy tính đã trở thành một cơng cụ sản xuất quan trọng, một thiết bị
không thể thiếu trong bất cứ lĩnh vực nào. Nó được sử dụng để trực tiếp giải quyết,
hoặc để hỗ trợ con người trong việc giải quyết các vấn đề trong thực tế. Do vậy việc
nghiên cứu lý thuyết về khoa học máy tính và các vấn đề về giải quyết bài tốn
bằng máy tính ngày càng quan trọng và được phát triển mạnh mẽ.
Các vấn đề xuất phát từ trong thực tế hằng ngày rất đa dạng, có thể là các vấn đề
đơn giản cũng có thể là các vấn đề mà khơng thể giải quyết được. Nhưng cho dù
vấn đề là gì đi nữa để giải quyết nó bao giờ cũng vậy, trước hết chúng ta cần phát
biểu lại vấn đề đó một cách chính xác dưới dạng các bài tốn. Dưới dạng một bài
tốn thì một vấn đề sẽ gồm có đầu vào và đầu ra, trong đó đầu vào mơ tả khơng
gian các giá trị có thể có của bài tốn và đầu ra là giá trị mong muốn tương ứng với
đầu vào đó.
Ví dụ: bài tốn sắp xếp được định nghĩa như sau

Đầu vào: một dãy gồm

khóa

Đầu ra: một hốn vị của dãy khóa đầu vào thỏa mãn
~ 13 ~


Như vậy dãy đầu vào có thể là dãy số bất kỳ, hoặc có thể là dãy các xâu ký tự, hoặc
là dãy các đối tượng…
Ở đây chúng ta chỉ đề cập đến việc giải quyết bài toán bằng máy tính. Để giải quyết
bài tốn bằng máy tính trước hết chúng ta phải biểu diễn được bài tốn đó trên máy
tính, tức là biểu diễn được đầu vào và đầu ra của nó. Trong máy tính tất cả các dữ
liệu và câu lệnh đều được biểu diễn dưới dạng mã nhị phân (biểu diễn bằng các
chuỗi nhị phân gồm bit 1 và 0).
Ví dụ:
 Một số nguyên được biểu diễn dưới dạng chuỗi bit sử dụng mã bù 2 (nếu là
kiểu số nguyên có dấu) hoặc là sử dụng số trong hệ nhị phân tương ứng (nếu
là số nguyên không dấu).
 Một số thực được biểu diễn trong máy tính dưới dạng chuỗi bit nhị phân sử
dụng chuẩn IEEE-754.
 Một kí tự được biểu diễn bằng số thứ tự (dưới dạng mã nhị phân) của nó
trong bảng mã nào đó như bảng mã ASCII, Unicode …
 Một xâu kí tự được biểu diễn là ghép nối biểu diễn của các kí tự thành phần
của xâu đó.
 Một vector được biểu diễn là ghép nối biểu diễn nhị phân (mảng – array) của
các thành phần tọa độ của các chiều.
 Một ma trận được biểu diễn bởi ghép nối các biểu diễn của các vector thành
phần hoặc ma trận thành phần cấp thấp hơn nó một đơn vị.
 Một hệ phương trình tuyến tính dạng


có thể biểu diễn dưới dạng

nhị phân là ghép nối của các xâu biểu diễn nhị phân của các thành phần trong
ma trận A và vector b.
 Đa thức một biến dạng
dãy các hệ số

,

,…,

được đặc trưng bởi
và số mũ . Do đó có thể dùng các xâu nhị phân
~ 14 ~


biểu diễn dãy hệ số

và xâu nhị phân biểu diễn

là ta có thể tạo thành một

biểu diễn hợp lệ cho P(x).
 Đồ thị có thể được biểu diễn bằng ma trận kề, hoặc danh sách kề
 Các dữ liệu phức hợp được tổ chức dưới dạng tổ hợp cấu trúc của các dữ liệu
cơ bản, ví dụ như mảng, bản ghi, cây …
Như vậy chúng ta có thể định nghĩa một cách hình thức bài tốn tính tốn như sau:
Định nghĩa 1.1. Bài tốn tính tốn F là ánh xạ từ các xâu nhị phân độ dài hữu hạn
vào tập các xâu nhị phân độ dài hữu hạn: F: {0,1}* → {0,1}*.

Các dữ liệu trong bài tốn tổng qt có thể không hữu hạn, tuy nhiên khi đã chuyển
vào trong máy tính thì chúng ta phải chuyển nó thành hữu hạn, bởi vì khơng gian
của máy tính là hữu hạn. Nói một cách khác các xâu nhị phân biểu diễn bài tốn có
độ dài là hữu hạn.
Để giải quyết bài toán (vấn đề trong thực tế) chúng ta phải đề xuất ra một phương
án. Trong giải quyết bài toán bằng máy tính phương án được gọi là thuật tốn
(algorithm). Một thuật tốn để giải quyết bài tốn có thể được định nghĩa như sau.
Định nghĩa 1.2. Thuật toán giải bài toán đặt ra là một thủ tục xác định bao gồm một
dãy hữu hạn các bước cần thực hiện để thu được đầu ra cho một đầu vào cho trước
của bài tốn.
Đầu vào
(Input)

Đầu ra
(Output)
Thuật tốn
(Algorithm)

Hình 1-1 Minh họa thuật tốn
Thuật tốn có những đặc trưng sau đây:
 Có đầu vào (Input): là tập các dữ liệu cần cung cấp cho thuật toán để xử lý.

~ 15 ~


 Có đầu ra (Output): với mỗi một bộ dữ liệu vào, thuật toán sẽ cho ra một bộ
các dữ liệu ra tương ứng với lời giải của bài toán cho bộ dữ liệu vào.
 Chính xác (Precision): Các bước của thuật tốn cần phải được mơ tả chính
xác và rõ ràng để có thể cài đặt được trên máy tính và có thể thực hiện được.
 Hữu hạn (Finiteness): với mọi đầu vào thuật toán phải đưa được đầu ra sau

một số hữu hạn (có thể rất lớn) bước thực hiện.
 Đơn trị (Uniqueness): các kết quả trung gian trong q trình thực hiện thuật
tốn được xác định một cách đơn trị và chỉ phụ thuộc vào đầu vào cũng như
kết quả ở những bước trước.
 Tổng quát (Generality): thuật tốn có thể áp dụng để giải mọi bài tốn có
dạng đã cho.
Hai tính chất quan trọng nhất của thuật tốn là tính chính xác và tính hiệu quả. Tính
chính xác của thuật tốn khơng phải lúc nào cũng dễ thấy
Ví dụ: Bài tốn chọn lịch xem phim. Trong một đợt liên hoan phim, có

bộ phim

khác nhau được trình chiếu tại nhiều phòng chiếu khác nhau. Là một người yêu
nghệ thuật thứ 7, một giáo sư muốn xem được nhiều nhất các phim có thể. Đối với
ơng các phim có mức độ hấp dẫn là như nhau, và ơng muốn xem các bộ phim một
cách đầy đủ (tức là thời gian xem bộ phim này không bị giao với thời gian xem bộ
phim khác của ông). Hãy giúp giáo sư chọn ra danh sách lớn nhất các bộ phim có
thể xem được. Bài tốn này có thể được phát biểu lại như sau:
Đầu vào: Một tập L gồm thời gian chiếu (thời điểm bắt đầu và kết thúc) trong ngày
của

bộ phim

Đầu ra: Tập con của L chứa số bộ phim lớn nhất có thể xem (khơng được giao nhau
về thời gian)
Để đơn giản có thể biểu diễn các bộ phim dưới dạng các đoạn thẳng khơng giao
nhau như hình bên dưới. Trong đó P1, P2, và P3 là các phòng chiếu

~ 16 ~



P1
P2
P3

Hình 1-2 Minh họa bài tốn chọn lịch xem phim
Thuật tốn 1. Chọn bộ phim có thời điểm bắt đầu sớm nhất trong L mà có thời gian
khơng bị giao với các bộ phim đã chọn trước đó. Lặp lại cho đến khi khơng thể
chọn thêm.
Với thuật tốn này ta có thể đưa ra một ví dụ chỉ ra thuật tốn (phản ví dụ) sai như
sau
P1
P2

Hình 1-3 Phản ví dụ của thuật tốn 1
Thuật tốn 2. Chọn bộ phim có thời gian chiếu ngắn nhất trong L mà có thời gian
không bị giao với các bộ phim đã chọn trước. Lặp lại cho đến khi khơng chọn thêm
được.
Với thuật tốn 2 ta có thể chỉ ra một phản ví dụ

P1
P2

Hình 1-4 Phản ví dụ của thuật tốn 2
Thuật tốn 3. Duyệt toàn bộ: duyệt

tập con của n bộ phim trong L. Chọn ra tập

con nào có số lượng phần tử lớn nhất. Đảm bảo thu được kết quả tối ưu. Thuật toán
chạy rất chậm, vd


số tập con là 220

~ 17 ~


Thuật toán 4. Thuật toán tối ưu: sắp xếp các lịch chiếu phim theo thứ tự không giảm
thời điểm kết thúc. Lần lượt xem xét các phim trong danh sách đã sắp xếp, bổ sung
vào danh sách xem bộ phim đang xét nếu nó khơng chồng lên các bộ phim đã có
trong danh sách xem.
Để chỉ ra thuật tốn là khơng chính xác ta chỉ cần đưa ra một phản ví dụ của thuật
tốn. Tuy nhiên chưa chỉ ra được một phản ví dụ của thuật tốn khơng có nghĩa là
thuật tốn chính xác. Để chứng minh một thuật tốn là chính xác ta phải chứng
minh bằng tốn học. Có những bài tốn mà khơng tồn tại thuật tốn chính xác để
giải!
Với một bài tốn có thể tồn tại rất nhiều thuật tốn để giải, mỗi thuật tốn nó cần sử
dụng lượng tài nguyên máy tính khác nhau. Chúng ta đánh giá hiệu quả của thuật
tốn thơng qua lượng tài ngun mà nó cần để tìm ra lời giải cho bài toán. Tất nhiên
là chúng ta chỉ đánh giá hiệu quả của những thuật tốn chính xác. Các tài ngun
máy tính mà chúng ta xét đến ở đây là thời gian CPU (để thực hiện thuật tốn thì
CPU cần thực hiện lệnh của nó), dung lượng bộ nhớ cần dùng, và các tài nguyên
khác như ổ cứng, mạng,… Trong đó thời gian CPU và bộ nhớ là hai tài nguyên
quan trọng nhất. Ngày nay với sự phát triển mạnh của cơng nghệ bán dẫn nên giá
thành bộ nhớ máy tính giảm nhanh chóng, vì thế tài ngun thời gian CPU được
đánh giá quan trọng hơn. Mặc dù công nghệ chế tạo CPU cũng phát triển rất nhanh.
Theo định luật Moore ―máy tính sẽ tăng gấp đơi khả năng tính tốn với cùng mức
giá hoặc giảm giá chỉ còn một nửa với cùng khả năng tính tốn cứ sau 18 tháng‖.
Tuy nhiên khi thực hiện trên đầu vào với kích thước đủ lớn thì thuật tốn hiệu quả
hơn dù được thực hiện trên máy tính tốc độ chậm vẫn ln chiến thắng thuật toán
tồi hơn nhưng được thực hiện trên máy tính có tốc độ nhanh hơn. Vì thế để đánh giá

hiệu quả của các thuật toán người ta thường căn cứ vào thời gian thực hiện của thuật
toán.

~ 18 ~


1.1.2. Đánh giá thuật toán
Một vấn đề được đặt ra ở đây là thời gian thực hiện thuật toán trên máy tính phụ
thuộc vào rất nhiều yếu tố như tốc độ CPU, bộ nhớ, thời điểm chạy chương trình ...
do đó khơng thể đánh giá thời gian thực hiện thuật tốn bằng thời gian trên máy
tính, và cũng khơng thể dùng thời gian này để so sánh hiệu quả của các thuật tốn
được. Có hai mơ hình đánh giá thời gian thuật toán hay sử dụng trong thực tế là mơ
hình RAM và O-lớn.
Mơ hình RAM: Thực hiện thuật tốn trên một máy tính giả định gọi là Random
Access Machine hoặc RAM.
 Mỗi phép tính đơn giản (+, *, –, =, if, call) thực hiện trong 1 đơn vị thời gian
(hoặc 1 bước).
 Vòng lặp, hàm, thủ tục: là kết hợp của nhiều phép tính đơn lẻ
 Mỗi bước truy cập bộ nhớ mất 1 đơn vị thời gian
 Luôn có đủ bộ nhớ cần thiết để thực hiện thuật toán
Thời gian thực hiện của thuật toán phụ thuộc vào đầu vào của bài toán. Các trường
hợp đầu vào khác nhau thời gian thực hiện khác nhau. Khi đánh giá thời gian thực
hiện thuật toán, người ta chia thành 3 loại là
 Độ phức tạp trong trường hợp tồi nhất (worst-case complexity): Là số lượng
bước lớn nhất thuật toán cần thực hiện với bất cứ đầu vào kích thước

nào.

 Độ phức tạp trong trường hợp tốt nhất (best-case complexity): Là số lượng
bước nhỏ nhất thuật toán cần thực hiện với bất cứ đầu vào kích thước


nào.

 Độ phức tạp trong trường hợp trung bình (average-case complexity): Là số
lượng bước trung bình thuật tốn cần thực hiện trên tất cả các trường hợp
đầu vào kích thước .
Trong 3 đánh giá độ phức tạp trên đánh giá trong trường hợp tồi nhất là đánh giá
quan trọng nhất.
~ 19 ~


Trong mơ hình RAM chúng ta đánh giá thời gian thực hiện thuật toán bằng cách
đếm số đơn vị thời gian cần. Ưu điểm của mơ hình này là đơn giản, tuy nhiên việc
đếm số đơn vị thời gian cần không phải lúc nào cũng đơn giản. Trong một số trường
hợp việc này gần như là khơng thể bởi vì hàm thời gian thực hiện là hàm có rất
nhiều điểm lồi, và để xác định nó một cách chính xác ta cần phân tích rất tỉ mỉ. Hơn
nữa theo mơ hình RAM thời gian thực hiện của thuật tốn thường có dạng đa thức

Trong đó

là kích thước đầu vào của dữ liệu. Chúng ta nhận thấy là thời gian thực

hiện thuật toán phụ thuộc rất nhiều số hạng, nhưng số hạng có số mũ cao nhất trong
đó là thành phần có yếu tố quan trọng nhất. Nó quyết định chính đến tốc độ tăng
thời gian thực hiện của thuật tốn.

Hình 1-5 Cận trên và cận dưới để đánh giá cho độ phức tạp của hàm
Phân tích O-lớn: trong mơ hình phân tích này chúng ta đơn giản phân tích trong mơ
hình RAM, bỏ bớt những thành phần ít ảnh hưởng đến thời gian thực hiện của thuật
toán khi so sánh các thuật toán với nhau.

~ 20 ~


Ví dụ trong O-lớn thì

là như nhau



được dùng để phân tích độ phức tạp của thuật tốn

Các ký hiệu tiệm cận
trong thực tế.
 Kí hiệu
số dương

biểu diễn tập các hàm


sao cho

cận trên tiệm cận của
 Kí hiệu
số dương



 Kí hiệu
số dương


hay

.}. Ta nói

={



: tồn tại các hằng

, với mọi

hay

.}. Ta nói

có bậc ít nhất là

biểu diễn tập các hàm

cận

.
={

: tồn tại các hằng

sao cho

, với mọi


là đánh giá tiệm cận đúng của

hay

có bậc là

là các hằng số dương khơng phụ thuộc vào , và

Hình 1-7 Ký hiệu 𝛰-lớn

Hình 1-6 Ký hiệu 𝛺-lớn

Ví dụ


.}. Ta nói

có bậc khơng q

sao cho



: tồn tại các hằng

, với mọi

biểu diễn tập các hàm


dưới tiệm cận của

Với

={

vì chọn
~ 21 ~

thì




vì chọn



thì

khi

vì với bất kỳ hằng số c nào thì
khi



vì chọn




vì với bất kỳ giá trị
khi

đủ lớn (

nếu



thì

,

khi

thì
nếu

vì với bất kỳ hằng số c nào thì
khi



vì cả



vì chỉ




vì chỉ

đều đúng
đúng
đúng

Hình 1-8 Ký hiệu -lớn
Như vậy để chứng minh


(

cần chỉ ra
)
~ 22 ~

)



Các lớp hàm thông dụng:
 Hàm hằng

. Thời gian thực hiện là hằng số VD hàm tính tổng 2 số

 Hàm loga

. VD tìm kiếm nhị phân


 Hàm tuyến tính

. VD Tìm giá trị lớn nhất trong dãy số

 Hàm siêu tuyến tính

. VD QuickSort, MergeSort

 Hàm bậc hai
 Hàm bậc ba
 Hàm mũ

. VD Sắp xếp nổi bọt (bubble sort )
.
, là hằng số >1.

 Hàm giai thừa

Hình 1-9 Tốc độ tăng theo kích thước đầu vào của một số hàm
Hình 1-9 và 1-10 minh họa tốc độ tăng và thời gian thực hiện của một số lớp hàm
thông dụng.
Mối quan hệ giữa các ký hiệu tiệm cận và các mơ hình đánh giá:

~ 23 ~


×