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

Nghiên cứu ảnh hưởng của chất liệu sợi dệt và quá trình nhuộm tới khả năng ngăn ngừa tia uv của vải

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.65 MB, 121 trang )

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 chuyên ngành và nhiệt tình hướng dẫn, giúp
đỡ tôi hoà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 chuyên đề
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 quá trình hoà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 toá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 toán người du
lịch, bài toá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 toá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 toá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 toán tiến hóa
(evolutionary computation), thuật toá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 toá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 toán,
lớp bài toá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 toá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 toá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 toá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 toá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 toán tiến hóa .........................................................................40

CHƢƠNG 2 BÀI TOÁN CÂY KHUNG TRUYỀN THÔNG TỐI ƢU ......... 46
2.1. Bài toá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 toá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 toá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 toá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 TOÁ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 toán .................................................................................................. 15
Hình 1-2 Minh họa bài toán chọn lịch xem phim ............................................................. 17
Hình 1-3 Phản ví dụ của thuật toán 1 ................................................................................... 17
Hình 1-4 Phản ví dụ của thuật toá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 toá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 toán ............................................... 35
Hình 1-14 Danh sách một số bài toá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 toán OCST ............................ 47
Hình 2-2 Minh họa bài toán SROCT và PROCT ................................................................. 48
Hình 2-3 Các biến thể của bài toán cây khung truyền thông tối ưu tổng quát ... 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 toán Memetic ...................................................................... 64
Hình 3-1 Mô hình một thuật toá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 toán di truyền ............................................................... 71
Hình 3-4 Bài toá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 toá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 toá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 toán di truyền lai
BPP


Bài toá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 toá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 toán. Dưới dạng một bài
toá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 toán và đầu ra là giá trị mong muốn tương ứng với
đầu vào đó.
Ví dụ: bài toá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 hoá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 toán bằng máy tính trước hết chúng ta phải biểu diễn được bài toá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 toán tính toán như sau:
Định nghĩa 1.1. Bài toán tính toá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 toán tổng quát 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 toá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 toán
(algorithm). Một thuật toán để giải quyết bài toá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 toán.
Đầu vào
(Input)

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

Hình 1-1 Minh họa thuật toán
Thuật toá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 toá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 quá trình thực hiện thuật
toá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 toán có thể áp dụng để giải mọi bài toán có
dạng đã cho.
Hai tính chất quan trọng nhất của thuật toán là tính chính xác và tính hiệu quả. Tính
chính xác của thuật toán không phải lúc nào cũng dễ thấy
Ví dụ: Bài toá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 toá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 toán chọn lịch xem phim
Thuật toá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 toán này ta có thể đưa ra một ví dụ chỉ ra thuật toán (phản ví dụ) sai như
sau
P1
P2

Hình 1-3 Phản ví dụ của thuật toán 1
Thuật toá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 toá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 toán 2
Thuật toá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 toán là không chính xác ta chỉ cần đưa ra một phản ví dụ của thuật
toán. Tuy nhiên chưa chỉ ra được một phản ví dụ của thuật toán không có nghĩa là
thuật toán chính xác. Để chứng minh một thuật toán là chính xác ta phải chứng
minh bằng toán học. Có những bài toán mà không tồn tại thuật toán chính xác để
giải!
Với một bài toán có thể tồn tại rất nhiều thuật toán để giải, mỗi thuật toá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
toán thông qua lượng tài nguyên 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 toán chính xác. Các tài nguyên
máy tính mà chúng ta xét đến ở đây là thời gian CPU (để thực hiện thuật toá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 nguyên 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 toá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 toá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 toán hiệu quả
hơn dù được thực hiện trên máy tính tốc độ chậm vẫn luôn 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 toá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 toá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 toá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 toá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 toá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 toá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 toá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 quá

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 ~


 Thời gian tính là


‖. Nghĩa là thời gian tính trong tình huống tồi nhất được xác định

bởi một hàm
 Thời gian tính là

một hàm

được hiểu là : ―đánh giá trong tình huống tồi nhất
nào đó.
được hiểu là : ―đánh giá trong tình huống tốt nhất

‖. Nghĩa là thời gian trong tình huống tốt nhất được xác định bởi
nào đó.

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

1.2. Độ phức tạp tính toán của bài toán
1.2.1. Khái niệm về độ phức tạp của bài toán
Như đã biết, đối với một bài toán có thể có nhiều thuật toán khác nhau để giải. Mỗi
thuật toán có độ phức tạp tính toán khác nhau. Một câu hỏi được đặt ra là độ phức
tạp tính toán của các thuật toán có liên quan gì đến bài toán không? Hay nói cách
khác có phải bài toán nào cũng khó như nhau không? Câu trả lời là không. Mỗi bài

toán nó có một mức độ khó khác nhau và được đặc trưng bởi độ phức tạp tính toán
của thuật toán tốt nhất trong số tất cả các thuật toán có thể để giải nó.
Định nghĩa 1.3. Độ phức tạp tính toán của một bài toán là thời gian của thuật toán
tốt nhất trong số tất cả các thuật toán có thể để giải bài toán đó.

~ 24 ~


×