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

Đánh giá hiệu quả của giải thuật di truyền giải bài toán cây khung truyền thông tối ưu với các kỹ thuật mã hóa cây

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 (1.76 MB, 86 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------HUỲNH QUANG ĐỆ

HUỲNH QUANG ĐỆ

NGÀNH CÔNG NGHỆ THÔNG TIN

ĐÁNH GIÁ HIỆU QUẢ CỦA GIẢI THUẬT DI TRUYỀN GIẢI
BÀI TOÁN CÂY KHUNG TRUYỀN THÔNG TỐI ƯU VỚI CÁC
KỸ THUẬT MÃ HÓA CÂY

LUẬN VĂN THẠC SĨ KHOA HỌC
Chuyên ngành Công nghệ thông tin

KHOÁ 2009
Hà Nội – Năm 2012


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------Huỳnh Quang Đệ

ĐÁNH GIÁ HIỆU QUẢ CỦA GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN
CÂY KHUNG TRUYỀN THÔNG TỐI ƯU VỚI CÁC KỸ THUẬT MÃ HÓA
CÂY

Chuyên ngành : Công Nghệ Thông Tin

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 – Năm 2012


Danh mục thuật ngữ tiếng anh .............................................................................. 5 
Danh mục bảng vẽ ................................................................................................... 7 
Danh mục hình vẽ.................................................................................................... 8 
Lời cam đoan ......................................................................................................... 10 
Lời cảm ơn ............................................................................................................. 11 
Lời mở đầu............................................................................................................. 12 
Lý do chọn đề tài .......................................................................................................... 12 
Mục đích nghiên cứu, đối tượng, phạm vi nghiên cứu. ............................................ 12 
Tóm tắt cô đọng các luận điểm cơ bản và đóng góp mới của tác giả ...................... 13 
Phương pháp nghiên cứu............................................................................................. 14 

CHƯƠNG 1............................................................................................................ 15 
CÁC KHÁI NIỆM CƠ BẢN ................................................................................ 15 
1.1 Khái niệm thuật toán ................................................................................................ 15 
1.2 Các đặc trưng của thuật toán: ................................................................................. 16 
1.3 Độ phức tạp của thuật toán ...................................................................................... 18 
1.3.1 Tiêu chí đánh giá thuật toán ............................................................................... 18 
1.3.2 Cách xác định độ phức tạp của thuật toán........................................................ 19 
1.4 Các bài toán NP......................................................................................................... 24 
1.4.1 Bài toán tối ưu (Optimization Problem).......................................................... 24 
1.4.2 Bài toán quyết định ......................................................................................... 26 
1.4.3 Thuật toán không đơn định và lớp P, NP ........................................................ 27 
1.4.4 Phép qui dẫn đa thức và lớp NP-đầy đủ........................................................... 29 



1.4.5 Bài toán NP-khó................................................................................................. 36 
1.5 Một số cách tiếp cận giải các bài toán NP............................................................... 37 
1.5.1 Phương pháp xấp xỉ ........................................................................................... 38 
1.5.2 Phương pháp xác xuất........................................................................................ 38 
1.5.3. Phương pháp heuristic....................................................................................... 39 
1.5.4. Phương pháp tính toán tiến hóa ........................................................................ 40 

CHƯƠNG 2............................................................................................................ 43 
BÀI TOÁN CÂY KHUNG TRUYỀN THÔNG TỐI ƯU.................................. 43 
2.1. Giới thiệu................................................................................................................... 43 
2.2 Các bài toán tối ưu cây khung OCST ...................................................................... 46 
2.2.1 Bài toán MRCT................................................................................................... 46 
2.2.2. Bài toán cây khung truyền thông tối ưu tích yêu cầu (PROCT) ....................... 48 
2.2.3. Bài toán cây khung truyền thông tối ưu tổng yêu cầu (SROCT) ...................... 49 
2.2.4. Bài toán nhiều nguồn (Multiple Source)........................................................... 49 
2.3. Một số ứng dụng của bài toán cây khung truyền thông ....................................... 51 

CHƯƠNG 3............................................................................................................ 53 
THUẬT TOÁN DI TRUYỀN VÀ CÁC PHƯƠNG PHÁP MÃ HÓA CÂY.... 53 
3.1 Giải thuật di truyền................................................................................................... 53 
3.1.1 Tổng quan về giải thuật di truyền và các ứng dụng ..................................... 53 
3.1.2  Giải thuật di truyền ......................................................................................... 53 
3.2 Một số phương pháp mã hóa cây............................................................................. 56 
3.2.1 Mã hóa Prufer .................................................................................................... 56 
3.2.2. Mã hóa NetKeys (Network Random Keys Encoding) ...................................... 59 
3.2.3 Mã hóa NB (Node Biased Encoding) ................................................................. 61 
3.2.4 Mã hóa LB (Link Biased Encoding) .................................................................. 63 



3.2.5 Mã hóa LNB (Link and Node Biased Encoding) ............................................... 63 
3.3 Ứng dụng của thuật toán di truyền vào kết quả thực nghiệm .............................. 66 
3.3.1. Chọn lọc cá thể.................................................................................................. 66 
3.3.2 Toán tử lai ghép ................................................................................................. 67 
3.3.3. Toán tử đột biến ................................................................................................ 68 
3.4. Mô hình lai ghép đề xuất ......................................................................................... 69 
3.5. Giải thuật di truyền đề xuất:................................................................................... 70 

CHƯƠNG 4............................................................................................................ 73 
KẾT QUẢ THỰC NGHIỆM ............................................................................... 73 
4.1. Cài đặt thử nghiệm................................................................................................... 73 
4.1.1. Dữ liệu thực nghiệm ......................................................................................... 73 
4.1.2. Các tham số cho các thử nghiệm ...................................................................... 74 
4.2. Kết quả thực nghiệm................................................................................................ 75 

+ Kết luận............................................................................................................... 79 
TÀI LIỆU THAM KHẢO .................................................................................... 81 


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


2

Bin packing problem

3

Crossover, Recombination

Lai ghép

4

Evolutionary computation

Tính toán tiến hóa

5

Evaluation function

Hàm mục tiêu

6

Feasible solution

lời giải chấp nhận được

7


Fitness

Độ thích nghi

8

Inversion

Đảo đoạn

9

Individual

Cá thể

10

Genetic algorithm

11

Generation

Thế hệ

12

Genetic-inspired operators


Toán tử di truyền

13

K-point crossover

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

14

Local search

Tìm kiếm cục bộ

15

Mutation

Đột biến

16

Optimal Communication
Spanning Tree

17

Objective function


18

Optimal Product-Requirement
Optimal

BPP

GA

OCST

Bài toán đóng thùng

Thuật toán di truyền

Cây khung truyền thông tối ưu
hàm mục tiêu

PROCT

Tối ưu tích yêu cầu

Sum-Requirement SROCT

Tối ưu tổng yêu cầu

Communication Spanning Tree
19

Thuật toán xấp xỉ, sơ đồ xấp xỉ



Communication Spanning Tree
20

Order-based crossover

Lai ghép theo thứ tự

21

Probabilistic method

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

22

Primitive operations

Số phép toán cơ bản

23

Population

Quần thể

24

Selection


Chọn lọc

25

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

Roulette wheel selection

Roulette

26

Theory of computation

Lý thuyết độ phức tạp tính toán

27

Uniform crossover

Lai ghép đồng bộ

29

Uniform order-based crossover

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

6



Danh mục bảng vẽ
Bảng 1.1- Tóm tắt một số hàm tính độ phức tạp của thuật toán....................................22
Bảng 1.2 - Cho biết thời gian tính toán của thuật toán có độ phức tạp thường gặp. .....23
Bảng 1.3- Mối tương quan giữa quá trình tiến hóa và tính toán tiến hóa.....................41
Bảng 2.1- Các bài toán tối ưu OCT và tỉ lệ xấp xỉ tốt nhất được biết. ..........................51
Bảng 3.1- Chuỗi NetKeys cùng nhãn của các cạnh trong đồ thị ban đầu.....................60
Bảng 3.2 - Chuỗi NetKeys sau khi được sắp xếp ...........................................................60
Bảng 4.1 - Các bộ test chuẩn .........................................................................................74
Bảng 4.2 - Kết quả chạy các bộ test chuẩn sử dụng mã hóa Prufer và Netkey Encoding
................................................................................................................................76
Bảng 4.3- Kết quả chạy các bộ test chuẩn sử dụng mã hóa LB và NB..........................77
Bảng 4.4 - Kết quả chạy các bộ test chuẩn sử dụng mã hóa LNB.................................78

7


Danh mục hình vẽ
Hình 1.1 - Minh họa thuật toán......................................................................................16
Hinh 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 - Ký hiệu O – lớn. ............................................................................................20
Hình 1.6- Ký hiệu

-lớn. ..............................................................................................20

Hình 1. 7 Ký hiệu


-lớn................................................................................................20

Hình 1.8 - Minh họa giả thuyết về mối quan hệ giữa các lớp P, NP và NP-đầy đủ. ..30
Hình 1.9 - Biến đổi đa thức từ bài toán Π1 về bài toán Π2. ...........................................31
Hình 1.10 - Sơ đồ quy dẫn giữa các bài toán. ...............................................................33
Hình 1.11 - Giả thuyết về quan hệ giữa các lớp NP, NP-đầy đủ và NP-khó ..............37
Hình 2.1- Minh họa cây khung trong bài toán OCST....................................................44
Hình 2.2 - Minh họa bài toán SROCT và PROCT .........................................................45
Hình 2.3 - Mối quan hệ của những bài toán cây khung truyền thông tối ưu.................46
Hình 2.4- Minh họa độ trễ của cặp đỉnh........................................................................47
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á. ...............................................................................................................48
Hình 3.1- Mô tả nhiễm sắc thể ( chromosome), allele, gen . .........................................54
Hình 3.2 - Mô tả sơ đồ chung của thuật toán di truyền.................................................55
Hình 3.3- Cây khung được mã hóa thành chuỗi Prufer 2565........................................57
Hình 3.4 - Cây thu được theo mã hóa NetKeys..............................................................61
Hình 3.5 - Mô tả một cây được mã hóa NB. ..................................................................63
Hình 3.6 - Cây khung thu được từ mã hóa LNB. ...........................................................65
Hình 3.7- Mô tả phương pháp chọn lọc theo vòng quay Roulette .................................66
8


Hình 3.8- Minh họa phương pháp lai ghép một điểm cắt..............................................67
Hình 3.9 - Minh họa phương pháp lai ghép đồng bộ.....................................................68
Hình 3.10 - Chỉ ra phép đột biến tại vị trí thứ 4. ...........................................................68
Hình 4.1 - Biểu đồ kết quả tốt nhất tìm được của 5 phương pháp mã hóa trên bộ dữ
liệu Raidl50 ............................................................................................................79

9



Lời cam đoan

Tôi cam đoan kết quả của luận văn là chính tôi thực hiện, các số liệu thực
nghiệm là theo đúng kết quả của chương trình. Nếu sai tôi xin chịu hoàn toàn trách
nhiệm.

10


Lời cảm ơn
Tác giả đã nhận được sự hướng dẫn nhiệt tình, chu đáo, nghiêm khắc và đầy
khoa học của PGS.TS Nguyễn Đức Nghĩa trong suốt thời gian học tập, nghiên cứu và
hoàn thành đề tài. Tác giả xin bày tỏ lòng biết ơn chân thành và kính trọng sâu sắc đối
với Thầy.
Nhân dịp này tác giả cũng xin chân thành gởi lời cảm ơn đến quý thầy, cô trong
và ngoài Viện Công nghệ Thông tin và Truyền thông, Viện Đào tạo Sau đại học Đại
học Bách khoa Hà Nội đã dày công giảng dạy trong suốt khóa học và tạo điều kiện
thuận lợi cho tác giả hoàn thành luận văn này.
Tác giả xin chân thành cảm ơn các bạn cùng lớp Cao học Tin khóa 1 đã đùm
bọc giúp đỡ nhau trong học tập và sinh hoạt.
Mặc dù luận văn đã được thực hiện với sự nổ lực cố gắng hết sức của bản thân
song do hạn chế về trình độ và sự hiểu biết nên khó tránh khỏi những sai lầm thiếu sót.
Đồng thời tác giả cũng nhận thức được rằng còn rất nhiều vấn đề mở đặt ra chưa giải
quyết được. Tác giả rất mong nhận được những góp ý, phê bình quý báu của quý thầy
cô và các bạn đọc quan tâm.

11



Lời mở đầu
Lý do chọn đề tài
Với sự tiến bộ vượt bậc của công nghệ phần cứng của máy tính hiện nay chúng
ta vẫn chưa thể tìm được lời giải tối ưu cho các bài toán có độ phức tạp cao trong thời
gian ngắn. Vì vậy, tìm kiếm lời giải đủ tốt cho các bài toán trong thời gian phù hợp là
vấn đề được các nhà khoa học trong lĩnh vực tin học rất quan tâm. Mục đích chính của
các thuật toán tìm kiếm, là tìm ra lời giải tốt nhất cho bài toán trong thời gian nhỏ nhất.
Các thuật toán tìm kiếm như: vét cạn ( tìm kiếm trên danh sách, trên cây hoặc đồ thị),
tìm có thông tin sử dụng heurictics để áp dụng các tri thức về cấu trúc của không gian
tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm được sử dụng nhiều nhưng
chỉ hiệu quả với không gian tìm kiếm nhỏ và không hiệu quả khi tìm kiếm trong không
gian tìm kiếm lớn. Tuy nhiên, trong thực tế có rất nhiều bài toán tối ưu với không gian
tìm kiếm rất lớn cần phải giải quyết.
Do đó để giải quyết vấn đề này trong thực tế thì hiện nay người ta thường sử
dụng phương pháp 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 tìm kiếm cục bộ (local search), các sơ đồ xấp xỉ (approximation schemes),
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), …
Mục đích nghiên cứu, đối tượng, phạm vi nghiên cứu.
Mục đích của luận văn này là khảo sát các đặc tính của thuật toán di truyền với
các kỹ thuật mã hóa cây để giải bài toán cây khung truyền thông tối ưu (Optimal
Communication Spanning Tree - OCST), là một trong những bài toán tối ưu trên đồ thị

12


thuộc lớp NP-khó có ứng dụng trong nhiều lĩnh vực của thực tế như: mô hình mạng, trí
tuệ nhân tạo, thiết kế vi mạch….
Đối tượng nghiên cứu là các kỹ thuật mã hóa cây với phạm vi là năm kỹ thuật
mã hóa cây: Prufer, Netkey Encoding, LinkBiased Encoding, NodeBiased Encoding,

The Link and Node Biased Encoding.
Thuật toán với các kỹ thuật mã hóa cây khác nhau đã đượ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á hiệu quả các thuật toán
giải của bài toán OCST.

Tóm tắt cô đọng các luận điểm cơ bản và đóng góp mới của tác giả
Luận văn được trình bày trong 4 chương và lời kết luận.
Chương 1 trình bày các khái niệm cơ bản của lý thuyết độ phức tạp tính toán, định
nghĩa lớp bài toán NP-khó.
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.
Chương 3 trình bày thuật toán di truyền và một số phương pháp mã hóa cây.
Chương 4 trình bày kết quả thực nghiệm thu được khi sử dụng thuật toán di truyền đề
xuất để giải bài toán cây khung truyền thông tối ưu với các kỹ thuật mã hóa cây khác
nhau. Phân tích kết quả đạt được của thuật toán di truyền với năm phương pháp mã hóa
cây khung.
Về đóng góp mới của tác giả: Đưa ra kết quả so sánh giữa các kỹ thuật mã hóa
cây khác nhau. Để từ đó có thể chọn được kỹ thuật mã hóa cây cho kết quả tốt trong
bài toán cây khung truyền thông.

13


Phương pháp nghiên cứu
Nghiên cứu lý thuyết về thuật toán di truyền và bài toán tối ưu cây khung truyền
thông.
Nghiên cứu các kỹ thuật mã hóa cây.
Xây dựng và cài đặt chương trình cho các kỹ thuật mã hóa cây.
So sánh kết quả đạt được của các kỹ thuật mã hóa cây.
Kết luận và hướng phát triển.
Phần kết luận chung đánh giá tổng quan lại những kết quả đã thực hiện được

trong luận văn, 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 sau này.

14


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 thuật toán 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ữ này được trình bày dựa
trên tài liệu [4].
1.1 Khái niệm thuật toán
Khái niệm thuật toán (Algorithm) xuất phát từ tên nhà toán học Arập Abu Ja’far
Mohamed ibn, thường được gọi là al’Khwarizmi. Ông là tác giả một cuốn sách về số
học, trong đó ông dùng phương pháp mô tả rất rõ ràng, mạch lạc cách giải các bài toán.
Sau này phương pháp mô tả cách giải của ông đã được xem là một chuẩn mực và được
nhiều nhà toán học tuân theo. Thuật ngữ "algorithm" ra đời từ đó dựa theo cách phiên
âm tên của ông. Cùng với thời gian khái niệm thuật toán được hoàn chỉnh dần và khái
niệm hình thức chính xác của thuật toán được định nghĩa thông qua mô hình máy
Turing. Với máy Turing lý thuyết độ phức tạp tính toán (Theory of computation
complexity) có một sự tiến triển mới, giúp chúng ta hiểu rõ được bản chất của thuật
toán, độ phức tạp của một thuật toán, nó cắt nghĩa cho ta “độ khó” của một bài toán
cho trước.
Định nghĩa 1.1. Thuật toán giải bài toán đặt ra là một hệ thống chặt chẽ và rõ
ràng các quy tắc xác định một dãy các thao tác trên những đối tượng sao cho sau một
số hữu hạn bước thực hiện các thao tác ta thu được đầu ra đối với đầu vào cho trước
của bài toán.

15



Algorithm(thuật toán )

Input (Đầu vào)

Output (Đầu ra)

Hình 1.1 - Minh họa thuật toán.
1.2 Các đặc trưng của thuật toán:
y Đầu vào (Input): là tập các dữ liệu cần cung cấp thuật toán từ lúc đầu để xử lý.
y Đầu ra (Output): với mỗi một bộ dữ liệu vào, thuật toán sẽ cho ra 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.
y Hữu hạn: với mọi đầu vào thì thuật toán vẫn cầ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.
y Tính xác định: Thuật toán yêu cầu ở mỗi bước các thao tác phải hết sức rõ ràng,
không gây nên sự nhập nhằng, lẫn lộn. Khi thực hiện thuật toán trong cùng một
điệu kiện phải cho cùng một kết quả.
y Tổng quát: Tức là thuật toán có thể áp dụng để giải mọi bài toán có dạng đã cho.
y Tính hiệu quả: Với dữ liệu vào, sau một số hữu hạn bước thực hiện thuật toán sẽ
dừng và cho đúng kết quả mong muốn với thời gian chấp nhận được.
Hai tính chất quan trọng nhất của thuật toán là tính xác định và tính hiệu quả.
Tính xác định 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.
Đầu vào: Một tập G gồm thời gian chiếu trong ngày của n bộ phim.
Đầu ra: Tập con của G chứa số bộ phim lớn nhất có thể xem (không được

chồng lên nhau về thời gian).
Chúng ta 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


Hinh 1.2- Minh họa bài toán chọn lịch xem phim.
+ Thuật toán 1: Chọn lần lượt bộ phim chiếu sớm nhất trong G mà không chồng 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 1 ta có thể đưa ra một phản ví dụ (có nghĩa là tìm được một
cách khác để có thể xem nhiều bộ phim hơn) để chứng minh Thuật toán 1 cho kết quả
không chính xác.
-

Ví dụ 1:

Hình 1.3 Phản ví dụ của thuật toán 1.
Với Thuật toán 1 thì theo ví dụ 1 chúng ta sẽ chọn P1 để xem phim vì phim ở
P1 được chiếu đầu tiên. Nhưng nếu là như vậy chúng ta chỉ xem được một bộ phim.
Nếu ta chọn P2 để xem thì ta có thể xem 3 bộ phim.
+ Thuật toán 2: Chọn bộ phim có thời gian chiếu ngắn nhất trong G mà không trùng
với các bộ phim đã chọn trước. Lặp lại cho đến khi không chọn thêm được.
Tương tự với Thuật toán 2 thì một ta cũng tìm được một phản ví dụ như hình
vẽ.
-

Ví dụ 2:

Hình 1.4- Phản ví dụ của thuật toán 2
17



+ Thuật toán 3: Duyệt toàn bộ: duyệt

tập con của tập n bộ phim trong G. 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, vì với

thì số tập con là 220.

+ Thuật toán 4: Sắp xếp các lịch chiếu phim theo thứ tự tăng theo thời gian kết thúc
(thuật toán tối ưu). 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 cho lời giải đúng 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 luôn cho lời giải đúng. Để chứng minh một thuật toán là cho lời giải
đúng thì ta phải chứng minh bằng toán học.
Chú ý rằng có những bài toán còn không có thuật toán để giải, chẳng hạn bài
toán về tính dừng của thuật toán.
1.3 Độ phức tạp của thuật toán
1.3.1 Tiêu chí đánh giá thuật toán
Để đánh giá hiệu quả của một thuật toán người ta thường đánh giá độ phức
tạp thời gian thực hiện của thuật toán như là hàm theo kích thước của dữ liệu đầu
vào. Kích thước của dữ liệu đầu vào (the size of the input) thường tùy thuộc vào
từng bài toán cụ thể, có thể là tổng số bit cần thiết để biểu diễn nhị phân của dữ liệu
(chẳng hạn, bài toán xác định tính nguyên tố của số tự nhiên n, thì kích thước dữ liệu
đầu vào không phải là n, mà là số chữ số của n hay tổng số bit cần thiết trong biểu
diễn nhị phân của n). Đối với bài toán sắp xếp tăng dần dãy n phần tử a1, a2, a3,…,
an cho trước thì kích thước dữ liệu đầu vào n.

Kích thước của một tập cơ sở dữ liệu (database) có thể được xem là số record
của nó. Ta hiểu, thời gian thực hiện (running time) của một thuật toán là số phép
18


toán cơ bản (primitive operations) hoặc “các bước” (steps) nhiều nhất cần thực hiện
để nhận được lời giải của bài toán với mọi dữ liệu đầu vào cho trước (kể cả trường
hợp xấu nhất).
1.3.2 Cách xác định độ phức tạp của thuật toán
Ta nói rằng, thuật toán có độ phức tạp thời gian tính hay độ phức tạp tính toán là
f(n) khi và chỉ khi với mọi dữ liệu đầu vào kích thước n, thuật toán sẽ dừng và cho kết
quả sau nhiều nhất f(n) bước tính toán.
Thuật toán có độ phức tạp thời gian đa thức, gọi tắt là thuật toán đa thức, nếu
như f(n) là một đa thức với bậc cố định theo n . Việc xác định chính xác f(n) thường
rất khó và không có ý nghĩa vì tính hiệu quả của một thuật toán phải được đánh giá
trên lớp các dữ liệu đủ lớn. Vì vậy, thay cho việc tính chính xác f (n) người ta đưa ra
các ký hiệu tiệm cận

được dùng để đánh giá độ phức tạp của thuật toán trong

thực tế như sau.


: nếu tồn tại hằng số
mọi



là giới hạn trên của


: nếu tồn tại hằng số
mọi



. Ta nói

và số tự nhiên

. Ta nói

: nếu tồn tại hằng số
với mọi



. Ta nói

19

với

sao cho

với

sao cho




.

và số tự nhiên

là giới hạn dưới của

sao cho

.
và số

là giới hạn chặt của

.


Hình 1.5 - Ký hiệu O – lớn.

Hình 1. 7 Ký hiệu

Hình 1.6- Ký hiệu

-lớn.
20

-lớn.


Ví dụ: f(n) = n2 + 4n + 2 . Ta có
f(n) = n 2 + 4n + 2 ≤ n2 + 4n 2+ 2n2 = 7n2 với mọi n ≥ 1.

Nghĩa là tồn tại c = 8, n0 = 1 . Do đó n2+4n+2=O(n2).
Tổng quát : aknk+ak-1nk-1+…+a0=O(nk) (giả thiết ak >0).
Chú ý rằng, 2n không có bậc của một đa thức, vì mọi số nguyên dương k và
mọi số dương C > 0, chúng ta có 2n >

với n đủ lớn.



vì chọn



vì với bất kỳ giá trị
lớn (

nếu



,

thì

nếu

khi
thì

.

khi

đủ

).

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

khi

.


vì cả



vì chỉ



vì chỉ

Như vậy để chứng minh

đều đúng.
đúng.
đúng.
thì cần chỉ ra




O-lớn nhóm các hàm thành các lớp hàm, các hàm
có quan hệ theo các ký hiệu tiệm cận
hàm thì có quan hệ theo

thuộc hai lớp khác nhau

khác nhau. Còn các hàm thuộc cùng 1 lớp

.

+ Một số hàm tính độ phức tạp tính toán thường gặp của thuật toán:
Các hàm 1, logn, n, nk, được xếp vào hàm đa thức. Các hàm còn lại nlogn, an, n!
được xếp vào loại hàm mũ. Những thuật toán có độ phức tạp tính toán cấp loại hàm
21


đa thức thường là chấp nhận được, những thuật toán như thế được gọi là thuật toán đa
thức (polynomial algorithm). Những thuật toán có độ phức tạp tính toán cấp loại hàm
mũ thì tốc độ tính toán thường rất chậm.
STT

Độ phức tạp

Tên gọi

1

O(1)


Hằng số

2

O(logn)

Logarithm

3

O(n)

Tuyến tính

4

O(n logn)

n log n

5

O(

), k

Đa thức

6


O(

)

Hàm mũ

7

O(

8

O(n!)

Hàm mũ

), b>1, n

Giai thừa

Bảng 1.1- Tóm tắt một số hàm tính độ phức tạp của thuật toán.
Vì vậy hàm logb(n) tăng trưởng

Lưu ý thêm, với mọi x >-1,

chậm hơn hàm đa thức na với a, b là các số thực dương . Với a>1, hàm mũ an là đơn
điệu tăng theo n. Với hằng số k nguyên dương bất kỳ, ta có

hay nk =O(an).


Như vậy các hàm đa thức tăng chậm hơn các hàm mũ. Hơn nữa, với mọi số tự nhiên n,
n!

, do đó n!=O(nn).
Bảng sau đây cho ta khái niệm tăng trưởng về thời gian thực hiện một số

thuật toán có độ phức tạp tính toán thường gặp (đơn vị thời gian là 0,001 giây, nếu
không có ghi chú khác).

22


Bảng 1.2 - Cho biết thời gian tính toán của thuật toán có độ phức tạp thường gặp.
Nếu hai thuật toán giải cùng một bài toán, thuật toán A có độ phức tạp
tính toán O(g1(n)), thuật toán B có độ phức tạp O(g2(n)) mà g2(n) có cấp cao hơn
g1(n), thì ta nói thuật toán A hiệu quả hơn thuật toán B.
Ví dụ 1: Giả sử thuật toán A có độ phức tạp tính toán là f(n)=4n3- n +1. Khi đó
g(n)=n3. Vì vậy độ phức tạp tính toán của thuật toán A là O(n3).
Ví dụ 2: Bài toán sắp xếp dãy phần tử a[1], a[2], …, a[n] tăng dần bởi thuật
toán Bouble sort:
Input: a[1], a[2],…,a[n].
Output: dãy tăng dần.
+ Thuật toán:
23


For i:=1 to n do
For j:=1 to n-i do
Begin

If a[j+1]End;
Output (a[1], a[2], …a[n]);
Với mỗi i (

) thuật toán phải thực hiện n-i phép so sánh. Vì vậy số phép

so sánh là (n-1)+(n-2)+…+1=

. Vì vậy kích thước đầu vào của thuật toán là n

và độ phức tạp tính toán của thuật toán là O(n2) .
1.4 Các bài toán NP
1.4.1 Bài toán tối ưu (Optimization Problem)
Bài toán tối ưu yêu cầu xác định lời giải sao cho hàm mục tiêu đạt giá trị cực đại
(cực tiểu). Mô hình toán học của bài toán tối ưu tổ hợp tổng quát được phát biểu như
sau:
Tìm min / max{ f ( x), x

D}, trong đó D ={x= ( x1, x2, ..., xn)

A1 × A2 × ... ×

An và A1, …, An là các tập hữu hạn .
Hàm f(x) được gọi là hàm mục tiêu (objective function). Mỗi phần tử x

D được

gọi là một phương án hay lời giải chấp nhận được (feasible solution). Tập hữu hạn
phương án D còn được gọi là tập ràng buộc. Một phương án x*

tiêu đạt cực tiểu (hay cực đại), cụ thể là:
f(x*)

f(x), ∀x ∈ D, đối với bài toán min,

f(x*)

f(x),  ∀x ∈ D, đối với bài toán max,
24

D làm hàm mục


×