Tải bản đầy đủ (.doc) (82 trang)

so sánh các giải thuật song song metatheuristic trong việc giải bài toán TSP

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 (2 MB, 82 trang )

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên
Điện thoại liên lạc
Lớp: KSTN-CNTT
Hệ đào tạo: Chính quy
Đồ án tốt nghiệp được thực hiện tại:
Hà Nội
Thời gian làm ĐATN
2. Mục đích nội dung của ĐATN:
So sánh hiệu quả của một vài giải thuật metaheuristic trong việc giải bài toán người du lịch. Các
mô hình song song hóa dựa trên MPI được sử dụng để đánh giá cho các giải thuật GA (gentetic
algorithm) ,SA (simulated annealing), ACO ( Ant Colony Optimization). Các kết quả đánh giá
dựa trên hiệu quả song song hóa của các mô hình song song cho cùng 1 giải thuật và giữa các
giải thuật khác nhau.
3. Các nhiệm vụ cụ thể của ĐATN





Nghiên cứu các bài toán TSP
Tìm hiểu các giải thuật metaheuristic và các hướng song song hóa
Thực thi các giải thuật song song hóa trên môi trường MPI
So sánh ,phân tích và đánh giá giữa các giải thuật

4. Lời cam đoan của sinh viên:
Tôi Phạm Thái Sơn cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn
của thầy Ngô Duy Hòa.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công
trình nào khác.


Hà Nội, ngày tháng năm
Tác giả ĐATN
Họ và tên sinh viên
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn

1|

Sinh viên thực hiện: Lớp KSTN-CNTT


TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Mục đích của bài toán tối ưu tổ hợp là tìm lời giải tốt nhất trong các lời giải có thể và
không gian tìm kiếm lời giải của bài toán là rời rạc .Nhiều bài toán tối ưu tổ hợp có độ phức tạp
tính toán cao và được phân lọai thuộc lớp NP khó .Việc tìm ra lời giải tối ưu cho các bài toán này
cho các hệ thống song song lớn nhất cũng không thể hoàn thành được trong giới hạn thời gian
cho phép vì vậy các kỹ thuật heuristic cho việc giải các bài toán tổ hợp theo hướng xấp xỉ đã
được phát triển để tìm ra các lời giải gần tối ưu (hay xấp xỉ )trong giới hạn thời gian cho phép.
Bài toán người du lịch (TSP) là một bài toán cổ điển thuộc lớp NP được nghiên cứu sâu trong
lĩnh vực tối ưu tổ hợp.
Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việc giải quyết các
bài toán tổ hợp khó. Metaheuristic bao gồm những chiến lược khác nhau trong việc khám phá
không gian tìm kiếm bằng cách sử dụng những phương thức khác nhau và phải đạt được sự cân
bằng giữa tính đa dạng và chuyên sâu của không gian tìm kiếm. Một cài đặt thành công của
metaheuristic trong một bài toán tổ hợp phải cân bằng giữa sự khai thác được kinh nghiệm thu
thập được trong quá trình tìm kiếm để xác định được những vùng với những lời giải có chất
lượng cao gần tối ưu. Những ví dụ của metaheuristic bao gồm giải thuật luyện thép (SA) , giải
thuật di truyền (GA) , giải thuật đàn kiến (ACO) ,…Giải thuật đàn kiến là metaheuristic dùng
chiến lược của kiến trong thế giới thực để giải bài toán tối ưu. SA xuất phát từ phương thức xác

suất và kỹ thuật luyện bao gồm việc nung và điều khiển làm nguội các kim loại để đạt được trạng
thái năng lượng nhỏ nhất .Trong khi đó giải thuật di truyền dựa trên ý tưởng từ cơ chế di truyền
trong sinh học và tiến trình tiến hóa trong cộng đồng các cá thể của 1 lòai.
Với độ phức tạp tính toán cao của các bài toán tối ưu tổ hợp cũng như đòi hỏi về mặt thời gian ,
việc giải các bài toán này yêu cầu cần phải có những cài đặt song song hóa hiệu quả của các giải
thuật để giải quyết chúng. Song song hóa các giải thuật metaheuristic phải đạt được 2 yêu cầu :
đa dạng hóa để khám phá được nhiều vùng trong không gian tìm kiếm và tăng tốc độ tìm kiếm .
Nhiều mô hình song song hoái đã được đề xuất cho nhiều metaheuristic. ACO và GA đều là các
cách tiếp cận dựa trên tập cá thể và vì vậy khá tự nhiên cho việc xử lý song song . Tuy nhiên SA
thì vốn đã mang tính tuần tự và rất chậm cho các bài toán với không gian tìm kiếm lớn nhưng
vẫn có một vài kỹ thuật song song hóa có thể được áp dụng để tăng tốc độ tìm kiếm.
Đồ án nhằm mục đích nghiên cứu ,cài đặt thực tế các giải thuật song song hóa metaheuristic
nhằm mục đích so sánh hiệu quả của từng giải thuật và khả năng song song hóa của các mô hình
song song cho việc tìm kiếm lời giản gần tối ưu của bài tóan TSP. Các mô hình song song được
đề xuất cho giải thuật đàn kiến, luyện thép và giải thuật di truyền. Mô hình thực nghiệm dùng
MPI và một vài bài toán trong thư viện TSPLIB..

2|

Sinh viên thực hiện: Lớp KSTN-CNTT


Lời cảm ơn
Lời đầu tiên em xin gửi lời cảm ơn sâu sắc đến thầy Ngô Duy Hòa,
thầy đã tận tình chỉ bảo và hướng dẫn em trong suốt quá trình thực tập và làm
đồ án để em hoàn thành tốt đồ án tốt nghiệp của mình!
Tiếp đến em xin gửi lời cảm ơn chân thành đến các thầy cô trong khoa
Công Nghệ Thông Tin, các thầy cô trong trường Đại học Bách Khoa Hà Nội
đã dày công dạy dỗ em trong suốt 5 năm học tại trường.
Em xin chân thành cảm ơn các thầy cô trong bộ môn Khoa học máy

tính đã luôn luôn tạo cho chúng em một môi trường học tập tốt tại trường.
Em xin gửi lời biết ơn chân thành và sâu sắc đến bố mẹ và gia đình.
Cuối cùng, tôi cảm ơn tất cả bạn bè đã luôn luôn giúp đỡ tôi trong cuộc sống
và học tập!

Đại học Bách Khoa Hà Nội

3|

Sinh viên thực hiện: Lớp KSTN-CNTT


Mục lục
Danh mục hình vẽ sử dụng..........................................................................................................................9
Danh mục các từ viết tắt............................................................................................................................10
Tổng quan..................................................................................................................................................11
Giới thiệu chung........................................................................................................................................11
1.Các kiến thức cơ bản..............................................................................................................................13
1.1 Các khái niệm cơ bản về đồ thị........................................................................................................13
Định nghĩa đồ thị ..............................................................................................................................13
1.1.1. Các thuật ngữ cơ bản...............................................................................................................15
1.1.2. Đường đi, chu trình và đồ thị liên thông..................................................................................16
1.1.3. Chu trình Euler.........................................................................................................................17
1.1.4. Chu trình Hamilton...................................................................................................................18
1.1.5. Đồ thị có trọng số ....................................................................................................................19
1.1.6. Các cấu trúc dữ liệu biểu diễn đồ thị.......................................................................................19
1.2 Khái niệm về lớp các bài toán P và NP.............................................................................................20
1.1.1 Khái niệm các loại thời gian tính...............................................................................................20
1.1.2 Bằng chứng ngắn gọn dễ kiểm tra.............................................................................................21
1.1.3 Khái niệm quy dẫn ....................................................................................................................22

1.1.4 Lớp bài toán P...........................................................................................................................22
1.1.5 Lớp bài toán NP.........................................................................................................................22
1.1.6 Lớp bài toán Co-NP...................................................................................................................23
1.1.7 Lớp bài toán NP-đầy đủ (NP-Complete)....................................................................................23
1.1.8 Lớp bài toán NP- khó (NP-Hard)................................................................................................23
1.3 Các thuật toán xấp xỉ.......................................................................................................................24
4|

Sinh viên thực hiện: Lớp KSTN-CNTT


1.4 Bài toán tối ưu hóa tổ hợp (Combinatorial optimization)................................................................26
Bài toán tối ưu hóa tổ hợp tĩnh (Static Combinatorial optimization):...............................................26
Bài toán tối ưu hóa tổ hợp động (Dynamic Combinatorial optimization):........................................26
2.Bài toán người du lịch.............................................................................................................................27
1.5 Giới thiệu bài toán...........................................................................................................................27
1.6 Lịch sử bài toán TSP........................................................................................................................28
1.7 Mô tả bài toán TSP..........................................................................................................................29
1.8 Phân loại bài toán............................................................................................................................29
Đối xứng và bất đối xứng..................................................................................................................29
Với khoảng cách là metric ................................................................................................................30
Với khoảng cách không là metric .....................................................................................................30
1.9 Các giải thuật giải bài toán TSP........................................................................................................31
Các giải thuật để tìm lời giải chính xác..............................................................................................31
Heuristic và các giải thuật xấp xỉ.......................................................................................................32
3.Giao thức truyền gói tin(MPI) và các vấn đề song song hóa ..................................................................33
1.10 Kiến trúc máy tính song song........................................................................................................33
1.11 Phân tách bài toán.........................................................................................................................34
1.12 Phân tách dữ liệu...........................................................................................................................34
1.13 Phân tách công việc.......................................................................................................................34

1.14 Song song hóa dữ liệu và mô hình truyền tin.................................................................................35
1.15 Tối ưu chương trình song song .....................................................................................................35
1.16 Phân chia công việc........................................................................................................................35
1.17 Tối thiểu hóa trao đổi dữ liệu........................................................................................................36
1.18 Giảm chồng chéo giữa trao đổi dữ liệu và tính toán:.....................................................................36
1.19 MPI................................................................................................................................................36
5|

Sinh viên thực hiện: Lớp KSTN-CNTT


1.20 Lịch sử phát triển MPI....................................................................................................................37
1.21 Mục đích của MPI.........................................................................................................................37
1.22 Các đặc tính cơ bản của một chương trình MPI.............................................................................38
4.Giải thuật di truyền và di truyền song song............................................................................................39
1.23 Giới thiệu về giải thuật di truyền...................................................................................................39
4.1.1 Lịch sử phát triển:.....................................................................................................................39
1.24 Các khái niệm cơ bản.....................................................................................................................40
4.1.2 Cá thể, nhiễm sắc thể................................................................................................................40
4.1.3 Quần thể...................................................................................................................................41
4.1.4 Các toán tử di truyền................................................................................................................41
1.25 Mô hình giải thuật di truyền..........................................................................................................41
1.26 Các tham số của GA.......................................................................................................................43
Xác suất lai ghép...............................................................................................................................43
Xác suất đột biến..............................................................................................................................43
Kích thước quần thể..........................................................................................................................43
1.27 Các cách mã hoá NST.....................................................................................................................43
Mã hoá nhị phân...............................................................................................................................44
Mã hoá hoán vị.................................................................................................................................44
Mã hoá theo giá trị...........................................................................................................................44

1.28 Khởi tạo quần thể ban đầu............................................................................................................45
Hàm tính độ thích nghi.....................................................................................................................45
Cơ chế lựa chọn................................................................................................................................45
Lựa chọn tỷ lệ....................................................................................................................................45
Lựa chọn xếp hạng............................................................................................................................46
Lựa chọn theo cơ chế lấy mẫu ngẫu nhiên.......................................................................................46
6|

Sinh viên thực hiện: Lớp KSTN-CNTT


Lựa chọn tranh đấu...........................................................................................................................46
1.29 Các toán tử di truyền (GA operators).............................................................................................46
Mã hoá nhị phân...............................................................................................................................47
Mã hoá hoán vị.................................................................................................................................47
Mã hoá theo giá trị...........................................................................................................................48
1.30 Chiến lược nạp lại quần thể...........................................................................................................48
Nạp lại hoàn toàn..............................................................................................................................48
Nạp lại ngẫu nhiên............................................................................................................................49
Nạp lại theo mô hình cá thể ưu tú....................................................................................................49
1.31 GA song song.................................................................................................................................49
4.1.5 Giới thiệu..................................................................................................................................49
4.1.6 Các giải thuật GA song song......................................................................................................50
4.1.7 Mô hình GA song song đa quần thể phân tán...........................................................................52
5.Thuật toán bầy kiến và bầy kiến song song............................................................................................56
1.32 Sơ đồ chung của thuật toán bầy kiến.............................................................................................56
5.1.1 Giới thiệu chung về thuật toán bầy kiến...................................................................................56
5.1.2 Nội dung thuật toán..................................................................................................................62
1.33 Các sơ đồ thuật toán......................................................................................................................66
5.1.3 Thuật toán Ant System (AS) .....................................................................................................66

5.1.4 Thuật toán Ant Colony System(ACS) ........................................................................................68
5.1.5 Thuật toán Max–Min Ant System(MMAS) ...............................................................................69
5.1.6 Thuật toán Rank-Based Ant System(RBAS) ..............................................................................71
5.1.7 Thuật toán Best-Worst Ant System(BWAS) ..............................................................................72
1.34 Thuật toán đàn kiến song song......................................................................................................73
6.Giải thuật luyện thép..............................................................................................................................75
7|

Sinh viên thực hiện: Lớp KSTN-CNTT


1.35 Giới thiệu giải thuật luyện thép.....................................................................................................75
1.36 Sơ đồ giải thuật..............................................................................................................................75
1.37 Giải thuật luyện thép song song....................................................................................................77
6.1.1 Song song bằng chia nhỏ dữ liệu...............................................................................................77
6.1.2 Mô hình chạy nhiều lần.............................................................................................................77
6.1.3 Các bước di chuyển song song..................................................................................................78
7.Cài đặt giải thuật ,kết quả và đánh giá....................................................................................................79
1.38 Môi trường cài đặt.........................................................................................................................79
1.39 Thư viện bài toán...........................................................................................................................79
1.40 Kết quả thực hiện...........................................................................................................................79
1.41 So sánh và đánh giá.......................................................................................................................80

8|

Sinh viên thực hiện: Lớp KSTN-CNTT


Danh mục hình vẽ sử dụng
Hình 1........................................................................................................................................................13

Hình 2........................................................................................................................................................14
Hình 3........................................................................................................................................................14
Hình 4........................................................................................................................................................24
Hình 5........................................................................................................................................................29
Hình 6........................................................................................................................................................42
Hình 7........................................................................................................................................................51
Hình 8........................................................................................................................................................55
Hình 9........................................................................................................................................................55

9|

Sinh viên thực hiện: Lớp KSTN-CNTT


Danh mục các từ viết tắt
ACO
ACS
AS
TSP
SA
GA
PGA
PSA
TSP
BFS
DFS
Pheromone

Thuật toán tối ưu bầy kiến
Hệ thống bầy kiến

Hệ thống kiến
Bài toán người du lichj
Giải thuậ luyện thép
Giải thuật di truyền
Giải thuật di truyền song song
Giải thuậ luyện thép song song
Bài toán người du lịch
Thuật toán tìm kiếm theo chiều sâu
Thuật toán tìm kiếm theo chiều rộng
Thông tin mùi.

PACO

Thuật toán tối ưu bầy kiến song song

10 |

Sinh viên thực hiện: Lớp KSTN-CNTT


So sánh các giải thuật song song
Metaheuristic trong việc giải bài toán TSP
Tổng quan
Bài viết này so sánh hiệu quả của một vài giải thuật metaheuristic trong việc giải
bài toán người du lịch. Các mô hình song song hóa dựa trên MPI được sử dụng để đánh
giá cho các giải thuật GA (gentetic algorithm) ,SA (simulated annealing), ACO ( Ant
Colony Optimization). Các kết quả đánh giá dựa trên hiệu quả song song hóa của các mô
hình song song cho cùng 1 giải thuật và giữa các giải thuật khác nhau.
Keyword : parallel metaheuristic , gentetic algorithm , simulated annealing, ant colony
optimization , MPI , TSP , speedup.


Giới thiệu chung
Mục đích của bài toán tối ưu tổ hợp là tìm lời giải tốt nhất trong các lời giải có thể
và không gian tìm kiếm lời giải của bài toán là rời rạc .Nhiều bài toán tối ưu tổ hợp có độ
phức tạp tính toán cao và được phân lọai thuộc lớp NP khó .Việc tìm ra lời giải tối ưu cho
các bài toán này cho các hệ thống song song lớn nhất cũng không thể hoàn thành được
trong giới hạn thời gian cho phép vì vậy các kỹ thuật heuristic cho việc giải các bài toán
tổ hợp theo hướng xấp xỉ đã được phát triển để tìm ra các lời giải gần tối ưu (hay xấp xỉ )
trong giới hạn thời gian cho phép. Bài toán người du lịch (TSP) là một bài toán cổ điển
thuộc lớp NP được nghiên cứu sâu trong lĩnh vực tối ưu tổ hợp.
Metaheuristic là một cách gọi chung cho các giải thuật heuristic trong việc giải
quyết các bài toán tổ hợp khó. Metaheuristic bao gồm những chiến lược khác nhau trong
việc khám phá không gian tìm kiếm bằng cách sử dụng những phương thức khác nhau và
phải đạt được sự cân bằng giữa tính đa dạng và chuyên sâu của không gian tìm kiếm. Một
cài đặt thành công của metaheuristic trong một bài toán tổ hợp phải cân bằng giữa sự khai
thác được kinh nghiệm thu thập được trong quá trình tìm kiếm để xác định được những
vùng với những lời giải có chất lượng cao gần tối ưu. Những ví dụ của metaheuristic bao
gồm giải thuật luyện thép (SA) , giải thuật di truyền (GA) , giải thuật đàn kiến (ACO) ,…
Giải thuật đàn kiến là metaheuristic dùng chiến lược của kiến trong thế giới thực để giải
bài toán tối ưu. SA xuất phát từ phương thức xác suất và kỹ thuật luyện bao gồm việc
nung và điều khiển làm nguội các kim loại để đạt được trạng thái năng lượng nhỏ nhất
.Trong khi đó giải thuật di truyền dựa trên ý tưởng từ cơ chế di truyền trong sinh học và
tiến trình tiến hóa trong cộng đồng các cá thể của 1 lòai.
11 |

Sinh viên thực hiện: Lớp KSTN-CNTT


Với độ phức tạp tính toán cao của các bài toán tối ưu tổ hợp cũng như đòi hỏi về mặt thời
gian , việc giải các bài toán này yêu cầu cần phải có những cài đặt song song hóa hiệu

quả của các giải thuật để giải quyết chúng. Song song hóa các giải thuật metaheuristic
phải đạt được 2 yêu cầu : đa dạng hóa để khám phá được nhiều vùng trong không gian
tìm kiếm và tăng tốc độ tìm kiếm . Nhiều mô hình song song hoái đã được đề xuất cho
nhiều metaheuristic. ACO và GA đều là các cách tiếp cận dựa trên tập cá thể và vì vậy
khá tự nhiên cho việc xử lý song song . Tuy nhiên SA thì vốn đã mang tính tuần tự và rất
chậm cho các bài toán với không gian tìm kiếm lớn nhưng vẫn có một vài kỹ thuật song
song hóa có thể được áp dụng để tăng tốc độ tìm kiếm.
Đồ án nhằm mục đích nghiên cứu ,cài đặt thực tế các giải thuật song song hóa
metaheuristic nhằm mục đích so sánh hiệu quả của từng giải thuật và khả năng song song
hóa của các mô hình song song cho việc tìm kiếm lời giản gần tối ưu của bài tóan TSP.
Các mô hình song song được đề xuất cho giải thuật đàn kiến, luyện thép và giải thuật di
truyền. Mô hình thực nghiệm dùng MPI và một vài bài toán trong thư viện TSPLIB.

12 |

Sinh viên thực hiện: Lớp KSTN-CNTT


1. Các kiến thức cơ bản
1.1

Các khái niệm cơ bản về đồ thị

Định nghĩa đồ thị
Trong toán học và tin học, đồ thị là đối tượng nghiên cứu cơ bản của lý thuyết đồ thị.
Một cách không chính thức, đồ thị là một tập các đối tượng gọi là đỉnh nối với nhau bởi
các cạnh. Thông thường, đồ thị được vẽ dưới dạng một tập các điểm (đỉnh, nút) nối với
nhau bởi các đoạn thẳng (cạnh). Tùy theo ứng dụng mà một số cạnh có thể có
hướng.Chúng ta phân biệt các loại đồ thị khác nhau bởi kiểu và số lượng cạnh nối hai
đỉnh nào đó của đồ thị.

Định nghĩa 1.1. Đơn đồ thị vô hướng G=(V,E) bao gồm V là tập các đỉnh, và E là tập
các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh.

Hình 1

Định nghĩa 1.2. Đa đồ thị vô hướng G=(V,E) bao gồm V là tập các đỉnh, và E là họ
các cặp không có thứ tự gồm hai phần tử khác nhau của V gọi là các cạnh. Hai cạnh e 1
và e2 được gọi là cạnh lặp nếu chúng cùng tương ứng với một cặp đỉnh.
Định nghĩa 1.3. Đơn đồ thị có hướng G=(V,E) bao gồm V là tập các đỉnh, và E là tập
các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung.

13 |

Sinh viên thực hiện: Lớp KSTN-CNTT


Định nghĩa 1.4. Đa đồ thị có hướng G=(V,E) bao gồm V là tập các đỉnh, và E là họ
các cặp có thứ tự gồm hai phần tử khác nhau của V gọi là các cung. Hai cung e 1 và e2
được gọi là cung lặp nếu chúng cùng tương ứng với một cặp đỉnh.

Hình 2

Hai loại đồ thị cơ bản:
a) Đồ thị vô hướng(6 đỉnh, 9 cạnh). b) Đồ thị có hướng(5 đỉnh, 7 cung).
Định nghĩa 1.5. Đồ thị hỗn hợp G=(V, E, A ) bao gồm V là tập các đỉnh, E là tập các
cạnh (E≠Ø) và A là tập các cung (A ≠Ø) của đồ thị.

Hình 3

Đồ thị hỗn hợp(6 đỉnh 5 cạnh, 4 cung)

Số đỉnh của đồ thị G là số phần tử trong V.
Chúng ta có thể coi các đồ thị vô hướng và có hướng là các trường hợp riêng của đồ
thị hỗn hợp G=(V, E, A) khi mà A =Ø hoặc E=Ø.
14 |

Sinh viên thực hiện: Lớp KSTN-CNTT


1.1.1. Các thuật ngữ cơ bản
Định nghĩa 1.6. Hai đỉnh u và v của đồ thị vô hướng G được gọi là kề nhau nếu (u,v)
là cạnh của đồ thị G. Nếu e=(u,v) là cạnh của đồ thị thì chúng ta nói cạnh này là liên
thuộc với hai đỉnh u và v, hoặc cũng nói là cạnh e là nối đỉnh u và đỉnh v, đồng thời các
đỉnh u và v sẽ được gọi là các đỉnh đầu cuả cạnh (u,v).
Để có thể biết được bao nhiêu cạnh liên thuộc với một đỉnh, chúng ta đưa vào định
nghĩa sau
Định nghĩa 1.7. Chúng ta gọi bậc của đỉnh v trong đồ thị vô hướng là số cạnh liên
thuộc với nó và sẽ kí hiệu là deg(v).
Định lý 1.1. Giả sử G=(V,E) là đồ thị vô hướng với m cạnh. Khi đó

2m = ∑ deg(v)
v∈V

Hệ quả 1.1. Trong đồ thị vô hướng, số đỉnh bậc lẻ(nghĩa là có bậc là số lẻ) là một số
chẵn
Định nghĩa 1.8. Nếu e=(u,v) là cung của đồ thị có hướng G thì chúng ta nói hai đỉnh
u và v là kề nhau, và nói cung (u,v) nối đỉnh u và đỉnh v hoặc cũng nói cung này là đi ra
khỏi đỉnh u và đi vào đỉnh v. Đỉnh u (v) sẽ được gọi là đỉnh đầu (cuối) của cung (u,v)
Định nghĩa 1.9. Chúng ta gọi bán bậc ra (bán bậc vào) của đỉnh v trong đồ thị có
hướng là số cung của đồ thị đi ra khỏi nó (đi vào nó) và ký hiệu là deg + (v)(deg − (v))
Định lý 1.2. Giả sử G=(V,E) là đồ thị có hướng. Khi đó


∑ deg
v∈V

+

(v) = ∑ (deg − (v)) = A
v∈V

Tương tự như trên , chúng ta xét các thuật ngữ cơ bản cho đồ thị hỗn hợp
Quy ước. Kí hiệu với S là một tập hợp thì #(S) hay |S| là số phần tử của tập S.
Cho đồ thị hỗn hợp G =(V,E,A). Nếu e=(u,v) thuộc E, thì chúng ta nói cạnh e kề với
đỉnh u, và v. Nếu e=(u,v) thuộc A, thì chúng ta nói cung e kề với đỉnh u, và v.
Định nghĩa 1.10. Cho đồ thị hỗn hợp G=(V, E, A). Kí hiệu deg(v) là bậc của đỉnh v
trong đồ thị. Giá trị của deg(v) được tính theo công thức sau:
15 |

Sinh viên thực hiện: Lớp KSTN-CNTT


deg(v)= #(các cạnh kề với đỉnh v)+ # (các cung kề với đỉnh v)
Định nghĩa 1.11. Chúng ta gọi bán bậc ra( bán bậc vào) của đỉnh v trong đồ thị hỗn
hợp G là số cung của đồ thị đi ra khỏi nó (đi vào nó) và kí hiệu là indegree(v)
(outdegree(v)).
1.1.2. Đường đi, chu trình và đồ thị liên thông
Định nghĩa 1.12. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên
dương, trên đồ thị vô hướng G=(V,E) là dãy
x0,x1,..…,xn-1,xn
trong đó u=x0 , v= xn , (xi,xi+1) ∈ E,
i = 0,1,2,…,n-1.

Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh:
(x0, x1), (x1, x2), …, (xn-1, xn).
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh
đầu trùng với đỉnh cuối (tức là u=v) được gọi là chu trình. Đường đi hay chu trình được
gọi là đơn nếu như không có cạnh nào bị lặp lại
Định nghĩa 1.13. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên
dương, trên đồ thị có hướng G=(V, A) là dãy
x0,x1,..…,xn-1,xn
trong đó u=x0 , v= xn , (xi,xi+1) ∈ A,
i = 0,1,2,…,n-1.
Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cung:
(x0, x1), (x1, x2), …, (xn-1, xn).
Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh
đầu trùng với đỉnh cuối (tức là u=v) được gọi là chu trình. Đường đi hay chu trình được
gọi là đơn nếu như không có cung nào bị lặp lại
Định nghĩa 1.14. Đường đi độ dài n từ đỉnh u đến đỉnh v, trong đó n là số nguyên
dương, trên đồ thị hỗn hợp G=(V, E, A) là dãy
x0,x1,..…,xn-1,xn
trong đó u=x0 , v= xn , (xi,xi+1) ∈ E, hoặc (xi,xi+1) ∈ A,

i = 0,1,2,…,n-1.

Đường đi nói trên còn có thể biểu diễn dưới dạng dãy các cạnh, cung:
(x0, x1), (x1, x2), …, (xn-1, xn).

16 |

Sinh viên thực hiện: Lớp KSTN-CNTT



Đỉnh u gọi là đỉnh đầu, còn đỉnh v gọi là đỉnh cuối của đường đi. Đường đi có đỉnh
đầu trùng với đỉnh cuối (tức là u=v) được gọi là chu trình. Đường đi hay chu trình được
gọi là đơn nếu như không có cạnh hay cung nào bị lặp lại.
Định nghĩa 1.15. Đồ thị vô hướng G=(V, E) được gọi là liên thông nếu luôn tìm được
đường đi giữa hai đỉnh bất kì của nó.
Định nghĩa 1.16. Chúng ta gọi đồ thị con của đồ thị G=(V, E) là đồ thị H=(W, F),
trong đó W ⊆ V và F ⊆ E.
Trong trường hợp đồ thị là không liên thông, nó sẽ rẽ ra thành một số đồ thị con liên
thông đôi một không có đỉnh chung. Những đồ thị con liên thông như vậy chúng ta sẽ gọi
là các thành phần liên thông của đồ thị .
Định nghĩa 1.17. Đồ thị có hướng G=(V, A) được gọi là liên thông mạnh nếu luôn tìm
được đường đi giữa hai đỉnh bất kỳ của nó.
Định nghĩa 1.18. Đồ thị có hướng G=(V, A) được gọi là liên thông yếu nếu đồ thị vô
hướng tương ứng với nó là đồ thị vô hướng liên thông.
Rõ ràng nếu đồ thị là liên thông mạnh thì cũng là liên thông yếu nhưng điều ngược lại
là không luôn đúng.
1.1.3. Chu trình Euler
Định nghĩa 1.19. Chu trình đơn trong G đi qua mỗi cạnh của nó một lần được gọi là
chu trình Euler. Đường đi đơn trong G đi qua mỗi cạnh của nó một lần được gọi là
đường đi Euler. Đồ thị được gọi là đồ thị Euler nếu nó có chu trình Euler, và gọi là đồ
thị nửa Euler nếu nó có đường đi Euler.
Rõ ràng mọi đồ thị Euler luôn là nửa Euler, nhưng điểu ngược lại không luôn
đúng.
Định lý 1.4. Đồ thị vô hướng liên thông G là đồ thị Euler khi và chỉ khi mọi đỉnh
của G đều có bậc chẵn.
Hệ quả 1.2. Đồ thị liên thông G là nửa Euler khi và chỉ khi nó có không quá 2
đỉnh bậc lẻ.
Định lý 1.5. Đồ thị có hướng liên thông mạnh là đồ thị Euler khi và chỉ khi
deg + (v) = deg − (v), ∀v ∈ V
17 |


Sinh viên thực hiện: Lớp KSTN-CNTT


Trên đây chúng ta đã mô tả điều kiện cần và đủ để đồ thị vô hướng và có hướng là
đồ thị Euler. Điều kiện cần và đủ để đồ thị hỗn hợp là đồ thị Euler là khá phức tạp và sẽ
được trình bày trong phần bài toán người đưa thư Trung Hoa trên đồ thị hỗn hợp.
1.1.4. Chu trình Hamilton
Trong toán học, ngành lý thuyết đồ thị, một đường đi Hamilton là một đường đi trong
đồ thị vô hướng đi qua tất cả các đỉnh của đồ thị, mỗi đỉnh đúng một lần. Một Chu trình
Hamilton là một đường đi Hamilton sau đi qua tất cả các đỉnh của đồ thị thì trở về đỉnh
xuất phát.
Một đồ thị có chu trình Hamilton được gọi là đồ thị Hamilton, đồ thị có đường đi
Hamilton được gọi là đồ thị nửa Hamilton.
Bài toán tìm đường đi và chu trình như vậy được gọi là bài toán Hamilton. Bài toán
Hamilton là NP đầy đủ.
Tên gọi đường đi và chu trình Hamilton là gọi theo tên của William Rowan Hamilton .

1.1.1.1

Định lý Bondy-Chvátal

Cho đồ thị G có n đỉnh, bao đóng cl(G) được tạo ra từ G bằng cách bổ sung cho mỗi cặp
đỉnh không kề nhau u và v với degree(v) + degree(u) ≥ n một cạnh mới uv.

1.1.1.2

Định lý Bondy-Chvátal (1972)

Một đồ thị là Hamilton nếu và chỉ nếu bao đóng của nó là Hamilton.

Vì đồ thi đầy đủ là Hamilton, nên tất cả các đồ thị mà bao đóng là đầy đủ là Hamilton.

1.1.1.3

Định lý Dirac (1952)

Một đơn đò thị n đỉnh (n > 2) là Hamilton nếu mọi đỉnh của nó có bậc không nhỏ hơn
n/2.

1.1.1.4

Định lý Ore (1960)

Một đồ thị có n đỉnh (n > 2) là Hamilton nếu tổng các bậc của hai đỉnh không kề nhau
đều bằng n hoặc lớn hơn.

18 |

Sinh viên thực hiện: Lớp KSTN-CNTT


1.1.5. Đồ thị có trọng số
Đồ thị được sử dụng để giải các bài toán trong nhiều lĩnh vực khác nhau. Chẳng
hạn, đồ thị được sử dụng để xác định các mạch vòng trong vấn đề giải tích mạch điện.
Chúng ta có thể xác định xem hai máy tính trong mạng có thể trao đổi thông tin với nhau
được hay không. Khi đó, đồ thị được sử dụng để biễu diễn mạng truyền thông với các
đỉnh là các nút mạng, các cạnh, các cung là các đường truyền dữ liệu giữa các nút mạng.
Đồ thị có thể dùng để biễu diễn các đường đi trong một vùng: các đỉnh tương ứng với các
ngã 3, ngã 4, còn các cạnh, các cung tương ứng là các đường đi 2 chiều và đường đi 1
chiều. Để cấu trúc đồ thị có thể biễu diễn được các bài toán thực tế người ta đưa vào khái

niệm đồ thị có trọng số, trên mỗi cạnh hay mỗi cung được gán một trọng số thể hiện chi
phí cho việc thực hiện một mục đích nào đó trên cạnh hay trên cung.
Định nghĩa 1.20. Chúng ta kí hiệu đồ thị có trọng số là bộ 4 G=(V, E, A, w),
trong đó, w là hàm trọng số
w: E ∪ A → R ,
R: tập số thực,
ngoài ra còn có thể kí hiệu w bằng c hoặc weight, cost.
Cho S là một tập con của E ∪ A, khi đó chúng ta kí hiệu w(S)=∑w(s)| s∈ S là giá
trị trọng số của tập S.
1.1.6. Các cấu trúc dữ liệu biểu diễn đồ thị
Có nhiều cách khác nhau để lưu trữ các đồ thị trong máy tính. Sử dụng cấu trúc dữ
liệu nào thì tùy theo cấu trúc của đồ thị và thuật toán dùng để thao tác trên đồ thị đó. Trên
lý thuyết, người ta có thể phân biệt giữa các cấu trúc danh sách và các cấu trúc ma trận.
Tuy nhiên, trong các ứng dụng cụ thể, cấu trúc tốt nhất thường là kết hợp của cả hai.
Người ta hay dùng các cấu trúc danh sách cho các đồ thị thưa (sparse graph), do chúng
đòi hỏi ít bộ nhớ. Trong khi đó, các cấu trúc ma trận cho phép truy nhập dữ liệu nhanh
hơn, nhưng lại cần lượng bộ nhớ lớn nếu đồ thị có kích thước lớn.

1.1.1.5


19 |

Các cấu trúc danh sách

Danh sách liên thuộc (Incidence list) - Mỗi đỉnh có một danh sách các cạnh
nối với đỉnh đó. Các cạnh của đồ thị được có thể được lưu trong một danh sách
riêng (có thể cài đặt bằng mảng (array) hoặc danh sách liên kết động (linked
list)), trong đó mỗi phần tử ghi thông tin về một cạnh, bao gồm: cặp đỉnh mà


Sinh viên thực hiện: Lớp KSTN-CNTT


cạnh đó nối (cặp này sẽ có thứ tự nếu đồ thị có hướng), trọng số và các dữ liệu
khác. Danh sách liên thuộc của mỗi đỉnh sẽ chiếu tới vị trí của các cạnh tương
ứng tại danh sách cạnh này.


Danh sách kề (Adjacency list) - Mỗi đỉnh của đồ thị có một danh sách các đỉnh
kề nó (nghĩa là có một cạnh nối từ đỉnh này đến mỗi đỉnh đó). Trong đồ thị vô
hướng, cấu trúc này có thể gây trùng lặp. Chẳng hạn nếu đỉnh 3 nằm trong
danh sách của đỉnh 2 thì đỉnh 2 cũng phải có trong danh sách của đỉnh 3. Lập
trình viên có thể chọn cách sử dụng phần không gian thừa, hoặc có thể liệt kê
các quan hệ kề cạnh chỉ một lần. Biểu diễn dữ liệu này thuận lợi cho việc từ
một đỉnh duy nhất tìm mọi đỉnh được nối với nó, do các đỉnh này đã được liệt
kê tường minh.

1.1.1.6

Các cấu trúc ma trận



Ma trận liên thuộc (Incidence matrix) - Đồ thị được biểu diễn bằng một ma
trận [bij] kích thước p × q, trong đó p là số đỉnh và q là số cạnh, bij = 1 chứa dữ
liệu về quan hệ giữa đỉnh vi và cạnh xj. Đơn giản nhất: bij = 1 nếu đỉnh vi là một
trong 2 đầu của cạnh xj, bằng 0 trong các trường hợp khác.




Ma trận kề (Adjaceny matrix) - một ma trận N × N, trong đó N là số đỉnh của
đồ thị. Nếu có một cạnh nào đó nối đỉnh vivới đỉnh vj thì phần tử Mi,j bằng 1,
nếu không, nó có giá trị 0. Cấu trúc này tạo thuận lợi cho việc tìm các đồ thị
con và để đảo các đồ thị.



Ma trận dẫn nạp (Admittance matrix) hoặc ma trận Kirchhoff (Kirchhoff
matrix) hay ma trận Laplace (Laplacian matrix) - được định nghĩa là kết quả
thu được khi lấy ma trận bậc (degree matrix) trừ đi ma trận kề. Do đó, ma trận
này chứa thông tin cả về quan hệ kề (có cạnh nối hay không) giữa các đỉnh lẫn

1.2
1.1.1

Khái niệm về lớp các bài toán P và NP
Khái niệm các loại thời gian tính

Thời gian tính tốt nhất: là thời gian tính tối thiểu cần thiết để thực hiện thuật toán
với mọi bộ dữ liệu đầu vào kích thước n.
20 |

Sinh viên thực hiện: Lớp KSTN-CNTT


Thời gian tính tồi nhất: là thời gian tính tối đa cần thiết để thực hiện thuật toán với
mọi bộ dữ liệu đầu vào có kích thước n
Thời gian tính trung bình: là thời gian tính cần thiết để thực hiện thuật toán trên
một tập hữu hạn các bộ dữ liệu đầu vào có kích thước n. Thời gian tính trung bình được
tính theo công thức sau:

Thời gian tính trung bình=(Tổng thời gian tính tất cả các bộ dữ liệu có thể)/ Số bộ
dữ liệu.
Định nghĩa .Bài toán quyết định là bài toán mà đầu ra chỉ có thể là ‘yes’ hoặc
‘no’(đúng/sai, 0/1).
Đối với một bài toán quyết định, có những bộ dữ liệu vào cho ra câu trả lời(đầu ra)
là ‘yes’, chúng ta gọi đây là bộ dữ liệu ‘yes’, nhưng cũng có những bộ dữ liệu vào cho ra
câu trả lời là ‘no’, chúng ta gọi những bộ dữ liệu này là bộ dữ liệu ‘no’.
1.1.2

Bằng chứng ngắn gọn dễ kiểm tra

Rất nhiều các bài toán quyết định có một đặc điểm chung, đó là để xác nhận câu
trả lời ‘yes’ đối với bộ dữ liệu vào ‘yes’ của chúng, chúng ta có thể đưa ra bằng chứng
ngắn gọn dễ kiểm tra xác nhận câu trả lời ‘yes’ cho bộ dữ liệu vào ‘yes’ đó. Tính ngắn
gọn dễ kiểm tra ám chỉ việc thời gian kiểm tra để đưa ra kết quả chỉ mất thời gian đa
thức. Ví dụ về những bài toán quyết định kiểu này rất nhiều, sau đây là một số ví dụ:
• Bài toán kiểm tra tính hợp số: “Có phải số n là hợp số?”, để xác nhận câu trả lời
‘yes’ cho đầu vào n, chúng ta có thể đưa ra một ước số b (1tra xem b có phải là ước số của n chúng ta có thể thực hiện phép chia n cho b sau
thời gian đa thức. Trong ví dụ này , b là bằng chứng ngắn gọn (vì btra (có thuật toán đa thức để kiểm tra b đúng là ước số của n không).
• Đối với bài toán Hamilton, để xác nhận câu trả lời là ‘yes’ cho đồ thị đã cho G,
chúng ta có thể đưa ra một chu trình Hamilton của đồ thị:
v1, v2, v3......vn, v1
Việc kiểm tra dãy đỉnh nói trên có là chu trình Hamilton của đồ thị đã cho hay
không có thể thực hiện sau thời gian đa thức. Khi đó chúng ta nói dãy đỉnh nói
21 |

Sinh viên thực hiện: Lớp KSTN-CNTT



trên là bằng chứng ngắn gọn dễ kiểm tra để xác nhận câu trả lời ‘yes’ của bài toán
Hamilton.
• Đối với bài toán về tính chấp nhận được của biểu thức Bun, để xác nhận câu trả
lời ‘yes’ đối với một biểu thức đã cho, chúng ta chỉ cần đưa ra một bộ giá trị các
biến số mà tại đó biểu thức nhận giá trị true. Việc tính giá trị của biểu thức tại một
bộ giá trị có thể thực hiện sau thời gian đa thức.
Một cách tương tự, có thể đưa ra khái niệm bằng chứng ngắn gọn dễ kiểm tra để
xác nhận câu trả lời ‘no’. Đối với một số bài toán, việc đưa ra bằng chứng ngắn gọn dễ
kiểm tra để xác nhận câu trả lời ‘no’ là dễ hơn so với việc đưa ra bằng chứng ngắn gọn
xác định câu trả lời là ‘yes’.
1.1.3

Khái niệm quy dẫn

Định nghĩa . Giả sử chúng ta có hai bài toán quyết định A và B. Chúng ta nói A
có thể quy dẫn về B nếu như sau một thời gian tính đa thức nếu tồn tại một thuật toán
thời gian đa thức R cho phép biến đổi bộ dữ liệu x của A thành bộ dữ liệu vào R(x) của B
sao cho x là bộ dữ liệu yes của A khi và chỉ khi R(x) là dữ liệu vào yes của B.
Nếu A quy dẫn về được B sau thời gian đa thức và B có thể giải được sau thời gian
đa thức thì A cũng có thể giải được sau thời gian đa thức.

1.1.4

Lớp bài toán P.

Định nghĩa. Ta Chúng ta gọi P là lớp các bài toán có thể giải được trong thời
gian đa thức, NP là lớp các bài toán quyết định mà để xác định câu trả lời “yes” của nó
chúng ta có thể đưa ra các bằng chứng ngắn gọn dễ kiểm tra, co-NP là lớp các bài toán
quyết định mà để xác định câu trả lời “no” của nó chúng ta có thể đưa ra bằng chứng

ngắn gọn dễ kiểm tra.
Ví dụ: Bài toán cây khung nhỏ nhất giải được nhờ thuật toán Prim với thời gian 0(n 2)
thuộc lớp bài toán P.
1.1.5

Lớp bài toán NP.

Định nghĩa. Ta gọi NP là lớp các bài toán quyết định mà để xác nhận câu trả lời
‘yes’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.
22 |

Sinh viên thực hiện: Lớp KSTN-CNTT


Ví dụ: Bài toán kiểm tra tính hợp số: “Có phải n là hợp số không?”, để xác nhận câu
trả lời ‘yes’ cho đầu vào n ta có thể đưa ra một ước số b (1< b < n) của n. Để kiểm tra
xem b có phải là ước số của n hay không ta có thể thực hiện phép chia n cho b sau
thời gian đa thức. Trong ví dụ này dễ thấy b là bằng chứng ngắn gọn (btra (có thuật toán thời gian tính đa thức để kiểm tra xem b có là ước số của n).
1.1.6

Lớp bài toán Co-NP.

Định nghĩa. Ta gọi Co-NP là lớp các bài toán quyết định mà để xác nhận câu trả lời
‘no’ của nó ta có thể đưa ra bằng chứng ngắn gọn dễ kiểm tra.
Ví dụ: Bài toán kiểm tra tính nguyên tố: “Có phải n là số nguyên tố không?”, để đưa
ra bằng chứng ngắn gọn dễ kiểm tra xác nhận câu trả lời ‘no’ cho đầu vào n ta có thể
đưa ra một ước số b của n.
1.1.7


Lớp bài toán NP-đầy đủ (NP-Complete).

Định nghĩa. Một bài toán quyết định A được gọi là NP-đầy đủ (NP-Complete) nếu
như:


A là một bài toán trong NP.



Mọi bài toán trong NP đều có thể quy dẫn về A.

Bổ đề. Giả sử bài toán A là NP-đầy đủ, bài toán B thuộc NP, và bài toán A qui dẫn
được về bài toán B. Khi đó bài toán B cũng là NP-đầy đủ
1.1.8

Lớp bài toán NP- khó (NP-Hard).

Một cách ngắn gọn có thể hiểu bài toán NP-khó là bài toán mà không có thuật toán
thời gian tính đa thức để giải nó trừ khi P = NP, mà chỉ có các thuật toán giải trong
thời gian hàm mũ. Sau đây là định nghĩa chính thức của bài toán NP-khó.
Định nghĩa. Một bài toán A được gọi là NP- khó (NP-hard) nếu như sự tồn tại thuật
toán đa thức để giải nó kéo theo sự tồn tại thuật toán đa thức để giải mọi bài toán
trong NP.
Một số bài toán NP-khó tiêu biểu như:

23 |

1.


Bài toán bè cực đại (MaxClique): Cho một đồ thị vô hướng G = (V, E).
V là tập các đỉnh, E là tập các cạnh tương ứng các đỉnh trong V. Cần tìm bè lớn
nhất của G. Bè là tập các đỉnh trong đồ thị mà đôi một có cạnh nốivới nhau (là
một đồ thị con đầy đủ trong đồ thị G).

2.

Bài toán tập độc lập (Independent set): Cho đồ thị vô hướng G = (V, E)
và số nguyên K, hỏi có thể tìm được tập độc lập S với |S| ≥ K. Tập độc lập là
tập các đỉnh trong đồ thị mà chúng đôi một không có cạnh nối với nhau.

3.

Bài toán phủ đỉnh (Vertex cover): Ta gọi một phủ đỉnh của đồ thị vô
hướng G = (V, E) là một tập con các đỉnh của đồ thị S ⊆ V sao cho mỗi cạnh

Sinh viên thực hiện: Lớp KSTN-CNTT


của đồ thị có ít nhất một đầu mút trong S. Bài toán đặt ra là: Cho đồ thị vô
hướng G = (V, E) và số nguyên k. Hỏi G có phủ đỉnh với kích thước k hay
không?
Một cách không hình thức, có thể nói rằng nếu ta có thể giải được một cách hiệu quả
một bài toán NP-khó cụ thể, thì ta cũng có thể giải hiệu quả bất kỳ bài toán trong NP
bằng cách sử dụng thuật toán giải bài toán NP-khó như một chương trình con.
Từ định nghĩa bài toán NP-khó có thể suy ra rằng mỗi bài toán NP-đầy đủ đều là
NP-khó. Tuy nhiên một bài toán NP-khó không nhất thiết phải là NP-đầy đủ.
Cũng từ bổ đề nêu trên, ta có thể suy ra rằng để chứng minh một bài toán A nào đó là
NP-khó, ta chỉ cần chỉ ra phép qui dẫn một bài toán đã biết là NP-khó về nó.
Từ phần trình bày trên, ta thấy có rất nhiều bài toán ứng dụng quan trọng thuộc vào

lớp NP-khó, và vì thế khó hy vọng xây dựng được thuật toán đúng hiệu quả để giải
chúng. Do đó, một trong những hướng phát triển thuật toán giải các bài toán như vậy
là xây dựng các thuật toán gần đúng.
Sau đây là bức tranh phân lớp các bài toán đã nêu trên.

Hình 4

Mô hình phân lớp các bài toán

1.3

Các thuật toán xấp xỉ

Bài toán tối ưu
24 |

Sinh viên thực hiện: Lớp KSTN-CNTT


S là một tập hợp gồm các phần tử thoả mãn một tính chất nào đó với một hàm
mục tiêu trên S: f: S → R. Chúng ta nói bài toán tối ưu trên S dựa theo hàm f đó là tìm
một phần tử trong S thoả mãn một tiêu chi nào đó, thông thường là tìm cực trị (cực đại
hoặc cực tiểu) của hàm f. S được gọi là tập xác định hoặc không gian tìm kiếm của bài
toán tối ưu.
Thông thường chúng ta có các bài toán mà phải tìm giá trị tối ưu của một hàm nào
đó trên không gian tìm kiếm là các bộ dữ liệu vào có thể có. Tuy nhiên có nhiều bài toán
mà việc tìm ra giá trị tối ưu, phần tử tối ưu tương ứng với giá trị tối ưu đó là một việc cực
kì khó khăn và hiện tại chưa tồn tại thời gian tính đa thức để giải bài toán đó. Tất nhiên
có thể giải được bài toán nếu như chúng ta thực hiện chiến lược vét cạn đó là xác định
được tất cả các giá trị hàm f trên các phần tử của tập S. Tuy nhiên chiến lược này không

tốt về mặt thời gian nếu như không gian S có số phần tử là hàm mũ hoặc giai thừa. Ví dụ
nếu tập S là tập các hoán vị của 1,…n thì số phần tử của tập S đó là n!. Con số này thực
sự là lớn khủng khiếp và việc thực thi nó là bất khả thi. Khi mà việc tìm các lời giải tối
ưu là bất khả thi thì người ta quan tâm đến các lời giải gần tối ưu mà chúng ta gọi đó là
thuật toán xấp xỉ.
Giả sử chúng ta đang làm việc trên một bài toán tối ưu, ở đó mỗi giải pháp tiềm
năng mang một chi phí dương, và chúng ta muốn giải pháp gần tối ưu.
Giả sử rằng một bài toán cần tìm ra lời giải với chi phí là f* là giá trị tối ưu có
kích thước đầu vào n, chúng ta nói rằng một lời giải của bài toán là f là một lời giải xấp xỉ
có cận tỉ số là p(n)>1 nếu như chúng ta có:
max (f/f*, f*/f) ≤ p(n)
Thông thường các thuật toán xấp xỉ được áp dụng để tìm ra các lời giải có cận xấp xỉ
p(n) thường có giá trị p(n) = p là hằng số. Tuy nhiên vẫn có nhiều bài toán khó đến mức
p(n) phụ thuộc vào n. Giả sử chúng ta đang đối mặt với các yêu cầu tối ưu là cực tiểu hoá
hoặc cực đại hoá hàm chi phí f. Công việc của các nhà toán học là tìm ra những thuật toán
thời gian tính đa thức nhằm giảm giá trị của p hay p(n) đến gần giá trị 1 càng tốt- nghĩa là
giá trị chúng ta thu được rất gần giá trị tối ưu. Tất nhiên khi giá trị f* quá lớn thì f cũng
cách khá xa so với f* nhưng xét về mặt tỉ lệ thì vẫn nằm trong cận chúng ta đang xét.

25 |

Sinh viên thực hiện: Lớp KSTN-CNTT


×