Tải bản đầy đủ (.pdf) (65 trang)

Một số thuật toán giải bài toán phủ đỉnh

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 (1.22 MB, 65 trang )

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


ĐẠI HỌC THÁI NGUYÊN
THÔNG



PHÙNG DƢƠNG HOÀNG


MỘT SỐ THUẬT TOÁN GIẢI BÀI TOÁN PHỦ
ĐỈNH



L






Thái Nguyên - 20

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

i


LỜI CAM ĐOAN


Tôi xin cam đoan rằng, đây là công trình nghiên cứu của tôi trong đó có
sự giúp đỡ tận tình của thầy giáo hướng dẫn và các thầy cô tại Viện CNTT,
các thầy, cô giáo Trường Đại học Công nghệ Thông tin và Truyền thông, sự
hỗ trợ của các đồng nghi . Các nội dung nghiên cứu và kết quả trong
đề tài này là hoàn toàn trung thực.
Trong luận văn, tôi có tham khảo đến một số tài liệu của một số tác giả
đã được liệt kê tại phần Tài liệu tham khảo ở cuối luận văn.

Thái Nguyên, tháng 6 năm 2014
Tác giả


Phùng Dƣơng Hoàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

ii
LỜI CẢM ƠN
Để hoàn thành chương trình cao học và viết luận văn này, tôi đã nhận
được sự hướng dẫn, giúp đỡ và góp ý nhiệt tình của quý thầy cô trường Đại
học Công nghệ Thông tin và Truyền thông - Đại học Thái Nguyên.
Trước hết, tôi xin chân thành cảm ơn đến quý thầy cô trường Đại học
Công nghệ thông tin và truyền thông - Đại học Thái Nguyên, các thầy cô
Viện CNTT, đặc biệt là những thầy cô đã tận tình dạy bảo cho tôi trong suốt
thời gian học tập tại trường.
Tôi xin gửi lời biết ơn sâu sắc đến GS.TS Đặng Quang Á đã dành rất
nhiều thời gian và tâm huyết hướng dẫn nghiên cứu và giúp tôi hoàn thành
luận văn tốt nghiệp.
Nhân đây, tôi xin chân thành cảm ơn Ban giám hiệu trường Đại học
Công nghệ Thông tin và Truyền thông - Đại học Thái Nguyên đã tạo rất nhiều

điều kiện để tôi học tập và hoàn thành tốt khóa học.
Mặc dù tôi đã có nhiều cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt
tình và năng lực của mình, tuy nhiên không thể tránh khỏi những thiếu sót, tôi
rất mong nhận được những đóng góp quí báu của quý thầy cô và các bạn.
Lời cảm ơn sau cùng tôi xin dành cho gia đình và những người bạn đã
hết lòng quan tâm và tạo điều kiện tốt nhất để tôi hoàn thành luận văn tốt
nghiệp này!
Tôi xin chân thành cảm ơn!
Thái Nguyên, tháng 6 năm 2014
Học viên thực hiện


Phùng Dƣơng Hoàng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

iii
MỤC LỤC
Trang
Trang bìa phụ
Lời cam đoan i
Lời cảm ơn ii
Mục lục iii
Danh mục các hình v
LỜI NÓI ĐẦU 1
Chƣơng 1: CÁC PHƢƠNG PHÁP HEURISTIC GIẢI CÁC BÀI TOÁN
NP-C 3
1.1. Giới thiệu chung về bài toán NP-C 3
1.1.1. Lớp bài toán P 3
1.1.2. Lớp bài toán NP 3

1.1.3. Lớp bài toán NP-đầy đủ (NP-Complete) 4
1.2. Một số bài toán NP-C trong lý thuyết đồ thị, trong quy hoạch nguyên 5
1.3. Khái niệm chung về các phương pháp Heuristic 8
1.4. Một số phương pháp Heuristic giải các bài toán NP-C 9
1.4.1. Thuật toán tham lam 9
1.4.1.1. Giới thiệu chung 9
1.4.1.2. Thuật toán cho phương pháp tham lam
10
1.4.1.3. Ví dụ áp dụng 11
1.4.1.4. Đánh giá
14
1.4.2. Giới thiệu về mạng nơ-ron 14
1.4.2.1. Lịch sử phát triển 14
1.4.2.2. Mô hình mạng nơ-ron nhân tạo 15
1.4.2.3. Phạm vi ứng dụng của mạng nơ-ron 17
1.4.2.4. Mạng nơ-ron Hopfield 18

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

iv
Chƣơng 2: BÀI TOÁN PHỦ ĐỈNH VÀ MỘT SỐ THUẬT TOÁN GIẢI
BÀI TOÁN PHỦ ĐỈNH 26
2.1. Giới thiệu bài toán phủ đỉnh 26
2.2. Một số thuật toán giải bài toán phủ đỉnh 27
2.2.1. Thuật toán tham 27
2.2.2. Thuật toán mới của Dharwadker 32
Chƣơng 3: MÔ PHỎNG SỐ 39
3.1. Lựa chọn phương pháp sử dụng 39
3.2. Xây dựng chương trình 39
3.3. Phân tích và đánh giá kết quả 46

KẾT LUẬN 58
TÀI LIỆU THAM KHẢO 59

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

v
DANH MỤC CÁC HÌNH

Trang
Hình 1.1: Mối quan hệ giữa lớp P và NP 4
Hình 1.2. Hình bài toán về tập độc lập 6
Hình 1.3: Mô hình mạng Hopfield 19
Hình 1.4: Lời giải tốt và xấu của bài toán sánh cặp có trọng 24
Hình 2.1: Thí dụ về phủ đỉnh 26
Hình 2.2: Thí dụ về bài toán phủ đỉnh theo phương pháp tham (n=7) 28
Hình 2.3: Thí dụ về bài toán phủ đỉnh theo phương pháp tham (n=13) 30
Hình 2.4: Thí dụ về bài toán phủ đỉnh theo Dharwadker (n=12) 34
Hình 3.1: Chương trình tìm phủ đỉnh của một đồ thị n=12 45
Hình 3.2: Phủ đỉnh của đồ thị n=4 47
Hình 3.3: Phủ đỉnh của đồ thị n=6 49
Hình 3.4: Phủ đỉnh của đồ thị n=6 50
Hình 3.5: Phủ đỉnh của đồ thị n=7 51
Hình 3.6: Phủ đỉnh của đồ thị n=8 53
Hình 3.7: Phủ đỉnh của đồ thị n=8 54
Hình 3.8: Phủ đỉnh của đồ thị n=10 56
Hình 3.9: Phủ đỉnh của đồ thị n=11 57

1
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


LỜI NÓI ĐẦU

Trong thực tế có rất nhiều bài toán phức tạp thuộc lớp bài toán NP- C
và bài toán tối ưu có ràng buộc, cũng có nhiều công trình nghiên cứu để giải
quyết các bài toán đó, trong đó có nhiều bài toán của lý thuyết đồ thị như: bài
toán phủ đỉnh, bài toán tập độc lập, bài toán tô mầu đồ thị, bài toán người bán
hàng rong, bài toán phẳng hóa đồ thị, nhiều bài toán quy hoạch nguyên như:
bài toán ba lô, bài toán đóng thùng, Vì các bài toán loại NP-C có độ phức tạp
hàm mũ nên khi dữ liệu đầu vào lớn nên nói chung người ta không thể thu
được lời giải đúng của bài toán và buộc phải tìm lời giải gần đúng. Có nhiều
thuật toán heuristic với thời gian đa thức để tìm nghiệm xấp xỉ của các bài
toán NP-C. Những năm gần đây trên thế giới đã đưa ra một số phương pháp
và thuật giải nhằm giải quyết các bài toán tối ưu thuộc lớp NP-C và được áp
dụng rộng rãi trong lĩnh vực Công nghệ thông tin. Việc nghiên cứu và áp
dụng những thành tựu mới vào việc phân tích, thiết kế, giải quyết một số bài
toán là một trong những vấn đề nóng đang rất được quan tâm.
Nhận thức được vấn đề đó và có sự gợi ý, định hướng của GS.TS Đặng
Quang Á em đã mạnh dạn nghiên cứu đề tài: "Một số thuật toán giải bài
toán phủ đỉnh". Nội dung cơ bản của luận văn gồm có ba chương:
Chương một giới thiệu chung về bài toán NP-C; một số bài toán NP-C
trong lý thuyết đồ thị, trong quy hoạch nguyên; giới thiệu một số phương
pháp Heuristic giải các bài toán NP-C.
Chương hai giới thiệu bài toán phủ đỉnh và một số phương pháp giải
bài toán phủ đỉnh.
Chương ba ứng dụng.
Qua luận văn này em xin chân thành cảm ơn: GS.TS Đặng Quang Á -
Viện Công nghệ Thông tin đã tận tình giúp đỡ, động viên, định hướng,
2
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


hướng dẫn em nghiên cứu và hoàn thành luận văn. Em xin cảm ơn các thầy
cô giáo trong viện Công nghệ thông tin, các thầy cô giáo Trường Đại học
Công nghệ Thông tin và Truyền thông - Đại học Thái Nguyên, đã giảng dạy
và giúp đỡ em trong hai năm học vừa qua, cảm ơn sự giúp đỡ nhiệt tình của
các bạn đồng nghiệp.
Xin chân thành cảm ơn!
3
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Chƣơng 1
CÁC PHƢƠNG PHÁP HEURISTIC GIẢI CÁC BÀI TOÁN NP-C
1.1. Giới thiệu chung về bài toán NP-C
1.1.1. Lớp bài toán P
Định nghĩa 1.1: Ta gọi lớp P là lớp những bài toán quyết định giải
được bằng máy tính Turing đơn định trong thời gian đa thức.
Một ngôn ngữ L thuộc lớp P nếu có một hàm đa thức T(n) sao cho
L=L(M) với một máy Turing đơn định nào đó có độ phức tạp thời gian T(n).
Như vậy, lớp P gần như tương ứng với lớp các bài toán quyết định giải
được trong thời gian đa thức, về mặt lý thuyết, có thể xem là lớp các bài toán dễ.
1.1.2. Lớp bài toán NP
Ta gọi lớp NP là lớp các bài toán quyết định có thể giải được bằng
máy tính Turing không đơn định trong khoảng thời gian đa thức.
Một cách không hình thức, chúng ta nói một ngôn ngữ L thuộc lớp NP
nếu tồn tại một máy tính Turing không đơn định M và một độ phức tạp thời
gian T(n) sao cho L = L(M) và khi M được cho một nguyên liệu có độ dài n
thì nó sẽ kiểm nhận sau không quá T(n) bước chuyển.
Để nói về mối quan hệ giữa lớp P và lớp NP ta thấy do máy tính Turing
đơn định là trường hợp đặc biệt của máy tính Turing không đơn định nên các
bài toán thuộc lớp P sẽ thuộc lớp NP.
Tuy P NP là rất hiển nhiên song ta vẫn chưa biết P = NP hay không,

nhưng hầu hết các nhà nghiên cứu đều tin rằng P NP. Từ đó ta có mô hình
mô phỏng sau:


NP
P

4
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Hình 1.1. Mối quan hệ giữa lớp P và NP
1.1.3. Lớp bài toán NP-đầy đủ (NP-Complete)
Định nghĩa 1.2: Ta nói L là bài toán thuộc loại NP-complete nếu các
khẳng định sau đều đúng:
1) L thuộc NP.
2) Với mọi ngôn ngữ L
'
NP có một phép thu thời gian đa thức L
'
về L.
Bài toán NP-complete đầu tiên chúng ta sẽ xét là bài toán thỏa SAT
(Boolean satisfiability). Chúng ta sẽ chứng tỏ rằng ngôn ngữ của mọi máy
Turing không đơn định (NTM) thời gian đa thức đều có một phép thu thời
gian đa thức về SAT. Khi đã có được một số bài toán thuộc NP-complete
(NP-C) chúng ta có thể chứng minh một bài toán mới thuộc NP-C bằng cách
thu một bài toán đã biết là NP-C về bài toán đó nhờ một phép thu thời gian đa
thức [1].
Định lý dưới đây cho biết vì sao một phép thu như thế chứng minh
được bài toán đích là NP-C.
Định lý 1.1: Nếu bài toán P1 là NP-C, P2 là NP và có một phép thu

thời gian đa thức từ P1 về P2 thì P2 cũng là NP-C.
Chứng minh: Ta cần chứng tỏ rằng mỗi ngôn ngữ L thuộc NP đều thu
được P2 trong thời gian đa thức. Khi đó theo định nghĩa P2 sẽ thuộc NP-C.
Thật vậy vì P1 là NP-C nên có một phép thu đa thức L về P1. Giả sử
thời gian của phép thu này là P(n). Vì thế một chuỗi W L có chiều dài n
được biến đổi thành một chuỗi x P1 có chiều dài tối đa là P(n). Ta cũng biết
rằng có một phép thu đa thức từ P1 về P2. Giả sử thời gian của phép thu này
là q(m). Thế thì phép thu này biến đổi chuỗi x P1 về một chuỗi y nào đó
thuộc P2 với thời gian tối đa là q(p(n)). Vì thế phép biến đổi W L về y P2
5
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

mất thời gian tối đa là p(n) + q(p(n)). đây cũng là một đa thức. Như vậy, ta
kết luận rằng L có thể thu về P2 trong thời gian đa thức.
Định lý 1.2: Nếu có một bài toán nào đó là NP-C mà lại thuộc lớp P thì
ta có P = NP.
Chứng minh: Giả sử có bài toán Q NP-C và Q P. Thế thì mọi ngôn
ngữ L trong NP đều thu được về Q trong thời gian đa thức. Nếu Q P thì L
P. Như vậy NP P. Kết hợp với điều hiển nhiên là P NP ta được P = NP.
Nhận xét: Chúng ta vẫn tin tưởng rằng nhiều bài toán thuộc NP nhưng không
thuộc P nên chúng ta sẽ xem việc chứng minh một bài toán là NP-C có giá trị
ngang với việc chứng minh rằng nó không thể giải được trong thời gian đa
thức, và vì thế không có lời giải đúng nào bằng máy tính (và ta sẽ chỉ đi tìm
lời giải gần đúng).
1.2. Một số bài toán NP-C trong lý thuyết đồ thị, trong quy hoạch nguyên
Các lớp bài toán NP-Complete là rất rộng. Hầu hết các bài toán nổi
tiếng mà
chúng ta đã biết như bài toán người bán hàng, bài toán balô, các
bài toán tổ hợp,
phân tích ra thừa số… đều là các bài toán khó. Sau đây là

một số bài toán khó thuộc lớp NP-Complete trong lý thuyết đồ thị, trong quy
hoạch nguyên.
1.2.1. Bài toán về tập độc lập (Independent set)
Cho G là một đồ thị vô hướng. Ta nói tập con I của các đỉnh thuộc G là
một tập độc lập nếu không có hai đỉnh nào của I được nối bởi một cạnh của G
(tức là I là tập các đỉnh mà không có 2 đỉnh nào liền kề nhau). Một tập độc
lập là cực đại nếu nó có nhiều nút nhất trong số các tập độc lập.
Thí dụ: Đồ thị trong hình 1.2 sau có tập độc lập gồm các đỉnh {1, 4}.
Đó cũng là tập độc lập cực đại.



1
3
2
4
6
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên


Hình 1.2. Hình bài toán về tập độc lập
1.2.2. Bài toán phủ đỉnh (Vertex-Cover)
Bài toán được phát biểu như sau:
- Cho đồ thị G = (V, E) và số k N
*
sao cho k ≤ |V|
- Hỏi tồn tại hay không một tập con V’ của V sao cho |V’| < k và mỗi
cạnh {u, e} E thì một trong 2 đỉnh u hoặc e (hoặc cả đỉnh u và e ) phải
thuộc V’.
1.2.3. Bài toán đồ thị con đủ (Clique Problem)

Bài toán được phát biểu như sau:
- Cho đồ thị G = (V, E) và k N
*
thoả mãn k ≤ |V|
- Hỏi tồn tại hay không một tập con V’ của V sao cho |V'| k mà mọi
cặp
đỉnh trong V’ đều được nối bởi 1 cạnh trong E.
1.2.4. Bài toán về tô màu đồ thị
Phép tô màu đồ thị bằng gán màu cho các đỉnh sao cho hai đỉnh liền kề
được tô bởi hai màu khác nhau.
Sắc số của đồ thị: là số màu ít nhất cần dùng để tô màu đồ thị.
1.2.5. Bài toán đồ thị con đẳng cấu (Subgraph Isomorphism)
- Cho hai đồ thị: G
1
= (V
1
, E
1
) và G
2
= (V
2
, E
2
).
- Hỏi G
1
có chứa đồ thị con G’ = (V’, E’) đẳng cấu với đồ thị G
2
, tức

tồn tại
tập con V’ V, E’ E thỏa |V’| = |V
2
|, |E’| = |E
2
| và một song ánh f :
V
2
→ V’ sao cho (u, v) E
2
khi và chỉ khi {f(u), f(v)} E’.
1.2.6. Bài toán chu trình Hamilton (Hamilton Cycle)
Chu trình Hamilton là chu trình sơ cấp đi qua tất cả các đỉnh của đồ thị.
Bài toán được phát biểu như sau:
- Cho đồ thị G = (V, E) có chu trình Hamilton H.
7
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

- Tìm trong đồ thị G một chu trình Hamilton đúng bằng chu trình H đã cho.
1.2.7. Bài toán người bán hàng (Traveling Salesman)
Cho đồ thị G và một số k nguyên, mỗi cạnh e của G có một trọng số
nguyên C(e). Vấn đề đặt ra là có tồn tại một chu trình đi qua tất cả các đỉnh
của G (mỗi đỉnh đúng một lần) mà tổng trọng số các cạnh đã đi qua không
vượt quá k?
Ta phát biểu lại bài toán như sau:
- Cho tập n thành phố C = {C
1
, C
2
, …, C

n
} với khoảng cách d(C
i
, C
j
)
Z
+
và một số nguyên dương k
- Hỏi có tồn tại một hoán vị π trên {1, 2, …, n} sao cho:
n
−1

d(C
π(i)
, C
π(i+1)
) + d(C
π(m)
, C
π(1)
) ≤ k hay không?
i
=1
1.2.8. Bài toán TSP
Mục đích: xây dựng thuật toán hiệu quả cho kết quả gần đúng.
Xét ma trận cỡ n x n các khoảng cách [d
ij
], d
ij

> 0. Như thường lệ ta giả
thiết d
ij
= d
ji
và d
ii
= 0. Ta nói ma trận (d
ij
) thỏa mãn bất đẳng thức tam giác nếu
d
ij
+ d
jk
d
ik
1 i, j, k n.
Bất đẳng thức này thỏa mãn nếu d
ij
là khoảng cách thông thường giữa 2
điểm (x
i
, y
i
) và (x
j
, y
j
):
d

ij
=
22
( ) ( )
i j i j
x x d d

Có thể có các ma trận (d
ij
) khác thỏa mãn bất đằng thức tam giác.
1.2.9. Bài toán ba lô nguyên (0-1)
Giả sử ba lô có dung lượng là W. Có các vật b
1
, , b
n
với dung lượng
w
i
và giá trị p
i
(profit). Xếp các vật vào ba lô sao cho đạt tổng giá trị lớn nhất
(giả thiết là các vật không thể chia nhỏ).
8
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Ký hiệu x
i
là biến quyết định (loại 0-1):
x
i

=
0
i
b1 nÕu chän vËt
nÕukh¸c

Khi đó bài toán được phát biểu như sau:
Tìm vector x = (x
1
, x
2
, , x
n
), x
i
{0, 1} sao cho
1
max
n
ii
i
px
với
ràng buộc
1
n
ii
i
w x W


1.3. Khái niệm chung về các phƣơng pháp Heuristic
- Heuristic là một sự mở rộng khái niệm thuật toán. Nó thể hiện cách
giải bài toán với các đặc tính sau:
+ Thườ ợc lời giải tốt (nhưng không chắc là lời giải tốt nhất).
+ Thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật
tối ưu, vì vậy chi phí thấp hơn.
+ Thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành
động của con người.
- Có nhiều phương pháp để xây dựng một thuật giải Heuristic, trong đó
người ta thường dựa vào một số nguyên lý cơ bản như sau:
+ Nguyên lý vét cạn thông minh: Trong một bài toán tìm kiếm nào đó,
khi không gian tìm kiếm lớn, ta thường tìm cách giới hạn lại không gian tìm
kiếm hoặc thực hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để
nhanh chóng tìm ra mục tiêu.
+ Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi
toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục
bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải.
+ Nguyên lý thứ tự: Thực hiện hành động dựa trên một cấu trúc thứ tự
hợp lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt.
9
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

+ Hàm Heuristic: Trong việc xây dựng các thuật giải Heuristic, người
ta thường dùng các hàm Heuristic. Đó là các hàm đánh giá thô, giá trị của
hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải. Nhờ giá
trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước
của thuật giải.
1.4. Một số phƣơng pháp Heuristic giải các bài toán NP-C
1.4.1. Thuật toán tham lam
1.4.1.1. Giới thiệu chung

Định nghĩa 1.3: Giải thuật tham lam là một thuật toán giải quyết một
bài toán theo kiểu metaheuristic để tìm kiếm lựa chọn tối ưu ở mỗi bước đi
với hy vọng tìm được tối ưu toàn cục.
Giải thuật tham lam có 5 thành phần:
a) Một tập hợp các ứng viên để từ đó tạo ra lời giải;
b) Một hàm lựa chọn để lựa chọn ứng viên tốt nhất để bổ sung vào lời giải;
c) Một hàm khả thi dùng để quyết định một ứng viên có thể là một lời giải;
d) Một hàm mục tiêu để ấn định giá trị lời giải hoặc một lời giải chưa
hoàn chỉnh;
e) Một hàm đánh giá để chỉ ra khi nào ta tìm ra một lời giải hoàn chỉnh.
- Hai thành phần quyết định nhất tới quyết định tham lam:
+ Tính chất lựa chọn tham lam: Chúng ta có thể lựa chọn giải pháp nào
được cho là tốt nhất ở thời điểm hiện tại và sau đó giải bài toán con nảy sinh
từ việc thực hiện lựa chọn vừa rồi. Lựa chọn của thuật toán tham lam có thể
phụ thuộc vào các lựa chọn trước đó.
Thuật toán tiến triển theo kiểu thực hiện các chọn lựa theo một vòng
lặp, cùng lúc đó thu nhỏ bài toán đã cho về một bài toán con nhỏ hơn. Giải
thuật tham lam lựa chọn sớm và thay đổi đường đi thuật toán theo lựa chọn
10
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

đó, và không bao giờ xét lại các lựa chọn cũ. Đối với một số bài toán, đây có
thể là một thuật toán không chính xác.
+ Cấu trúc con tối ưu: Một bài toán được gọi là "có cấu trúc tối ưu",
nếu một lời giải tối ưu của bài toán con chứa lời giải tối ưu của bài toán
lớn hơn.
- Ý tưởng của phương pháp tham lam:
+ Phương pháp tham lam là kỹ thuật thiết kế thường được dùng để giải
các bài toán tối ưu. Phương pháp được tiến hành theo nhiều bước. Tại mỗi
bước, theo một lựa chọn nào đó (xác định bằng một hàm chọn), sẽ tìm một lời

giải tối ưu cho bài toán nhỏ tương ứng. Lời giải của bài toán được bổ sung
dần từng bước từ lời giải của các bài toán con. Các lời giải tìm được bằng
phương pháp tham lam thường chỉ là chấp nhận theo điều kiện nào đó, chưa
chắc là tối ưu.
+ Cho trước một tập A gồm n đối tượng, ta cần phải chọn một tập con
S của A.
Với một tập con S được chọn ra thoả mãn các yêu cầu của bài toán,
ta gọi là một nghiệm chấp nhận được. Một hàm mục tiêu gắn mỗi nghiệm
chấp nhận được với
một giá trị. Nghiệm tối ưu là nghiệm chấp nhận được mà
tại đó hàm mục tiêu đạt giá trị nhỏ nhất (lớn nhất).
+ Đặc trưng tham lam của phương pháp thể hiện bởi: trong mỗi bước
việc xử lý sẽ tuân theo một sự lựa chọn trước, không kể đến tình trạng không
tốt có thể xảy ra khi thực hiện lựa chọn lúc đầu.
1.4.1.2. Thuật toán cho phương pháp tham lam


Chọn S từ tập A.
Tính chất tham lam của thuật toán định hướng bởi hàm Chọn.
+ Khởi động S = Ø
+ Trong khi A ≠ Ø:
- Chọn phần tử tốt nhất của A gán vào x : x = Chọn (A);
11
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

- Cập nhật các đối tượng để chọn: A = A - { x };
- Nếu S U { x } thoả mãn yêu cầu bài toán thì
Cập nhật lời giải: S = S U { x };
Thủ tục thuật toán tham lam có thể cài đặt như sau:
Input: A [ 1 n ]

Output: S là lời giải;
Greedy ( A, n ) ≡
S = Ø;
While ( A ≠ Ø )
{
x = Chọn (A);
A = A - { x }
If ( S U { x } chấp nhận được )
S = S U { x };
}
return S;
1.4.1.3. Ví dụ áp dụng
- Bài toán:
Một người du lịch muốn tham quan n thành phố T
1
, …, T
n
. Xuất phát
từ một thành phố nào đó, người du lịch muốn đi qua tất cả các thành phố còn
lại, mỗi thành phố đi qua đúng một lần rồi quay trở lại thành phố đã xuất phát.
Gọi C
ij
là chi phí đi từ thành phố T
i
đến T
j
. Hãy tìm một hành trình
thoả yêu cầu bài toán sao cho tổng chi phí là nhỏ nhất.
- Ý tưởng:
Đây là bài toán tìm chu trình có trọng số nhỏ nhất trong một đơn đồ

thị có
hướng có trọng số.
Thuật toán tham lam cho bài toán là chọn thành phố có chi phí nhỏ nhất
12
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

tính từ thành phố hiện thời đến các thành phố chưa qua.
- Thuật toán
Input: C = ( C
i j
)
Output: TOUR // Hành trình tối ưu,
COST; // Chi phí tương ứng
Mô tả:
TOUR := 0; COST := 0; v:= u; // Khởi tạo
mọi k := 1 → n : // Thăm tất cả các thành phố
// Chọn cạnh kế
+ Chọn < v, w > là đoạn nối 2 thành phố có chi phí nhỏ nhất tính từ
thành phố v đến các thành phố chưa qua.
+ TOUR := TOUR + < v, w >; // Cập nhật lời giải
+ COST := COST + C
v w
; // Cập nhật chi phí
// chuyến đi hoàn thành
TOUR := TOUR + < v, u >;
COST := COST + C
v u
;
- Độ phức tạp của thuật toán
Thao tác chọn đỉnh thích hợp trong n đỉnh được tổ chức bằng một vòng

lặp để duyệt. Nên chi phí cho thuật toán xác định bởi 2 vòng lặp lồng nhau,
nên T(n) = V(n
2
).
- Cài đặt:
Int GTS ( mat a, int n, int TOUR [ max ], int Ddau )
{
int v, // Dinh dang xet
k, // Duyet qua n dinh de chon
w, // Dinh duoc chon trong moi buoc
int mini; // Chon min cac canh ( cung ) trong moi buoc
13
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

int COST; // Trong so nho nhat cua chu trinh
int daxet [ max ]; // Danh dau cac dinh da duoc su dung
for ( k = 1; k < = n; k ++ )
daxet [ k ] = 0; // Chua dinh nao duoc xet
COST = 0; // Luc dau, gia tri COST = = 0
int i; // Bien dem, dem tim du n dinh thi dung
v = Ddau; // hon dinh xuat phat la 1
i = 1
TOUR [ i ] = v; // Dua v vao chu trinh
daxet [ v ] = 1; // Dinh v da duoc xet
while ( i < n )
{
mini = VC;
for ( k = 1; k < = n; k ++ )
if (! daxet [ k ] )
if ( mini > a [ v ] [ k ] )

{
mini = a [ v ] [ k ];
w = k;
}
v = w;
i + +;
TOUR [ i ] = v;
daxet [ v ] = 1;
COST + = mini;
}
COST + = a [ v ] [ Ddau ];
14
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

return COST;
}
1.4.1.4. Đánh giá

Bài toán được giải quyết bằng thuật toán tham lam (thường là các bài
toán tối ưu) nếu như nó có hai đặc điểm sau:
- Tính lựa chọn tham lam (greedy choice property): Một nghiệm tối ưu
có thể nhận được bằng cách thực hiện các lựa chọn có vẻ như tốt nhất tại mỗi
thời điểm mà không cần quan tâm tới các gợi ý của nó đối với các nghiệm của
các bài toán con. Hay nói một cách khác là nghiệm tối ưu của bài toán có thể
nhận được bằng cách thực hiện các lựa chọn tối ưu cục bộ.
- Cấu trúc con tối ưu (optimal substructure): Một nghiệm tối ưu có thể
nhận được bằng cách gia tăng các nghiệm thành phần đã được xây
dựng
với một nghiệm tối ưu của bài toán con còn lại. Có nghĩa là một nghiệm tối
ưu sẽ chứa các nghiệm tối ưu đối với các bài toán con kích thước nhỏ hơn.

1.4.2. Giới thiệu về mạng nơ-ron
1.4.2.1. Lịch sử phát triển
Quá trình nghiên cứu và phát triển mạng nơ-ron nhân tạo có thể chia
thành bốn giai đoạn như sau:
+ Giai đoạn một: Có thể tính từ nghiên cứu của William (1890) về tâm
lý học với sự liên kết các nơ-ron thần kinh. Năm 1940, MeCulloch và Pitts đã
cho biết: nơ-ron có thể được mô hình hoá như thiết bị ngưỡng (giới hạn) để
thực hiện các phép tính logic và mô hình mạng nơ-ron của Mc Culloch-Pitts
cùng với giải thuật huấn luyện mạng của Hebb ra đời năm 1943.
+ Giai đoạn hai: Vào khoảng gần những năm 1960, một số mô hình nơ-
ron hoàn thiện hơn đã được đưa ra như: mô hình Perceptron của Rosenblatt
(1958), Adaline của Widrow (1962).
15
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

+ Giai đoạn ba: Có thể tính vào khoảng đầu thập niên 80. Những đóng
góp lớn cho mạng nơ-ron trong giai đoạn này phải kể đến Grossberg,
Kohonen, Rumelhart và Hopfield. Trong đó đóng góp lớn của Hopfield gồm
hai mạng phản hồi: mạng rời rạc năm 1982 và mạng liên tục năm 1984. Đặc
biệt, ông đã dự kiến nhiều khả năng tính toán lớn của mạng mà một nơ-ron
không có khả năng đó.
+ Giai đoạn bốn: Tính từ năm 1987 đến nay, rất nhiều công trình được
nghiên cứu để ứng dụng mạng nơ-ron vào các lĩnh vực, ví dụ như: kỹ thuật
tính, tối ưu, sinh học, y học, thống kê, giao thông, hoá học… Cho đến nay,
mạng nơ-ron đã tìm được và khẳng định được vị trí của mình trong rất nhiều
ứng dụng khác nhau.
1.4.2.2. Mô hình mạng nơ-ron nhân tạo
a. Nơ-ron sinh học
Hệ thần kinh ở người có khoảng 10
10

tế bào thần kinh được gọi là các
nơ-ron. Mỗi nơ-ron gồm có ba phần: Thân nơ-ron với nhân ở bên trong
(soma), một đầu thần kinh ra (axon) và một hệ thống hình cây thần kinh
(dendrite). Có nhiều loại nơ-ron khác nhau về kích thước và khả năng thu
phát tín hiệu. Tuy nhiên, chúng có cấu trúc và nguyên lý hoạt động chung.
Hoạt động của nơ-ron sinh học có thể mô tả tóm tắt như sau: Mỗi nơ-
ron nhận tín hiệu vào từ các tế bào thần kinh khác. Chúng tích hợp các tín
hiệu vào, khi tổng tín hiệu vượt quá một ngưỡng nào đó chúng tạo tín hiệu ra
và gửi tín hiệu này tới các nơ-ron khác thông qua dây thần kinh. Các nơ-ron
liên kết với nhau thành mạng. Mức độ bền vững của các liên kết này xác định
một hệ số gọi là trọng số liên kết.
b. Nơ-ron nhân tạo
+ Trọng số và tổng tín hiệu đầu vào:
16
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Mô phỏng nơ-ron sinh học, ta có nơ-ron nhân tạo. Mỗi nơ-ron có rất
nhiều dây thần kinh vào, nghĩa là mỗi nơ-ron có thể tiếp nhận đồng thời nhiều
tín hiệu.
+ Hàm kích hoạt:
Hàm biến đổi tín hiệu đầu vào net cho tín hiệu đầu ra out được gọi là hàm
kích hoạt. Hàm này có đặc điểm là không âm và bị chặn. Có nhiều dạng hàm
kích hoạt, người ta thường sử dụng một hàm kích hoạt chung cho toàn mạng.
Một số hàm kích hoạt thường được sử dụng:
(i) Hàm McCuloch-Pitts:
net
net
netfout
nÕu
nÕu

0
1
(1.1)
ở đây là ngưỡng.
(ii) Hàm McCuloch-Pitts trễ:
kh¸cnÕu
nÕu
nÕu
netf
LTPnet
UTPnet
netfout 0
1
(1.2)
ở đây UTP>LTP. Trong đó:
UTP là ngưỡng trên (Upper Trip Point).
LTP là ngưỡng dưới (Lower Trip Point).
c. Mạng nơ-ron
Mạng nơ-ron nhân tạo (Artificial Neural Network) là một cấu trúc
mạng được hình thành nên bởi một số lượng các nơ-ron nhân tạo liên kết với
nhau. Mỗi nơ-ron có các đặc tính đầu vào, đầu ra và thực hiện một chức năng
tính toán cục bộ.
Với việc giả lập các hệ thống sinh học, các cấu trúc tính toán, mạng nơ-
ron có thể giải quyết được các lớp bài toán nhất định, như: Bài toán xếp loại,
bài toán lập lịch, bài toán tìm kiếm, bài toán nhận dạng mẫu Các bài toán
17
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

phức tạp cao, không xác định. Tuy nhiên, sự liên kết giữa một bài toán bất kỳ
trong thực tế với một giải pháp mạng nơ-ron lại là một việc không dễ dàng.

Xét một cách tổng quát, mạng nơ-ron là một cấu trúc xử lý song song
thông tin phân tán mang các đặc tính nổi bật sau:
- Là mô hình toán học dựa trên bản chất của nơ-ron.
- Bao gồm một số lượng rất lớn các nơ-ron liên kết với nhau.
- Mạng nơ-ron có khả năng học, khái quát hoá tập dữ liệu học thông
qua việc gán và hiệu chỉnh các trọng số liên kết.
- Tổ chức theo kiểu tập hợp mang lại cho mạng nơ-ron khả năng tính
toán rất lớn, trong đó không có nơ-ron nào mang thông tin riêng biệt [2].
1.4.2.3. Phạm vi ứng dụng của mạng nơ-ron
a. Những bài toán thích hợp
Mạng nơ-ron được coi như là hộp đen biến đổi véc-tơ đầu vào m biến
thành véc-tơ đầu ra n biến. Tín hiệu ra có thể là các tham số thực, (tốt nhất
nằm trong khoảng [0,1], hoặc [-1,1]), số nhị phân 0,1, hay số lưỡng cực -1;+1.
Số biến của véc-tơ vào ra không bị hạn chế xong sẽ ảnh hưởng tới thời gian
tính và tải nguyên liệu của máy tính. Nói chung, các lớp bài toán áp dụng cho
nơ-ron có thể được phân chia thành bốn loại:
- Phân lớp (classification).
- Mô hình hoá (modeling).
- Biến đổi, thực hiện ánh xạ từ một không gian đa biến vào không gian
đa biến khác tương ứng (transformation and mapping).
- Liên kết và kỹ thuật dịch chuyển cửa sổ (association and moving
window).
b. Các lĩnh vực ứng dụng mạng nơ-ron
Khó có thể thống kê đầy đủ các ứng dụng của mạng nơ-ron. Tuy nhiên,
có thể nêu một số ứng dụng như sau:
18
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

- Xử lý ảnh.
- Nhận dạng mẫu.

- Y học.
- Các hệ thống quân sự.
- Vấn đề lập kế hoạch, điều khiển và tìm kiếm.
- Các hệ thống năng lượng.
- Dự đoán.
- Giải các bài toán tối ưu: Vấn đề chính là tìm những thuật toán huấn
luyện mạng để góp phần tìm nghiệm cho nhiều lớp bài toán tối ưu toàn cục.
c. Ưu và nhược điểm của mạng nơ-ron
- Ưu điểm:
+ Xử lý song song.
+ Thiết kế hệ thống thích nghi.
+ Không đòi hỏi các đặc trưng mở rộng của bài toán (chủ yếu dựa trên
tập học).
- Nhược điểm:
+ Không có các quy tắc và các hướng dẫn thiết kế một cách rõ ràng đối
với một ứng dụng nhất định.
+ Không có cách tổng quát để đánh giá hoạt động bên trong mạng.
+ Việc học đối với mạng có thể khó (hoặc không thể) thực hiện.
+ Khó có thể dự đoán trước được hiệu quả của mạng trong tương lai
(khả năng tổng quát hoá).
1.4.2.4. Mạng nơ-ron Hopfield
Trong mạng hồi quy tín hiệu ra của một nơ-ron có thể được truyền
ngược lại làm tín hiệu vào cho các nơ-ron ở các lớp trước, hoặc các nơ-ron
trong cùng một lớp. Phần này sẽ trình bày mô hình mạng tiêu biểu thuộc lớp
mạng hồi quy, đó là mạng Hopfield.
19
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên

Mạng Hopfield được bắt đầu nghiên cứu từ năm 1982. Đây là mạng
một lớp với thông tin và quá trình xử lý có nối ngược. Chính công trình của

Hopfield được tìm thấy rất nhiều ứng dụng, đặc biệt trong bộ nhớ liên kết và
trong các bài toán tối ưu.
Giả sử mạng được xây dựng dưới dạng mạng một lớp, mỗi nơ-ron được
truyền ngược lại làm tín hiệu vào cho các nơ-ron khác nhưng bản thân các nơ-
ron không tự liên kết với chính nó. Khi đó mô hình mạng Hopfield được biểu
diễn như hình 1.3.
Tín hiệu ra của nơ-ron thứ j nào đó được truyền ngược lại làm tín hiệu
vào cho các nơ-ron khác trong mạng một cách đầy đủ thông qua các trọng số
tương ứng.





Hình 1.3. Mô hình mạng Hopfield
Ký hiệu W
ij
là liên kết giữa hai nơ ron i và j (
jiij
ww
), V
i
là đầu ra
của nơron i. Ta coi véc tơ (V
1
, V
2
, V
n
) là trạng thái của mạng. Tại mỗi thời

điểm t mỗi nơron i tổng hợp các tín hiệu V
j
từ các nơron khác và tín hiệu từ
bên ngoài (bias)
.)(
ijiÞ
j
i
ItVWU

Tuỳ theo hàm kích hoạt f
i
mà nơ ron i cho đầu ra là.
V
i
(t+1) = f
i
(V
i
(t)).
Mạng đạt trạng thái cân bằng nếu V
i
(t+1) = V
i
(t) , i
Ta định nghĩa hàm năng lượng của mạng là:
x
2

x

1

X
1
X
2
Y
1
Y
2
Y
M


.
.
.







Đầu vào


Đầu ra

×