1. Trang chủ
  2. » Công Nghệ Thông Tin

giải thuật di truyền bài toán cây steiner

77 1,1K 1

Đ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 77
Dung lượng 2,27 MB

Nội dung

Ví dụ, một mạng máy tính môphỏng bằng đồ thị thì trọng số có thể là khoảng cách vật lý hoặc thông lượng truyền dữ liệu giữa hai máy tính được nối trực tiếp trong mạng, một mạng lưới giao

Trang 1

Giải thuật di truyền giải bài toán cây Steiner

MỤC LỤC

DANH MỤC HÌNH 4

DANH MỤC BẢNG 6

LỜI MỞ ĐẦU 7

CHƯƠNG 1 8

GIỚI THIỆU BÀI TOÁN 8

1 MỘT SỐ CÁC KHÁI NIỆM CƠ SỞ 8 1.1 Đồ thị 8

1.2 Cấu trúc dữ liệu biểu diễn đồ thị 11

2.3 Danh sách kề 12

1.3 Các thuật toán trên đồ thị 13

1.4 Bài toán tối ưu 19

2 BÀI TOÁN CÂY STEINER 23 2.1 Lịch sử bài toán cây Steiner 23

2.2 Lời giải cho bài toán 3 điểm của Fermat 24

2.3 Hệ số Steiner cho trường hợp ba điểm 27

2.4 Mô tả bài toán cây Steiner trên đồ thị 28

2.5 Một số ứng dụng của bài toán 28

2.6 Các thuật toán giải đúng 31

CHƯƠNG 2 35

GIẢI THUẬT DI TRUYỀN 35

1 GIỚI THIỆU VÀ LỊCH SỬ PHÁT TRIỂN 35 2 CÁC KHÁI NIỆM CƠ BẢN 35 2.1 Nhiễm sắc thể (Chromosome) 35

2.2 Quần thể (Population) 35

2.3 Chọn lọc (Selection) 36

2.4 Lai ghép (CrossOver) 36

2.5 Đột biến (Mutation) 36

2.6 Hàm thích nghi (Fitness Function) 36

3 KHÔNG GIAN TÌM KIẾM (SEARCH SPACE) 36 4 MÔ TẢ GA 36 5 CÁC THAM SỐ CỦA GA 38 5.1 Kích thước quần thể 38

5.2 Xác suất lai ghép 38

5.3 Xác suất đột biến 38

6 KHỞI TẠO QUẦN THỂ BAN ĐẦU VÀ CHỌN LỌC CÁ THỂ 38 6.1 Khởi tạo quần thể 38

6.2 Hàm tính độ thích nghi 39

6.3 Chọn lọc 39

Trang 2

Giải thuật di truyền giải bài toán cây Steiner

7.1 Mã hóa nhiễm sắc thể 41

7.2 Lai ghép (CrossOver) 43

7.3 Đột biến (Mutation) 45

8 CHIẾN LƯỢC NẠP LẠI QUẦN THỂ 47 8.1 Nạp lại hoàn toàn 47

8.2 Nạp lại ngẫu nhiên 47

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

9 ĐIỀU KIỆN DỪNG CỦA GA 48 10 ĐẶC ĐIỂM VÀ ỨNG DỤNG CỦA GA 48 10.1 Đặc điểm 48

10.2 Ứng dụng 49

CHƯƠNG 3 50

GIẢI THUẬT DI TRUYỀN GIẢI BÀI TOÁN CÂY STEINER 50

1 MÃ HÓA LỜI GIẢI 50 2 PHƯƠNG PHÁP KHỞI TẠO QUẦN THỂ BAN ĐẦU 51 3 CHỌN LỌC 52 3.1 Chọn lọc xếp hạng tuyến tính 52

3.2 Chọn lọc xếp hạng phi tuyến 52

3.3 Chọn lọc cạnh tranh 52

4 LAI GHÉP 52 4.1 Lai ghép hai cha mẹ 52

4.2 Lai ghép nhiều cha mẹ 53

5 ĐỘT BIẾN 53 5.1 Đột biến chuẩn 53

5.2 Đột biến đổi chỗ 54

5.4 Phép đột biến thêm đỉnh 55

5.5 Phép đột biến xóa đỉnh 55

6 TỐI ƯU CÂY 55 CHƯƠNG 4 57

KẾT QUẢ THỰC NGHIỆM 57

1 DỮ LIỆU THỬ NGHIỆM 57 1.2 Đặc điểm dữ liệu 57

1.3 Định dạng file dữ liệu vào 58

2 MÔI TRƯỜNG THỬ NGHIỆM 59 3 CÀI ĐẶT THỬ NGHIỆM 60 3.1 Các tham số 60

3.2.Các hàm chính trong chương trình 63

4 KẾT QUẢ THỬ NGHIỆM 64 4.1.Các bảng kết quả 64

Trang 3

Giải thuật di truyền giải bài toán cây Steiner

4.2.So sánh các kết quả 71

CHƯƠNG 5 74 HƯỚNG DẪN SỬ DỤNG CHƯƠNG TRÌNH 74

2 CHẠY CHƯƠNG TRÌNH GIẢI BÀI TOÁN CHO MỘT FILE DỮ LIỆU VÀO 74

3 CHẠY CHƯƠNG TRÌNH GIẢI BÀI TOÁN CHO NHIỀU FILE DỮ LIỆU VÀO 74

KẾT LUẬN 75 TÀI LIỆU THAM KHẢO 76

Trang 4

DANH MỤC HÌNH

HÌNH 1.1 ĐỒ THỊ VÔ HƯỚNG (TRÁI) VÀ ĐỒ THỊ CÓ HƯỚNG (PHẢI) 8

HÌNH 1.2 ĐỒ THỊ VÔ HƯỚNG LIÊN THÔNG 9

HÌNH 1.3 CÂY 10

HÌNH 1.4 ĐỒ THỊ VÀ CÂY KHUNG 10

HÌNH 1.5 ĐỒ THỊ VÀ CÂY KHUNG NHỎ NHẤT 10

HÌNH 1.6 BIỂU DIỄN ĐỒ THỊ BẰNG MA TRẬN KỀ 11

HÌNH 1.7 BIỂU DIỄN ĐỒ THỊ BẰNG DANH SÁCH CẠNH CUNG 12

HÌNH 1.8 DANH SÁCH KỀ VÀ MA TRẬN KỀ TƯƠNG ỨNG 13

HÌNH 1.9 ĐƯỜNG ĐI NGẮN NHẤT ĐẾN CÁC ĐỈNH CÒN LẠI 17

HÌNH 1.10 ĐỒ THỊ CÓ HƯỚNG KHÔNG CÓ CHU TRÌNH ÂM 18

HÌNH 1.11 MẠCH LOGIC, ĐẦU VÀO ĐƯỢC NHẬP TỪ BÊN TRÁI VÀ ĐẦU RA Ở BÊN PHẢI 21

HÌNH 1.12 CÁC LỚP BÀI TOÁN P, NP VÀ CO-NP 22

HÌNH 1.13 PHÂN LỚP TẠM THỜI CÁC BÀI TOÁN 23

HÌNH 1.14 BÀI TOÁN CỦA FERMAT VỚI N=3 24

HÌNH 1.15 GIẢI PHÁP CỦA TORRICELLI 24

HÌNH 1.16 GIẢI PHÁP CỦA SIMPSON 25

HÌNH 1.17 ĐIỀU KIỆN VỀ GÓC 25

HÌNH 1.18 CÂY STEINER CHO BA ĐIỂM 27

HÌNH 1.19 MINH HỌA CHO LỜI GIẢI BÀI TOÁN TÌM HỆ SỐ STEINER .27

HÌNH 1.20 CÂY STEINER TRÊN ĐỒ THỊ LƯỚI 31

HÌNH 2.1 XÁC SUẤT CỦA MỖI NST THEO KIỂU LỰA CHỌN ROULET .40

HÌNH 2.2 TRẠNG THÁI QUẦN THỂ TRƯỚC KHI SẮP XẾP (ĐỒ THỊ THEO HÀM THÍCH NGHI) 40

HÌNH 2.3 TRẠNG THÁI QUẦN THỂ SAU KHI SẮP XẾP (ĐỒ THỊ THEO THỨ TỰ) 41

HÌNH 2.4 LAI GHÉP MỘT ĐIỂM CẮT MÃ HÓA NHỊ PHÂN 44

HÌNH 2.5 LAI GHÉP HAI ĐIỂM CẮT MÃ HÓA NHỊ PHÂN 44

HÌNH 2.6 LAI GHÉP ĐỒNG NHẤT MÃ HÓA NHỊ PHÂN 44

Trang 5

HÌNH 2.7 LAI GHÉP SỐ HỌC MÃ HÓA NHỊ PHÂN 45

HÌNH 2.8 LAI GHÉP VỚI LƯU TRỮ CẤU TRÚC CÂY 45

HÌNH 2.9 PHÉP ĐỘT BIẾN VỚI MÃ HÓA CẤU TRÚC CÂY 46

HÌNH 2.10 CHIẾN LƯỢC NẠP LẠI HOÀN TOÀN 47

HÌNH 2.11 CHIẾN LƯỢC NẠP LẠI NGẪU NHIÊN 47

HÌNH 2.12 NẠP THEO MÔ HÌNH CÁ THỂ ƯU TÚ 47

HÌNH 3.1 ĐỒ THỊ CON VÀ MÃ TƯƠNG ỨNG 50

HÌNH 3.2 HAI TRONG SỐ NHIỀU ĐỒ THỊ CON TƯƠNG ỨNG VỚI CHUỖI MÃ 1110110 51

HÌNH 3.3 MINH HỌA NHIỄM SẮC THỂ HỢP LỆ 51

HÌNH 3.4 LAI GHÉP HAI CHA MẸ 53

HÌNH 3.5 LAI GHÉP NHIỀU CHA MẸ 53

HÌNH 4.1 ĐỒ THỊ MINH HỌA CHO FILE DỮ LIỆU 58

HÌNH 4.2 ĐỒ THỊ SO SÁNH HIỆU QUẢ LÀM VIỆC CỦA CÁC PHÉP LAI GHÉP 71

HÌNH 4.3 ĐỒ THỊ SO SÁNH HIỆU QỦA LÀM VIỆC CỦA CÁC PHÉP ĐỘT BIẾN 72

HÌNH 4.4 ĐỒ THỊ SO SÁNH HIỆU QUẢ CỦA CÁC PHÉP CHỌN LỌC 73

HÌNH 5.1 GIAO DIỆN CHƯƠNG TRÌNH 74

Trang 6

DANH MỤC BẢNG

BẢNG 1.1 MỘT SỐ GIẢI THUẬT GẦN ĐÚNG CHO BÀI TOÁN TRÊN ĐỒ

THỊ 30

BẢNG 2.2: MÃ HÓA HOÁN VỊ 2 NST A&B 42

BẢNG 2.3: MÃ HÓA GIÁ TRỊ CÁC NST A,B,C 42

BẢNG 2.4: MÃ HÓA NST A THEO CẤU TRÚC CÂY 43

BẢNG 2.5: MẶT NẠ LAI GHÉP ĐỒNG NHẤT 44

BẢNG 2.6: LAI GHÉP MỘT ĐIỂM CẮT MÃ HÓA HOÁN VỊ 45

BẢNG 2.7: PHÉP ĐẢO BIT MÃ HÓA NHỊ PHÂN 46

BẢNG 2.8 HOÁN VỊ THỨ TỰ MÃ HÓA HOÁN VỊ 46

BẢNG 2.9 THAY ĐỔI GIÁ TRỊ TRONG MÃ HÓA GIÁ TRỊ 46

BẢNG 4.1 KẾT QUẢ SO SÁNH CÁC PHÉP LAI GHÉP TRÊN BỘ DỮ LIỆU I160 64

BẢNG 4.2 KẾT QUẢ SO SÁNH GLMIN VỚI MỘT SỐ GIẢI THUẬT GẦN ĐÚNG KHÁC TRÊN BỘ DỮ LIỆU I160 65

BẢNG 4.3 KẾT QUẢ SO SÁNH CÁC PHÉP LAI GHÉP TRÊN BỘ DỮ LIỆU I320 66

BẢNG 4.4 KẾT QUẢ SO SÁNH GLMIN VỚI MỘT SỐ GIẢI THUẬT GẦN ĐÚNG KHÁC TRÊN BỘ DỮ LIỆU I320 67

BẢNG 4.5 KẾT QUẢ SO SÁNH CÁC PHÉP LAI GHÉP TRÊN BỘ DỮ LIỆU I640 68

BẢNG 4.6 KẾT QUẢ SO SÁNH CÁC PHÉP LAI GHÉP TRÊN BỘ DỮ LIỆU I640(TIẾP) 69

BẢNG 4.7 KẾT QUẢ SO SÁNH CÁC PHÉP LAI GHÉP TRÊN BỘ DỮ LIỆU THỰC TẾ 70

BẢNG 4.8 KẾT QUẢ SO SÁNH GLMIN VỚI MỘT SỐ GIẢI THUẬT GẦN ĐÚNG KHÁC TRÊN BỘ DỮ LIỆU THỰC TẾ 70

Trang 7

LỜI MỞ ĐẦU

Bài toán cây Steiner trong đồ thị là một bài toán NP-khó trong nhóm các bàitoán thiết kế mạng (network designed problem) Bài toán tìm cây Steiner nhỏ nhấttrên đồ thị được ứng dụng trong nhiều lĩnh vực thực tế như thiết kế mạng viễnthông, thiết kế vi mạch hay nghiên cứu sự tiến hóa trong sinh học… Do tầm quantrọng của bài toán, rất nhiều hướng tiếp cận để giải xấp xỉ bài toán đã được đề xuấtvới mục đích đưa ra lời giải xấp xỉ tốt nhất với thời gian chấp nhận được

Trong đồ án này trình bày cách giải quyết bài toán theo thuật toán di truyền, đây

là một hướng giải quyết khá thành công Cấu trúc đồ án gồm có năm chương nhưsau:

• Chương 1 Trình bày lý thuyết cơ sở về đồ thị và bài toán Cây Steiner

• Chương 2 Trình bày lý thuyết cơ bản về giải thuật di truyền

• Chương 3 Trình bày thuật toán di truyền giải bài toán Cây Steiner trên đồthị

• Chương 4 Các kết quả thực nghiệm

• Chương 5 Hướng dẫn sử dụng chương trình

Để có được kết quả này, em xin gửi lời cảm ơn chân thành nhất đến cô giáoThs.Huỳnh Thị Thanh Bình bộ môn khoa học máy tính, cô đã tận tình hướng dẫn,chỉ bảo em trong quá trình thực tập và làm đồ án Em xin gửi lời cảm ơn đến thầyNguyễn Việt Huy bộ môn khoa học máy tính, thầy đã nhiệt tình giúp đỡ em trongviệc tìm hiểu bài toán Em xin gửi lời cảm ơn đến tất cả các thầy cô trong bộ mônkhoa học máy tính, các thầy cô đã giúp chúng em có rất nhiều kiến thức rất bổ ích.Cuối cùng, em xin gửi lời cảm ơn đến gia đình và bạn bè, mọi người là nguồn độngviên tinh thần rất lớn cho em!

Hà nội, tháng 5 năm 2008

Sinh viên Nguyễn Thanh Tùng

Trang 8

CHƯƠNG 1 GIỚI THIỆU BÀI TOÁN

1 Một số các khái niệm cơ sở

1.1 Đồ thị

1.1.1 Định nghĩa đồ thị

Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này,các loại đồ thị được phân biệt bởi sự khác biệt giữa kiểu cũng như số lượng cạnhnối các đỉnh của đồ thị Trong các tài liệu, khái niệm về đồ thị đôi khi được đề cậpkhông đồng nhất, dưới đây đưa ra một số định nghĩa về đồ thị [32]

Hình 1.1 Đồ thị vô hướng (trái) và đồ thị có hướng (phải).

Định nghĩa 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ạnh

Định nghĩa 2: Đa đồ thị vô hướng G=(E, V) 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 Haicạnh e1 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

Đồ thị có trọng số là một khái niệm hết sức quan trọng trong các nghiên cứu

lý thuyết về đồ thị bởi tính ứng dụng rộng dãi của nó Ví dụ, một mạng máy tính môphỏng bằng đồ thị thì trọng số có thể là khoảng cách vật lý hoặc thông lượng truyền

dữ liệu giữa hai máy tính được nối trực tiếp trong mạng, một mạng lưới giao thông

có thể được mô phỏng bằng một đồ thị có trọng số trong đó trọng số của mỗi cạnhnối hai đỉnh có thể được dùng để biểu diễn khoảng cách vật lý của đoạn đường nốihai điểm này… Trên thực tế, có rất nhiều bài toán được mô phỏng rất mềm dẻo trên

đồ thị và đã cho những kết quả lời giải rất tốt

1.1.2 Đường đi và chu trình

Định nghĩa 1 : Cho đồ thị G = (V, E) Đường đi từ đỉnh s đến đỉnh t trên G là dãy

Trang 9

Đường đi Pst được biểu diễn theo dãy cạnh (v0,v1), (v1,v2), …, (vk-1,vk

Đinh nghĩa 2 : Chu trình là một đường đi không có cạnh nào bị lặp lại vàcóđỉnhđầutrùng đỉnh cuối

1.1.3 Đồ thị vô hướng và liên thông

Định nghĩa : Đồ thị vô hướng G = (V, E) gọi là liên thông nếu luôn tồn tại đường đi

giữa mọi cặp đỉnh phân biệt trên đồ thị

Hình 1.2 Đồ thị vô hướng liên thông.

1.1.4 Cây

Định nghĩa : Cây là một đơn đồ thị vô hướng, liên thông không chứa chu trình Bậc của đỉnh: là số cạnh xuất phát hoặc kết thúc tại đỉnh đó.

Trang 10

Hình 1.3 Cây.

1.1.5 Cây khung của đồ thị

Hình 1.4 Đồ thị và cây khung.

Định nghĩa : Cho G = (V, E) là một đơn đồ thị vô hướng liên thông với |V| = n

đỉnh và |E| = m cạnh Cây T = (V, F) với F ⊂ E được gọi là cây khung của đồ thị G.

( Khi đó |F| = m-1 ).

Cây khung có bậc bị chặn (Degree-constrained Spanning Tree): Cho sốnguyên d ≥ 2, cây khung có bậc bị chặn là cây khung T trên đồ thị G mà bậc củamỗi đỉnh của nó không vượt quá d

Trọng số của cạnh : Mỗi cạnh e trên G được gán một giá trị w e( ) được gọi là trọng

12

4

7

8

56

Trang 11

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

1.2.1 Ma trận kề, ma trận trọng số

Trong phương pháp biểu diễn đồ thị bằng ma trận, mỗi đồ thị sẽ được biểudiễn bằng một ma trận vuông tương ứng với cấu trúc dữ liệu mảng hai chiều trongmáy tính (cũng có thể dùng mảng 1 chiều)

Xét đơn đồ thị vô hướng G=(V, E), với tập đỉnh V={1, 2, 3……n}, tập cạnh E= {e1,

e2, e3……em} Ma trận kề của đồ thị G là một ma trận nhị phân(các phần tử trong

ma trận chỉ là 0 hoặc 1) có kích thước n x n

A={aij: i,j=1, 2, 3……,n} có các phần tử được xác định theo quy tắc sau:

aij=0 nếu (i, j)∉ E i,j = 1, 2, 3……n

aij = 1 nếu (i, j)∈ E i,j = 1, 2, 3……n

Với lưu ý rằng (u, v) ≡ (v, u) trên đồ thị vô hướng thì dễ dàng nhận ra ma trận kềbiểu diễn đồ thị vô hướng là một ma trận đối xứng tức là a[i, j] = a[j, i] (với mọi i, j

= 1, 2, 3……n) Ngược lại, mỗi một ma trận đối xứng cấp n sẽ tương ứng với một

đồ thị vô hướng Với phương pháp biểu diễn nhị phân này thì tổng của hàng i(côt j)chính là bậc của đỉnh i(cột j)

Đối với đồ thị có định hướng, phương pháp lưu trữ bằng ma trận kề được tiến hành tương tự với đồ thị vô hướng, sự khác biệt nằm ở việc ma trận kềcủa đồ thị có hướng không phải là một ma trận đối xứng bởi trong đồ thị có hướngcung (u, v) ≠ (v, u)

Hình 1.6 Biểu diễn đồ thị bằng ma trận kề.

Với một chút thay đổi trong quy ước, đa đồ thị có thể được biểu diễn bằng

ma trận kề nếu thay vì điền 1 vào a[i, j] ta sẽ điền chính xác số cạnh nối đỉnh i với j.Một điều cần lưu ý là ma trận kề biểu diễn đa đồ thị vô hướng là ma trận đối xứngcòn ma trận kề của đa đồ thị có hướng không phải là ma trận đối xứng, tương tựnhư trong trường hợp của đơn đồ thị

Nếu đồ thị đang nghiên cứu là một đồ thị trọng số thì phương pháp biểu diễn

sẽ được tiến hành tương tự như sau:

Cho một đồ thị trọng số G=(V, E, c(i,j)) trong đó c(i, j) là giá trị trọng số củacạnh (i, j) Khi đó ma trận C biểu diễn đồ thị này vẫn là một ma trận vuông cấp nđược xác định:

c[i, j] = c(i, j) trong trường hợp (i, j) ∈ E

c[i, j] = Θnếu (i, j) ∉E,

trong đó Θtùy trường hợp cụ thể mà có thể chọn những giá trị sau: 0, +∞, -∞

Trang 12

Ưu điểm nổi bật nhất của phương pháp biểu diễn bằng ma trận thể hiện khibài toán cần trả lời câu hỏi hai đỉnh i và j có kề với nhau trên đồ thị hay không, thờigian để trả lời câu hỏi này là hằng số không phụ thuộc vào kích thước của ma trận,với những thuật toán có yêu cầu thường xuyên chèn thêm hoặc loại bỏ cáccạnh(cung) của thì cấu trúc dữ liệu này cũng tỏ ra khá thích hợp Tuy vậy, cấu trúc

dữ liệu này có một nhược điểm lớn nhất là dùng quá nhiều bộ nhớ, mỗi ma trậnluôn phải dùng n2 bộ nhớ để biểu diễn không phụ thuộc vào số cạnh của đồ thị, đặcbiệt trong trường hợp biểu diễn cho đồ thị vô hướng thì số ô nhớ lãng phí ít nhất là

2

2 n

n

, hơn thế nữa nếu muốn tìm danh sách những đỉnh kề với một đỉnh bất kỳ thì

sẽ phải duyệt qua tất cả các đỉnh của đồ thị

1.2.2 Danh sách cạnh, cung

Trong những trường hợp bài toán luôn làm việc với những đồ thị thưa (đồ thị

có số cạnh m và số đỉnh n thỏa mãn bất đẳng thức m<6n) thì cấu trúc dữ liệu matrận kề, ma trận trọng số tỏ ra không thích hợp bởi có quá nhiều ô nhớ bị lãng phí,trong trường hợp này, cấu trúc dữ liệu danh sách cạnh(cung) được sử dụng Theophương pháp lưu trữ này, mỗi cạnh (cung) e của đồ thị sẽ được lưu trữ bằng haibiến Dau[e] và Cuoi[e] Các biến Dau và Cuoi có thể là các phần tử của một vectorhoặc là một node của một danh sách nối đơn, tùy thuộc vào số lượng cạnh (cung)của đồ thị có thay đổi thường xuyên trong quá trình tiến hành thuật toán hay không.Với đồ thị có trọng số, ngoài việc sử dụng 2m đơn vị bộ nhớ để lưu trữ danh sáchcác cạnh thì còn cần tới m đơn vị bộ nhớ để lưu trữ thêm trọng số của cáccạnh(cung) Ưu điểm dễ thấy nhất của phương pháp này là việc tích kiệm được bộnhớ, tuy vậy, không phải với đồ thị thưa nào cách lưu trữ này cũng tốt mà vớinhững đồ thị nhỏ(n<18) thì cách lưu trữ này còn lãng phí bộ nhớ nhiều hơn lưu trữbằng ma trận Hơn thế nữa phương pháp lưu trữ này luôn gây khó khăn trong việcduyệt tìm kiếm các đỉnh kề của một đỉnh bất kỳ, để duyệt được các đỉnh kề này,trong mọi trường hợp luôn phải duyệt qua tất cả các cạnh của đồ thị

Hình 1.7 Biểu diễn đồ thị bằng danh sách cạnh cung.

Danh sách kề có các tính chất sau đáng quan tâm:

Đối với đồ thị có hướng, tổng số phần tử phải lưu trong các danh sách kề là |

E|, với đồ thị vô hướng, giá trị này là 2|E| Cho cả đồ thị có hướng và vô hướng, để

Trang 13

lưu trữ danh sách kề của đồ thị, cần bộ nhớ Θ(V + E) Các thao tác trên cạnh đòi hỏiphải duyệt danh sách kề nên tốn thời gian Hạn chế này có thể khắc phục trong một

số trường hợp khi danh sách kề được biểu diễn bằng mảng tĩnh, thay vì danh sáchliên kết

Như vậy, ưu điểm đòi hỏi không gian lưu trữ nhỏ của cách biểu diễn danhsách kề phải trả giá bằng thao tác xử lý tốn thời gian

Hình 1.8 Danh sách kề và ma trận kề tương ứng.

Việc chọn cách biểu diễn nào còn tùy thuộc vào từng trường hợp cụ thể.Trong hầu hết các ứng dụng, cách biểu diễn đồ thị bằng ma trận kề thường dùngtrong trường hợp đồ thị kích thước nhỏ hay là đồ thị dày, tức là đồ thị có số cạnhlớn gần bằng nửa bình phương số đỉnh Trong trường hợp ngược lại nên chọn cáchbiểu diễn bằng danh sách kề

1.3 Các thuật toán trên đồ thị

1.3.1 Thuật toán duyệt đồ thị

a Thuật toán tìm kiếm theo chiều sâu

Tư tưởng chính của thuật toán là: Cho đồ thị G(V,E) Từ một đỉnh u hiệnthời nào đó đỉnh kề v của u sẽ được thăm và quá trình được lặp lại đối với đỉnh v ởbước tổng quát, giả sử hiện tại đang xét đỉnh u0, có hai khả năng sẽ xảy ra:

- Nếu như tồn tại một đỉnh v0 kề với u0 mà chưa được thăm thì đỉnh v0 đó sẽtrở thành đỉnh đã thăm và quá trình tìm kiếm lại bắt đầu từ đỉnh v0 đó

- Ngược lại, nếu mọi đỉnh kề với u0 đều đã thăm thì ta sẽ quay trở lại đỉnh màtrước đó ta đến đỉnh u0 để tiếp tục quá trình tìm kiếm

Như vậy, trong quá trình thăm đỉnh bằng thuật toán tìm kiếm theo chiều sâu,đỉnh được thăm càng muộn càng sớm được duyệt xong (Cơ chế Last In First Out -Vào sau ra trước) Thuật toán DFS có thể được xây dựng bằng một thủ tục đệ quynhư sau:

Trang 14

Và thủ tục duyệt hệ thống toàn bộ đỉnh của đồ thị sẽ là:

Sau mỗi lần gọi DFS(u) thì toàn bộ các đỉnh cùng thành phần liên thông với

u sẽ được thăm Thủ tục Visit(u) là thao tác trên đỉnh u trong từng bài toán đặt ra cụthể

b Thuật toán tìm kiếm theo chiều rộng

Thuật toán này thực ra là sự cải biến về thứ tự duyệt đỉnh trên đồ thị của tìmkiếm theo chiều sâu bằng cách thay vì dùng một STACK thì ta lại dùng một hàngđợi QUEUE để kết nạp đỉnh được thăm Như vậy, đỉnh được thăm càng sớm sẽcàng sớm trở thành duyệt xong (cơ chế First In First Out - Vào trước ra trước) Thủtục được mô tả dưới đây:

Trang 15

5 If not Daxet[u] then BFS(u);

6 End;

Tương tự như thuật toán tìm kiếm theo chiều sâu, ở thuật toán này mỗi lầngọi thủ tục BFS(u) thì mọi đỉnh cùng thành phần liên thông với u sẽ được thăm Thủtục Visit(u) như đã nói ở trên

1.3.2 Bài toán cây khung cực tiểu

Bài toán: Giả sử G=(V, E) là đồ thị vô hướng liên thông với trọng số trên cạnh

w(e), e ∈ E Cây T=(V, ET) với ET ⊂E được gọi là cây khung của đồ thị G Độ dàicây khung T là tổng trọng số trên các cạnh của nó w(T)=∑eE w )(e Cây khung nhỏnhất(viết tắt là MST) của đồ thị G là cây khung có độ dài nhỏ nhất trong số các câykhung của đồ thị Bài toán đặt ra là tìm cây khung nhỏ nhất

a.Thuật toán Kruskal

Tư tưởng: Để xây dựng tập n-1 cạnh của cây khung nhỏ nhất? tạm gọi là tập

K, Kruskal đề nghị cách kết nạp lần lượt các cạnh vào tập đó theo nguyên tắc nhưsau: Ưu tiên các cạnh có trọng số nhỏ hơn, kết nạp cạnh khi nó không tạo chu trìnhvới tập cạnh đã kết nạp trước đó Đó là một nguyên tắc chính xác và đúng đắn, đảmbảo tập K nếu thu đủ n-1 cạnh sẽ là cây khung nhỏ nhất

- Khi lập trình để có được sự ưu tiên, cách tốt nhất là sắp xếp trước các cạnh theo trọng số tăng dần Vì vậy, cấu trúc dữ liệu được sử dụng trong giải thuậtKruskal là danh sách cạnh

- Để kiểm tra xem cạnh đang xét có tạo chu trình không với tập cạnh đã kếtnạp, một phương pháp đặc biệt mỗi khi kết nạp được sử dụng đó là: cho mộtđỉnh trở thành 'dad' của đỉnh kia Với 2 đỉnh x, y bất kỳ, nếu 'dad cao nhất'của chúng bằng nhau thì cạnh nối x, y sẽ tạo nên chu trình (chu trình này điqua parent chung đó)

Thuật toán Kruskal được miêu tả như sau:

in Đồ thị vô hướng G = (V,E) n đỉnh với ma trận trọng số c

out Cây khung nhỏ nhất T của đồ thị G

Trang 16

12 Ghi nhận đồ thị không liên thông;

13 endif

Thuật toán Kruskal tìm cây khung nhỏ nhất của đồ thị với thời gian O(elogn) với e và n tương ứng là số cạnh và đỉnh của đồ thị.

b Thuật toán Prim

Thuật toán Kruskal làm việc kém hiệu quả với những đồ thị dày (đồ thị với

số cạnh m» n(n-1)/2) Trong trường hợp đó thuật toán Prim tỏ ra hiệu quả hơn.Thuật toán Prim còn được gọi là phương pháp lân cận gần nhất Trong phương phápnày bắt đầu từ một đỉnh tuỳ ý của đồ thị, đầu tiên ta nối s với đỉnh lân cận gần nónhất, chẳng hạn là đỉnh y Nghĩa là trong số các cạnh kề của đỉnh s, cạnh (s,y) có độdài nhỏ nhất Tiếp theo trong số các cạnh kề với hai đỉnh s hoặc y ta tìm cạnh có độdài nhỏ nhất, cạnh này dẫn đến đỉnh thứ ba z, và ta thu được cây bộ phận gồm 3đỉnh và 2 cạnh Quá trình này sẽ tiếp tục cho đến khi ta thu được cây gồm n đỉnh vàn-1 cạnh sẽ chính là cây khung nhỏ nhất cần tìm

Giả sử đồ thị cho bởi ma trận trọng số C = { c[i,j], i, j= 1, 2, , n} trongquá trình thực hiện thuật toán, ở mỗi bước để có thể nhanh chóng chọn đỉnh và cạnhcần bổ sung vào cây khung, các đỉnh của đồ thị sẽ được gán cho các nhãn Nhãn củamột đỉnh v sẽ gồm hai phần và có dạng [d[v], near[v]], trong đó d[v] dùng để ghinhận độ dài của cạnh có độ dài nhỏ nhất trong số các cạnh nối với đỉnh v với cácđỉnh của cây khung đang xây dựng (ta sẽ gọi là khoảng cách từ đỉnh v đến tập đỉnhcủa cây khung), còn near[v] ghi nhận đỉnh của cây khung gần v nhất (near[v]:=z).Thuật toán Prim được xây dựng như sau:

in Đồ thị vô hướng G = (V,E) n đỉnh với ma trận trọng số c

out Cây khung nhỏ nhất (H,T) của đồ thị G

Trang 17

đường đi ngắn nhất từ u đến nó Trong mỗi bước lặp, sẽ có một đỉnh được gán nhãn

cố định, khi đó nhãn của đỉnh chính là độ dài đường đi ngắn nhất từ u.

Trong Hình 1.9, số đánh tại mỗi đỉnh là độ dài của đường đi ngắn nhất từ s đến đỉnh đó {(s, t), (t, y), (y, x), (x, z)} là dãy các cạnh trên đường đi ngắn nhất.

Hình 1.9 Đường đi ngắn nhất đến các đỉnh còn lại.

Thuật toán Dijstra

Input: Đồ thị G=(V,E) có n đỉnh, hàm trọng số không âm c trên cạnh,

Trang 18

Thuật toán Dijkstra tìm được đường đi ngắn nhất trên đồ thị sau thời gian O(n 2 ).

b Đường đi ngắn nhất giữa tất cả các cặp đỉnh

Bài toán đường đi ngắn nhất giữa tất cả các cặp đỉnh là một mở rộng của bàitoán tìm đường đi ngắn nhất từ một điểm đến các đỉnh còn lại nên rất tự nhiên nếu

sử dụng nhiều lần thuật toán Dijkstra để thu được kết quả mong muốn Với đồ thị

có n đỉnh, cần áp dụng thuật toán Dijkstra n lần, tổng thời gian chạy thuật toán đạt

cỡ O(n3) Cũng có độ phức tạp như vậy, thuật toán quy hoạch động Floyd-Warshallđược áp dụng để giải bài toán đường đi ngắn nhất giữa tất cả các cặp đỉnh khôngyêu cầu trọng số của đồ thị phải không âm nhưng có điều kiện đồ thị không tồn tạichu trình âm

Hình 1.10 Đồ thị có hướng không có chu trình âm.

Thuật toán Floyd-Warshall

in Đồ thị G = (V,E) n đỉnh với ma trận trọng số c

out Ma trận d ghi nhận độ dài đường đi ngắn nhất,

ma trận p ghi nhận đường đi

1 BEGIN

2 Với mọi (i,j), gán d(i,j) = c(i,j) và p(i,j) = i;

Trang 19

3 Với mọi i, gán d(i,i) = 0 và p(i,i) = -1;

Trong thuật toán Floyd-Warshall, d(i, j) lưu giá trị độ dài đường đi ngắn nhất

từ đỉnh i đến đỉnh j trong đồ thị, p(i, j) lưu đỉnh nằm trước đỉnh j trên đường đi ngắn nhất từ i đến j Dựng lại đường đi ngắn nhất giữa cặp đỉnh (i, j) như sau:

Xây dựng lại đường đi ngắn nhất từ đỉnh i đến đỉnh j của đồ thị

Thuật toán Floyd-Warshall tìm đường đi ngắn nhất giữa tất cả các cặp đỉnh của

đồ thị sau thời gian cỡ O(n 3 ).

1.4 Bài toán tối ưu

1.4.1 Một số khái niệm

a Độ phức tạp của thuật toán

Là đánh giá lượng tài nguyên các loại mà các thuật toán đòi hỏi sử dụng Cóhai loại tài nguyên quan trọng là thời gian và bộ nhớ Đánh giá độ phức tạp tínhtoán của bài toán là đưa ra thời gian tính của thuật toán tốt nhất tổng số các thuậttoán giải bài toán đã và chưa biết

b Thuật toán có thời gian tính đa thức

Là thuật toán mà độ phức tạp thời gian của nó trong trường hợp xấu nhấtđược giới hạn trên bởi một hàm đa thức của kích thước dữ liệu đầu vào (kích thước

dữ liệu đầu vào được tính bằng số bit cần thiết để biểu diễn nó) Tức là nếu n làkích thước dữ liệu đầu vào, thì luôn tồn tại một đa thức p( )n sao cho

Trang 20

O(p(n)) = 2n, O(p(n)) = 3n3, O(p(n)) = 5n+n10, O(p(n)) = nlgn …

Các thuật toán có độ phức tạp thời gian trong trường hợp xấu nhất sau không cóthời gian tính đa thức

O(f(n)) = 2 n , O(p(n)) = 20.01n, O(p(n)) = n! …

Có hai cách tiếp cận chính để đánh giá độ phức tạp tính toán:

- Đánh giá cận dưới độ phức tạp bài toán

- Chỉ ra mức độ khó của nó có thể so sánh với bất ký bài toán khó hiện đã biết

c Bài toán quyết định

Là bài toán mà đầu ra của nó chỉ có thể là yes hoặc no(0 hoặc 1, đúng hoặcsai, …)

Một số bài toán quyết định:

• Bài toán về tính nguyên tố sau là bài toán quyết định “Hỏi số nguyên n có là

số nguyên tố hay không?”

Với dữ liệu vào n= 23 thì câu trả lời là yes, còn với dữ liệu vào n= 24 thì câu trả lời

no

Bài toán tổng con (Subset sum): “Cho tập I số nguyên dương a1, a2…an và

một số nguyên dương T Hỏi có thể tìm được một tập con S của I mà tổng các số trong S = T?”

Bài toán Hamilton dạng quyết định: Cho đồ thị vô hướng G = (V,E) có chứa chu trình Hamilton hay không?

1.4.2 Các bài toán tối ưu

Trước những năm 1970, phương pháp chủ yếu để giải các bài toán tối ưu làxây dựng phương pháp giải đúng Nhưng kinh nghiệm tính toán cũng như phân tíchtính hiệu quả của phương pháp này cho thấy rất nhiều hạn chế của nó, nhất là vềmặt thời gian tính toán Phương pháp giải đúng chỉ được áp dụng khi giải bài toánvới kích thước nhỏ và trung bình Từ rất sớm, các nhà khoa học về lý thuyết máytính như Steve Cook và Dick Karp đã quyết định rằng yêu cầu tối thiểu của bất cứmột bài toán tối ưu nào là thời gian chạy đa thức: O( )n c , với clà hằng số Tuynhiên, không phải mọi bài toán đều có thể được giải quyết một cách nhanh chóng.Rất khó xác định bài toán nào có thể giải quyết một cách nhanh chóng, bài toán nàokhông thể Bởi vậy Cook, Karp, và một số nhà khoa học khác định nghĩa ra lớp bài

toán NP-khó, đó là những bài toán không thể giải quyết được trong thời gian đa

thức

Trang 21

Hình 1.11 Mạch logic, đầu vào được nhập từ bên trái và đầu ra ở bên phải.

Bài toán về tính thực hiện của được của mạch CIR-SAT (Circuit

satisfiability) là một ví dụ điển hình của bài toán mà chúng ta chưa biết cách để giải

nó trong thời gian đa thức Trong bài toán này, cho một mạch logic bao gồm một

tập các cổng AND, OR, và NOT được kết nối với nhau bởi dây dẫn Đầu vào cho

mạch này là tập m giá trị logic (true/false) x1,x2, ,x m (xem hình 1.12) Đầu ra là

một giá trị logic đơn TRUE/FALSE Cho một bộ giá trị đầu vào, có thể tính được

đầu ra trong thời gian đa thức (thực tế là tuyến tính) sử dụng tìm kiếm theo chiềusâu và đánh giá đầu ra của mỗi cổng trong thời gian tuyến tính Bài toán về tínhthực hiện của mạch đặt ra rằng, cho một mạch bất kỳ, liệu rằng có một bộ đầu vào

làm cho đầu ra của mạch luôn là TRUE, hoặc ngược lại, luôn là FALSE hay không.

Chưa ai biết được cách giải quyết bài toán này nhanh hơn cách thử tất cả 2mđầu vào

có thể của mạch, nhưng nó đòi hỏi thời gian là hàm mũ Mặt khác, không ai có thểchứng minh được đây là phương pháp tốt nhất để giải bài toán

1.4.3 Các lớp bài toán P, NP và co-NP

Dưới đây là phân loại các lớp của bài toán

P là lớp bài toán quyết định có thể được giải quyết trong thời gian đa thức.

Hay nói cách khác, P là lớp các bài toán có thể được giải một cách nhanhchóng

NP là lớp bài toán quyết định mà để xác nhận câu trả lời là yes của nó, cóthể đưa ra bằng chứng ngắn ngọn dễ kiểm tra Hay có thể nói NP là lớp cácbài toán mà có thể kiểm tra câu trả lời yes một cách nhanh chóng trong thờigian đa thức nếu đã có được lời giải Ví dụ, trong bài toán về tính thực hiệncủa mạch là NP, nếu câu trả lời là yes, thì bất cứ bộ giá trị đầu vào nào chogiá trị đầu ra là yes đều sẽ chứng minh cho câu trả lời Ta có thể kiểm tra lạibằng cách đánh giá mạch logic trong thời gian đa thức

co-NP hoàn toàn ngược với NP Đó là lớp bài toán mà để xác nhận câu trả

lời no thì có thể đưa ra bằng chứng ngắn gọn dế kiểm tra

Nếu một bài toán thuộc lớp P, thì nó cũng thuộc lớp NP-để kiểm tra một câu trảlời yes trong thời gian đa thức, ta có thể tính toán lại câu trả lời từ đầu trong thờigian đa thức Tương tự như vậy, bất cứ bài toán nào thuộc lớp P thì cũng thuộc lớpco-NP

NP

Trang 22

Một câu hỏi lớn đặt ra trong lý thuyết khoa học máy tính là liệu có đẳng thức

NP

P= hay không Không ai biết được chính xác câu trả lời Một cách trực quan cóthể thấy rõ ràng rằng PNP, như minh họa trong hình 1.13 Các nghiên cứu đãchứng minh rằng các bài toán có thể vô cùng khó để giải quyết, mặc dù lời giải lạirất rõ ràng khi đã biết được nó Nhưng không ai có thể chứng minh được điều này

Hình 1.12 Các lớp bài toán P, NP và co-NP.

4.4 NP-khó và NP-đầy đủ.

Một bài toán là NP-đầy đủ nếu nó có 2 tính chất:

• Tồn tại một thuật toán đa thức không đơn định để giải nó (tức là chỉ ra nóthuộc lớp NP)

Có một bài toán NP-đấy đủ có thể quy dẫn về nó.

Thông thường việc chứng minh tính chất 1 đối với nhiều bài toán là rất khókhăn, thế nhưng việc chứng minh nó có tính chất 2 lại đơn giản hơn Những bàitoán thỏa mãn tính chất 2 vể mặt độ phức tạp là khó tương đương Những bài toánnhư vậy được gọi là NP-khó

Vậy, bài toán ∏ là NP-khó nếu sự tồn tại một thuật toán có thời gian đ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 lớp NP.Nói cách khác, nếu có thể giải một bài toán NP-khó nào đó một cách nhanh chóng,thì cũng có thể nhanh chóng giải quyết bất kỳ một bài toán nào khác Bài toán NP-

khó ít nhất là khó bằng bất cứ một bài toán nào trong NP NP-đầy đủ là những bài

toán khó nhất trong NP Hình 1.14 biểu diễn cách phân lớp tạm thời các bài toán

khó

NP-NP đầ y đ ủ

Trang 23

Hình 1.13 Phân lớp tạm thời các bài toán.

Một trong những phương pháp hay được sử dụng để tìm lời giải xấp xỉ chobài toán NP-khó là sử dụng giải thuật di truyền Phần tiếp theo của đồ án sẽ giớithiệu chi tiết về giải thuật di truyền

2 Bài toán cây Steiner

2.1 Lịch sử bài toán cây Steiner

Lịch sử bài toán Steiner tree(ST) đã có từ rất lâu(thế kỷ 17), xuất phát từ mộtbài toán được đưa ra bởi nhà toán học nổi tiếng Pierre Fermat của Pháp Bài toánban đầu của Fermat được phát biểu như sau:

Bài toán: Cho ba điểm trên mặt phẳng, tìm một điểm thứ tư sao cho tổng khoảng

cách từ điểm này tới ba điểm đã cho có giá trị nhỏ nhất

Bài toán này của Fermat sau đó đã được Heinen giải vào năm 1834 Tuynhiên phải mất hơn một thế kỷ, chỉ sau khi Courant và Robbins cho xuất bản cuốn

sách mang tên “What is Mathematics” thì bài toán của Fermat và các biến thể của

nó mới được biết đến dưới tên bài toán Steiner như một sự ghi nhớ những đóng góp

to lớn của nhà bác học Jacob Steiner đối với nền toán học, từ đó đến nay, rất nhiềuphiên bản khác nhau của bài toán cây Steiner đã ra đời để đáp ứng những nhu cầuứng dụng trên thực tế Một cách tổng quát, bài toán cây Steiner được phát biểu nhưsau: Cho một tập điểm P, tìm phương án nối các điểm này lại với nhau sao cho chiphí để nối các điểm này là nhỏ nhất, trong quá trình nối có thể bổ xung thêm những điểm điểm cần thiết với số lượng không hạn chế để đạt được yêu cầu của bài toán

Mọi bài toán cây Steiner đều thuộc lớp các bài toán NP-khó và trên thực tếchưa có tác giả nào tìm được một thuật toán hiệu quả để giải nó một cách chính xác.Vào những năm 1960 Melzak[15] là người đầu tiên đưa ra một giải thuật có độphức tạp hàm mũ để giải bài toán trên mặt phẳng Tuy giải thuật của Melzak khôngmang giá trị thực tế cao nhưng sự xuất hiện của một giải thuật hữu hạn cho bài toánSteiner cùng với một công trình nghiên cứu rất giá trị của hai tác giả Gilbert vàPollack vào cùng thời gian đó đã là một “cú hích” tác động mạnh tới cộng đồngnhững người nghiên cứu toán học nói chung và những người đi sâu về lĩnh vực tối

ưu hóa nói riêng Trong công trình của mình, Gilbert và Pollack đã giới thiệu một

số tính chất hình học quan trọng của cây Steiner, đồng thời nghiên cứu cũng mở ramột số vấn đề mới rất đáng quan tâm trong đó phải kể đến một khái niệm lần đầu

tiên xuất hiện: hệ số Steiner( Steiner ratio) Hệ số Steiner là tỉ số giữa độ dài của

cây Steiner “gần tối ưu” dựng bằng một giải thuật có độ phức tạp đa thức và độ dàicủa cây khung cực tiểu của cùng một tập điểm P, ý nghĩa của hệ số này cho ta biếtcây Steiner tích kiệm được bao nhiêu chi phí so với cây khung cực tiểu tương ứngcho cùng một tập điểm đầu vào Trong công trình của mình, Gilbert và Pollack đã

dự đoán một cận dưới của hệ số này cho một số không gian khác nhau và nó đãhình thành nên một vấn đề mới trong các nghiên cứu lý thuyết về cây Steiner lúcbấy giờ, đó vấn đề chứng minh hoặc bác bỏ giả định về giá trị cận dưới này Saunày vào năm 1990 D.Z Du và F.D Hwang đã chứng minh được dự đoán của hai tácgiả trên trong không gian Euclid là chính xác Trong phần sau, lời giải cho bài toáncủa Fermat được trình bày, một số tính chất của cây Steiner trên mặt phẳng sẽ được

Trang 24

nghiên cứu, đồng thời luận văn cũng sẽ chứng minh rằng hệ số Steiner trong trườnghợp này không thể nhỏ hơn

2

3

2.2 Lời giải cho bài toán 3 điểm của Fermat

Như đã đề cập ở trên, bài toán của Fermat được đưa ra từ thế kỷ 17 nhưngphải hơn 100 năm sau, một lời giải hoàn thiện cho bài toán mới được đưa ra Để xâydựng phương pháp giải bài toán một cách đầy đủ phải kể đến những đóng góp của

ba nhà bác học Torricelli, Simpson và đặc biệt là Heinen - người đã giải bài toáncủa Fermat một cách hoàn chỉnh vào năm 1834

Vào năm 1640, Torricelli đưa ra một phương pháp với n=3 như sau:

Với 3 điểm đã cho A, B, C trên mặt phẳng, dựng tam giác ABC

Hình 1.14 Bài toán của Fermat với n=3.

Bước tiếp theo trong phương pháp của Torricelli là xây dựng 3 tam giác đều

từ ba cạnh AB, AC, BC và vẽ 3 đường tròn ngoại tiếp ba tam giác này Ba đườngtròn ngoại tiếp này sẽ giao nhau tại một điểm, điểm này chính là điểm cần tìm vàcòn được gọi là điểm Torricelli

Gần giống so với ý tưởng của Torricelli, năm 1750 Simpson đưa ra mộtphương pháp khác đơn giản hơn để tìm ra điểm Torricelli Cũng giống nhưTorricelli, Simpson cũng dựng ba tam giác đều từ tam giác ABC ban đầu, Sự khácbiệt trong phương pháp của Simpson chỉ thể hiện ở bước thứ 2, theo đó Simpson vẽcác đường nối từ mỗi đỉnh của tam giác đều mà không thuộc vào tam giác ABC vớiđỉnh đối diện trên tam giác ABC Mỗi đoạn nối như vậy được gọi là một đoạn thẳngSimpson Các đoạn thẳng Simpson này giao nhau tại 1 điểm, điểm này là điểmTorricelli và chính là lời giải của bài toán

Hình 1.15 Giải pháp của Torricelli.

Phương pháp của Torricelli và Simpson là khá đơn giản trong trường hợpn=3 Tuy nhiên, đây không phải là một phương pháp toàn diện bởi nó chỉ áp dụngđược trong trường hợp tam giác ABC không có góc nào >120o Nếu tam giác ABC

A

B

C

Trang 25

tồn tại một góc lớn hơn 120o thì không phương pháp nào trong hai phương pháp củaTorricelli và Simpson cho lời giải đúng Phương pháp của Torricelli cho ra một giaođiểm của các đường tròn nằm ngoài tam giác ABC trong khi các đoạn thẳngSimpson trong phương pháp thứ 2 lại không giao nhau.

Hình 1.16 Giải pháp của Simpson.

Phải mất thêm 84 năm để Heinen đưa ra một lời giải hoàn toàn cho bài toáncủa Fermat Theo đó, lời giải của bài toán gồm 2 trường hợp

• Trong trường hợp thứ nhất: Nếu tam giác có một góc trong >120o thì điểmcần tìm chính là đỉnh của góc >120o này

• Trong trường hợp thứ hai không có một góc nào của tam giác ABC lớn hơn

120o thì có thể dựng điểm cần tìm bằng phương pháp của Simpson hoặcTorricelli

sau khi bài toán của Fermat được đổi tên lại là bài toán Steiner thì điểmTorricelli cũng được đổi tên lại là điểm Steiner Trong trường hợp n=3 và không cógóc nào của tam giác lớn hơn 120o thì điểm Steiner cùng 3 đỉnh của tam giác tạothành 3 cạnh mới và các cạnh này tạo thành các góc 120o(Hình14) Đây là một tínhchất rất quan trọng của điểm Steiner Với các bài toán có n lớn hơn 3, đây còn được

coi như điều kiện về góc để thu được một cây tối ưu Hay nói cách khác một cây

Steiner luôn có các điểm Steiner thỏa mãn điều kiện về góc

Hình 1.17 Điều kiện về góc.

Ngoài các tính chất về góc của điểm Steiner, các nghiên cứu lý thuyết cònchỉ ra một cây Steiner còn có nhiều các tính chất đặc biệt khác Dưới đây là một sốtính chất cơ bản quan sát được trong trường hợp số điểm Steiner bằng 3, tuy nhiêncác tính chất này cũng đúng trong trường hợp tổng quát với n bất kỳ

Tính chất 1 Tất cả các điểm Steiner của cây Steiner dựng trên mặt phẳng đều có

cấp không nhỏ hơn 3.

Trang 26

Chứng minh: Giả sử tồn tại một cây Steiner tối ưu có chứa các điểm

Steiner có cấp nhỏ hơn 3 Với những điểm Steiner có cấp một(điểm Steiner này làmột nút lá của cây) ta chỉ cần loại bỏ điểm này mà không ảnh hưởng gì đến tính tối

ưu của cây(thậm chí còn thu được một cây tốt hơn cây ban đầu) Với những điểmSteiner cấp hai, ta dùng một chiến lược thay thế như sau

Giả sử u là một điểm Steiner cấp hai, vậy sẽ tồn tại hai điểm kề với u(hai điểm này

có thể là điểm cuối hoặc điểm Steiner), gọi hai điểm này là v và w Trong mặtphẳng Euclid ta có bất đẳng thức sau đây: |vw| ≤ |uv| + |uw| Nghĩa là nếu ta loại bỏ

u, cạnh uv, uw và nối v với w thì ta sẽ thu được một cây Steiner tối ưu hơn cây banđầu Quá trình thay thế được tiến hành cho tới khi trên cây không còn điểm Steinercấp hai nào Cây thu được cuối cùng chính là cây chỉ có các điểm Steiner cấp ba

Tính chất 2 Để dựng một cây Steiner cho n điểm thì cần nhiều nhất n-2 điểm

Steiner.

Chứng minh: Cho một cây Steiner T với s điểm Steiner và mỗi điểm

Steiner có cấp không nhỏ hơn ba(tính chất 1) thì cây Steiner này có tổng cấp củacác điểm(bao gồm cả các điểm terminal) không nhỏ hơn n +3s(n là số điểm cuối).Mặt khác, tổng cấp thực tế của các điểm trên cây là 2*E(T) trong đó E(T) là số cạnhcủa T Vì mọi cặp điểm trên cây Steiner này đều liên thông và trên cây không cóchu trình nên tổng số cạnh của T ít hơn tổng số đỉnh của T là 1 nên

2*(E(t) = 2((V(T) – 1) = 2(n + s -1) Vì vậy

n + 3s≤2(n + s - 1) hay s ≤ n - 2

Tính chất 3 Khái niệm topology được định nghĩa là một cách kết nối các điểm

Steiner với các điểm cuối mà không cần quan tâm xem có thu được một cây Steinertốt hay không Như vậy, các điểm Steiner có thể nằm ở bất kỳ vị trí nào thậm trí cóthể nằm chồng nên nhau hoặc chồng lên các điểm cuối Một Steiner topology là mộttopology chỉ chứa các điểm Steiner cấp ba Một Steiner topology đầy đủ(full SteinerTopology) là một Steiner topology có n-2 điểm Steiner Với n điểm cuối và n-2điểm Steiner, số lượng Steiner Topology đầy đủ được tính bằng công thức sau

f(n) =

)!

2 (

2

)!

4 2

Ngoài ba tính chất trên, cây Steiner còn có rất nhiều các tính chất khác ví dụnhư thuộc tính “lune” có thể được khai thác nhằm làm thu hẹp không gian tìm kiếmcủa bài toán Việc nghiên cứu các thuộc tính của cây Steiner là rất quan trọng và nóvẫn đang là một trong những vấn đề trung tâm trong các nghiên cứu lý thuyết vềcây Steiner

Trang 27

2.3 Hệ số Steiner cho trường hợp ba điểm

Như trên đã nói, hệ số Steiner là con số cho biết cho ta biết cây Steiner tíchkiệm được bao nhiêu chi phí so với cây khung cực tiểu tương ứng cho cùng một tậpđiểm đầu vào Một cách toán học, hệ số Steiner được định nghĩa như sau

Ký hiệu: Ls(P) là độ dài của cây Steiner cho tập điểm đầu vào P

Lm(P): là độ dài cây khung cực tiểu của tập điểm P

Khi đó hệ số Steiner được định nghĩa ρ = inf ( )

P

L Lm s

Gilbert và Pollack trong nghiên cứu của mình vào năm 1968 đã dự đoán rằng ρkhông thể nhỏ hơn

2

2

3 )

L sm ) đối với bất kỳ tập điểm P nào trênmặt phẳng và dự đoán này đã được Du và Hwang chứng minh tính đúng đắn vàonăm 1990 Trong chứng minh của mình, Du và Hwang đã đề xuất một nguyên lýminimax mới được giới toán học lúc bấy giờ đánh giá rất cao, thậm chí vào thờiđiểm đó Du và Hwang còn nhận được phần thưởng của cá nhân chủ tịch hiệp hộitoán học Hoa Kỳ lúc đó là giáo sư Ronald L Graham[25] cho công trình của mình

Do nguyên lý minimax không phải là trọng tâm nghiên cứu của luận văn này nên sẽkhông được đề cập, Phần sau đây chỉ trình bày phần chứng minh cho dự đoán củahai tác giả Gilbert và Polllack áp dụng với trường hợp bài toán của Fermat

Chứng minh:

Hình 1.18 Cây Steiner cho ba điểm.

Theo cách giải của Heinen, cho ba điểm sẽ dựng được một điểm Steiner như tronghình 1.19

Không mất tính tổng quát, cho rằng AS là cạnh nhỏ nhất trong ba cạnh nối

các đỉnh của tam giác ABC với điểm Steiner S, nghĩa là |AS| = min{|AS|,|BS|,|CS|}

Trên các cạnh BS và CS lần lượt dựng các điểm B’ và C’ sao cho |SA|=|SB’|=|SC’|

AB’C’ là một tam giác đều có S là trọng tâm đồng thời cũng là điểm Steinercủa bộ ba điểm A, B’, C’(hình 1.20)

Hình 1.19 Minh họa cho lời giải bài toán tìm hệ số Steiner.

Khi đó

L s(A,B,C) = AS + BS + CS

A

Trang 28

2.4 Mô tả bài toán cây Steiner trên đồ thị

Cho G = (V, E) là một đồ thị vô hướng, mỗi cạnh e ∈ E được gán với một trọng số thực không âm N là một tập con các đỉnh của đồ thị gọi là tập các đỉnh kết thúc Một cây T của đồ thị G được gọi là cây Steiner nếu nó chứa tất cả các đỉnh kết thúc, nghĩa là N ⊆ V(T) Các đỉnh thuộc V \ N (được gọi là các đỉnh không kết thúc) cũng có thể xuất hiện trong T, nếu thuộc T chúng được gọi là các nút Steiner Bài

toán cây Steiner trên đồ thị, sẽ ký hiệu là SPG, được phát biểu như sau: Tìm cây

Steiner T có trọng số c T( )=∑e E T∈ ( )c e( )nhỏ nhất trong tất cả các cây Steiner của đồ

thị Cây T như vậy được gọi là cây Steiner nhỏ nhất (Steiner minimal tree – viết tắt

là SMT)

Bài toán cây Steiner trên đồ thị thuộc lớp NP-khó [13], do vậy một thuật toán

đa thức giải bài toán là không tồn tại, ngoại trừ P = NP Điều này cũng đã đượcchứng minh cho các dạng khác của bài toán cây Steiner Độ phức tạp của bài toánSPG được thể hiện trong định lý dưới đây

(Karp 1972) Bài toán cây Steiner trên đồ thị là NP-khó ngay cả khi các cạnh có

trọng số đơn vị.

Hai trường hợp riêng cho bài toán cây Steiner giải được với thuật toán hiệuquả là: (1) tất cả các đỉnh của đồ thị đều là đỉnh kết thúc, (2) chỉ có 2 đỉnh kết thúc.Với bài toán (1), lời giải chính là cây khung nhỏ nhất của đồ thị có thể thu đươc nhờthuật toán Kruskal Trong khi đó, bài toán (2) có lời giải tối ưu là đường đi ngắnnhất giữa hai đỉnh kết thúc trong đồ thị có thể đưa ra nhờ thuật toán Dijsktra

2.5 Một số ứng dụng của bài toán

2.5.1 Bài toán truyền thông đa hướng(Multicast routing)

Trên thế giới, việc đưa vào ứng dụng các hệ thống mạng quang học tốc độcao đã mở ra một cánh cửa vào thế giới các dịch vụ băng thông rộng ví dụ như xemphim trực tuyến, hội nghị video trực tuyến, giao tiếp đa phương tiện Các loạitruyền thông này ngòai các yêu cầu như tốc độ cao, dung lượng đường truyền rất

Trang 29

lớn còn có một yêu cầu quan trọng nữa là tính thời gian thực Chính vì vậy, cácthuật toán chọn đường trong mạng có một ý nghĩa sống còn đối với các dịch vụ này,trong bài toán truyền thông điệp đa hướng cũng vậy Bài toán yêu cầu như sau.

Phát biểu: Cho một mạng máy tính được biểu diễn bởi một đồ thị trọng số vô

hướng G=(V, E, f) một tập con T các đỉnh của V được gọi là một nhóm truyềnthông và một điểm s được gọi là một máy nguồn Bài toán yêu cầu tìm mộttopology nối tất cả các máy trong nhóm truyền thông T∪s sao cho tổng số cáckênh nối(trong một số trường hợp có thể là tổng độ dài các kênh nối) cần sử dụng lànhỏ nhất mà vẫn thỏa mãn các rằng buộc của mạng như tốc độ đường truyền, dunglượng băng thông

2.5.2 Bài toán kết nối nhóm(Group Steiner tree)

Phát biểu: Cho một đồ thị vô hướng G=(V, E) và tập các đỉnh T1,T2 Tn⊂V Bàitoán yêu cầu tìm một đồ thị con G’ của G thỏa mãn hai điều kiện sau

- Mỗi tập con Ti, i=1÷n phải có ít nhất một điểm trong G

- Độ dài của đồ thị G’ phải đạt cực tiểu

2.5.3 Bài toán Steiner nhiều pha(Multiphase spanning network)

Hơi khác so với bài toán kết nối nhóm, bài toán Steiner nhiều pha yêu cầucây Steiner phải chứa được tất cả các tập đỉnh T1, T2 Tn

Phát biểu: Cho một đồ thị G=(V, E) và tập các đỉnh T1, T2 Tn ⊂V Gọi

S1,S2 Sn là các đồ thị con liên thông của T1, T2 Tn Bài toán Steiner nhiều pha đặt

ra yêu cầu tìm một đồ thị có giá cực tiểu và chứa tất cả các đồ thị liên thông Si,i=1÷n

2.5.4 Bài toán mạng Steiner nhiều pha(Multiphase Steiner network)

Phát biểu: Cho một đồ thị G=(V, E) và các tập con của V:X1, Y1, X2,

Y2 Xn,Yn với Xi ∩ Yi = Ø Bài toán yêu cầu tìm một đồ thị con G’ của G thỏa mãnhai điểu kiện:

- Với mỗi i=1÷n, G’ chứa một cây Steiner Si của Xi

- Các điểm Steiner của Si chỉ được lấy từ Yi

2.5.5 Bài toán giật giải(Prize collecting Steiner problem)

Đối với bài toán Steiner trên đồ thị(có hướng hoặc vô hướng), yêu cầu củabài toán là tìm được một cây Steiner có giá nhỏ nhất có chứa một tập điểm Terminal

T biết trước Tuy vậy trong một số bài toán thực tế, tập điểm terminal này chưađược biết trước trong quá trình tiến hành giải mới lần lượt tìm ra các điểm này Bàitoán có thể phát biểu một cách hình thức như sau

Phát biểu: Cho một đồ thị G=(V, E), xuất phát từ một phương án nào đó,

bài toán sẽ kết nạp một số đỉnh của G vào phương án này, với mỗi một điểm mớiđược kết nạp vào, một giá trị k=(v-độ dài của các cạnh vừa kết nạp vào phương án)

sẽ được cộng vào hàm mục tiêu của phương án Mục tiêu tối ưu của bài toán này làlàm cực đại giá trị giá trị hàm mục tiêu của phương án cuối cùng Trong công thứctính k ở trên, v là một hằng số được gắn với mỗi đỉnh trên đồ thị G

Trong các tài liệu, bài toán này được ứng dụng trong lĩnh vực viễn thông.Tuy nhiên, trong thực tiễn bài toán ít khi được sử dụng và có rất ít tác giả nghiêncứu về dạng bài toán này

Trang 30

2.5.6 Bài toán cây Steiner có ràng buộc (Steiner tree packing problem)

Tác giả Năm Hệ số dư thừa Độ phức tạp

Takahashi, Matsuyama 1980 2.000 O(n2)

Karpinski, Zelikovsky 1997 1.644 O(n k ), k→∞

Hougardy, Promel 1998 1.598 O(n k ), k→∞

Robbin, Zelikovsky 2000 1.550 O(n k ), k→∞

Bảng 1.1 Một số giải thuật gần đúng cho bài toán trên đồ thị.

Phát biểu: Cho một đồ thị trọng số có giới hạn G=(V, E, f, c) trong đó c là

một hàm rằng buộc áp dụng cho mỗi cạnh của đồ thị c: E→R+, và một bộ tập con

các đỉnh của G: T1, T2 Tn ⊂ E Bài toán đặt ra là phải tìm n tập con các cạnh của E:

S1, S2 S3 sao cho mỗi Ti∪Si là một cây Steiner và các cây Steiner này thỏa mãn hàm ràng buộc của G (ví dụ số cây Steiner sử dụng cạnh e không vượt quá giá trị

ce)

Trên đây là một số dạng bài toán cây Steiner trên đồ thị, mỗi bài toán có ứng dụngriêng của nó Trong thực tế, bài toán dạng tổng quát được sử dụng nhiều hơn cả vàcác nghiên cứu về nó có số lượng vượt trội so với các dạng bài toán khác Các giảithuật giải bài toán dạng tổng quát hầu hết là các giải thuật xấp xỉ, một số khác là các

giải thuật heuristic Đối với các giải thuật xấp xỉ, một khái niệm hệ số dư thừa được

định nghĩa Hệ số dư thừa của một giải thuật xấp xỉ giải bài toán cây Steiner trênmạng là tỉ số giữa độ dài của cây Steiner tồi nhất tìm được bằng giải thuật này và độdài của cây Steiner tối ưu

Gọi độ dài của cây Steiner tìm được bằng giải thuật xấp xỉ là Lx và độ dàicủa cây Steiner tối ưu là Lo thì hệ số dư thừa được định nghĩa như sau

2.5.7 Thiết kế vi mạch VLSI

Trong bước thiết kế vật lý của các vi mạch VLSI, pha đi dây bao gồm việc xácđịnh sơ đồ nối dây cho các điểm nối của từng khối hay từng cổng trên chip Một

Trang 31

mạng trên chip là tập hợp các điểm cần phải nối với nhau, thường bao gồm mộtđiểm nguồn và nhiều điểm đích Trong việc đi dây, sơ đồ kết nối được đặc tả chomột số lượng lớn các mạng Kết nối thường được thực hiện trên một mạng một lúc.Mỗi phương án kết nối cho một mạng đơn là một cây Steiner phủ các điểm nối.Nhiều yêu cầu tối ưu đặt ra cho việc nối mạng phụ thuộc vào chức năng của từngmạng.

Hình 1.20 Cây Steiner trên đồ thị lưới

Việc thiết kế VLSI, các đường nối chỉ là các đường ngang dọc trên bảngmạch Bài toán tối ưu chiều dài dây nối được đưa về một biến thể của bài toán câySteiner, đó là bài toán cây Steiner thẳng góc trên đồ thị lưới

2.5.8 Thiết kế mạng viễn thông

Quy trình thiết kế mạng viễn thông đặc biệt phức tạp bởi cùng lúc phải xét cácbài toán về thông lượng, truyền tải, tài nguyên, hiệu năng cho mạng Nhấn mạnh vềkhả năng của một mạng viễn thông là khả năng duy trì kết nối liên tục của mạng,thực hiện các chức năng của nó đối mặt với các phá hủy và tắc nghẽn

Thiết kế mạng viễn thông thường được chia thành các bài toán tối ưu nhỏ hơnnhư thiết kế cấu hình mạng, mô hình hóa và dự đoán lượng thông tin truyền tải…Xây dựng cấu hình mạng nhằm đảm bảo độ tin cậy Ngoài việc phụ thuộc vào độ tincậy của các thiết bị hoạt động trong mạng, tính tin cậy của mạng còn phụ thuộc vàocách mà các thiết bị đó nối với nhau Việc đảm bảo tính liên thông và đồng thời tìmcách nối để tối ưu các hàm mục tiêu đề ra liên quan đến giải bài toán cây Steinernhỏ nhất

2.5.9 Bài toán phát sinh loài

Sự phát sinh loài được biểu diễn bởi một cây tiến hóa Nghiên cứu xây dựng câyphát sinh loài là một trong những bài toán tính toán cơ bản trong sinh học Chúng taquan tâm ở đây tới sự phân loài được mô tả bởi các tính trạng mà chúng thể hiện ra

từ tập các đặc tính Dữ liệu trên được mô tả dưới dạng bảng nhị phân, phần tử (i, j) nhận giá trị 1 (hoặc 0) tương ứng với loài i có tính trạng j (hoặc không) Sự khác

biệt giữa hai loài đo bằng khoảng cách Hamming giữa hai vector tính trạng

Trong khi nghiên cứu sự tiến hóa trong sinh học, xây dựng cây tiến hóa sao cho

sự khác biệt giữa các loài đạt giá trị nhỏ nhất là bài toán cây Steiner nhỏ nhất Cácđiểm kết thúc là các vector tính trạng của loài, các nút trung gian bản thân cũng làcác vector nhị phân, chúng nằm trên cạnh nối từ gốc (tổ tiên) đến lá (các loài).Trọng số của các cạnh đo bằng khoảng cách Hamming

2.6 Các thuật toán giải đúng

Như trình bày trong các mục ở trên, bài toán cây Steiner trên đồ thị thuộc lớpNP-khó Các thuật toán giải chính xác hiện biết đều chưa thể đạt tới thời gian đa

Trang 32

thức Mục này trình bày hai thuật toán giải đúng bài toán cây Steiner Đầu tiên làthuật toán quy hoạch động của Dreyfus và Wagner [4].

2.6.1 Thuật toán Dreyfus-Wagner

Cho đồ thị vô hướng liên thông G = (V, E), T là tập đỉnh kết thúc của đồ thị.(G, c, T) là một thể hiện của bài toán, với mọi tập U ⊆ T và x ∈ V(G)\U, ta địnhnghĩa:

1( ) : min{ ( ( ))}

p U = c E S

với S1 là cây Steiner phủ tập U trong G,

2( { }, ) : min{ ( ( ))}

q Ux x = c E S

với S2 là cây Steiner phủ tập U ∪ {x} trong G có lá là các phần tử của U.

Khi đó với mọi U V(G), |U| 2 và x V(G) \ U ta có:

(b) Xét cây Steiner nhỏ nhất S phủ tập U ∪ {x} Ký hiệu degs(x) là bậc trong S của nút x Nếu degs(x) ≥ 2 thì S có thể tách theo x thành hai cây Steiner nhỏ nhất

Như vậy, giá trị nhỏ nhất của ba trường hợp trên sẽ được tính trong (b).

Từ công thức đệ quy trên, chúng ta thu được thuật toán quy hoạch động sau:

in Đồ thị vô hướng liên thông G, trọng số c và tập đỉnh kết thúc T

out Trọng số p(T) của cây Steiner nhỏ nhất phủ tập T của đồ thị G

1 BEGIN

2 Nếu |T| ≤ 1 thì p(T) = 0, kết thúc thuật toán;

3 Tính distG(x,y) và đặt p(x,y) = distG(x,y) cho mọi x, y;

4 for k=2 to |T|-1

5 for (U ⊆ T, |U|=k) và (x∈V(G)\U)

6 Tính q(U∪{x}, x) theo công thức (a);

Trang 33

7 endfor;

8 for (U ⊆ T, |U|=k) và (x∈V(G)\U)

9 Tính p(U∪{x}) theo công thức (b);

Bước 2 của thuật toán tính trong thời gian O(n3) bằng cách áp dụng thuật toán

đường đi ngắn nhất giữa các cặp đỉnh Công thức đệ quy ở bước 4 tính mất O(3 t) vì

có 3t khả năng chia T thành U’, U \ U’ và T \ U Công thức 5 cần thời gian là

O(n 22t ) Các công thức 4 và 5 lặp O(n) lần, ta rút ra được đpcm ■

2.6.2 Mô hình quy hoạch nguyên cho SPG

Bản thân bài toán cây Steiner trên đồ thị là bài toán tối ưu tổ hợp, do vậy nó

có thể xây dựng mô hình quy hoạch tuyến tính nguyên cho bài toán và áp dụng các phương pháp giải quy hoạch tuyến tính nguyên để tìm phương án tối ưu

Cây Steiner có thể được biểu diễn bởi một biến vector nhị phân x = (xe) |E|

Vector x có | E | thành phần, mỗi thành phần tương ứng với một cạnh của G, giá trị của thành phần xe là 1 hoặc 0 phụ thuộc cạnh e có mặt trong cây Steiner hay không Trọng số của cạnh e ký hiệu là ce.

Bài toán cây Steiner trên đồ thị có mô hình toán học như sau:

tế, các kỹ thuật metaheuristic thường được sử dụng để giải các bài toán tối ưu tổhợp Chúng không được đảm bảo về mặt lý thuyết là có thể đưa ra lời giải tối ưu,nhưng qua những thử nghiệm thực tế, kết quả mà các phép tìm kiếm metaheuristicmang lại rất khả quan Một số kỹ thuật tìm kiếm metaheuristic :

Trang 34

• Thuật toán di truyền [7, 8, 9, 12]

• Tìm kiếm Tabu [27]

• GRASP (Greedy Random Adaptive Search Procedures) [16, 17]

Hiện nay cả ba kỹ thuật này đều đã được áp dụng để giải bài toán cây Steiner.Đây là các kỹ thuật tìm kiếm tối ưu cục bộ nhưng thực hiện lặp nhiều lần trong toàn

bộ không gian Trong phần tiếp theo của đồ án sẽ trình bày thuật toán di truyền ápdụng vào giải bài toán cây Steiner trên đồ thị

Trang 35

CHƯƠNG 2 GIẢI THUẬT DI TRUYỀN

Giải thuật di truyền (Genentic Algorithm-GA) là một phần của tính toán tiến hóa (Evolutionary Computing), một lĩnh vực đang phát triển rất nhanh của Trí tuệ

nhân tạo

Như đã biết, GA được lấy cảm hứng từ học thuyết của Darwin về sự tiến hóa.

Nói một cách đơn giản thì bài toán được giải quyết bằng quá trình tiến hóa đưa rakết quả tốt nhất hay cá thể khỏe nhất Hiểu theo cách khác, lời giải được tiến hóa

GA mô phỏng quá trình tiến hóa tự nhiên: Kế thừa và đấu tranh sinh tồn để

cải tiến các thế hệ và khảo sát không gian lời giải GA thường được dùng trong các

bài toán tối ưu, hay lớp các bài toán NP_khó, đó là lớp bài toán rất hay nhưngthường rất khó tìm ra lời giải tối ưu với các giải thuật cổ điển vét cạn trong khônggian tìm kiếm

1 Giới thiệu và lịch sử phát triển

Tính toán tiến hóa được I Rechenberg giới thiệu vào những năm 1960

trong công trình “Evolution Stragies” (Những chiến lược tiến hóa) Ý tưởng của

ông đã được các nhà khoa học nghiên cứu phát triến tiếp

Giải thuật di truyền do John Holland phát minh và được ông phát triển

cùng với các đồng nghiệp và sinh viên Cuốn sách "Adaption in Natural and

Artificial 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 đó

Năm 1992, John Koza đã dùng GA để xây dựng các chương trình giải quyết

một số bài toán và gọi phương pháp này là "Genetic Programming" (GP).

Năm 1996, thư viện các hàm C++ cho GA (GALib) đã được Mathew Wall, trường Đại học Massachussets (Massachusetts Institute of Technology) đưa ra Đây

là các công cụ sử dụng giải thuật di truyền cho tối ưu hoá các chương trình có sửdụng sự biểu diễn hay các toán tử di truyền

Ngày nay giải thuật di truyền càng trở nên quan trọng, đặc biệt là trong lĩnhvực tối ưu hoá, một lĩnh vực có nhiều bài toán thú vị, được ứng dụng nhiều trongthực tiễn nhưng thường khó và chưa có giải thuật hiệu quả để giải

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

2.1 Nhiễm sắc thể (Chromosome)

Nhiễm sắc thể (NST) hay còn gọi là cá thể Các sinh vật sống đều cấu tạo từ

cá tế bào, và tất cả các tế bào này đều bao gồm một tập hợp các nhiếm sắc thể giống

nhau Các NST này là một chuỗi các AND, quy định đặc tính của cả cá thể Mỗi NST bao gồm rất nhiều GEN, mỗi gen quy định một trạng thái nào đó.

Trong bài toán tối ưu, cá thể tương ứng với một lời giải tiềm tàng

2.2 Quần thể (Population)

Quần thể trong tự nhiên là một tập hợp các cá thể có cùng một số đặc điểm nào đấy.Trong giải thuật di truyền ta quan niệm quần thể là một tập các lời giải tiềm tàng

Trang 36

của một bài toán.

2.3 Chọn lọc (Selection)

Trong tự nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổi các

cá thể trong quần thể Những cá thể tốt, thích nghi được với điều kiện sống thì cókhả năng đấu tranh lớn hơn, do đó có thể tồn tại và sinh sản Các cá thể không thíchnghi được với điều kiện sống thì dần mất đi Dựa vào nguyên lý của quá trình chọn

lọc và đấu tranh sinh tồn trong tự nhiên, chọn lựa các cá thể trong GA chính là cách

chọn các cá thể có độ thích nghi tốt để đưa vào thế hệ tiếp theo hoặc để cho laighép, với mục đích là sinh ra các cá thể mới tốt hơn Tuy nhiên, quá trình chọn lọcmang rất nhiều yếu tố ngẫu nhiên Có nhiều cách để lựa chọn nhưng cuối cùng đềunhằm đáp ứng mục tiêu là các cá thể tốt sẽ có khả năng được chọn cao hơn

2.4 Lai ghép (CrossOver)

Lai ghép trong tự nhiên là sự kết hợp các tính trạng của bố mẹ để sinh ra thế

hệ con Trong giải thuật di truyền, lai ghép được coi là một sự tổ hợp lại các tínhchất (thành phần) trong hai lời giải cha mẹ nào đó để sinh ra một lời giải mới mà cóđặc tính mong muốn là tốt hơn thế hệ cha mẹ Đây là một quá trình xảy ra chủ yếutrong giải thuật di truyền

2.5 Đột biến (Mutation)

Đột biến là một sự biến đổi tại một (hay một số) gen của NST ban đầu để tạo

ra một NST mới Đột biến có thể tạo ra một cá thể mới tốt hơn hoặc xấu hơn cá thểban đầu Tuy nhiên trong giải thuật di truyền thì ta luôn muốn tạo ra những phép độtbiến cho phép cải thiện lời giải qua từng thế hệ Đột biến cũng mang tính chất ngẫunhiên

2.6 Hàm thích nghi (Fitness Function)

Trong tự nhiên, chỉ có những cá thể nào thích nghi được với môi trường thì

mới tồn tại, không nó sẽ bị diệt vong GA đưa ra khái niệm hàm thích nghi, hay hàm

sức khỏe để đánh giá một cá thể hay một lời giải, so với các cá thể khác Từ đó mới

có thể chọn lựa được các lời giải tốt cho các thế hệ sau Hàm thích nghi cũng là mộttiêu chí đánh giá mức độ tiến hóa của quần thể

3 Không gian tìm kiếm (Search Space)

Không gian của tất cả các lời giải khả thi được gọi là không gian tìm kiếm(hay không gian trạng thái) Mỗi một điểm trong không gian tìm kiếm biểu diễn cho

1 lời giải Mỗi lời giải được đánh dấu bằng giá trị hay sức khỏe của nó trong bài

toán Với GA, ta tìm kiếm lời giải tốt nhất trong số các lời giải trong không gian tìm

kiếm

Vấn đề là việc tìm kiếm rất là phức tạp Lời giải sẽ được tìm ở đâu, và bắtđầu từ đâu Có rất nhiều cách để tìm lời giải thích hợp, nhưng những phương pháp

này có thể không cần phải đưa ra lời giải tốt nhất như các giải thuật leo đồi (hill

climbing), tìm kiếm tabu (tabu search), mô phỏng tôi luyện (simulated annealing)

và giải thuật di truyền (genetic algorithm).

4 Mô tả GA

GA được lấy cảm hứng từ Thuyết tiến hóa của Darwin Lời giải của một bài

toán được giải bằng GA sử dụng quá trình tiến hóa.

Trang 37

Giải thuật bắt đầu bằng một tập các lời giải, được biểu diễn bằng các NST,

gọi là Quần Thể Các lời giải này được lấy ra và sử dụng để tạo nên quần thể mới,

với một mong muốn quấn thể mới sẽ tốt hơn quần thể cũ Những lời giải được chọn

từ quần thể mới hay thế hệ con cháu theo độ thích nghi Chúng càng thích nghi cao,chúng càng có nhiều cơ hội để tái sinh sản

Với các khái niệm được giới thiệu ở trên, giải thuật di truyền được mô tả như sau:

1 [ Bắt đầu ] Sinh ngẫu nhiên một quần thể gồm n cá thể (là n lời giải cho bài

toán)

2 [ Thích nghi ] Ước lượng độ thích nghi eval(x) của mỗi cá thể x trong quần thể

3 [ Quần thể mới ] Tạo quần thể mới bằng cách lặp lại các bước sau cho đến khi

quần thể mới hoàn thành

a [Chọn lọc] Chọn hai cá thể bố mẹ từ quần thể cũ theo độ thích nghi của

chúng (cá thể có độ thích nghi càng cao thì càng có nhiều khả năng được chọn)

b [Lai ghép] Với một xác suất lai ghép được chọn, lai ghép hai cá thể bố mẹ

để tạo ra một cá thể mới

c [Đột biến] Với một xác suất đột biến được chọn, biến đổi cá thể mới

d [Chấp nhận] Thay con mới vào quần thể

4 [Thay thế] Sử dụng quần thể mới cho quá trình tiếp theo của thuật toán

5 [Thử nghiệm] Nếu điều kiện dừng được thoã mãn thì thuật toán kết thúc và trả

về lời giải tốt nhất trong quần thể hiện tại

6 [Vòng lặp ] Quay lại bước 2

Mô tả giải thuật di truyền theo ngôn ngữ giả PASCAL

1 Procedure GTDiTruyen

2 Begin

3 t := 0;

4 Khởi tạo quần thể P(0);

5 Tính giá trị thích nghi của các cá thể trong P(t);

6 While not Điều_kiện_kết_thúc do

7 Begin

8 Chọn lọc và tái tạo từ P(t) ;

9 Lai ghép các cá thể đã chọn lọc;

10 Đột biến các cá thể con cháu;

11 Tính độ thích nghi của các cá thể trong P(t);

Sau một bước lặp t, một quần thể mới P(t) được tạo ra từ P(t-1), hay một tập các

lời giải tiềm tàng cho bài toán Sau mỗi bước lặp, các cá thể mới được sinh ra hoàn

Trang 38

toàn ngẫu nhiên, ngẫu nhiên từ khi tạo quần thể ban đầu, cho đến ngẫu nhiên chọnlọc các cá thể bố mẹ mang đi lai ghép, ngẫu nhiên cả trong quá trinh lai ghép gen,cho đến đột biến gen Nó hoàn toàn giống như một quá trình tiến hóa trong tự nhiên.

Với nguyên tắc chung của GA rất khái quát như vậy, cần quan tâm đến các tham

số và sự sắp đặt mà từ đó ta có thể áp dụng để giải nhiều các bài toán khác nhau

• NST được tạo ra như thế nào, và mã hóa chúng như thế nào?

• Lựa chọn cha mẹ để lai ghép như thế nào? Có nhiều cách khác nhau để lựachọn, nhưng ý tưởng chủ đạo luôn là chọn những bố mẹ tốt hơn với hi vọngsinh ra con cái cũng sẽ tốt hơn

• Sự chọn lựa các gen để đột biến cũng là một vấn đề phải quan tâm Đột biếnkhông phải lúc nào cũng mang lại kết quả tốt, thậm chí còn mang lại kết quảngược lại

5 Các tham số của GA

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

Kích thước quần thể cho biết có bao nhiêu cá thể trong một quần thể (trongmột thế hệ) Tuy nhiên khi kích thước quá lớn cũng không thể cải thiện được hiệusuất tìm ra kết quả tối ưu Qua các nghiên cứu cũng như các thử nghiệm đã cho thấykích thước quần thể không nên quá bé cũng như không quá lớn Nếu có quá ít cá thểthì ít có khả năng thực hiện lai giống và chỉ một phần nhỏ không gian tìm kiếmđược dùng Như vậy sẽ dễ xảy ra trường hợp bỏ qua các lời giải tốt, các thế hệ sẽ

thoái hóa dần theo quá trình Nhưng quá nhiều cá thể cũng không tốt vì GA sẽ chạy

chậm đi, ảnh hưởng đến hiệu quả của giải thuật Các nghiên cứu cũng đã chỉ rakhông có lợi khi tăng kích thước quần thể lên quá một giới hạn cho phép Ngoài ra,chất lượng lời giải còn phụ thuộc vào phương pháp mã hóa

5.2 Xác suất lai ghép

Xác suất lai ghép cho biết việc lai ghép tạo ra thế hệ mới được thực hiện

thường xuyên như thế nào Xác suất lai ghép là pc , khi đó khả năng để một cá thể được lai ghép là pc Nếu không thực hiện lai ghép, con sinh ra sẽ giống hoàn toàn bố

mẹ Nếu được lai ghép, con sinh ra sẽ có một phần giống bố và một phần giống mẹ

Nếu xác xuất lai ghép pc = 100% thì tất cả con sinh ra là do lai ghép, còn nếu pc =

0%, toàn bộ thế hệ mới là sự sao chép chính xác thế hệ cũ.

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

Xác suất đột biến cho biết các gen của nhiễm săc thể thay đổi thường xuyên

như thế nào Xác suất đột biến là pm, khả năng để mỗi gen của một NST bất kỳ bị đột biến là pm Nếu pm = 100%, toàn bộ NST đều bị đột biến, nếu pm = 0%, không

gen nào thay đổi Toán tử đột biến có tác dụng ngăn ngừa giải thuật di truyền rơivào tình trạng cực trị địa phương Tuy nhiên nếu thực hiện đột biến với xác suất quácao sẽ biến giải thuật di truyền thành giải thuật tìm kiếm ngẫu nhiên

6 Khởi tạo quần thể ban đầu và chọn lọc cá thể

6.1 Khởi tạo quần thể

Khởi tạo quần thể là bước đầu tiên của bài toán theo GA Quần thể ban đầu

thường được sinh ra một cách ngẫu nhiên, bao gồm các lời giải ngẫu nhiên thỏamãn các điều kiện của bài toán nhưng ta chưa biết chắc được liệu nó có phải là lời

Ngày đăng: 21/10/2014, 03:07

HÌNH ẢNH LIÊN QUAN

Đồ thị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này, các loại đồ thị được phân biệt bởi sự khác biệt giữa kiểu cũng như số lượng cạnh nối các đỉnh của đồ thị - giải thuật di truyền bài toán cây steiner
th ị là một cấu trúc rời rạc bao gồm các đỉnh và các cạnh nối các đỉnh này, các loại đồ thị được phân biệt bởi sự khác biệt giữa kiểu cũng như số lượng cạnh nối các đỉnh của đồ thị (Trang 8)
1.1.3. Đồ thị vô hướng và liên thông - giải thuật di truyền bài toán cây steiner
1.1.3. Đồ thị vô hướng và liên thông (Trang 9)
Hình 1.3. Cây. - giải thuật di truyền bài toán cây steiner
Hình 1.3. Cây (Trang 10)
Hình 1.8. Danh sách kề và ma trận kề tương ứng. - giải thuật di truyền bài toán cây steiner
Hình 1.8. Danh sách kề và ma trận kề tương ứng (Trang 13)
Hình 1.9. Đường đi ngắn nhất đến các đỉnh còn lại. - giải thuật di truyền bài toán cây steiner
Hình 1.9. Đường đi ngắn nhất đến các đỉnh còn lại (Trang 17)
Hình 1.10. Đồ thị có hướng không có chu trình âm. - giải thuật di truyền bài toán cây steiner
Hình 1.10. Đồ thị có hướng không có chu trình âm (Trang 18)
Hình 1.11. Mạch logic, đầu vào được nhập từ bên trái và đầu ra ở bên phải. - giải thuật di truyền bài toán cây steiner
Hình 1.11. Mạch logic, đầu vào được nhập từ bên trái và đầu ra ở bên phải (Trang 21)
Bảng 1.1. Một số giải thuật gần đúng cho bài toán trên đồ thị. - giải thuật di truyền bài toán cây steiner
Bảng 1.1. Một số giải thuật gần đúng cho bài toán trên đồ thị (Trang 30)
Hình 2.1. Xác suất của mỗi NST theo kiểu lựa chọn Roulet. - giải thuật di truyền bài toán cây steiner
Hình 2.1. Xác suất của mỗi NST theo kiểu lựa chọn Roulet (Trang 40)
Hình 2.2. Trạng thái quần thể trước khi sắp xếp (đồ thị theo hàm thích nghi) - giải thuật di truyền bài toán cây steiner
Hình 2.2. Trạng thái quần thể trước khi sắp xếp (đồ thị theo hàm thích nghi) (Trang 40)
Hình 2.4. Lai ghép một điểm cắt mã hóa nhị phân - giải thuật di truyền bài toán cây steiner
Hình 2.4. Lai ghép một điểm cắt mã hóa nhị phân (Trang 44)
Bảng 2.6: Lai ghép một điểm cắt mã hóa hoán vị 7.2.3 Mã hóa giá trị - giải thuật di truyền bài toán cây steiner
Bảng 2.6 Lai ghép một điểm cắt mã hóa hoán vị 7.2.3 Mã hóa giá trị (Trang 45)
Bảng 2.7: Phép đảo bit mã hóa nhị phân 7.3.2 Mã hóa hoán vị - giải thuật di truyền bài toán cây steiner
Bảng 2.7 Phép đảo bit mã hóa nhị phân 7.3.2 Mã hóa hoán vị (Trang 46)
Hình 2.10. Chiến lược nạp lại hoàn toàn - giải thuật di truyền bài toán cây steiner
Hình 2.10. Chiến lược nạp lại hoàn toàn (Trang 47)
Hình 3.2. hai trong số nhiều đồ thị con tương ứng với chuỗi mã 1110110. - giải thuật di truyền bài toán cây steiner
Hình 3.2. hai trong số nhiều đồ thị con tương ứng với chuỗi mã 1110110 (Trang 51)
Hình 3.5. Lai ghép nhiều cha mẹ. - giải thuật di truyền bài toán cây steiner
Hình 3.5. Lai ghép nhiều cha mẹ (Trang 53)
Hình 3.6. Minh họa phương pháp tối ưu cây. - giải thuật di truyền bài toán cây steiner
Hình 3.6. Minh họa phương pháp tối ưu cây (Trang 55)
Hình 4.1. Đồ thị minh họa cho file dữ liệu. - giải thuật di truyền bài toán cây steiner
Hình 4.1. Đồ thị minh họa cho file dữ liệu (Trang 58)
Bảng 4.1. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I160. - giải thuật di truyền bài toán cây steiner
Bảng 4.1. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I160 (Trang 64)
Bảng 4.2. Kết quả so sánh GLmin với một số giải thuật gần đúng khác trên bộ dữ liệu I160. - giải thuật di truyền bài toán cây steiner
Bảng 4.2. Kết quả so sánh GLmin với một số giải thuật gần đúng khác trên bộ dữ liệu I160 (Trang 65)
Bảng 4.3. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I320. - giải thuật di truyền bài toán cây steiner
Bảng 4.3. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I320 (Trang 66)
Bảng 4.4. Kết quả so sánh GLmin với một số giải thuật gần đúng khác trên bộ dữ liệu I320. - giải thuật di truyền bài toán cây steiner
Bảng 4.4. Kết quả so sánh GLmin với một số giải thuật gần đúng khác trên bộ dữ liệu I320 (Trang 67)
Bảng 4.5. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I640. - giải thuật di truyền bài toán cây steiner
Bảng 4.5. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I640 (Trang 68)
Bảng 4.6. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I640(tiếp). - giải thuật di truyền bài toán cây steiner
Bảng 4.6. Kết quả so sánh các phép lai ghép trên bộ dữ liệu I640(tiếp) (Trang 69)
Bảng 4.8. Kết quả so sánh GLmin với một số giải thuật gần đúng khác trên bộ dữ liệu thực tế. - giải thuật di truyền bài toán cây steiner
Bảng 4.8. Kết quả so sánh GLmin với một số giải thuật gần đúng khác trên bộ dữ liệu thực tế (Trang 70)
Bảng 4.7. Kết quả so sánh các phép lai ghép trên bộ dữ liệu thực tế. - giải thuật di truyền bài toán cây steiner
Bảng 4.7. Kết quả so sánh các phép lai ghép trên bộ dữ liệu thực tế (Trang 70)
Hình 4.2. Đồ thị so sánh hiệu quả làm việc của các phép lai ghép. - giải thuật di truyền bài toán cây steiner
Hình 4.2. Đồ thị so sánh hiệu quả làm việc của các phép lai ghép (Trang 71)
Hình 4.3. Đồ thị so sánh hiệu qủa làm việc của các phép đột biến. - giải thuật di truyền bài toán cây steiner
Hình 4.3. Đồ thị so sánh hiệu qủa làm việc của các phép đột biến (Trang 72)
Hình 4.4. Đồ thị so sánh hiệu quả của các phép chọn lọc. - giải thuật di truyền bài toán cây steiner
Hình 4.4. Đồ thị so sánh hiệu quả của các phép chọn lọc (Trang 73)
Hình 5.1. Giao diện chương trình. - giải thuật di truyền bài toán cây steiner
Hình 5.1. Giao diện chương trình (Trang 74)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w