so sánh các giải thuật song song metatheuristic trong việc giải bài toán TSP
Trang 1PHIẾ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
Đồ á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
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ôngtrì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
Trang 2TÓ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àycho 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ạngthá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
Trang 3Lờ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áytí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
Trang 4
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.2.1 Khái niệm các loại thời gian tính 20
1.2.2 Bằng chứng ngắn gọn dễ kiểm tra 21
1.2.3 Khái niệm quy dẫn 22
1.2.4 Lớp bài toán P 22
1.2.5 Lớp bài toán NP 22
1.2.6 Lớp bài toán Co-NP 23
1.2.7 Lớp bài toán NP-đầy đủ (NP-Complete) 23
1.2.8 Lớp bài toán NP- khó (NP-Hard) 23
1.3 Các thuật toán xấp xỉ 25
Trang 51.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
2.1 Giới thiệu bài toán 27
2.2 Lịch sử bài toán TSP 28
2.3 Mô tả bài toán TSP 29
2.4 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
2.5 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 34
3.1 Kiến trúc máy tính song song 34
3.2 Phân tách bài toán 34
3.3 Phân tách dữ liệu 34
3.4 Phân tách công việc 35
3.5 Song song hóa dữ liệu và mô hình truyền tin 35
3.6 Tối ưu chương trình song song 35
3.7 Phân chia công việc 36
3.8 Tối thiểu hóa trao đổi dữ liệu 36
3.9 Giảm chồng chéo giữa trao đổi dữ liệu và tính toán: 36
3.10 MPI 36
Trang 63.11 Lịch sử phát triển MPI 37
3.12 Mục đích của MPI 37
3.13 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
4.1 Giới thiệu về giải thuật di truyền 39
4.1.1 Lịch sử phát triển: 39
4.2 Các khái niệm cơ bản 41
4.2.1 Cá thể, nhiễm sắc thể 41
4.2.2 Quần thể 41
4.2.3 Các toán tử di truyền 41
4.3 Mô hình giải thuật di truyền 42
4.4 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
4.5 Các cách mã hoá NST 44
Mã hoá nhị phân 44
Mã hoá hoán vị 44
Mã hoá theo giá trị 45
4.6 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ệ 46
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
Trang 7Lựa chọn tranh đấu 47
4.7 Các toán tử di truyền (GA operators) 47
Mã hoá nhị phân 47
Mã hoá hoán vị 48
Mã hoá theo giá trị 48
4.8 Chiến lược nạp lại quần thể 49
Nạp lại hoàn toàn 49
Nạp lại ngẫu nhiên 49
Nạp lại theo mô hình cá thể ưu tú 49
4.9 GA song song 50
4.9.1 Giới thiệu 50
4.9.2 Các giải thuật GA song song 50
4.9.3 Mô hình GA song song đa quần thể phân tán 53
5 Thuật toán bầy kiến và bầy kiến song song 57
5.1 Sơ đồ chung của thuật toán bầy kiến 57
5.1.1 Giới thiệu chung về thuật toán bầy kiến 57
5.1.2 Nội dung thuật toán 63
5.2 Các sơ đồ thuật toán 67
5.2.1 Thuật toán Ant System (AS) 67
5.2.2 Thuật toán Ant Colony System(ACS) 69
5.2.3 Thuật toán Max–Min Ant System(MMAS) 71
5.2.4 Thuật toán Rank-Based Ant System(RBAS) 72
5.2.5 Thuật toán Best-Worst Ant System(BWAS) 73
5.3 Thuật toán đàn kiến song song 75
6 Giải thuật luyện thép 77
Trang 86.1 Giới thiệu giải thuật luyện thép 77
6.2 Sơ đồ giải thuật 77
6.3 Giải thuật luyện thép song song 79
6.3.1 Song song bằng chia nhỏ dữ liệu 79
6.3.2 Mô hình chạy nhiều lần 79
6.3.3 Các bước di chuyển song song 80
7 Cài đặt giải thuật ,kết quả và đánh giá 81
7.1 Môi trường cài đặt 81
7.2 Thư viện bài toán 81
7.3 Kết quả thực hiện 81
7.4 So sánh và đánh giá 82
Trang 9Danh mục hình vẽ sử dụng
Hình 1 11
Hình 2 12
Hình 3 12
Hình 4 22
Hình 5 27
Hình 6 40
Hình 7 50
Hình 8 54
Hình 9 54
Trang 10Danh mục các từ viết tắt
Trang 11So 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 chocá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ộtcà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ự khaithá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
Trang 12Vớ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ờigian , 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
Trang 13nhau 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
Trang 14Đị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).
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=Ø.
Trang 151.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 địnhnghĩ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 đó
Đị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 ( )(deg ( )) v v
Định lý 1.2 Giả sử G=(V,E) là đồ thị có hướng Khi đó
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:
Trang 16deg(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).
Trang 17Đỉ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
( ) deg ( ),deg
Trang 18Trê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 Đị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.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
Trang 191.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ẳnghạ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ácngã 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 1chiề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áiniệ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 chiphí 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: EA 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 EA, khi đó chúng ta kí hiệu w(S)=∑w(s)| sS 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ị
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 nhanhhơn, nhưng lại cần lượng bộ nhớ lớn nếu đồ thị có kích thước lớn
1.5 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à
Trang 20cạ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ệukhá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 trongdanh sách của đỉnh 2 thì đỉnh 2 cũng phải có trong danh sách của đỉnh 3 Lậptrì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.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
liệu về quan hệ giữa đỉnh v i và cạnh x j Đơn giản nhất: b ij = 1 nếu đỉnh v i là một
Ma trận kề (Adjaceny matrix) - một ma trận N × N, trong đó N là số đỉnh của
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
2 Khái niệm về lớp các bài toán P và NP
1.1.1 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
Trang 21Thờ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’.
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 đathứ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ụ:
‘yes’ cho đầu vào n, chúng 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 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ì b<n) và dễ kiểm tra (có thuật toán đa thức để kiểm tra b đúng là ước số của n không).
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 haykhô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
Trang 22trê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
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’
Đị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.
Đị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(n2)thuộc lớp bài toán P
Đị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.
Trang 23Ví 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 traxem 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 sauthời gian đa thức Trong ví dụ này dễ thấy b là bằng chứng ngắn gọn (b<n) và dễ kiểmtra (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)
Đị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ư:
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ư:
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)
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
Trang 24củ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
Trang 25S 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à
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.
Trang 26Chúng ta nói một thuật toán đối với bài toán có tỉ số là P nếu như với mọi đầu vào sau một thời gian tính đa thức chúng ta thu được một lời giải f mà so với lời giải tối ưu f*
4 Bài toán tối ưu hóa tổ hợp (Combinatorial optimization)
Bài toán tối ưu hóa tổ hợp liên quan tới việc tìm giá trị cho các biến số rời rạc như lờigiải tối ưu mà có lưu ý tới hàm đánh giá (objective function) cho trước Bài toán cóthể là bài toán tìm cực đại hoặc tìm cực tiểu Một cách thông thường, bài toán tối ưu
hoá tổ hợp được cho dưới dạng bộ 3 (S, f, Ω) Trong đó S là tập các lời giải ứng cử) Trong đó S là tập các lời giải ứng cử
Ω) Trong đó S là tập các lời giải ứng cử là tập các ràng buộc của bài toán Các lời giải thuộc tập S* S thỏa mãn tập cácràng buộc Ω) Trong đó S là tập các lời giải ứng cử gọi là lời giải khả thi Mục tiêu bài toán là tìm ra một lời giải khả thi tối
lời giải s* với giá lớn nhất, nghĩa là f(s*) ≥ f(s) với mọi lời giải s S Bài toán tối ưuhóa tổ hợp có thể chia 2 loại: Bài toán tĩnh và bài toán động
Bài toán tối ưu hóa tổ hợp tĩnh (Static Combinatorial optimization):
Là bài toán tối ưu hóa tổ hợp trong đó cấu trúc (topology) và giá (cost) khôngthay đổi khi bài toán đang được giải quyết Ví dụ là bài toán người du lịch Khithực hiện thuật toán để giải bài toán vị trí các thành phố, khoảng cách giữa cácthành phố là không thay đổi
Bài toán tối ưu hóa tổ hợp động (Dynamic Combinatorial optimization):
Là bài toán tối ưu hóa tổ hợp trong đó cấu trúc (topology) và giá (cost) có thể thayđổi khi bài toán đang được giải quyết Ví dụ là bài toán định hướng trong mạngviễn thông, trong đó mô hình mạng và dung lượng yêu cầu luôn thay đổi
Trang 272 Bài toán người du lịch
5 Giới thiệu bài toán
Bài toán người du lịch (Travelling Salesman problem (TSP)) là một bài toán khá
nổi tiếng trong lĩnh vực tối ưu tổ hợp được nghiên cứu trong lý thuyết khoa học máy tính.Nội dung của nó khá đơn giản , nó được phát biểu như sau : Cho một danh sách các thànhphố và khoảng cách giữa chúng , nhiệm vụ là phải tìm đường đi ngắn nhất có thể mà chỉ thăm mỗi thành phố đúng 1 lần
Bài toán được lần đầu tiên đưa ra như một vấn đề toán học vào năm 1930 và là một trong số những bài toán được nghiên cứu chuyên sâu trong lĩnh vực tổ hợp thời đó
Nó được sử dụng như một sự đánh giá cho nhiều phương thức tối ưu khác nhau Thậm chí bài toán là thuộc lớp NP khó , một lượng rất lớn các heuristic và phương thức tìm kiếm cụ thể đã được biết đến vì vậy một vài trường hợp của bài toán với khoảng chục nghìn thành phố đã được giải quyết
TSP có một vài ứng dụng thậm chí trong dạng thức nguyên thuỷ của nó như lập kếhoạch , logistic , và sản xuất các microchip Thay đổi đi chút ít nó xuất hiện như một bài toán con trong rất nhiều lĩnh vực như việc phân tích gen trong sinh học Trong những ứngdụng này, khái niệm thành phố có thể thay đổi thành khách hàng, các điểm hàn trên bảng mạch, các mảnh DNA trong gen, và khái niệm khoảng cách có thể biểu diễn bởi thời gian
du lịch hay giá thành , hay giống như sự so sánh giữa các mảnh DNA với nhau Trong nhiều ứng dụng, các hạn chế truyền thống như giới hạn tài nguyên hay giới hạn thời gian thậm chí còn làm cho bài toán trở nên khó hơn
Trong lý thuyết của độ phức tạp tính toán, phiên bản quyết định của bài toán TSP thuộc lớp NP-complete Vì vậy không có gỉai thuật hiệu quả nào cho việc giải bài toán TSP Hay nói cách khác , giống như thời gian chạy tồi nhất cho bất ký giải thuật nào cho bài toán TSP tăng theo hàm mũ với số lượng thành phố, vì vậy thậm chí nhiều trường hợpvới vài trăm thành phố cũng đã mất vài năm CPU để giải một cách chính xác
Trang 286 Lịch sử bài toán TSP
Nguồn gốc của bài toán người du lịch đến nay vẫn chưa rõ ràng Một cuốn sách cho người du lịch từ năm 1832 đã đề cập tới vấn đề và bao gồm vài ví dụ về các đường đi
từ đức qua Thụy sỹ nhưng không chứa đựng ý nghĩa toán học nào
Vấn đề toán học liên quan tới bài toán người du lịch đã được nhắc đến trong
những năm 1800 bởi nhà toán học ireland W R Hamilton và nhà toán học người Anh Thomas Kirkman Trò chơi Icosian Game của Hamilton là một trò đố vui dựa trên cơ sở tìm chu trình Hamilton Dạng tổng quát của bài toán TSP được nghiên cứ bởi các nhà toán học suốt những năm 1930 ở đại học Harvard, đáng chú ý là Karl Menger người đã định nghĩa bài toán, xem xét giải thuật brute-force và quan sát thấy tính không tối ưu của heuristic dựa trên láng giếng gần nhất
Hassler Whitney ở đại học Princeton University là ngừời đầu tiên đặt tên người du lịch
cho bài toán không lâu sau đó.
Trong những năm 1950 và 1960 , bài toán trở nên ngày càng phổ biến trong khoa học ở châu Âu và Mỹ Những đóng góp đáng chú ý được kể đến như George Dantzig, Delbert Ray Fulkerson và Selmer M Johnson tại RAND Corporation ở Santa Monica, những người đã trình bày bài toán như bài toán số nguyên tuyến tính và phát triển phương thức cắt cho lời giải của nó Với những phương thức mới này họ đã giải được một thí dụ của bài toán với 49 thành phố để xây dựng một cách tối ưu và chứng minh rằng không còn đường đi nào ngắn hơn nữa Trong những thập kỷ tiếp theo, bài toán được nghiên cứu bởirất nhiều nhà nghiên cứ từ toán học , khoa học máy tính , hóa học ,vật lý và những khoa học khác
Richard M Karp năm 1972 chỉ ra rằng bài toán chu trình Hamiltonian thuộc lớp complete, và qua đó chỉ ra tính NP khó (NP-hardness ) của bài toán TSP Điều này giải thích một cách khoa học cho độ phức tạp tính toán của việc tìm lời giải tối ưu cho bài toán
NP-Nhiều thành tựu đã đạt được trong suốt những năm cuối thập kỷ 1970 và 1980, khi Grötschel, Padberg, Rinaldi và những người khác cố gắng giải một cách chính xác một thể hiện của bài toán với 2392 thành phố, sử dụng phương thức cắt và branch-and-bound.Trong những năm 1990 Applegate, Bixby, Chvátal, và Cook đã phát triển chương trình
Concorde mà đã được sử dụng nhiều trong việc giải các bài toán TSP cho đến nay
Trang 29Gerhard Reinelt đã công bố thư viện TSPLIB vào năm 1991, đó là một tập các thể hiện của bài toán TSP với nhiều độ khó khác nhau, và đã được sử dụng bởi nhiều nhóm nghiên cứu khác nhau để so sánh kết quả Năm 2005, Cook và những người khác đã tính được độ dài tối ưu cho chu trình với thể hiện của bài toán TSP lên tới 33,810 thành phố , được lấy ra từ bài toán xây dựng layout cho microchip, cho tới nay vẫn là thể hiện lớn nhất trong các thể hiện ở TSPLIB Nhiều thể hiện khác với hàng triệu thành phố , lời giải tìm được có thể chứng minh nằm sai khác 1% so với lời giải tối ưu.
7 Mô tả bài toán TSP
Hình 5
TSP có thể được mô hình như một đồ thị , các đỉnh của đồ thị tương ứng với các thành phố và các cạnh thì tương ứng với đường nối giữa các thành phố, chiều dài của một cạnh tương ứng với khoang cách giữa 2 thành phố Một đường đi trong bài toán TSP là một chu trình Hamilton trên đồ thị và một lời giải tối ưu của bài toán là chu trình Hamilton ngắn nhất
Thường thì đồ thị là đồ thị đầy đủ , vì vậy mọi cặp cạnh đều được nối bởi các cạnh Đây
là bước đơn giản hóa bài toán vì việc tìm chu trình Hamilton trong một đồ thị đầy đủ là
dễ Các bài toán mà không phải 2 thành phố nào cũng được nối với nhau có thể được chuyển đổi thành đồ thị đầy đủ bằng cách thêm những cạnh có độ dài lớn giữa cách thànhphố này , những cạnh sẽ không xuất hiện trong chu trình tối ưu
8 Phân loại bài toán
Đối xứng và bất đối xứng
Trong bài toán đối xứng khoảng cách giữa các thành phố là như nhau the 2 hướng, vì vậy
đồ thị biểu dieenx là đồ thị vô hướng Sự đối xứng này làm giảm 1 nửa số lời giải có thể
Trang 30Trong bài toán bất đối xứng , khoảng cách từ thành phố này đến thành phố khác không nhất thiết phải bằng khoảng cách theo hướng ngược lại, thậm chí co thể không có kết nối theo chiều ngược lại Vì vậy graph biểu diễn bài toán bất đối xứng là đồ thị có hướng Lấy ví dụ mô hình đường một chiều trong giao thông chẳng hạn.
Với khoảng cách là metric
Trong bài toán metric TSP khoảng cách giữa các thành phố phải thỏa mãn điều kiện của
bất đẳng thức tam giác Điều này có thể phát biểu rằng đường nối trực tiếp từ A đến B không bao giờ dài hơn đường đi từ A tới B mà qua C trung gian
Những chiều dài cạnh này định nghĩa một metric trong tập các đỉnh Khi các thành phố được xem như những điểm trên tấm hình, nhiều hàm khoảng cách tự nhiên là các metric
ví dụ như :
Euclide giữa hai điểm tương ứng
và y của chúng Metric này thường được gọi là khoảng cách Manhattan hay block metric.
tọa độ x và y của chúng
Hai metric cuối xuất hiện trong việc định hướng một máy mà đào tập các hố trong mạch
in Manhattan metric tương ứng tới máy căn chỉnh tọa độ thứ nhất rồi tới tọa độ kia, vì vậy thời gian di chuyển tới một điểm mới là tống cả 2 hướng di chuyển Maximum metrictương ứng với mày mà chỉnh cả 2 tọa độ cùng 1 lúc vì vậy thời gian để di chuyển tới một điểm mới quyết định bởi di chuyển dài hơn
Với khoảng cách không là metric
Khoảng cách không thỏa mãn bất đắng thức tam giác phát sinh trong nhiều bài toán định tuyến Ví dụ trong một kiểu vận tải , như du lịch bằng máy bay có thể nhanh hơn mặc dù khoảng cách di chuyển là xa hơn
Trang 319 Các giải thuật giải bài toán TSP
Các giải thuật để tìm lời giải chính xác
Lời giải trực tiếp nhất có thể là thử tất cả các hoán vị và xem hoán vị nào là tốt nhất ( dùng brute-force) Thời gian chạy cho cách tiếp cận này là O(n!), vì vậy cách tiếp cận này thậm chí không thể thực hiện với chỉ 20 thành phố Một trong số những ứng dụng
gian bộ nhớ là hàm mũ
Cải thiện tốc độ cho cách giải thuật trên là hầu như không thể Ví dụ, thậm chí là rất khó
Những cách tiếp cận khác bao gồm
với khoảng 40-60 thành phố
programming Có thể làm việc tốt cho khoảng 200 thành phố
sử dụng để giải quyết các bài toán với số lượng lớn thành phố Cách tiếp cận này đang giữ kỷ lục hiện tại giải quyết được bài toán TSP với 85,900 thành phố
Lời giải chính xác cho bài toán với 15,112 thành phố ở đức từ TSPLIB đã được tìm ra năm 2001 sử dụng phương thức lát cắt đề xuất bởi George Dantzig, Ray Fulkerson, và Selmer Johnson vào năm 1954, dựa trên linear programming Quá trình tính toán đã đượcthực hiện trong mạng máy tính gồm 110 bộ vi xử lý tại đại học Rice University và
Princeton University Tổng thời gian tính toán tương đương với 22.6 năm trong một máy đơn vi xử lý tốc độ 500 MHz Vào tháng 5-2004, bài toán người du lịch thăm tất cả 24,978 thành phố ở thụy điển đã được giải quyết : đoạn đường ngắn nhất vào khoảng 72,500 kilomet đã được tìm thấy và đã được chứng minh rằng không có đường đi nào ngắn hơn
Vào tháng 3- 2005, bài toán người du lịch với 33,810 điểm trong 1 mạch in đã được giải
quyết sử dung công cụ Concorde TSP Solver: đoạn đường tối ưu dài 66,048,945 đơn vị
đã được tìm thấy và đã được chứng minh không có đường đi nào ngắn hơn tổng khối lượng tính toán mất khoảng 15.7 năm CPU (Cook et al 2006) Vào tháng 4 năm 2006
một bài toán với 85,900 điểm cũng đã được giải quyết bởi Concorde TSP Solver, và mất
khoảng 136 năm CPU
Trang 32 Heuristic và các giải thuật xấp xỉ
Rất nhiều heuristics và giải thuật xấp xỉ, có thể đưa ra nhanh chóng lời giải tốt đã được đềxuất Các phương thức hiện đại có thể tìm lời giải cho bài toán cực lớn (hàng triệu thành phố) trong khoảng thời gian chấp nhận được với lời giải xấp xỉ chỉ khác 2-3% so với lời giải tối ưu
Một vài kiểu heuristic đã được tìm ra
Tuy nhiên, có nhiều cách sắp xếp đặc biệt các thành phố làm cho giải thuật NN đưa ra đường đi tồi tệ nhất (Gutin, Yeo, and Zverovich, 2002) Điều này đúng cho cả bài toán TSP đối xứng và bất đối xứng (Gutin and Yeo, 2007)
Gần đây một heuristic mới được đưa ra ,Match Twice and Stitch (MTS) (Kahng, Reda
2004 MTS đã cho thấy tính hiệu quả hơn hẳn so với những heuristic xây dựng hiện tại MTS thực hiện hai lần khớp tuần tự , mà lần khớp thứ 2 được thực hiện sau khi xóa tất
cả các cạnh của lần khớp thứ nhất, để đưa ra tập tất cả các chu trình Sau đó chu trình được đóng lại để đưa ra đường đi cuối cùng
9.2 Cải tiến từng bước
Chuyển cặp, hay heuristic Lin-Kernighan.
Kỹ thuật chuyển cặp hay '2-opt' bao gồm việc lặp lại việc xóa 2 cạnh và thay chúng bằng hai cạnh khác nối đoạn tạo bởi cạnh bị xóa tạo thành đường di ngắn hơn Đây là trường hợp đặc biệt của phương thức k-opt
Lấy một đường đi và xóa k cạnh đôi một không có điểm chung Xây đựng lại đường đi từnhững mảnh còn lại để không có hai mảnh đường đi nào lối với nhau (không nối hai điểmđầu cuối của 2 mảnh với nhau sẽ tạo thành đường đi khép kín) Điều này làm đơn giản hóabài toán TSP thành bài toán đơn giản hơn rất nhiều Mỗi điểm đầu cuối có thể được
nối tới 2k − 2 điểm khác có thể: trong số 2k tổng số điểm đầu cuối có thể, trừ ra hai điểm đầu cuối của mảnh đang xem xét Bài toán đơn giản hóa 2k thành phố TSP có thể giải sử
Trang 33dụng brute force để tìm tổ hợp tốt nhất của các mảnh ban đầu Kỹ thuật k-opt là trường hợp riêng của kỹ thuât V-opt hay variable-opt Kỹ thuật phổ biến của k-opt là 3-opt, được giới thiệu bởi Shen Lin của Bell Labs vào năm 1965 Có một trường hợp đặc biệt của 3-opt khi mà cách cạnh là có thể không nhất thiết không có điểm chung (hai trong
số các cạnh kề với nhau) Trong thực tế, có thể đạt được những phát triển đáng kể của kỹ thuật 2-opt không nhất thiết phải sử dụng 3-opt bằgn cách giới hạn 3-changes thành trườn hợp riêng với hai cạnh xóa đi nối với nhau Kỹ thuật này được gọi là 2.5-opt nằm giữa 2-opt và 3-opt, hiểu theo cả 2 nghĩa của chất lượng lời giải đạt được và thời gian để tìm được lời giải
Kỹ thuật variable-opt method giống như , nhưng là sự tông quát hóa của k-opt kỹ thuật Trong khi kỹ thuật k-opt xóa đi một số lựong cố định (k) cạnh từ đường đi ban đầu kỹ thuật variable-opt không xóa đi một số lượng cạnh cố định Thay vì vậy nó phát triển tập này khi quá trình tìm kiếm tiếp tục Phương thức nổi tiếng trong gia đình này là phương thức Lin-Kernighan Shen Lin và Brian Kernighan lần đầu tiên đưa ra phương thức của
họ năm 1972 và nó là heuris tic đáng tin cậy nhát cho việc giải bài toán người du lịch trong suốt hai thập kỷ Những kỹ thuật tiên tiến hơn được phát triển tại Bell Labs cuối những năm 1980 bởi David Johnson và đội nghiên cứu của ông Những phương thức này , đôi khi được gọi là Lin-Kernighan-Johnson xây dựng trên phương thức Lin-
Kernighan , thêm ý tưởng từ tabu search và evolutionary computing Kỹ thuật cơ sở Kernighan technique mang lại kết quả được đảm bảo ít nhất là bằn so với 3-opt Phương thức Lin-Kernighan-Johnson tính một đường đi Lin-Kernighan , và sau đó xáo trộn đường đi bằng cách đột biến (xóa ít nhất 4 cạnh và nối lại đường đi bằng cách khác , sau
Lin-đó thực v-opt trên đường đi mới ) Quá trình đột biến thường đủ để di chuyển đường đi rakhỏi cục bộ địa phương ( local minimum ) Kỹ thuật V-opt được xem như một trong số những heuristic mạnh cho bài toán và có thể giải quyết các trường hợp đặc biệt, như bài toán chu trình Hamilton và những bài toán TSP không phải metric mà những heuristic khác không giải quyết được
3 Giao thức truyền gói tin(MPI) và các vấn đề song song hóa
10 Kiến trúc máy tính song song
Máy tính song song có hai kiến trúc cơ bản: Bộ nhớ phân tán và bộ nhớ dùng chung
Máy tính song song theo kiến trúc bộ nhớ phân tán thực chất là một tập các máytính tuần tự (gọi là các nut – nodes) cùng làm việc để giải quyết một vấn đề Mỗi nút cókhả năng truy cập nhanh vào bộ nhớ riêng của nó và truy cập vào bộ nhớ của nút khác
Trang 34thông qua mạng giao tiếp, thường là mạng giao tiếp có tốc độ cao Dữ liệu được trao đổigiữa các nút là các gói tin được truyền trên mạng giao tiếp.
Máy tính song song bộ nhớ dùng chung, nhiều bộ xử lý dùng chung một khônggian bộ nhớ bằng một bột bus bộ nhớ tốc độ cao Không gian bộ nhớ dùng chung chophép các bộ xử lý trao đổi và chia sẻ việc truy cập dữ liệu một cách hiệu quả Số lượng
bộ xử lý dùng trong mô hình bộ nhớ dùng chung là có giới hạn nhỏ Lý do là số lượng dữliệu được truyền tải qua bus bộ nhớ đến các bộ xử lý là có giới hạn
Thế hệ tiếp theo của máy tính song song hiện nay sử dụng kết hợp giữa kiến trúc
bộ nhớ phân tán và bộ nhớ dùng chung Mõi nút là một nhóm các bộ xử lý dùng chung bộnhớ và các nút được kết nối bằng một mạng giao tiếp tốc độ cao
11 Phân tách bài toán
Bước đầu tiên để thiết kế một giải thuật song song là phân tích vấn đề cần giảiquyết thành các vấn đề nhỏ hơn Sau đó, các vấn đề nhỏ hơn được gán cho các bộ xử lýlàm việc đồng thời Về cơ bản, có hai kiểu chia nhỏ:
1 Phân tách dữ liệu (Domain decomposition)
2 Phân tách công việc (Function decomposition)
bộ xử lý thỏa mãn mô hình song song hóa này
Chiến lược này phù hợp với các giải thuật trong đó các bộ xử lý có thể tính toánvới một phần dữ liệu có kích thước lớn, sự trao đổi dữ liệu chỉ thực hiện với một số lượng
dữ liệu nhỏ ở biên trong các lần lặp
13 Phân tách công việc
Chiến lược phân tách dữ liệu không phải là một giải thuật song song hóa tốt nhấtcho chương trình song song Trong trường hợp phân chia dữ liệu, các phần của dữ liệutương ứng với các tiến trình xử lý khác nhau sẽ cần những khoảng thời gian tương đốikhác nhau Hiệu năng của chương trình bị giới hạn bởi tốc độ của bộ xử lý chậm nhất.Khi đó thời gian rỗi của các bộ xử lý là không được sử dụng Trong trường hợp này, môhình phân tách công việc hay song song hóa công việc là hiệu quả hơn mô hình phân tách
dữ liệu Trong song song hóa công việc, bài toán được phân chia thành một số lượng lớn
Trang 35các nhiệm vụ nhỏ hơn và các công việc nhỏ được gán cho các bộ xử lý một cách phù hợp.Các bộ xử lý sẽ kết thúc nhanh chóng một công việc và được gán cho công việc tiếp theo.
Song song hóa công việc được thực hiện trên kiến trúc client-server Các nhiệm vụđược cấp phát cho một nhóm các tiến trình phục vụ bằng một tiến trình chính Kiến trúcclient-server có thể thực hiện hầu như tất cả các kiểu chương trình
14 Song song hóa dữ liệu và mô hình truyền tin
Về mặt lịch sử, có hai cách tiếp cận để viết một chương trình song song:
1.Sử dụng ngôn ngữ song song dữ liệu bằng chỉ dẫn (Directives-based parallel language)
data-2 Truyền gói tin bằng cách gọi các hàm trong thư viện của ngôn ngữ thường.Trong các ngôn ngữ song song dữ liệu bằng chỉ dẫn, như High PerformanceFortran (HPF) hay OpenMP, một dòng lệnh tuần tự được thực hiện song song bằng cáchthêm vào một chỉ dẫn (nó xuất hiện như là một chú thích trong dòng lệnh tuần tự) báocho chương trình dịch biết cách phân chia dữ liệu và làm việc đối với các bộ xử lý Chitiết cách phân chia dữ liệu, tính toán, và giao tiếp giữa các bộ xử lý được hoàn thành bởichương trình dịch Ngôn ngữ song song dữ liệu thường được thực hiện trên kiến trúc bộnhớ chia sẻ bởi vì không gian bộ nhớ chung làm đơn giản hóa công việc của chương trìnhdịch
Trong cách tiếp cận truyền gói tin, người lập trình phải tự phân chia dữ liệu vàcông việc cho các bộ xử lý và tất nhiên là phải quản lý việc trao đổi dữ liệu giữa chúng.Cách tiếp cận này khá phức tạp
15 Tối ưu chương trình song song
Mục đích chính khi viết một chương trình song song là thu được hiệu năng thựchiện tốt hơn so với chương trình tuần tự Với mục đích này, có một số chú ý cần quantâm khi thiết kế chương trình song song để thu được hiệu năng tốt nhất có thể Các yêucầu đó là:
Phân chia công việc
Tối thiểu hóa trao đổi dữ liệu
Tránh chồng chập giữa trao đổi dữ liệu và tính toán
16 Phân chia công việc
Phân chia công việc là nhiệm vụ phân chia công việc giữa các bộ xử lý đang sẵnsàng Điều này có thể dễ dàng thực hiện khi các phép toán giống nhau được thực hiện bởitất cả các bộ xử lý (trên các dữ liệu khác nhau) Nhưng nó trở nên không tầm thường khithời gian thực hiện các tiến trình phụ thuộc vào giá trị dữ liệu làm việc Khi có sự biến
Trang 36đổi lớn trong thời gian thực hiện, bạn phải thực hiện một vài phương pháp để giải quyếtvấn đề này.
17 Tối thiểu hóa trao đổi dữ liệu
Tổng thời gian thực hiện là lợi ích chính của một chương trình song song bởi vì nó
là một thành phần cơ bản cần so sánh và cải tiến của tất cả các chương trình Có 3 thànhphần tạo nên thời gian thực hiện:
1.Thời gian tính toán
2 Thời gian rỗi
3 Thời gian trao đổi thông tin
“Thời gian tính” là thời gian dùng để thực hiện các tính toán trên dữ liệu Trường
hợp lý tưởng mong đợi là nếu ta có P bộ xử lý làm việc để giải quyết một vấn đề thì công việc sẽ kết thúc trong khoảng thời gian 1/P so với thời gian khi thực hiện tuần tự Điều
này có nghĩa là toàn bộ thời gian bộ xử lý sẽ dùng để tính toán
“Thời gian rỗi” là thời gian bộ xử lý dùng để đợi dữ liệu từ các bộ xử lý khác.Trong thời gian này, các bộ xử lý không làm việc
“Thời gian trao đổi dữ liệu” là thời gian để bộ xử lý gửi và nhận gói tin Thời giantrao đổi dữ liệu có phụ thuộc vào độ trễ và băng thông Độ trễ là thời gian cần để thiết lậpmột giao thức để trao đổi Băng thông là tốc độ truyền dữ liệu, tính bằng số bit truyềntrên một đơn vị thời gian Chương trình tuần tự không có sự trao đổi dữ liệu giữa các bộ
xử lý Do đó, chúng ta phải tối thiểu hóa thời gian trao đổi để có hiệu năng thực hiệnđược cải tiến tốt nhất
18 Giảm chồng chéo giữa trao đổi dữ liệu và tính toán:
Có nhiều cách để giảm thiểu thời gian rỗi của các bộ xử lý, và một ví dụ là sựchồng chéo giữa trao đổi dữ liệu và tính toán Đó là việc chiếm giữ một tiến trình cho mộthay nhiều công việc mới trong khi nó đang chờ trao đổi dữ liệu để kết thúc
19 MPI
MPI được coi như là một chuẩn thực hiện của mô hình “truyền gói tin” trong tính
tiến trình làm việc với một bộ dữ liệu cụ bộ Mỗi tiến trình có các biến cục bộ, và không
có cơ chế nào để một tiến trình có thể truy cập trực tiếp vào bộ nhớ của một tiến trìnhkhác Trao đổi dữ liệu giữa các tiến trình được thực hiện bằng cách truyền gói tin, làphương tiện duy nhất để thực hiện gửi và nhận dữ liệu giữa các tiến trình Chú ý rằng môhình bao gồm các tiến trình, trên nguyên tắc nó không cần phải chạy trên các bộ xử lýkhác nhau
Lý do chính khiến mô hình này trở nên hữu dụng vì nó thực sự phổ biến Về bảnchất, mọi kiểu tính toán song song đều có thể thực hiện trên mô hình truyền gói tin Thêmvào đó, mô hình này:
Trang 37- Có thể thực hiện trên nhiều nền tảng khác nhau, từ kiến trúc nhiều bộ xử lý dùngchung bộ nhớ đến trạm làm việc thậm chí là một máy đơn bộ xử lý.
- Cho phép quản lý dữ liệu và tiến trình chi tiết hơn so với ứng dụng song songtheo mô hình bộ nhớ dùng chung Hơn nữa chương trình có thể tạo ra một hiệu năng xửdụng cao hơn
20 Lịch sử phát triển MPI
MPI là viết tắt của Message Passing Interface Đó là một thư viện các hàm (trongC) hoặc tiến trình con (trong Fortran) cho phép bạn chèn vào trong code để thực hiện traođổi dữ liệu giữa các tiến trình
MPI được phát triển hơn hai năm thông qua sự trao đổi trên MPI forum, một nhóm
cơ bản có 60 người đại diện cho khoảng 40 tổ chức Chuẩn MPI-1 được ra đời mùa xuânnăm 1994
- Chuẩn này quy định tên, thứ tự gọi và kết quả của các tiến trình con hay hàmđược gọi bởi Fortran 77 và C Tất cả các chương trình thực hiện của MPI đều phải tuânthủ các luật này, để đảm bảo khả năng thực hiện Chương trình MPI nên dịch và chạy trênnền tảng có hỗ trợ chuẩn MPI
- Chi tiết thực hiện của thư viện do các nhà cung cấp tự xây dựng các phiên bảnriêng cho thiết bị của họ
- Các phiên bản thực thi của MPI-1 có giá trị trên rất nhiều các nền tảng khácnhau
Một chuẩn MPI-2 cũng đã được định nghĩa Nó thêm vào các tiện ích mới không
có trong chuẩn MPI-1, bao gồm công cụ cho việc vào ra song song, hỗ trợ phiên bản C++
và Fortran 90, và sự quản lý tiến trình động Hiện tại, một số phiên bản thực hiện củaMPI đã tích hợp các phần của chuẩn MPI-2 nhưng chuẩn đầy đủ vẫn chưa có
21 Mục đích của MPI
Mục đích chính của MPI là cung cấp thư viện đính kèm chương trình nguồn để Chương trình MPI có thể dịch và chạy như nhau trên bất kỳ nền tảng nào
Cho phép thực thi một cách có hiệu quả trong nhiều kiến trúc
MPI cũng cung cấp một số lớn chức năng: các kiểu trao đổi dữ liệu khác nhau, cáctiến trình đặc biệt để tập hợp các phép xử lý, và cho phép người dùng tự định nghĩa giaothức truyền
- Hỗ trợ các kiến trúc song song không đồng nhất
Một số cái không có trong chuẩn MPI -1 là:
- Cơ chế chính xác để khởi đầu một chương trình MPI Thông thường, nó phụthuộc vào nền tảng của chương trình và bạn sẽ cần tra cứu các tài liệu riêng biệt để biếtcách làm như thế nào
Trang 38- Quản lý tiến trình động, đó là sự thay đổi số lượng tiến trình khi chương trìnhđang chạy.
- Gỡ lỗi
- Vào-ra song song (Parallel I/O)
22 Các đặc tính cơ bản của một chương trình MPI
Một chương trình MPI bao gồm nhiều chương trình tuần tự có trao đổi dữ liệu vớinhau thông qua việc gọi các hàm trong thư viện Các hàm này thuộc bốn lớp cơ bản:
1 Khởi tạo, quản lý và kết thúc trao đổi
2 Trao đổi giữa hai tiến trình
3 Trao đổi giữa một nhóm các tiến trình
4 Tạo các định dạng dữ liệu bất kỳ
Lớp đầu tiên là các hàm được gọi để khởi đầu quá trình trao đổi, xác định số lượng
bộ xử lý được sử dụng, tạo một nhóm con các bộ xử lý, xác định bộ xử lý nào đang chạychương trình hiện tại
MPI_Init(); khởi tạo quá trình song song
MPI_Finalize(); kết thúc quá trình song song
MPI_Comm_rank(); xác định tên tiến trình
MPI_Comm_size(); xác định tổng số tiến trình chạy song song;
Lớp thứ hai là các hàm, được gọi để trao đổi dữ liệu điểm - đến - điểm, với cáckiểu gửi và nhận dữ liệu khác nhau giữa hai bộ xử lý
MPI_Send(); gửi dữ liệu đến một tiến trình
MPI_Recv(); nhận dữ liệu từ một tiến trình
Lớp thứ ba là các hàm cho phép thực hiện trao đổi song song giữa một nhóm các
bộ xử lý Các hàm cơ bản:
MPI_Bcast();gửi dữ liệu từ một tiến trình đi tất cả các tiến trình
MPI_Reduce(); gửi dữ liệu từ nhiều tiến trình về một tiến trình
MPI_Barrier(); dùng để đồng bộ hoạt động giữa các máy
MPI_Gather(); nhận dữ liệu từ nhiều tiến trình
MPI_Scatter(); gửi dữ liệu đến nhiều tiến trình
Lớp cuối cùng là các hàm cung cấp để tạo ra các cấu trúc dữ liệu phức tạp riêngcủa người dùng Các hàm cơ bản:
MPI_Type_struct(); tạo ra kiểu dữ liệu MPI riêng của người dùng
MPI_Type_commit (); hòan thành quá trình định nghĩa kiểu dữ liệu MPI
Trang 394 Giải thuật di truyền và di truyền song song
23 Giới thiệu về giải thuật di truyền
4.1.1 Lịch sử phát triển:
Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải pháp
thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization) Giải thuật di
truyền là một phân ngành của giải thuật tiến hóa vận dụng các nguyên lý của tiến hóa như
di truyền, đột biến, chọn lọc tự nhiên, và trao đổi chéo
Giải thuật di truyền thường được ứng dụng nhằm sử dụng ngôn ngữ máy tính để mô phỏng quá trình tiến hoá của một tập hợp những đại diện trừu tượng (gọi là những nhiễm
sắc thể) của các giải pháp có thể (gọi là những cá thể) cho bài toán tối ưu hóa vấn đề Tập
hợp này sẽ tiến triển theo hướng chọn lọc những giải pháp tốt hơn
Thông thường, những giải pháp được thể hiện dưới dạng nhị phân với những chuỗi 0 và
1, nhưng lại mang nhiều thông tin mã hóa khác nhau Quá trình tiến hóa xảy ra từ một tậphợp những cá thể hoàn toàn ngẫu nhiên ở tất cả các thế hệ Trong từng thế hệ, tính thích nghi của tập hợp này được ước lượng, nhiều cá thể được chọn lọc định hướng từ tập hợp
hiện thời (dựa vào thể trạng), được sửa đổi (bằng đột biến hoặc tổ hợp lại) để hình thành
một tập hợp mới Tập hợp này sẽ tiếp tục được chọn lọc lặp đi lặp lại trong các thế hệ kế tiếp của giải thuật
Như đã nói ở trên, GA là một thành phần của EC- một lĩnh vực được coi là có tốc độ pháttriển nhanh của trí tuệ nhân tạo EC được chia ra thành 5 nhóm :
Giải thuật di truyền (Genetic Algorithm - GA): Dựa vào quá trình di truyền
trong tự nhiên để cải tiến lời giải qua các thế hệ bắt nguồn từ một tập các lời giảiban đầu
Quy hoạch tiến hoá (Evolutionary Programming -EP): Dựa vào quy luật tiến hoá,
tìm phương pháp liên hợp đủ khả năng giải quyết trọn vẹn một bài toán từ một lớpcác phương pháp giải quyết được một số phần của bài toán
Các chiến lược tiến hoá ( Evolutionary Strategies -ES): Dựa trên một số chiến
lược ban đầu, tiến hoá để tạo ra những chiến lược mới phù hợp với môi trườngthực tế một cách tốt nhất
Lập trình di truyền (Genetic Programming -GP): Mở rộng giải thuật di truyền
trong lĩnh vực các chương trình của máy tính Mục đích của nó là để sinh ra một
Trang 40cách tự động các chương trình máy tính giải quyết một cách tối ưu một vấn đề cụthể.
Các hệ thống phân loại (Classifier Systems- CS): Các GA đặc biệt được dùng
trong việc học máy và việc phát hiện các quy tắc trong các hệ dựa trên các quytắc
Giải thuật di truyền cũng như các thuật toán tiến hoá đều được hình thành dựa trên một
quan niệm được coi là một tiên đề phù hợp với thực tế khách quan Đó là quan niệm "Quá trình tiến hoá tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã mang tính tối ưu" Quá trình tiến hoá thể hiện tính tối ưu ở chỗ thế hệ sau bao giờ cũng tốt hơn thế hệ
trước
Quá trình phát triển của giải thuật di truyền có thể được chỉ ra qua các mốc thời gian sau :
công trình "Evolution Strategies" (Các chiến lược tiến hoá) Ý tưởng này sau đóđược nhiều nhà nghiên cứu phát triển
với các đồng nghiệp và những sinh viên Cuốn sách "Adaption in Natural andArtificial Systems" (Sự thích nghi trong các hệ tự nhiên và nhân tạo) xuất bản năm
1975 đã tổng hợp các kết quả của quá trình nghiên cứu và phát triển đó
toán và gọi phương pháp này là " lập trình gen".
Ngày nay giải thuật di truyền càng trở nên quan trọng, đặc biệt là trong lĩnh vực tối ưuhoá, một lĩnh vực có nhiều bài toán thú vị, được ứng dụng nhiều trong thực tiễn nhưngthường khó và chưa có giải thuật hiệu quả để giải
24 Các khái niệm cơ bản
Giải thuật di truyền dựa vào quá trình tiến hoá trong tự nhiên nên các khái niệm vàthuật ngữ của nó đều có liên quan đến các thuật ngữ của di truyền học
4.1.2 Cá thể, nhiễm sắc thể
Một cá thể trong giải thuật di truyền, biểu diễn một giải pháp của bài toán Tuynhiên không giống với trong tự nhiên, một cá thể có nhiều nhiễm sắc thể (NST),có 1 thìgọi là thể đơn bội ,còn nếu có nhiều thì là thể đa bội, ở đây để giới hạn trong giải thuật ditruyền ta quan niệm một cá thể có một nhiễm sắc thể Do đó khái niệm cá thể và nhiễmsắc thể trong giải thuật di truyền coi như là tương đương
Một NST được tạo thành từ nhiều gen, mỗi gen có thể có các giá trị khác nhau đểquy định một tính trạng nào đó Trong GA, một gen được coi như một phần tử trongchuỗi NST