Upload
lycaphe8x
View
203
Download
1
Embed Size (px)
DESCRIPTION
mo hinh tri tue nhan tao trong bieu dien tri thuc
Citation preview
CÁC THUẬT GIẢICÁC THUẬT GIẢI TÌM KIẾM HEURISTICS
ThS. Võ Đình BảyKhoa Công nghệ Thông tin oa Cô g g ệ ô g t
Đại học Kỹ thuật Công nghệ Tp. HCM
1
NỘI DUNG
Tìm kiếm với tri thức bổ sunggTháp Hà nộiTaciĐ ữĐong sữa…
Bài toán người bán hàng (TSP – Traveling SalesmanBài toán người bán hàng (TSP Traveling SalesmanProblem)Thuật giải min – max
2
Ths. Võ Đình Bảy
THUẬT GIẢI TÌM KIẾM VỚI TRI THỨC BỔ SUNG
S = START g(s’) = g(s) + cost(s, s’)Ước lượng h(S)g(S) = 0F(S) h(S)
Ước lượng h(s’)Nếu s’ chưa gán nhãn
hoặc g(s’) + h(s’) < f(s’) F(S) = h(S)Insert-PriQueue(O,S,f(S))While (O ≠ ∅) do
hoặc g(s ) + h(s ) < f(s ) f (s’) = g(s’) + h(s’)Insert-PriQueue(O,s’,f(s’))While (O ≠ ∅) do
s = Pop_least(O)Nếu s = GOAL thì
Insert PriQueue(O,s ,f(s ))
cuối nếucuối ∀
return SUCCESS∀s’ ∈ succs(s)
Cuối while
3
Ths. Võ Đình Bảy
VỚI N = 3
Hàm h (heuristic) = Số lần ít nhất phải di chuyển đĩa để đạt trạng thái đích (chỉ xét các tình trạng của cột đích)
0 1 2 3 3 4 4 55
Ths. Võ Đình Bảy
THÁP HÀ NỘI (N = 3)
g = 0h = 3f = 3f 3
g = 1h = 3f = 4
g = 1h = 4f = 5
g = 2h = 4f = 6
g = 2h = 4f = 6
6
Ths. Võ Đình Bảy
THÁP HÀ NỘI (N = 3)
g = 0h = 3f = 3
g = 1h = 3f = 4
g = 1h = 4f = 5
7
Ths. Võ Đình Bảy
g = 2, h = 4,f = 6 g = 2,h = 4,f = 6g = 2,h = 3,f = 5
….
BÀI TOÁN TACI
1 2 38 5
1 2 38 4
START GOAL
8 57 4 6 7 6 5
h1(a, b) = Số vị trí có giá trị khác nhau giữa hai cấu hình a và b
Ví dụ trên: h1(START, GOAL) = 0+0+0+1+1+1+0+0 = 3
h2(a, b) = ),(]8,1[
bi
a ii∑∈
∂
Ví dụ trên: h1(START, GOAL) 0 0 0 1 1 1 0 0 3
Trong đó Số lần ít nhất phải di chuyển giá trị i ở cấu hình a theo chiều ngang/ dọc về đúng vị trí của giá trị i ở cấu hình b
=∂ ),( ba ii
Ví dụ trên: h2(START, GOAL) = 0+0+0+2+2+1+0+0 = 58
Ths. Võ Đình Bảy
2( )
SỬ DỤNG H1
1 2 3
1 2 38 4
GOAL
h 31 2 38 57 4 6
8 47 6 5
h = 3f = 3g = 0
Ths. Võ g = 1
1 28 5 3
h = 4f = 5
3↓
1 2 38 5
h = 3f = 4
5→
1 2 38 5 6
6↑
h = 3f 4 Đ
ình Bảy
g = 1 8 5 37 4 6
f 5 8 57 4 6
f 4 8 5 67 4
f = 4
8→ 4↑ 2↓ 4→
g = 21 2 3
8 57 4 6
1 2 38 4 57 6
1 38 2 57 4 6
1 2 38 5 67 4
h = 4,f = 6 h = 3,f = 5 h = 4,f = 6 h = 3,f = 5
1 2 36←
9g = 3
8 4 57 6
h = 2,f = 5 …
SỬ DỤNG H1
1 2 3
1 2 38 4
GOAL
h 31 2 38 57 4 6
8 47 6 5
h = 3f = 3g = 0
Ths. Võ g = 1
1 28 5 3
h = 4f = 5
3↓
1 2 38 5
h = 3f = 4
5→
1 2 38 5 6
6↑
h = 3f 4 Đ
ình Bảy
g = 1 8 5 37 4 6
f 5 8 57 4 6
f 4 8 5 67 4
f = 4
8→ 4↑ 2↓ 4→1 nếu di chuyển từ đúng sang sai
ế ể⎪⎨⎧
+hhg = 2
1 2 38 5
7 4 6
1 2 38 4 57 6
1 38 2 57 4 6
1 2 38 5 67 4
0 nếu di chuyển từ sai sang sai
-1 nếu di chuyển từ sai sang đúng ⎪⎩⎨+=+ gg hh 1
h = 4,f = 6 h = 3,f = 5 h = 4,f = 6 h = 3,f = 5
1 2 36←
10g = 3
8 4 57 6
h = 2,f = 5 …
SỬ DỤNG H1
1 2 3
1 2 38 4
GOAL
h 3
1 nếu di chuyển từ đúng sang sai0 nếu di chuyển từ sai sang sai-1 nếu di chuyển từ sai sang đúng ⎪⎩
⎪⎨⎧
+=+ gg hh 1
1 2 38 57 4 6
8 47 6 5
h = 3f = 3g = 0
Ths. Võ g = 1
1 28 5 3
h = 4f = 5
3↓
1 2 38 5
h = 3f = 4
5→
1 2 38 5 6
6↑
h = 3f 4 Đ
ình Bảy
g = 1 8 5 37 4 6
f 5 8 57 4 6
f 4 8 5 67 4
f = 4
8→ 4↑ 2↓ 4→
g = 21 2 3
8 57 4 6
1 2 38 4 57 6
1 38 2 57 4 6
1 2 38 5 67 4
h = 4,f = 6 h = 3,f = 5 h = 4,f = 6 h = 3,f = 5
1 2 36←
11g = 3
8 4 57 6
h = 2,f = 5 …
SỬ DỤNG H2
1 2 3
1 2 38 4
GOAL
h 51 2 38 57 4 6
8 47 6 5
h = 5f = 5g = 0
Ths. Võ g = 1
1 28 5 3
h = 6f = 7
3↓
1 2 38 5
h = 4f = 5
5→
1 2 38 5 6
6↑
h = 6f 7 Đ
ình Bảy
g = 1 8 5 37 4 6
f 7 8 57 4 6
f 5 8 5 67 4
f = 7
8→ 4↑ 2↓
g = 21 2 3
8 57 4 6
1 2 38 4 57 6
1 38 2 57 4 6
h = 5,f = 7 h = 3,f = 5 h = 5,f = 7
1 2 36←
12g = 3
8 4 57 6
h = 2,f = 5 …
SỬ DỤNG H2
1 2 3
1 2 38 4
GOAL
h 51 2 38 57 4 6
8 47 6 5
h = 5f = 5g = 0
Ths. Võ g = 1
1 28 5 3
h = 6f = 7
3↓
1 2 38 5
h = 4f = 5
5→
1 2 38 5 6
6↑
h = 6f 7 Đ
ình Bảy
g = 1 8 5 37 4 6
f 7 8 57 4 6
f 5 8 5 67 4
f = 7
8→ 4↑ 2↓1 nếu di chuyển từ gần sang xa
⎨⎧+=hh
g = 21 2 3
8 57 4 6
1 2 38 4 57 6
1 38 2 57 4 6
-1 nếu di chuyển từ xa sang gần ⎩⎨+=+ gg hh 1
h = 5,f = 7 h = 3,f = 5 h = 5,f = 7
1 2 36←
13g = 3
8 4 57 6
h = 2,f = 5 …
SỬ DỤNG H2
1 2 3
1 2 38 4
GOAL
h 5
1 nếu di chuyển từ gần sang xa
-1 nếu di chuyển từ xa sang gần ⎩⎨⎧+=+ gg hh 1
1 2 38 57 4 6
8 47 6 5
h = 5f = 5g = 0
Ths. Võ g = 1
1 28 5 3
h = 6f = 7
3↓
1 2 38 5
h = 4f = 5
5→
1 2 38 5 6
6↑
h = 6f 7 Đ
ình Bảy
g = 1 8 5 37 4 6
f 7 8 57 4 6
f 5 8 5 67 4
f = 7
8→ 4↑ 2↓
g = 21 2 3
8 57 4 6
1 2 38 4 57 6
1 38 2 57 4 6
h = 5,f = 7 h = 3,f = 5 h = 5,f = 7
1 2 36←
14g = 3
8 4 57 6
h = 2,f = 5 …
BÀI TOÁN ĐONG SỮA(TT)h(x,y) = (x+y) mod 3
0 04
1000L sữah=0f=0
g=0
Ths. Võ h 0 h=2 Đ
ình Bảy
6 0 0 8g=1h=0f=1
h=2f=3
g=206 8
g=2
h=0,f=2h=2 f=4
6
16h 2,f 4
BÀI TOÁN ĐONG SỮA(TT)
0 0h=0f=0
g=0
Ths. Võ h 0 h=2 Đ
ình Bảy
6 0 0 8g=1h=0f=1
h=2f=3
g=3
g=2
6
h=0,f=3
68
0 06 8g=2
h=0,f=2h=2 f=4
6
8g=4
17h 2,f 4 4 8
h=0,f=4
THUẬT GIẢI HƯỚNG ĐÍCH CHO BÀI TOÁN THÁP HÀ NỘI
Gọi n là số đĩa cần di chuyển từ cột A sang cột C vớicột B làm trung gian. Chi tiết thuật giải như sau:Cho i chạy từ 1 đến 2n-1:
Nếu i lẻ: Chuyển đĩa 1 theo chiềuA→ B → C →A nế n chẵnA→ B → C →A nếu n chẵnA→ C → B →A nếu n lẻ
Ngược lại:Chuyển đĩa nhỏ (khác đĩa 1) sang cột còn lại.
18
Ths. Võ Đình Bảy
VÍ DỤ VỀ THUẬT GIẢI HƯỚNG ĐÍCH (N=4)
A C
i = 1
A B C
i = 2i = 3i = 4i = 5i = 6i = 7i = 8i = 9i = 10i = 11i = 12i = 14i = 15i = 13Cho i chạy từ 1 đến 2n-1: i = 1i = 2i = 3i = 4i = 5i = 6i = 7i = 8i = 9i = 10i = 11i = 12i = 14i = 15i = 13ạyNếu i lẻ: Chuyển đĩa 1 theo chiềuA→ B→ C→A nếu n chẵnA→ C→ B→A nếu n lẻ
N l i 19
Ths. Võ Đình Bảy
Ngược lại:Chuyển đĩa nhỏ (khác đĩa 1) sang cột còn lại.
BÀI TOÁN NGƯỜI BÁN HÀNG (TSP)
Bài toán: Một người bán hàng muốn đi qua n thànhphố, mỗi thành phố đúng 1 lần và quay về thành phốấ ấ ấxuất phát u sao cho chi phí là thấp nhất (Gọi Cij là chi
phí đi từ thành phố i đến thành phố j).Cách giải quyết bài toán: Bài toán chính là tìm chuCách giải quyết bài toán: Bài toán chính là tìm chutrình Hamilton với chi phí thấp nhất, có thể sử dụng đệqui phi tuyến để giải quyết
⇒ Kết quả tối ưu nhưng độ phức tạp cao.Một cách giải quyết gần đúng là sử dụng phương pháptham lam Cụ thể là thuật giải GTS (Greedytham lam. Cụ thể là thuật giải GTS (GreedyTraveling Salesman)
20
Ths. Võ Đình Bảy
THUẬT GIẢI GTS1Bước 1: [Khởi đầu]
COST = 0, TOUR = ∅, v = u (u là thành phố xuất phát)Bước 2: [Thăm tất cả các thành phố]Bước 2: [Thăm tất cả các thành phố]
Cho k chạy từ 1 đến n – 1 qua bước 3Bước 3: [Tìm cạnh có chi phí thấp nhất][ ạ p p ]
Tìm (v,w) là cạnh có chi phí thấp nhất từ v đến các đỉnhchưa đi qua w:
COST COST + C[v w]COST = COST + C[v,w]TOUR = TOUR + (v,w)= ww
Bước 4: [Quay về thành phố xuất phát]COST = COST + C[v,u]TOUR = TOUR + (v,u) 21
Ths. Võ Đình Bảy
VÍ DỤ MINH HỌA
Cho đồ thị như sau:A B C D E FA B C D E F
A 0 100 50 30 200 150B 120 0 30 80 120 50C 80 20 0 120 100 30C 80 20 0 120 100 30D 40 70 130 0 50 120E 180 150 130 70 0 200
a)Tìm hành trình tốt nhất và chi phí tương ứng theo thuậtgiải GTS1 với thành phố xuất phát là A
F 200 80 60 100 150 0
giải GTS1 với thành phố xuất phát là A.b) Câu hỏi tương tự câu a nhưng thành phố xuất phát làC. Có nhận xét gì về hai kết quả trên?
22
Ths. Võ Đình Bảy
VÍ DỤ MINH HỌA (TT)A B C D E F
A 0 100 50 30 200 150
B 120 0 30 80 120 50
C 80 20 0 120 100 30
Bước 1: COST = 0, TOUR = ∅, v = ABước 2: k = 1 .. 5
B
C 80 20 0 120 100 30
D 40 70 130 0 50 120
E 180 150 130 70 0 200
F 200 80 60 100 150 0
Bước 3 với k = 1:B
100 C w = DCOST = 0 + 30
A50 D30
E200
TOUR = {(A,D)}v = D
E200
F150
B70
Bước 3 với k = 2:w =ECOST = 30+50
A
70C
130D30
E50120
TOUR = {(A,D), (D,E)}v = E
23
Ths. Võ Đình Bảy
F
120
VÍ DỤ MINH HỌA (TT)A B C D E F
A 0 100 50 30 200 150
B 120 0 30 80 120 50
C 80 20 0 120 100 30
B150
C 80 20 0 120 100 30
D 40 70 130 0 50 120
E 180 150 130 70 0 200
F 200 80 60 100 150 0Bước 3 với k = 3:
AC130
D30
E50200
w = CCOST = 80 + 130TOUR = {(A,D), (D,E),
( )}F (E,C)}v = C
BBước 3 với k = 4:
w = B
A20
C130D30
E50
F30
COST = 210 + 20TOUR = {(A,D), (D,E),
(E,C), (C,B)}B ớ 3 ới k 5 v = B
A B20C130D
30E50
Bước 3 với k = 5:w = FCOST = 230 + 50
24
Ths. Võ Đình Bảy
A BCD E
F
50 TOUR = {(A,D), (D,E), (E,C), (C,B),(B,F)}
v = F
VÍ DỤ MINH HỌA (TT)A B C D E F
A 0 100 50 30 200 150
B 120 0 30 80 120 50
C 80 20 0 120 100 30C 80 20 0 120 100 30
D 40 70 130 0 50 120
E 180 150 130 70 0 200
F 200 80 60 100 150 0Bước 4: [Quay về]130
20
C130
D
E50COST = 280 + 200 = 480TOUR = {(A,D), (D,E), (E,C),
AB
20
30
50
TOUR {(A,D), (D,E), (E,C), (C,B),(B,F), (F,A)}
200AF
200
25
Ths. Võ Đình Bảy
THUẬT GIẢI MIN – MAX
Trong các trò chơi đối kháng, người chơi (A) luông g, g ( )muốn cực đại hóa (max) cơ hội thắng của mình và cựctiểu hóa (min) cơ hội thắng của đối phương (B).G i f là hà tiê (khả ă thắ ủ ột ớGọi f là hàm mục tiêu (khả năng thắng của một nướcđi), khi đó A luôn muốn f(A) là cực đại còn f(B) là cựctiểu. Như vậy, vấn đề xác định hàm f là quan trọngnhất trong các bài toán sử dụng min – max.
27
Ths. Võ Đình Bảy
VÍ DỤ 1: BÀI TOÁN MÃ ĐI TUẦN
Một con mã xuất phát từ một điểm bất kì trên bàn cờvua có kích thước n×n. Làm thế nào để mã có thể đi
ấ ỗ ầqua tất cả các ô của bàn cờ, mỗi ô đúng 1 lần?Cách giải quyết: Sử dụng đệ qui phi tuyến. Cách nàysẽ khó thực hiện được nếu n lớnsẽ khó thực hiện được nếu n lớn.Có thể sử dụng min – max để giải quyết bài toán.
28
Ths. Võ Đình Bảy
VÍ DỤ 1: BÀI TOÁN MÃ ĐI TUẦN
f(A) = Số nước đi kế tiếp có thể có khi mã đang ở vịtrí A.Tiêu chí chọn lựa: chọn nước đi kế tiếp (N) của quânmã sao cho f(N) đạt min.
29
Ths. Võ Đình Bảy
VÍ DỤ 2: BÀI TOÁN TÁM QUÂN HẬU
Làm thế nào để đặt n quân Hậu trên bàn cờ vua cókích thước n×n sao cho chúng không ăn nhau?Cách giải quyết: Sử dụng đệ qui phi tuyến. Cách nàysẽ khó thực hiện được nếu n lớn.Có thể ử d i để iải ết bài t áCó thể sử dụng min – max để giải quyết bài toán.
31
Ths. Võ Đình Bảy
VÍ DỤ 2: BÀI TOÁN TÁM QUÂN HẬU
f(A) = Số ô còn trống trên bàn cờ khi đã đăt Hậu tại A.Tiêu chí chọn lựa: chọn nước đi kế tiếp (N) của quânọ ự ọ p ( ) qHậu sao cho f(N) đạt max.
32
Ths. Võ Đình Bảy
VÍ DỤ 2: BÀI TOÁN QUÂN HẬU
z
i = 4
1 2 3
4 5 6 7
9 35
Ths. Võ Đình Bảy
8 9
Có 9 ô trống còn lại, nghĩa là f(4,1) = 9
VÍ DỤ 2: BÀI TOÁN QUÂN HẬU
z
i = 4
1 2
3 4 5
6 7 8 36
Ths. Võ Đình Bảy
6 7 8
Có 8 ô trống còn lại, nghĩa là f(4,2) = 8
VÍ DỤ 2: BÀI TOÁN QUÂN HẬU
z
i = 411
2 3
4 5 6 7
8 9 10 37
Ths. Võ Đình Bảy
8
Có 10 ô trống còn lại, nghĩa là f(4,7) = 10
9 10
VÍ DỤ 2: BÀI TOÁN QUÂN HẬU
z
i = 5i = 5
1
2 3 4
5 6 38
Ths. Võ Đình Bảy
5 6
Có 6 ô trống còn lại, nghĩa là f(5,1) = 6