1. Trang chủ
  2. » Giáo Dục - Đào Tạo

lý thuyết đồ thị các thuật toán với bài toán người du lịch

46 1,4K 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 46
Dung lượng 551 KB

Nội dung

tài liệu gồm lý thuyết về đồ thị trong tin học. cùng các thuật toán và khái niệm ví dụ rõ ràng từ cơ bản đến nâng cao. trong đó sẽ quay quanh giải quyết bài toán người du lịch. tài liệu sẽ giúp các bạn ôn tập tốt hơn để thi hsg tin học vòng trường, tỉnh, quốc gia.

Trang 1

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 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 2

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ờ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.

Bài viết này so sánh hiệu quả song song hóa của các mô hình song song cho một vài giải thuật metaheuristic 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 3

Tổng quan 1

Giới thiệu chung 1

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

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

Định nghĩa đồ thị 7

1.1.1 Các thuật ngữ cơ bản 9

1.1.2 Đường đi, chu trình và đồ thị liên thông 10

1.1.3 Chu trình Euler 11

1.1.4 Chu trình Hamilton 12

1.1.5 Đồ thị có trọng số 13

1.1.6 Các cấu trúc dữ liệu biểu diễn đồ thị 13

1.2 Khái niệm về lớp các bài toán P và NP 14

1.2.1 Khái niệm các loại thời gian tính 14

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

1.2.3 Khái niệm quy dẫn 16

1.2.4 Lớp bài toán P 16

1.2.5 Lớp bài toán NP 16

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

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

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

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

1.4 Bài toán tối ưu hóa tổ hợp (Combinatorial optimization) 20

 Bài toán tối ưu hóa tổ hợp tĩnh (Static Combinatorial optimization): 20

Trang 4

 Bài toán tối ưu hóa tổ hợp động (Dynamic Combinatorial optimization): 20

2 Bài toán người du lịch 21

2.1 Giới thiệu bài toán 21

2.2 Lịch sử bài toán TSP 22

2.3 Mô tả bài toán TSP 23

2.4 Phân loại bài toán 23

 Đối xứng và bất đối xứng 23

 Với khoảng cách là metric 24

 Với khoảng cách không là metric 24

2.5 Các giải thuật giải bài toán TSP 25

 Các giải thuật để tìm lời giải chính xác 25

 Heuristic và các giải thuật xấp xỉ 26

3 Giải thuật di truyền và di truyền song song 28

3.1 Giới thiệu về giải thuật di truyền 28

3.1.1 Lịch sử phát triển: 28

3.2 Các khái niệm cơ bản 29

3.2.1 Cá thể, nhiễm sắc thể 29

3.2.2 Quần thể 30

3.2.3 Các toán tử di truyền 30

3.3 Mô hình giải thuật di truyền 30

3.4 Các tham số của GA 32

Kích thước quần thể 32

Xác suất lai ghép 32

Xác suất đột biến 32

3.5 Mã hoá NST 32

Trang 5

Mã hoá nhị phân 33

Mã hoá hoán vị 33

Mã hoá theo giá trị 33

3.6 Khởi tạo quần thể ban đầu 34

Hàm tính độ thích nghi 34

Cơ chế lựa chọn 34

Lựa chọn tỷ lệ 35

Lựa chọn xếp hạng 35

Lựa chọn theo cơ chế lấy mẫu ngẫu nhiên 35

Lựa chọn tranh đấu 36

3.7 Các toán tử di truyền 36

Mã hoá nhị phân 36

Mã hoá hoán vị 38

Mã hoá theo giá trị 38

3.8 Chiến lược nạp lại quần thể 39

Nạp lại hoàn toàn 39

Nạp lại ngẫu nhiên 39

Nạp lại theo mô hình cá thể ưu tú 39

4 Thuật toán bầy kiến 40

4.1 Sơ đồ chung của thuật toán bầy kiến 40

Giới thiệu chung về thuật toán bầy kiến 40

Sơ đồ chung của thuật toán bầy kiến 44

Trang 6

Hình 1 6

Hình 2 7

Hình 3 14

Hình 4 17

Trang 7

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

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à e 2 đượ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 8

Đị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à e 2

đượ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 9

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 đị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 ( )) vv

Đị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 10

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)).

Đị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

x 0 ,x 1, …,x n-1, x n

trong đó u=x 0 , v= x n , (x i, x i+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:

(x 0 , x 1 ), (x 1 , x 2 ), …, (x n-1 , x n ).

Đỉ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

x 0 ,x 1, …,x n-1, x n

trong đó u=x 0 , v= x n , (xi,xi+1) E, hoặc (x i, x i+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:

(x 0 , x 1 ), (x 1 , x 2 ), …, (x n-1 , x n ).

Trang 11

Đỉ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.

Đị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

( ) deg ( ),deg

Trang 12

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

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

Đị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.

Đị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 13

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ẳ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: EAR , 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.

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 nhanhhơn, nhưng lại cần lượng bộ nhớ lớn nếu đồ thị có kích thước lớn

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áchriê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 14

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ệ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

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, b ij = 1 chứa dữ

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

trong 2 đầu của cạnh x j, 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 v i với đỉnh v j thì phần tử M i,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ậnnà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

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 15

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’.

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ụ:

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 (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).

Đố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 v n , 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 16

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’

Đị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 17

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 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

Đị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 đủ

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ư:

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

Trang 18

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

Trang 19

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: SR 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 20

Chú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* chúng ta có max (f/f*, f*/f) p.

Đối với bài toán cực tiểu hóa ta chỉ cần f/f*p.

Đối với bài toán cực đại hoá thì chỉ cần f*/f p.

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ử viên, f là hàm đánh giá (hàm này gán giá trị f(s) cho mỗi lời giải ứng cử viên s S), vàΩ) 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

ưu toàn cục s* Với các bài toán tối ưu hóa cực tiểu là tìm lời giải s* với giá nhỏ nhất,

nghĩa là f(s*) ≤ f(s) với mọi lời giải s  S Ngược lại bài toán tối ưu hóa cực đại là tìmlờ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

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

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 21

2 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 22

6 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 23

Gerhard 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

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ể

Ngày đăng: 07/04/2016, 16:36

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w