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

Tìm hiểu và nghiên cứu thuật toán hệ kiến Max - Min

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (766.12 KB, 82 trang )

TRƢỜNG ĐẠI HỌC SƢ PHẠM HÀ NỘI
2 KHOA CÔNG NGHỆ THÔNG TIN

PHÙNG CÔNG TUẤN

TÌM HIỂU VÀ NGHIÊN CỨU THUẬT
TOÁN HỆ KIẾN MAX-MIN

KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN

Ngƣời hƣớng dẫn khoa học

Th.S Lƣu Thị Bích Hƣơng

Hà Nội – 2012

-1-


LỜI CẢM ƠN
Trong suốt quá trình học tập và làm khóa luận, em nhận đƣợc sự giúp
đỡ, tạo điều kiện của Khoa CNTT, của các thầy cô giáo Khoa CNTT. Bên
cạnh đó là sự giúp đỡ rất nhiều của ngƣời thân, bạn bè để em có đƣợc kết quả
ngày hôm nay.
Trƣớc hết em xin tỏ lòng kính trọng cảm ơn cô giáo Th.S Lƣu Thị Bích
Hƣơng, cô đã tận tình chỉ bảo, hƣớng dẫn cho em hoàn thành đƣợc bản khóa
luận này.
Xin cảm ơn các thầy, các cô giáo trong Khoa Công nghệ thông tin –
Đại học sƣ phạm Hà Nội 2, các bạn trong lớp K34 – CNTT đã tận tình giúp
đỡ, giới thiệu tài liệu, sách tham khảo để khóa luận đƣợc hoàn thành đúng


hạn.
Cuối cùng là lòng biết ơn đến sự quan tâm, chăm sóc và tạo điều kiện
của gia đình để con tập trung vào việc học tập và hoàn thành bản khóa luận
này.
Do thời gian thực hiện không nhiều nên khóa luận không tránh khỏi
những thiếu sót. Rất mong nhận đƣợc sự đóng góp của thầy cô giáo và các
bạn để khóa luận đƣợc hoàn thiện hơn.
Xin chân thành cảm ơn!

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

PHÙNG CÔNG TUẤN


LỜI CAM ĐOAN
Tên em là: PHÙNG CÔNG TUẤN
Sinh viên lớp: K34 – CNTT, trƣờng đại học sƣ phạm Hà Nội
2. Em xin cam đoan:
1. Đề tài: “Tìm hiểu và nghiên cứu thuật toán hệ kiến Max – Min”
là sự nghiên cứu của riêng em, dƣới sự hƣớng dẫn của cô giáo
Th.S Lƣu Thị Bích Hƣơng.
2. Khóa luận hoàn toàn không sao chép của tác giả nào khác.
Nếu sai em xin hoàn toàn chịu trách nhiệm.
Hà Nội tháng 5/2012
Ngƣời cam đoan

Phùng Công Tuấn


MỤC LỤC

Trang
LỜI CẢM ƠN..................................................................................................1
LỜI CAM ĐOAN............................................................................................2
MỤC LỤC.......................................................................................................3
MỞ ĐẦU.........................................................................................................5
Chƣơng 1 – CƠ SỞ LÝ THUYẾT..................................................................9
1.1. Các khái niệm cơ bản....................................................................9
1.1.1. Định nghĩa đồ thị.................................................................9
1.1.2. Các khái niệm......................................................................10
1.2. Biểu diễn đồ thị trên máy tính.......................................................13
1.2.1. Ma trận kề (ADJACENCY MATRIX)................................13
1.2.2. Danh sách cạnh (EDGE LIST)............................................14
1.2.3. Danh sách kề (ADJACENCY LIST)...................................15
Chƣơng 2 – LƢỢC SỬ PHÁT TRIỂN CỦA CÁC THUẬT TOÁN ACO....18
2.1. Nguồn gốc sinh học của các thuật toán kiến.................................18
2.2. Truyền thông gián tiếp – stigmergy...............................................22
2.3. Quá trình phát triển của các thuật toán ACO.................................23
2.3.1. Hệ kiến................................................................................23
2.3.2. Hệ đàn kiến.........................................................................26
2.3.3. Thuật toán hệ kiến Max-Min...............................................29
Chƣơng 3 – PHƢƠNG PHÁP TỐI ƢU HÓA ĐÀN KIẾN: ACO.................32
3.1. Một số heuristic ACO....................................................................32
3.2. Meta – Heuristic tối ƣu hóa đàn kiến............................................33
3.2.1. Bài toán tổng quát...............................................................33


3.2.2. Thuật toán ACO tổng quát..................................................35
3.2.3. Xây dựng lời giải.................................................................38
3.2.4. Cập nhật mùi.......................................................................39
3.3. Đặc tính hội tụ của vết mùi...........................................................40

3.4. Các thuật toán ACOmin.................................................................43
Chƣơng 4 – THUẬT TOÁN HỆ KIẾN MAX-MIN......................................46
4.1. Giới thiệu hệ kiến Max-Min.........................................................46
4.2. Cập nhật vết mùi...........................................................................46
4.3. Giới hạn của vết mùi.....................................................................47
4.4. Một số nguyên lý ứng dụng trong thuật toán hệ kiến Max-Min .. 49
4.5. Xây dựng ứng dụng.......................................................................53
4.5.1. Phát biểu bài toán................................................................53
4.5.2. Giải quyết bài toán...............................................................54
KẾT LUẬN.....................................................................................................57
TÀI LIỆU THAM KHẢO...............................................................................58
PHỤ LỤC........................................................................................................61


MỞ ĐẦU
1. Mục đích lý do chọn đề tài
1.1. Lý do chọn đề tài
Các bài toán tối ƣu tổ hợp (Combinatorial Optimization Problems COP) đóng góp vai trò quan trọng trong thực tế, có rất nhiều ứng dụng
trong lĩnh vực kinh tế, sản xuất. Khi giải các bài toán tối ƣu tổ hợp khó
thƣờng gặp trở ngại lớn, các thuật toán truyền thống thƣờng khó giải
quyết, các thuật toán mô phỏng tự nhiên nhƣ luyện kim, di truyền, tiến
hóa, hệ kiến... tỏ ra có ƣu thế hơn. Trong một thập kỷ qua các thuật toán
ACO tỏ ra là phƣơng pháp nổi trội để giải quyết các bài toán tối ƣu tổ hợp
khó.
Tối ƣu hóa đàn kiế n (Ant Colony Optimization - ACO) là cách tiế
p cận meta - heuristic tƣơng đố i mới đƣợc đề xuất đầu tiên bởi
Marco Dorigo và các đồng nghiệp năm 1991. Một trong những thành
công đầu tiên của lớp thuật toán ACO là giải quyết tốt bài toán nổi
tiếng Ngƣời chào hàng (Traveling Salesman Problem-TSP) với số thành
phố khá lớn, hơn 2000. Từ đó đến nay ACO ngày càng thu hút đƣợc sự

quan tâm và nghiên cứu của giới khoa học và hiệu quả nổi trội của nó
đƣợc chứng minh bằng thực nghiệm nhƣ giải quyết các bài tối ƣu tổ
hợp điển hình: Bài toán phân công bậc hai (Quadratic Assignment
Problem-QAP), Bài toán lập lịch công việc (Job-shop Scheduling
Problem-JSP), Bài toán định đƣờng xe tải (Vehicle Rouling Problem
-VRP), Bài toán tô màu đồ thị (Graph Coloring Problem-GCP), Bài
toán siêu dãy chung ngắn nhất (Shortest Colnmon Supersequence
Poblem-SCS)…


Trong ACO, hệ kiến Max-Min (Max-Min Ant System-MMAS) tỏ ra
đơn giản, thông dụng và đƣợc rất nhiều ngƣời ƣa dùng so với các thuật
toán kiến trƣớc đó nhƣ hệ kiến (Ant System-AS), hệ đàn kiến (Ant
Conoly System-ACS). Hệ kiến Max-Min là thuật toán đầu tiên đề xuất
cập nhật mùi theo tƣ tƣởng Max-Min. Năm 1999, nhằm mục đích đƣa ra
một lƣợc đồ làm việc chung cho các thuật toán kiến, Marco Dorigo, Luca
M. Gambardella và Gianni Di Cao đã khái quát hóa thành lớp ACO và
ứng dụng một cách phong phú để giải quyết các bài toán tối ƣu tổ hợp tĩnh
và động.
Xuất phát từ tính thực tiễn thiết thực em xin chọn đề tài : “Nghiên
cứu và tìm hiểu về thuật toán hệ kiến Max –Min”.
1.2. Mục đích
Mục đích nghiên cứu của đề tài này là tìm hiểu thêm một thuật toán
có thế có lời giải tốt cho các bài toán tối ƣu tổ hợp và tạo ra một nguồn tài
liệu cơ sở cho những nghiên cứu về các thuật toán tối ƣu hóa đàn kiến.
2. Nhiệm vụ, yêu cầu
2.1. Nhiệm vụ
-

Nghiên cứu về lý thuyết đồ thị để phục vụ cài đặt giải bài toán

Người giao hàng bằng thuật toán hệ kiến Max – Min.

-

Nghiên cứu tìm hiểu thuật toán hệ kiến Max – Min và các thuật
toán liên quan.

-

Tìm hiều ngôn ngữ lập trình C# để tiến hành cài đặt giải bài toán
Người giao hàng bằng thuật toán hệ kiến Max – Min.

2.2. Yêu cầu
Xây dựng và cài đặt chƣơng trình giải bài toán Người giao hàng ứng
dụng thuật toán hệ kiến Max – Min.
3. Phƣơng pháp nghiên cứu:


- Phƣơng pháp nghiên cứu chủ yếu là tham khảo tài liệu, bài viết liên
quan tới đồ thị, thuật toán hệ kiến.
- Tìm nguồn tài liệu trên Internet, sách báo liên quan.
- Phƣơng pháp thực nghiệm
4. Phạm vi nghiên cứu
Nội dung nghiên cứu các thuật toán nói chung cũng nhƣ các thuật
toán kiến nói riêng rất đa dạng và phong phú. Do thời gian có hạn em
không hy vọng có thế tìm hiểu đƣợc hết các nội dung liên quan tới đề tài,
chỉ xin giới hạn phạm vi nghiên cứu nhƣ sau:
-

Tìm hiểu cơ sở lý thuyết về đồ thị, để giải quyết bài toán Người

giao hàng.

-

Tìm hiểu nội dung thuật toán Hệ kiến, và nghiên cứu về các thuật
toán ACO theo quy tắc cập nhật mùi Max-Min.

-

Xây dựng thuật toán hệ kiến Max-Min trên cơ sở bài toán Người
giao hàng.

5. Ý nghĩa khoa học và thực tiễn của đề tài
Nếu đề tài đƣợc áp dụng vào thực tiễn thì việc giải các bài toán tối
ƣu tổ hợp trở nên không còn nhiều phức tạp và tốn thời gian so với các
thuật toán truyền thống nhƣ: quy hoạch động, vét cạn… và trong nghiên
cứu khoa học đề tài này sẽ là cơ sở vững chắc để em có thể nghiên cứu
các thuật toán hệ kiến khác.
6. Cấu trúc của khóa luận
Ngoài phần mở đầu và phần kết luận, khóa luận đƣợc tổ chức nhƣ
sau:
Chƣơng 1: Giới thiệu về các khái niệm cơ bản của đồ thị và một số cách
biểu diễn đồ thị trên máy tính.


Chƣơng 2: Giới thiệu nguồn gốc sinh học của thuật toán kiến, cách truyền
thông gián tiếp và lƣợc sử phát triển của các thuật toán ACO.
Chƣơng 3: Trình bày về phƣơng pháp tối ƣu hoá đàn kiến:ACO
Chƣơng4: Giới thiệu về thuật toán hệ kiến Max-Min và áp dụng vàoxây
dựng ứng dụng giải bài toán Người giao hàng.



CHƢƠNG 1
CƠ SỞ LÝ THUYẾT
1.1.

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

1.1.1. Định nghĩa đồ thị
Là một cấu trúc gồm các đỉnh và các cạnh nối với các đỉnh đó. Đƣợc
mô tả hình thức: G = (V,E)
V gọi là tập các đỉnh (Vertices) và E gọi là tập các cạnh (Edges). Có
thể coi E là tập các cặp (u,v) với u và v là hai đỉnh của V.
Một số hình ảnh của đồ thị: Sơ đồ giao thông, mạng máy tính, cấu
trúc phân tử…
Có thể phân loại đồ thị theo đặc tính và số lƣợng của tập các cạnh E:
Cho đồ thị G = (V,E), đƣợc định nghĩa một cách hình thức thì:
G đƣợc gọi là đơn đồ thị nếu giữa hai đỉnh u,v của V có nhiều nhất là
1 cạnh trong E nối từ u tới v.
G đƣợc gọi là đa đồ thị nếu giữa hai đỉnh u,v của V có thể có nhiều
hơn một cạnh trong E nối từ u tới v (Hiển nhiên đơn đồ thị cũng là đa đồ
thị).
G đƣợc gọi là đồ thị vô hướng (undirected graph) nếu các cạnh trong
E là không định hƣớng, tức là cạnh nối hai đỉnh u,v bất kì cũng là cạnh
nối hai đỉnh v,u. Hay nói cách khác, tập E gồm các cặp (u,v) không tính
thứ tự.
G đƣợc gọi là đồ thị có hướng (directed graph) nếu các cạnh trong E
là có định hƣớng, có thể có cạnh nối từ đỉnh u tới đỉnh v nhƣng chƣa
chắc



đã có cạnh nối từ đỉnh v tới đỉnh u. Hay nói cách khác, tập E gồm các cặp
(u, v) có tính thứ tự. Trong đồ thị có hƣớng, cách cạnh đƣợc gọi là các
cung. Đồ thị vô hƣớng cũng có thể coi là đồ thị có hƣớng nếu nhƣ ta coi
cạnh nối hai đỉnh u, v bất kì tƣơng đƣơng với hai cung (u, v) và (v, u).
Ví dụ:

Vô hƣớng

Có hƣớng

Vô hƣớng

Đơn đồ thị

Có hƣớng

Đa đồ thị

Hình 1.1: Phân loại đồ thị
1.1.2. Các khái niệm
Nhƣ phần trƣớc định nghĩa đồ thị G = (V, E) là một cấu trúc rời rạc,
tức là các tập V và E hoặc là tập hữu hạn, hoặc là tập đếm đƣợc, có nghĩa
là ta có thể đánh số thứ tự 1, 2, 3,…cho các phần tử của tập V và E. Hơn
nữa, đứng trên phƣơng diện ngƣời lập trình cho máy tính thì ta chỉ quan
tâm đến các đồ thị hữu hạn (V và E là tập hữu hạn) mà thôi, chính vì vậy
từ đây về sau nếu không chú thích gì thêm thì khi nói tới đồ thị, ta hiểu
rằng đó là đồ thị hữu hạn.
Cạnh liên thuộc, đỉnh kề, bậc:
Đối với đồ thị vô hƣớng G = (V, E). Xét một cạnh e thuộc E, nếu e =

(u, v) thì ta nói hai đỉnh u và v là kề nhau (adjacent) và cạnh e này liên
thuộc (incident) với đỉnh u và đỉnh v.


Với một đỉnh v trong đồ thị, ta định nghĩa bậc (degree) của v, kí hiệu
là deg(v) là số cạnh liên thuộc với v. Dễ thấy rằng trên đơn đồ thị thì số
cạnh liên thuộc với v cũng là số đỉnh kề với v.
Định lý: Giả sử G = (V, E) là đồ thị vô hƣớng với m cạnh, khi đó
tổng tất cả các bậc đỉnh trong V sẽ bằng 2m:

Chứng minh: Khi lấy tổng tất cả các bậc đỉnh tức là mỗi cạnh
bất kì sẽ đƣợc tính một lần trong deg(u) và một lần
trong deg(v). Từ đó suy ra kết quả.
Hệ quả: Trong đồ thị vô hƣớng, số đỉnh bậc lẻ là số chẵn
Đối với đồ thị có hƣớng G = (V, E). Xét một cung e thuộc E, nếu
thì ta nói u nối với v và v nối từ u, cung e là đi ra khỏi đỉnh u
và đi vào đỉnh v. Đỉnh u khi đó đƣợc gọi là đỉnh đầu, đỉnh v đƣợc gọi là
đỉn cuối của cung e.
Với mỗi đỉnh v trong đồ thị có hƣớng, ta định nghĩa: Bán bậc ra (out
+

– degree) của v kí hiệu là deg (v) là số cung đi ra khỏi nó; bán bậc vào (in
-

– degree) kí hiệu là deg (v) là số cung đi vào đỉnh đó
Định lý: Giả sử G = (V, E) là đồ thị có hƣớng với m cung, khi đó
tổng tất cả các bán bậc ra của các đỉnh bằng tổng tất cả các bán bậc vào và
bằng m:

Chứng minh: Khi lấy tổng tất cả các bán bậc ra hay bán bậc vào,

+

mỗi cung (u, v) bất kì sẽ đƣợc tính đúng 1 lần trong deg (v) và cũng đƣợc
-

tính đúng một lần trong deg (v). Từ đó suy ra kết quả.


Đƣờng đi và chu trình
Một đƣờng đi với độ dài p là một dãy P = <v0, v1,…,vp> của các đỉnh
sao cho (vi-1,vi) thuộc E (

). Ta nói đƣờng đi p bao gồm các

đỉnh v0, v1,…, vp và các cạnh (v0, v1), (v1, v2),…,( vp-1, vp). Nếu có một
đƣờng đi nhƣ trên thì ta nói vp đếm đƣợc (reachable) từ v0 qua P. Một
đƣờng đi con (subpath) P’ của P là một đoạn liên tục của các dãy các đỉnh
dọc theo P. Đƣờng đi P trở thành chu trình (circuit) nếu v0=vp. Chu trình P
đƣợc gọi là đơn giản (simple) nếu v1, v2,…, vp là hoàn toàn phân biệt.
Một số khái niệm khác
Hai đồ thị G = (V, E) và G’ = (V’, E’) đƣợc gọi là đẳng cấu
(isomorphic) nếu tồn tịa một song ánh

sao cho (u, v) thuộc E

nếu và chỉ nếu (f(u),f(v)) thuộc E’.
Đồ thị G’ = (V’, E’) là đồ thị con (subgraph) của đồ thị G = (V, E)
nếu




từ G bởi V’ nếu

khi đó G’ đƣợc gọi là đồ thị con cảm ứng (induce)
.

Cho một đồ thị vô hƣớng G = (V, E), ta gọi phiên bản có hƣớng
(directed version) của G là một đồ thị có hƣớng G’ = (V’, E’) sao cho (u,
v) thuộc E’ nếu và chỉ nếu (u, v) thuộc E. Nói cách khác G’ đƣợc tạo
thành từ G bằng cách thay đổi mỗi cạnh bằng hai cung có hƣớng ngƣợc
chiều nhau.
Cho một đồ thị có hƣớng G = (V, E), ta gọi phiên bản vô hƣớng
(undirected version) của G là một đồ thị vô hƣớng G’ = (V’, E’) sao cho
(u, v) thuộc E’ nếu và chỉ nếu (u, v) thuộc E hoặc (v, u) thuộc E.
Một đồ thị vô hƣớng gọi là liên thông (connected) nếu với mọi cặp
đỉnh (u, v) ta có u đến đƣợc v. Một đồ thị có hƣớng gọi là liên thông mạn
(strongly connected) nếu với mỗi cặp đỉnh (u, v), ta có u đến đƣợc v và v


đến đƣợc u. Một đồ thị có hƣớng gọi là liên thông yếu (weakly
connected) nếu phiên bản vô hƣớng của nó là đồ thị liên thông.
Một đồ thị vô hƣớng gọi là đồ thị đầy đủ (complete) nếu mọi cặp
đỉnh là kề nhau. Một đồ thị vô hƣớng gọi là hai phía (bipartile) nếu tập
đỉnh của nó có thể chia làm hai tập rời nhau X, Y sao cho không tồn tại
cạnh nối hai đỉnh thuộc X cũng nhƣ không tồn tại cạnh nối hai đỉnh thuộc
Y.
1.2.

Biểu diễn đồ thị trên máy tính


1.2.1. Ma trận kề (ADJACENCY MATRIX)
Giả sử G = (V, E) là một đơn đồ thị có số đỉnh ( kí hiệu |V|) là n. Không
mất tính tổng quát có thể coi các đỉnh đƣợc đánh số 1, 2,…,n. Khi đó ta có
thể biểu diễn đồ thị bằng một ma trận vuôn A = [a[i,j]] cấp n. Trong đó:


a[i,j]=1 nếu (i,j) E



a[i,j]=1 nếu (i,j)

E

Với mọi i, giá trị của a[i,j] có thể đặt tùy theo mục đích, thông
thƣờng nên đặt bằng 0.
Đối với đa đồ thị thì việc biểu diễn cũng tƣơng tự nhƣ trên, chỉ có
điều nếu nhƣ (i, j) là cạnh thì không phải ta ghi số 1 vào vị trí a[i, j] mà là
ghi số cạnh nối giữa đỉnh i và đỉnh j.
Ví dụ:


1

2

5

4


3


1

2

5

4

3

1.2.2. Danh sách cạnh (EDGE LIST)
Trong trƣờng hợp đồ thị có n đỉnh, m cạnh, ta có thể biểu diễn đồ thị
dƣới dạng danh sách cạnh bằng cách liệt kê tất cả các cạnh của đồ thị
trong một danh sách, mỗi phần tử của danh sách là một cặp (u,v) tƣơng
ứng với một cạnh của đồ thị. Trong trƣờng hợp đồ thị có hƣớng thì mỗi
cặp (u, v) tƣơng ứng với một cung, u là đỉnh đầu và v là đỉnh cuối của
cung. Danh sách đƣợc lƣu trong bộ nhớ dƣới dạng mảng hoặc danh sách
móc nối. Ví dụ với đồ thị bên dƣới:
1

2

4

3

5


Cài đặt trên mảng:
1

2

3

4

5

6

(1, 2)

(1, 3)

(1, 5)

(2, 3)

(3, 4)

(4, 5)


Cài đặt trên danh sách móc nối:

(1, 2)


(1, 3)

(1, 5)

(2, 3)

(3, 4)

(4, 5)

Ƣu điểm của danh sách cạnh:
Trong trƣờng hợp đồ thị thƣa (có số cạnh tƣơng đối nhỏ: chẳng hạn
m<6n), cách biểu diễn bằng danh sách cạnh sẽ tiết kiệm đƣợc không gian
lƣu trữ, bởi nó chỉ cần 2m ô nhớ để lƣu danh sách cạnh.
Trong một số trƣờng hợp, ta phải xét tất cả các cạnh của đồ thị thì cài
đặt trên danh sách cạnh làm cho việc duyệt các cạnh dễ dàng hơn.
Nhƣợc điểm của danh sách cạnh:
Nhƣợc điểm cơ bản của danh sách cạnh là khi ta cần duyệt tất cả các
đỉn kề với đỉn v nào đó của đồ thị, thì chẳng có cách nào khác là phải
duyệt tất cả các cạnh, lọc ra những cạnh có chứa đỉn v và xét đỉnh còn lại.
Điều đó khá tốn thời gian trong trƣờng hợp đồ thị dày (nhiều cạnh).
1.2.3. Danh sách kề (ADJACENCY LIST)
Để khắc phục nhƣợc điểm của các phƣơng pháp ma trận kề và danh
sách cạnh, ngƣời ta đề xuất phƣơng pháp biểu diễn đồ thị bằng danh sách
kề. Trong cách biểu diễn này, với mỗi đỉnh v của đồ thị, ta cho tƣơng ứng
với nó một danh sách các đỉnh kề với v.
Với đồ thị G = (V, E). V gồm n đỉnh và E gồm m cạnh. Có hai cách
cài đặt danh sách kề phổ biến:
1


2

4

3

5


Cách 1: Dùng một mảng các đỉnh, mảng đó chia làm n đoạn, đoạn
thứ i trong mảng lƣu danh sách các đỉnh kề với đỉnh i: với đồ thị trên,
danh sách kề sẽ là một mảng Adj gồm 12 phần tử:
1

2
5

3

4

2

3

5

1


3

6

7
8

1

2

4

9

10

11

12

3

5

1

4

Để biết một đoạn thẳng nằm từ chỉ số nào tới chỉ số nào, ta có một

mảng Head lƣu vị trí riêng. Head[i] sẽ bằng chỉ số đứng liền trƣớc đoạn
thứ i. Quy ƣớc Head[n+1] bằng m. Với đồ thị trên thì mảng Head[1..6] sẽ
là: (0,3,5,8,10,12).
Các phần tử Adj[Head[i]+1…Head[i+1]] sẽ chứa các đỉnh kề với
đỉnh i. Lƣu ý rằng với đồ thị có hƣớng gồm m cung thì cấu trúc cần phải
đủ chứa m phần tử, với đồ thị vô hƣớng m cạnh thì cấu trúc này cần phải
đủ chứa 2m phần tử.
Cách 2: Dùng các danh sách móc nối: với mỗi đỉnh i của đồ thị, ta
cho tƣơng ứng với nó một danh sách móc nối các đỉnh kề với i, có nghĩa
là tƣơng ứng với một đỉn i, ta phải lƣu lại List[i] là chốt của một danh
sách móc nối. Ví dụ với đồ thị trên, các danh sách móc nối sẽ là:

List 1:

2

3

List 2:

1

3

List 3:

1

2


5

4


List 4:

3

5

List 5:

4

4

Ƣu điểm của danh sách kề:
Đối với danh sách kề, việc duyệt tất cả các đỉnh kề với một đỉn v cho
trƣớc là hết sức dễ dàng, cái tên “danh sách kề” đã cho thấy rõ điều
này.Việc duyệt tất cả các cạnh cũng đơn giản vì một cạnh thực ra là nối
một đỉnh với một đỉnh khác kề nó
Nhƣợc điểm của danh sách kề
Danh sách kề yếu hơn mà trận kề ở việc kiểm tra (u,v) có phải là
cạnh hay không, bởi trong cách biểu diễn này ta sẽ phải duyệt toàn bộ
danh sách kề của u hay danh sách kề của v.


CHƢƠNG 2
LƢỢC SỬ PHÁT TRIỂN CỦA CÁC THUẬT TOÁN ACO

Trong chƣơng này sẽ giới thiệu lƣợc sử phát triển của các thuật toán
ACO, bắt đầu từ các thí nghiệm sinh học về cách chọn đƣờng đi của các
con kiến thực rồi đến hình thành ý tƣởng thuật toán từ các thí nghiệm đó,
sau đó là sự ra đời của hệ kiến, hệ đàn kiến, hệ kiến Max-Min...
Các thuật toán kiến có đƣợc nhờ sự quan sát cách chọn đƣờng đi của
các con kiến thực. Các con kiến là các côn trùng sống trong các bầy đàn
và sống thành xã hội, chúng xuất hiện trên trái đất cách đây đã hơn 100
6

triệu năm, số lƣợng của chúng khoảng 10 con (xem [13]). Sự tổ chức bầy
đàn của các con kiến trong xã hội kiến có cấu trúc cao đã thu hút nhiều
nghiên cứu sinh học.
Trong xã hội kiến, các con kiến thợ thƣờng xuyên tìm kiếm thức ăn
đem về tổ và đặc biệt là làm thế nào các con kiến có thể tìm đƣợc đƣờng
đi ngắn nhất từ tổ của chúng tới nguồn thức ăn?
2.1.

Nguồn gốc sinh học của các thuật toán kiến
Trong quá trình đi từ tổ đến nguồn thức ăn và ngƣợc lại, các con kiến
rải xuống đất một hoá chất gọi là mùi (tên khoa học là pheromone) và tạo
nên các vết mùi (pheromone trail). Các con kiến ngửi thấy mùi và chúng
có khuynh hƣớng chọn theo xác suất, các đƣờng đi đƣợc đánh dấu bởi sự
tập trung mùi mạnh. Vết mùi cho phép các con kiến tìm ra đƣờng quay lại
của chúng tới nguồn thức ăn hoặc tổ, nó cũng có thể đƣợc sử dụng bởi các
con kiến khác để tìm ra vị trí nguồn thức ăn.
Thực nghiệm cho thấy rằng, cách thức theo vết mùi (pheromone trail
following behavior) này là một phƣơng pháp luận hiệu quả để tìm ra
đƣờng đi ngắn nhất.



Nguồn thức ăn

Tổ kiến
Nguồn thức ăn

Nguồn thức ăn

Tổ kiến

Tổ kiến

Hình 1: Cách tìm đường đi của kiến
Các con kiến thƣờng để lại mùi (một chất hóa học đặc biệt mà chúng
có thể ngửi đƣợc) trên đƣờng đi. Bằng cách để lại mùi nhƣ vậy, chúng sẽ
tạo ra các vết mùi để lại trên đƣờng đi từ tổ đến nguồn thức ăn và ngƣợc
lại. Trong thực tế, bằng cách cảm nhận những vết mùi nhƣ vậy những con
kiến khác có thể tìm đƣờng tới các nguồn thức ăn do những con kiến
trƣớc đã tìm ra. Đồng thời, chúng có thể dựa vào đó để tìm đƣợc đƣờng
đi ngắn nhất từ tổ đến các nguồn thức ăn.
Nhằm nghiên cứu các cách tìm đƣờng đi của các con kiến trong điều
kiện quan sát đƣợc. J.L.Deneubourg[19] và các đồng nghiệp đã làm một
thí nghiệm sử dụng một cây cầu đôi nối từ tổ đến nguồn thức ăn, hình 2.


Tổ của một đàn kiến với nguồn thức ăn đƣợc ngăn bởi một các cầu đôi mà
hai nhánh của nó bằng nhau để nghiên cứu sự lƣu lại các vệt mùi và hành
vi của chúng. Tiếp đó các con kiến đƣợc thả và tự do đi lại giữa tổ và
nguồn thức ăn và phần trăm số kiến chọn nhánh nào để đi đƣợc quan sát
theo thời gian. Kết quả là sau một giai đoạn ban đầu có sự do dự, trong
chốc lát các con kiến có khuynh hƣớng chọn và hội tụ về cùng một đƣờng

đi.
Trong thí nghiệm trên, ban đầu không có mùi trên 2 nhánh, nên các
nhánh đƣợc chọn có cùng một xác suất. Tuy nhiên, do sự thăng giáng tự
nhiên, sau một giai đoạn ban đầu, nhánh trên đƣợc chọn nhiều hơn nhánh
dƣới. Bởi vì các con kiến rải mùi trong khi đi, số kiến lớn hơn ở nhánh
trên thì lƣợng mùi mạnh hơn, do đó kích thích nhiều con kiến chọn nó
hơn.
Nhánh trên

Thức ăn

Tổ kiến

Nhánh dƣới

Hình 2: Mô hình thí nghiệm cầu đôi 2 nhánh dài bằng nhau
Tiếp đó họ thay đổi thí nghiệm trên tới trƣờng hợp mà trong đó các
nhánh có chiều dài khác và thu đƣợc kết quả là theo thời gian dần dần hầu
hết con kiến đều đi vào nhánh ngắn hơn.
Kết quả đƣợc giải thích nhƣ sau: Do kỹ thuật rải mùi nhƣ nhau, khi
thực nghiệm bắt đầu, hai nhánh cầu đều không có mùi, nhƣ vậy lúc đầu
các con kiến chọn một trong hai nhánh theo xác suất là nhƣ nhau tức là


một nửa số con kiến sẽ chọn nhánh ngắn và nửa còn lại sẽ chọn nhánh dài.
Trong quá trình tìm kiếm thức ăn và đƣa về tổ, con kiến luôn để lại vệt
mùi trên hai nhánh cầu. Do nhánh ngắn hơn, thời gian con kiến đi sẽ ít
hơn (đồng nghĩa với số lần các con kiến đi lại nhiều hơn), lƣợng mùi trên
nhánh này sẽ nhiều hơn, nên theo thời gian các con kiến sẽ chọn nhánh
ngắn hơn để đi do cƣờng độ vệt mùi trên nhánh này cao hơn, minh hoạ

trong hình 3.
Nguồn thức ăn

Tổ kiến
(a)

Nguồn thức ăn

Tổ kiến
(b)

Hình 3: Thí nghiệm cầu đôi.
(a) Các con kiến bắt đầu khám phá chiếc cầu.
(b) Hầu hết các con kiến chọn đường đi ngắn nhất.
Trong các thuật toán kiến, cây cầu đôi ở thí nghiệm của
Deneubourg đƣợc thay bằng một đồ thị cấu trúc và các vết mùi của con
kiến là những vết mùi nhân tạo. Đồng thời khi muốn giải quyết những bài
toán phức tạp hơn những bài toán của con kiến thực, ngƣời ta cung cấp
thêm cho con kiến nhân tạo một số khả năng đặc biệt nhƣ bộ nhớ và khả
năng để lại một lƣợng mùi tỷ lệ với hiệu quả của lời giải tìm đƣợc (một
hành vi tƣơng tự nhƣ hành vi của con kiến thực khi chúng mang thức ăn
quay về tổ để lại một lƣợng mùi tỷ lệ với lƣợng thức ăn kiếm đƣợc).


Mỗi con kiến đơn lẻ chỉ có một sự đóng góp rất nhỏ trongquá trình
tìm đƣờng đi. Mặc dù một con kiến đơn lẻ về nguyên tắc có khả năng xây
dựng một lời giải (Ví dụ: tìm ra một đƣờng đi giữa tổ và nguồn thức ăn),
nhƣng cả đàn kiến mới là đối tƣợng biểu diễn cách thức "tìm đƣờng đi
ngắn nhất". Cách thức này là một thuộc tính nổi bật (emergent) của đàn
kiến. Cũng cần chú ý là các con kiến có thể thực hiện cách thức riêng biệt

này bằng cách sử dụng một dạng truyền thông gián tiếp-stigmergy bằng
cách rải mùi.
2.2.

Truyền thông gián tiếp-stigmergy
Dạng truyền thông stigmergy đƣợc đƣa ra trong công trình của
Grassé[20](Bellicositermes Natalensis và Cubitermes), stigmergy là "Mô
phỏng các thợ (workers-một đẳng cấp trong các đàn mối) bởi hiệu suất mà
chúng đạt đƣợc".
Mặc dù Grassé giới thiệu thuật ngữ stigmergy để giải thích các hành
vi của xã hội đàn mối, nhƣng sau đó thuật ngữ này đƣợc dùng để mô tả
dạng truyền thống gián tiếp bởi sự thay đổi môi trƣờng có thể quan sát
đƣợc ở xã hội côn trùng.
Những đặc trƣng của stigmergy:
-Tính vật lý tự nhiên của thông tin đƣợc sinh ra bởi các côn trùng
truyền thông, tƣơng ứng với sự thay đổi các trạng thái môi trƣờng vật lý
mà đƣợc thăm bởi các côn trùng.
- Tính cục bộ tự nhiên của thông tin đƣợc sinh ra, chỉ có thể đƣợc
truy cập bởi các côn trùng thăm trạng thái đó.
Vì vậy ta có thể nói truyền thông stigmergy là một dạng truyền
thông gián tiếp dựa vào thay đổi thông tin qua tác động vật lý làm
thay đổi môi trƣờng.


2.3.

Quá trình phát triển của các thuật toán ACO
Hệ kiến là thể hiện đầu tiên và điển hình của các thuật toán ACO,
hầu hết các thuật toán ACO hiện dùng đều đƣợc phát triển từ thuật toán
này. Vì vậy, trƣớc khi đi vào tìm hiểu các thuật toán ACO, ta đi tìm hiểu

hệ kiến và các cải tiến quan trọng của chúng là hệ đàn kiến và hệ kiến
Max-Min.

2.3.1. Hệ kiến
Hệ kiến (Ant System-AS)đƣợc đề xuất từ cách ứng xử đƣợc đề cập ở
trên của các con kiến thực, là một thuật toán mà trong đó một tập các con
kiến nhân tạo hợp tác với nhau để tìm lời giải của một bài toán bằng việc
trao đổi thông tin thông qua mùi đƣợc rải trên các cạnh của một đồ thị.
Có nhiều thuật toán AS nhƣ ant-cycle, ant-density, và ant-quantity, ở
đây chỉ xét thuật toán ant-cycle. Do thuật toán ant-cycle có kết quả thực
nghiệm tốt hơn hai thuật toán kia, nên sau này nó đƣợc gọi đơn giản là
thuật toán AS, trong khi hai thuật toán còn lại về sau không còn đƣợc
nghiên cứu và phát triển nữa.
Hệ kiến hoạt động nhƣ sau: mỗi con kiến sinh ra một đƣờng đi (tour)
bằng cách chọn những thành phố theo một qui tắc chọn thành phố
mới(state transition rule) ngẫu nhiên, những con kiến thích đi tới các
thành phố mà nối với những cạnh ngắn có lƣợng mùi cao. Khi tất cả các
con kiến đã hoàn thành đƣờng đi của nó, một qui tắc cập nhật mùi toàn
cục(global pheromone updating rule)đƣợc áp dụng:
i)

Một tỉ lệ mùi bị bốc hơi trên tất các các cạnh bởi một hệ số bay
hơi mùi cho trƣớc (những cạnh không đƣợc làm tƣơi sẽ ít
đƣợc con kiến chú ý).

ii)

Mỗi con kiến rải một lƣợng mùi lên các cạnh thuộc đƣờng đi
tƣơng xứng với chiều dài đƣờng đi của nó (hay nói cách khác



×