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
và
. Ta nói
19
với
sao cho
với
sao cho
và
.
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