41
CÁC THUT GII CÁC THUT GII TÌM KIM HEURISTICS ThS. Võ Đình By Khoa ng nghThông tin oa Cô g g ôgt Đại hc Kthut Công nghTp. HCM 1

thuat giai TimKiem Heuristic

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Í DỤ ÁP DỤNG – THÁP HÀ NỘI

A B CA B C

4

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

6 8 4?

Ths. Võ

1000L sữa

Đình B

ảyh(x,y) = (x+y) mod 3

15

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 GTS2Chia nhóm thảo luận cách giải quyết!?

26

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Ụ 1: BÀI TOÁN MÃ ĐI TUẦN

z1 3 3

55

73

3

77

7

73

65

73

30

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

33

Ths. Võ Đình Bảy

VÍ DỤ 2: BÀI TOÁN QUÂN HẬU

z

34

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

VÍ DỤ 2: BÀI TOÁN QUÂN HẬU

z

i = 61

39

Ths. Võ Đình BảyCó 2 ô trống còn lại, nghĩa là f(6,6) = 2

2

VÍ DỤ 2: BÀI TOÁN QUÂN HẬU

z

i = 71 40

Ths. Võ Đình Bảy

1

VÍ DỤ 2: BÀI TOÁN QUÂN HẬU

z

i 8 41

Ths. Võ Đình Bảy

i = 8