SlideShare a Scribd company logo
1 of 44
Download to read offline
TRÍ TUỆ NHÂN TẠO
Artificial Intelligence
GV: Nguyễn Hữu Tuân
Khoa Công nghệ Thông tin
Đại học CN GTVT
Email: tuannh@utt.edu.vn
Hà Nội - 2015
Chương 2: TÌM KIẾM TRÊN KHÔNG
GIAN TRẠNG THÁI
(State Space Search)
2.1 Bài toán tìm kiếm
Tìm kiếm cái gì?
Biểu diễn và tìm kiếm là kỹ thuật phổ biến giải các bài
toán trong lĩnh vực AI
Các vấn đề khó khăn trong tìm kiếm với các bài toán
AI
- Đặc tả vấn đề phức tạp
- Không gian tìm kiếm l ớn
- Đặc tính đối tượng tìm kiếm thay đổi
- Đáp ứng thời gian thực
- Meta knowledge và kết quả “tối ưu”
Khó khăn v ề kỹ thuật
Slide 23
Cấu trúc chung của bài toán tìm kiếm
Một cách chung nhất, nhiều vấn đề - bài toán phức tạp đều
có dạng "tìm đường đi trong đồ thị" hay nói một cách
hình thức hơn là "xuất phát từ một đỉnh của một đồ thị,
tìm đường đi hiệu quả nhất đến một đỉnh nào đó".
Một phát biểu khác thường gặp của dạng bài toán này là:
Cho trước hai trạng thái T0 và TG hãy xây dựng chuỗi tr ạng thái
T0, T1, T2, ..., Tn-1, Tn = TG sao cho :
thỏa mãn một điều ki ện cho trước (thường là nhỏ nhất).
Slide 24
2.2 Giải thuật tổng quát
Ký hiệu:
s đỉnh xu ất phát
g: đỉnh đích
n: đỉnh đang xét
Γ(n): tập các đỉnh có thể đi trực tiếp từ đỉnh n
Open: tập các đỉnh có thể xét ở bước kế tiếp
Close: tập các đỉnh đã xét
Slide 25
2.2 Giải thuật tổng quát (tiếp)
Begin
Open := {s};
Close := ø;
While (Open <> ø) do
begin
n:=Retrieve(Open);
if (n=g) then Return True;
Open := Open ∪ Γ(n); // ( Γ(n) - Close)
Close := Close ∪ {n};
end;
Return False;
End;
Slide 26
Ví dụ:
Xét graph sau:
B
E
H
A
C D
F G
I J
s = A là đỉnh bắt đầu
g= G là đỉnh đích
Slide 27
2.3 Breath First Search - Ví d ụ
Xét graph sau: L ần l ặp n Γ(n) Open Close
B
E
H
0
A 1
2
3
C D
5
6
F G 7
I J
A {B, C, D}
B {E, F}
C {F, G}
4 D ø
E {H, I}
F {J}
G
True
{A} ø
{B, C, D} {A}
{C, D, E, F} {A, B}
{D, E, F, G} {A, B, C}
{E, F, G} {A, B, C, D}
{F, G, H, I} {A, B, C, D, E}
{G, H, I, J} {A, B, C, D, E, F}
Slide 28
2.3 Breath First Search - Ví dụ
Xét graph sau:A->U Lần lặp n Γ(n) Open Close
B
E
A
C
F G
0
1
2
3
D
5
6
7
8
9
A
B
C
4 D
E
F
G
H
I
{B, C, D}
{E, F}
{F, G}
ø
{H, I}
{J}
ø
Ø
ø
Ø
{A} ø
{B,C,D} {A}
{C,D, E,F} {A, B}
{D,E, F,G} {A, B, C}
{E, F, G} {A, B, C, D}
{F, G, H, I} {A, B, C, D, E}
{G, H, I, J} {A, B, C, D, E, F}
{H, I, J} {A, B, C, D, E, F,G}
{I, J} {A,B,C, D, E, F,G,H}
{J} {A,B,C, D, E,
10 J Ø F,G,H,I}
H I J {A,B,C, D, E,
FALSE F,G,H,I,J}
Slide 29
Ví dụ:
Xét graph sau:
A
B
E
H
C
F
I J
D
G
Slide 30
2.4 Depth First Search - Ví dụ
Xét graph sau: Lần lặp n Γ(n) Open Close
B
E
H
A
C
F
I J
0
1 A {B, C, D}
2 B {E, F}
3 E {H, I}D
4 H Ø
5 I Ø
6 F {J}G
7 J Ø
8 C {F, G}
9 G True
{A}
{B, C, D}
{E, F, C, D}
{H, I, F, C, D}
{I, F, C, D}
{F, C, D}
{J, C, D}
{C, D}
{G, D}
ø
{A}
{A, B}
{A, B, E}
{A, B, E, H}
{A, B, E, H, I}
{A, B, E, H, I, F}
{A, B, E, H, I, F,J}
{A,B,E,H,I, F,J,C}
Slide 31
Breath First vs Depth First
Breath First: open được tổ chức dạng FIFO
Depth First: open được tổ chức dạng LIFO
Hi ệu qu ả
- Breath First luôn tìm ra nghiệm có số cung nhỏ nhất
- Depth First “thường” cho kết quả nhanh hơn.
K ết qu ả
- BFS, DFS chắc chắn tìm ra kết quả nếu có.
Bùng nổ tổ hợp là khó khăn lớn nhất cho các giải thuật
này.
Giải pháp cho bùng nổ tổ hợp??
Slide 32
Tìm kiếm rộng
1.
2.
2.
3.
4.
5.
6.
Open = [A]; closed = []
Open = [B,C,D];
closed = [A]
Open = [C,D,E,F];
closed = [B,A]
Open = [D,E,F,G,H]; closed = [C,B,A]
Open = [E,F,G,H,I,J]; closed = [D,C,B,A]
Open = [F,G,H,I,J,K,L];closed = [E,D,C,B,A]
Open = [G,H,I,J,K,L,M];(vì L đã có trong open);
closed = [F,E,D,C,B,A]
…
Slide 33
Tìm kiếm sâu
1.
2.
3.
4.
5.
6.
7.
8.
9.
Open = [A]; closed = []
Open = [B,C,D]; closed = [A]
Open = [E,F,C,D];closed = [B,A]
Open = [K,L,F,C,D];
closed = [E,B,A]
Open = [S,L,F,C,D];
closed = [K,E,B,A]
Open = [L,F,C,D];
closed = [S,K,E,B,A]
Open = [T,F,C,D];
closed = [L,S,K,E,B,A]
Open = [F,C,D];
closed = [T,L,S,K,E,B,A]
…
Slide 34
Depth first search có giới hạn
Depth first search có khả năng lặp vô tận do các trạng
thái con sinh ra liên tục. Độ sâu tăng vô tận.
Khắc phục bằng cách giới hạn độ sâu của giải thuật.
Sâu bao nhiêu thì vừa?
Chiến lược giới hạn:
- Cố định một độ sâu MAX, như các danh thủ chơi cờ tính
trước được số nước nhất định
- Theo cấu hình resource của máy tính
- Meta knowledge trong việc định giới hạn độ sâu.
Giới hạn độ sâu => co hẹp không gian trạng thái => có
thể mất nghiệm.
Slide 35
Chương 3: TÌM KIẾM KINH NGHIỆM
3.1 Heuristic là gì
 Heuristic là gì?
– Heuristic là những tri thức được rút tỉa từ những kinh nghiệm,
“trực giác” của con người.
– Heuristic có thể là những tri thức “đúng” hay “sai”.
– Heuristic là những meta knowledge và “thường đúng”.
 Heuristic dùng để làm gì?
Trong những bài toán tìm kiếm trên không gian trạng thái, có 2 trường
hợp cần đến heuristic:
1. Vấn đề có thể không có nghiệm chính xác do các mệnh đề
không phát biểu chặt chẽ hay thiếu dữ liệu để khẳng định kết
quả.
2. Vấn đề có nghiệm chính xác nhưng phí tổn tính toán để tìm ra
nghiệm là quá lớn (hệ quả của bùng nỗ tổ hợp)
Heuristic giúp tìm kiếm đạt kết quả với chi phí thấp hơn
Heuristic (tt)
 Heuristic dùng như thế nào trong SSS?
– Tìm kiếm trên không gian trạng thái theo chiều nào? Sâu hay rộng?
– Tìm theo Heuristic : Heuristic định hướng quá trình tìm kiếm theo hướng
mà “nó” cho rằng khả năng đạt tới nghiệm là cao nhất. Không “sâu” cũng
không “rộng”
 Kết quả của tìm kiếm với Heuristic
– Việc tìm kiếm theo định hướng của heuristic có kết quả tốt hay xấu tùy
theo heuristic “đúng” hay “sai”.
– Heuristic có khả năng bỏ xót nghiệm
– Heuristic càng tốt càng dẫn đến kết quả nhanh và tốt.
Làm sao tìm được Heuristic tốt???
Best First Search
Procedure Best_First_Search;
Begin
open:=[start]; close:=[];
While (open<>[]) do
begin Lấy phần tử đầu tiên X khỏi Open.
if X là goal then return path từ start đến
X
else begin
sinh ra các nút con của X;
for mỗi nút con Y của X do
case Y of
Y không có trong open hay close:
begin gán giá trị heuristic cho Y;
đưa Y vào open; end;
Y đã có trong Open:
if đến được Y bằng một path ngắn hơn
then gán path ngắn hơn này cho Y trên
Open.
Y đã có trên close:
if đến được Y bằng một path ngắn hơn
then begin xóa Y khỏi danh sách Close;
thêm Y vào danh sách Open; end;
end; /*end case*/
Đưa X vào close;
Xếp thứ tự các trạng thái trên Open theo
giá trị Heuristic (tăng dần)
end; / while/
return failure;
End;
Best First Search
Best First Search (tt)
 Best First search vs Depth First & Breath First
– Best First search tương tự như Depth First & Breath First nhưng phần tử
được xét tiếp theo là phần tử có giá trị heuristic tốt nhất.
– Cần có một hàm đánh giá các trạng thái để xác định giá trị heuristic cho
các trạng thái.
– Không gian trạng thái vẫn không thay đổi về “toàn cục“ tuy nhiên thường
Heuristic search có không gian trạng thái làm việc nhỏ hơn Depth First và
Breath First. Tại sao??
 Do sự định hướng các trạng thái kế tiếp theo hướng có khả năng tìm ra
nghiệm nhanh hơn nên số trạng thái xét dư thừa sẽ hạn chế  sinh ít
trạng thái con hơn
 Điều này cũng là nguyên nhân làøm cho Best First Search có thể dẫn
đến kết quả là “nghiêäm phụ” thay vì “nghiệm tối ưu”.
Hàm lượng giá Heuristic
 Hàm lượng giá Heuristic là hàm ước lượng phí tổn để đi từ trạng thái hiện
tại đến trạng thái goal.
 Cơ sở để xác định hàm lượng giá là dựa vào tri thức/kinh nghiệm thu thập
được.
 Hàm lượng giá cho kết quả đúng (gần thực thế) hay sai (xa giá trị thực) sẽ
dẫn đến kết quả tìm được tốt hay xấu.
 Không có chuẩn mực cho việc đánh giá một hàm lượng giá Heuristic. Lý
do:
– Không có cấu trúc chung cho hàm lượng giá
– Tính đúng/sai thay đổi liên tục theo từng vấn đề cụ thể
– Tính đúng/sai thay đổi theo từng tình huống cụ thể trong một vấn
đề
 Có thể dùng nhiều hàm lượng giá khác nhau theo tình huống  cần
hàm lượng giá về các hàm lượng giá.
Hàm lượng giá Heuristic
 Xét bài toán 8 pussle với
goal là:
1 2 3
8 4
7 6 5
Heuristic 1: Tổng số miếng
sai vị trí
Heuristic 2: Tổng khoảng
cách sai vị trí của từng
miếng.
Heuristic 3: Số cặp hoán đổi
vị trí nhân cho 2
5 6 0
3 4 0
5 6 0
2 8 3
1 6 4
7 5
2 8 3
1 4
7 6 5
2 8 3
1 6 4
7 5
Việc chọn lựa hàm Heuristic là khó khăn và có ý
nghĩa quyết định đối với tốc độ của giải thuật
Hàm lượng giá Heuristic
 Xét lại hoạt động của giải thuật Best First Search:
– Khi có 2 nút cùng có giá trị kỳ vọng đạt đến mục tiêu bằng nhau
thì nút có path từ nút bắt đầu đến nút đó ngắn hơn sẽ được chọn
trước như vậy nút này có giá trị Heuristic tốt hơn.
– Hay nói cách khác hàm lượng giá Heuristic cho nút gần start hơn
là tốt hơn nếu kỳ vọng đến goal là bằng nhau.
– Vậy chọn nút nào nếu kỳ vọng của 2 nút khác nhau? Nút kỳ vọng
tốt hơn nhưng xa start hay nút kỳ vọng xấu hơn nhưng gần root
 Hàm lượng giá bao gồm cả 2 và có cấu trúc:
F(n) := G(n) + H(n)
G(n): phí tổn thực từ root đến n
H(n): phí tổn ước luợng heuristic từ n đến goal.
Ví dụ – Best first search
 Xét ví dụ là bài toán 8 puzzle với:
2 8 3
1 6 4
7 5
Bắt đầu
1 2 3
8 4
7 6 5
Mục tiêu
 Hàm lượng giá: F(n) = G(n) + H(n)
Với G(n): số lần chuyển vị trí tile đã thực hiện
H(n): Số tile nằm sai vị trí
Nút X có giá trị heuristic tốt hơn nút Y nếu F(x) < F(y).
Ta có hoạt động của giải thuật Best First search trên như hình sau:
Ví dụ – Best first search (tt)
57
461
3821 State A
F(a) =0+4=4
57
461
382x State B
F(b) =1+5=6 567
41
3822 State C
F(c) =1+3=4 57
461
382x State D
F(c) =1+5=6
567
41
3823 State E
F(e) =2+3=5 567
481
324 State F
F(f) =2+3=5 567
41
382x State G
F(g) =2+4=6
567
412
38x State H
F(h) =3+3=6 56
417
382x State I
F(i) =3+4=7
Ví dụ – Best first search (tt)
567
481
324 State F
F(f) =2+3=5
567
481
325 State J
F(j) =3+2=5 567
481
32x State K
F(k) =3+4=7 567
41
382y State Close
567
481
32y Close
567
48
3216 State L
F(l) =4+1=5
567
481
32y State Close
567
48
3217 State M
F(m) =5+0=5 56
487
321x State N
F(n) =5+1=7
Lần X Open Close
0
1
2
3
4
5
6
7
A4
C4
E5
F5
J5
l5
m5
[a4]
[c4,b6,d6]
[e5,f5,g6,b6,d6]
[f5,h6,g6,b6,d6,i7]
[j5,h6,g6,b6,d6,k7,i7]
[l5,h6,g6,b6,d6,k7,i7]
[m5,h6,g6,b6,d6,k7,i7,n7]
[]
[a4]
[a4,c4]
[a4,c4,e5]
[a4,c4,e5,f5]
[a4,c4,e5,f5,j5]
[a4,c4,e5,f5,j5,l5]
Biến thể của Best First Search
 Giải thuật best-first-search có các biến thể sau:
 Khi h(n) là chi phí của dãy phép chuyển từ trạng thái đầu đến
trạng thái n thì giải thuật best-first-search có tên gọi khác là
giải thuật tìm kiếm đều (uniform search).
 Khi h(n) là ước lượng chi phí/khoảng cách từ n đến đích (ví
dụ như khoảng cách Manhatan trong bài toán 8 số ở trên) thì
giải thuật best-first-search được gọi là giải thuật tham ăn
(greedy search).
 Khi h(n) = f(n) + g(n), trong đó f(n) là hàm chi phí/khoảng
cách từ trạng thái đầu đến n và g(n) là hàm ước lượng chi
phí/khoảng cách từ n đến trạng thái đích thì giải thuật best-
first-search được gọi là giải thuật A*.
Thuật toán A*
 Thuật toán A* sử dụng tìm kiếm tốt nhất đầu tiên với hàm
đánh giá f(u)
Begin
1. Khởi tạo danh sách L chỉ chứa trạng thái đầu;
2. Loop do
2.1 If L rỗng then {thông báo thất bại; stop};
2.2 Lấy trạng thái u ở đầu danh sách L;
2.3 If u là trạng thái kết thúc then
{ thông báo thành công; stop }
2.4 For mỗi trạng thái v kề u do
{ g(v) ← g(u) + k(u,v);
f(v) ← g(v) + h(v);
Đặt v vào danh sách L }
2.5 Sắp xếp L theo thứ tự tăng dần của hàm đánh giá sao cho
trạng thái tốt nhất ở đầu danh sách L;
End;
 Ví dụ: cho không gian trạng thái với hàm đánh giá :
Đánh giá giải thuật Heuristic
 Admissibility – Tính chấp nhận
Một giải thuật Best first search với hàm đánh giá
F(n) = G(n) + H(n) với
N : Trạng thái bất kỳ
G(n) : Phí tổn đi từ nút bắt đầu đến nút n
H(n) : Phí tổn ước lượng heuristic đi từ nút n đến goal
Được gọi là giải thuật A
Một giải thuật tìm kiếm được xem là admissible nếu đối với
một đồ thị bất kỳ nó luôn dừng ở path nghiệm tốt nhất (nếu
có).
Giải thuật A*: Là giải thuật A với hàm heuristic H(n)luôn
luôn ≤ giá trị thực đi từ n đến goal.
Giải thuật A* là admissible
Các giải thuật khác
 Tìm kiếm leo đồi (hill-climbing)
 Ý tưởng: Tìm kiếm theo chiều sâu kết hợp với hàm đánh
giá. Mở rộng trạng thái hiện tại và đánh giá các trạng thái
con của nó bằng hàm đánh giá heuristic. Tại mỗi bước, nút
lá “tốt nhất” sẽ được chọn để đi tiếp.
Tìm kiếm leo đồi
Procedure Hill-Climbing_search;
Begin
1. Khởi tạo ngăn xếp S chỉ chứa trạng thái đầu;
2. Loop do
2.1 If S rỗng then {thông báo thất bại; stop};
2.2 Lấy trạng thái u ở đầu ngăn xếp S;
2.3 If u là trạng thái kết thúc then
{thông báo thành công; stop};
2.4 For mỗi trạng thái v kề u do đặt v vào danh sách L;
2.5 Sắp xếp L theo thứ tự tăng dần của hàm đánh giá sao cho
trạng thái tốt nhất ở đầu danh sách L;
2.6 Chuyển danh sách Lvào ngăn xếp S;
End;
Thuật toán nhánh – cận
 Sử dụng thuật toán leo đồi với hàm đánh giá f(u)
 Trong thuật toán này, tại mỗi bước khi phát triển trạng thái
u, ta sẽ chọn trạng thái tốt nhất v (f(v) nhỏ nhất) trong số
các trạng thái kề u để phát triển trạng thái tiếp theo.
 Đi xuống cho tới khi gặp v là đích, hoặc v không có đỉnh
kề, hoặc gặp v mà f(v) lớn hơn đường đi tối ưu tạm thời.
Trong trường hợp này không phát triển đỉnh v nữa, mà quay
lên cha của v để tiếp tục đi xuống những trạng thái tốt nhất
còn lại chưa xét.
Thuật toán nhánh – cận (tt)
Procedure Branch_and_Bound_search;
Begin
1. Khởi tạo danh sách L chỉ chứa trạng thái đầu;
Gán giá trị ban đầu cho cost;
2. Loop do
2.1 If L rỗng then {thông báo thất bại; stop};
2.2 Lấy trạng thái u ở đầu danh sách L;
2.3 If u là trạng thái kết thúc then
if g(u) ≤ y then {y ← g(y); Quay lại 2.1};
2.4 If f(u) > y then Quay lại 2.1
2.5 For mỗi trạng thái v kề u do
{ g(v) ← g(u) + k(u,v);
f(v) ← g(v) + h(v);
Đặt v vào danh sách L1 }
2.5 Sắp xếp L1 theo thứ tự tăng dần của hàm đánh giá;
2.6 Chuyển L1 vào đầu danh sách L sao cho trạng thái tốt nhất ở
đầu L1 ở đầu danh sách L;
End;
 Ví dụ: cho không gian trạng thái với hàm đánh giá :
Trí tueeuj nhân tạo
Trí tueeuj nhân tạo

More Related Content

What's hot

Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Nguyễn Công Hoàng
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)iwanttoit
 
Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngVượng Đặng
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngleemindinh
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Tú Cao
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựAskSock Ngô Quang Đạo
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTMasterCode.vn
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttanhhuycan83
 
Artificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicArtificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicTráng Hà Viết
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Nhóc Nhóc
 
Bai03 he thong tap tin fat
Bai03   he thong tap tin fatBai03   he thong tap tin fat
Bai03 he thong tap tin fatVũ Sang
 
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hìnhBài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hìnhThanh Hoa
 
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...leethinh
 
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử líTiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử líKhoa Hồ Anh
 

What's hot (20)

Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
Giáo trình Phân tích và thiết kế giải thuật - CHAP 1
 
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
Bai13-Cau truc du lieu va giai thuat - Cay (Tree)
 
Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụng
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
Đệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh CậnĐệ Quy, Quay Lui, Nhánh Cận
Đệ Quy, Quay Lui, Nhánh Cận
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTITKHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
KHO DỮ LIỆU VÀ KHAI PHÁ DỮ LIỆU PTIT
 
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sựXây dựng cơ sở dữ liệu trong quản lý nhân sự
Xây dựng cơ sở dữ liệu trong quản lý nhân sự
 
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPTBài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
Bài 5: Các thuật toán sắp xếp và tìm kiếm cơ bản - Giáo trình FPT
 
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đĐề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 
Phân Tích Thiết Kế Hệ Thống Thông Tin - Quản Lý Điểm
Phân Tích Thiết Kế Hệ Thống Thông Tin -  Quản Lý ĐiểmPhân Tích Thiết Kế Hệ Thống Thông Tin -  Quản Lý Điểm
Phân Tích Thiết Kế Hệ Thống Thông Tin - Quản Lý Điểm
 
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcnttPhụ thuộc hàm và các dạng chuẩn - dhcntt
Phụ thuộc hàm và các dạng chuẩn - dhcntt
 
Artificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristicArtificial intelligence ai l4-tim kiem-heuristic
Artificial intelligence ai l4-tim kiem-heuristic
 
Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05Kiến trúc máy tính và hợp ngữ bài 05
Kiến trúc máy tính và hợp ngữ bài 05
 
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đĐề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
 
Bai03 he thong tap tin fat
Bai03   he thong tap tin fatBai03   he thong tap tin fat
Bai03 he thong tap tin fat
 
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hìnhBài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
 
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
13690151 slide-phan-tich-thiet-ke-he-thong-huong-doi-tuong-dai-hoc-bach-khoa-...
 
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử líTiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
 

Similar to Trí tueeuj nhân tạo

ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNguest717ec2
 
[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm
[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm
[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếmFablab Hanoi
 
Chuyen de giai he pt chua tham so
Chuyen  de giai he pt chua tham soChuyen  de giai he pt chua tham so
Chuyen de giai he pt chua tham soToán THCS
 
Kỹ thuật lập trình - PGS.TS. Phạm Thế Bảo
Kỹ thuật lập trình - PGS.TS. Phạm Thế BảoKỹ thuật lập trình - PGS.TS. Phạm Thế Bảo
Kỹ thuật lập trình - PGS.TS. Phạm Thế BảoNguyen Van Nghiem
 
BG GT1.pdf
BG GT1.pdfBG GT1.pdf
BG GT1.pdfdonnam23
 
Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)nhok_lovely
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toanHữu Duy Duy
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Nguyễn Công Hoàng
 
Thuat toan thuat giai
Thuat toan thuat giaiThuat toan thuat giai
Thuat toan thuat giaiVõ Tâm Long
 
Tuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdfTuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdfNguynVnTun74
 

Similar to Trí tueeuj nhân tạo (20)

ThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáNThiếT Kế Và đáNh Giá ThuậT ToáN
ThiếT Kế Và đáNh Giá ThuậT ToáN
 
[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm
[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm
[Fablab Hanoi] 20161211_Talk:Trí tuệ nhân tạo và ứng dụng _Chương 2: Tìm kiếm
 
Chuyen de giai he pt chua tham so
Chuyen  de giai he pt chua tham soChuyen  de giai he pt chua tham so
Chuyen de giai he pt chua tham so
 
Chapter1234
Chapter1234Chapter1234
Chapter1234
 
Chapter1234
Chapter1234Chapter1234
Chapter1234
 
Thuat Toan
Thuat ToanThuat Toan
Thuat Toan
 
Thuat Toan 2
Thuat Toan 2Thuat Toan 2
Thuat Toan 2
 
Kỹ thuật lập trình - PGS.TS. Phạm Thế Bảo
Kỹ thuật lập trình - PGS.TS. Phạm Thế BảoKỹ thuật lập trình - PGS.TS. Phạm Thế Bảo
Kỹ thuật lập trình - PGS.TS. Phạm Thế Bảo
 
MATMAT- Chuong1
MATMAT- Chuong1MATMAT- Chuong1
MATMAT- Chuong1
 
BG GT1.pdf
BG GT1.pdfBG GT1.pdf
BG GT1.pdf
 
pttt 01
pttt 01pttt 01
pttt 01
 
Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)
 
M T So L P Phương Trình Diophantine.docx
M T So L P Phương Trình Diophantine.docxM T So L P Phương Trình Diophantine.docx
M T So L P Phương Trình Diophantine.docx
 
Bai toan va thuat toan
Bai toan va thuat toanBai toan va thuat toan
Bai toan va thuat toan
 
Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2
 
Chuong2 de qui
Chuong2 de quiChuong2 de qui
Chuong2 de qui
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
Giáo trình Phân tích và thiết kế giải thuật - CHAP 6
 
Thuat toan thuat giai
Thuat toan thuat giaiThuat toan thuat giai
Thuat toan thuat giai
 
Xác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệt
Xác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệtXác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệt
Xác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệt
 
Tuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdfTuan1_GioiThieu.pdf
Tuan1_GioiThieu.pdf
 

Trí tueeuj nhân tạo

  • 1. TRÍ TUỆ NHÂN TẠO Artificial Intelligence GV: Nguyễn Hữu Tuân Khoa Công nghệ Thông tin Đại học CN GTVT Email: tuannh@utt.edu.vn Hà Nội - 2015
  • 2. Chương 2: TÌM KIẾM TRÊN KHÔNG GIAN TRẠNG THÁI (State Space Search)
  • 3. 2.1 Bài toán tìm kiếm Tìm kiếm cái gì? Biểu diễn và tìm kiếm là kỹ thuật phổ biến giải các bài toán trong lĩnh vực AI Các vấn đề khó khăn trong tìm kiếm với các bài toán AI - Đặc tả vấn đề phức tạp - Không gian tìm kiếm l ớn - Đặc tính đối tượng tìm kiếm thay đổi - Đáp ứng thời gian thực - Meta knowledge và kết quả “tối ưu” Khó khăn v ề kỹ thuật Slide 23
  • 4. Cấu trúc chung của bài toán tìm kiếm Một cách chung nhất, nhiều vấn đề - bài toán phức tạp đều có dạng "tìm đường đi trong đồ thị" hay nói một cách hình thức hơn là "xuất phát từ một đỉnh của một đồ thị, tìm đường đi hiệu quả nhất đến một đỉnh nào đó". Một phát biểu khác thường gặp của dạng bài toán này là: Cho trước hai trạng thái T0 và TG hãy xây dựng chuỗi tr ạng thái T0, T1, T2, ..., Tn-1, Tn = TG sao cho : thỏa mãn một điều ki ện cho trước (thường là nhỏ nhất). Slide 24
  • 5. 2.2 Giải thuật tổng quát Ký hiệu: s đỉnh xu ất phát g: đỉnh đích n: đỉnh đang xét Γ(n): tập các đỉnh có thể đi trực tiếp từ đỉnh n Open: tập các đỉnh có thể xét ở bước kế tiếp Close: tập các đỉnh đã xét Slide 25
  • 6. 2.2 Giải thuật tổng quát (tiếp) Begin Open := {s}; Close := ø; While (Open <> ø) do begin n:=Retrieve(Open); if (n=g) then Return True; Open := Open ∪ Γ(n); // ( Γ(n) - Close) Close := Close ∪ {n}; end; Return False; End; Slide 26
  • 7. Ví dụ: Xét graph sau: B E H A C D F G I J s = A là đỉnh bắt đầu g= G là đỉnh đích Slide 27
  • 8. 2.3 Breath First Search - Ví d ụ Xét graph sau: L ần l ặp n Γ(n) Open Close B E H 0 A 1 2 3 C D 5 6 F G 7 I J A {B, C, D} B {E, F} C {F, G} 4 D ø E {H, I} F {J} G True {A} ø {B, C, D} {A} {C, D, E, F} {A, B} {D, E, F, G} {A, B, C} {E, F, G} {A, B, C, D} {F, G, H, I} {A, B, C, D, E} {G, H, I, J} {A, B, C, D, E, F} Slide 28
  • 9. 2.3 Breath First Search - Ví dụ Xét graph sau:A->U Lần lặp n Γ(n) Open Close B E A C F G 0 1 2 3 D 5 6 7 8 9 A B C 4 D E F G H I {B, C, D} {E, F} {F, G} ø {H, I} {J} ø Ø ø Ø {A} ø {B,C,D} {A} {C,D, E,F} {A, B} {D,E, F,G} {A, B, C} {E, F, G} {A, B, C, D} {F, G, H, I} {A, B, C, D, E} {G, H, I, J} {A, B, C, D, E, F} {H, I, J} {A, B, C, D, E, F,G} {I, J} {A,B,C, D, E, F,G,H} {J} {A,B,C, D, E, 10 J Ø F,G,H,I} H I J {A,B,C, D, E, FALSE F,G,H,I,J} Slide 29
  • 10. Ví dụ: Xét graph sau: A B E H C F I J D G Slide 30
  • 11. 2.4 Depth First Search - Ví dụ Xét graph sau: Lần lặp n Γ(n) Open Close B E H A C F I J 0 1 A {B, C, D} 2 B {E, F} 3 E {H, I}D 4 H Ø 5 I Ø 6 F {J}G 7 J Ø 8 C {F, G} 9 G True {A} {B, C, D} {E, F, C, D} {H, I, F, C, D} {I, F, C, D} {F, C, D} {J, C, D} {C, D} {G, D} ø {A} {A, B} {A, B, E} {A, B, E, H} {A, B, E, H, I} {A, B, E, H, I, F} {A, B, E, H, I, F,J} {A,B,E,H,I, F,J,C} Slide 31
  • 12. Breath First vs Depth First Breath First: open được tổ chức dạng FIFO Depth First: open được tổ chức dạng LIFO Hi ệu qu ả - Breath First luôn tìm ra nghiệm có số cung nhỏ nhất - Depth First “thường” cho kết quả nhanh hơn. K ết qu ả - BFS, DFS chắc chắn tìm ra kết quả nếu có. Bùng nổ tổ hợp là khó khăn lớn nhất cho các giải thuật này. Giải pháp cho bùng nổ tổ hợp?? Slide 32
  • 13. Tìm kiếm rộng 1. 2. 2. 3. 4. 5. 6. Open = [A]; closed = [] Open = [B,C,D]; closed = [A] Open = [C,D,E,F]; closed = [B,A] Open = [D,E,F,G,H]; closed = [C,B,A] Open = [E,F,G,H,I,J]; closed = [D,C,B,A] Open = [F,G,H,I,J,K,L];closed = [E,D,C,B,A] Open = [G,H,I,J,K,L,M];(vì L đã có trong open); closed = [F,E,D,C,B,A] … Slide 33
  • 14. Tìm kiếm sâu 1. 2. 3. 4. 5. 6. 7. 8. 9. Open = [A]; closed = [] Open = [B,C,D]; closed = [A] Open = [E,F,C,D];closed = [B,A] Open = [K,L,F,C,D]; closed = [E,B,A] Open = [S,L,F,C,D]; closed = [K,E,B,A] Open = [L,F,C,D]; closed = [S,K,E,B,A] Open = [T,F,C,D]; closed = [L,S,K,E,B,A] Open = [F,C,D]; closed = [T,L,S,K,E,B,A] … Slide 34
  • 15. Depth first search có giới hạn Depth first search có khả năng lặp vô tận do các trạng thái con sinh ra liên tục. Độ sâu tăng vô tận. Khắc phục bằng cách giới hạn độ sâu của giải thuật. Sâu bao nhiêu thì vừa? Chiến lược giới hạn: - Cố định một độ sâu MAX, như các danh thủ chơi cờ tính trước được số nước nhất định - Theo cấu hình resource của máy tính - Meta knowledge trong việc định giới hạn độ sâu. Giới hạn độ sâu => co hẹp không gian trạng thái => có thể mất nghiệm. Slide 35
  • 16. Chương 3: TÌM KIẾM KINH NGHIỆM
  • 17. 3.1 Heuristic là gì  Heuristic là gì? – Heuristic là những tri thức được rút tỉa từ những kinh nghiệm, “trực giác” của con người. – Heuristic có thể là những tri thức “đúng” hay “sai”. – Heuristic là những meta knowledge và “thường đúng”.  Heuristic dùng để làm gì? Trong những bài toán tìm kiếm trên không gian trạng thái, có 2 trường hợp cần đến heuristic: 1. Vấn đề có thể không có nghiệm chính xác do các mệnh đề không phát biểu chặt chẽ hay thiếu dữ liệu để khẳng định kết quả. 2. Vấn đề có nghiệm chính xác nhưng phí tổn tính toán để tìm ra nghiệm là quá lớn (hệ quả của bùng nỗ tổ hợp) Heuristic giúp tìm kiếm đạt kết quả với chi phí thấp hơn
  • 18. Heuristic (tt)  Heuristic dùng như thế nào trong SSS? – Tìm kiếm trên không gian trạng thái theo chiều nào? Sâu hay rộng? – Tìm theo Heuristic : Heuristic định hướng quá trình tìm kiếm theo hướng mà “nó” cho rằng khả năng đạt tới nghiệm là cao nhất. Không “sâu” cũng không “rộng”  Kết quả của tìm kiếm với Heuristic – Việc tìm kiếm theo định hướng của heuristic có kết quả tốt hay xấu tùy theo heuristic “đúng” hay “sai”. – Heuristic có khả năng bỏ xót nghiệm – Heuristic càng tốt càng dẫn đến kết quả nhanh và tốt. Làm sao tìm được Heuristic tốt???
  • 19. Best First Search Procedure Best_First_Search; Begin open:=[start]; close:=[]; While (open<>[]) do begin Lấy phần tử đầu tiên X khỏi Open. if X là goal then return path từ start đến X else begin sinh ra các nút con của X; for mỗi nút con Y của X do case Y of Y không có trong open hay close: begin gán giá trị heuristic cho Y; đưa Y vào open; end; Y đã có trong Open: if đến được Y bằng một path ngắn hơn then gán path ngắn hơn này cho Y trên Open. Y đã có trên close: if đến được Y bằng một path ngắn hơn then begin xóa Y khỏi danh sách Close; thêm Y vào danh sách Open; end; end; /*end case*/ Đưa X vào close; Xếp thứ tự các trạng thái trên Open theo giá trị Heuristic (tăng dần) end; / while/ return failure; End;
  • 21. Best First Search (tt)  Best First search vs Depth First & Breath First – Best First search tương tự như Depth First & Breath First nhưng phần tử được xét tiếp theo là phần tử có giá trị heuristic tốt nhất. – Cần có một hàm đánh giá các trạng thái để xác định giá trị heuristic cho các trạng thái. – Không gian trạng thái vẫn không thay đổi về “toàn cục“ tuy nhiên thường Heuristic search có không gian trạng thái làm việc nhỏ hơn Depth First và Breath First. Tại sao??  Do sự định hướng các trạng thái kế tiếp theo hướng có khả năng tìm ra nghiệm nhanh hơn nên số trạng thái xét dư thừa sẽ hạn chế  sinh ít trạng thái con hơn  Điều này cũng là nguyên nhân làøm cho Best First Search có thể dẫn đến kết quả là “nghiêäm phụ” thay vì “nghiệm tối ưu”.
  • 22. Hàm lượng giá Heuristic  Hàm lượng giá Heuristic là hàm ước lượng phí tổn để đi từ trạng thái hiện tại đến trạng thái goal.  Cơ sở để xác định hàm lượng giá là dựa vào tri thức/kinh nghiệm thu thập được.  Hàm lượng giá cho kết quả đúng (gần thực thế) hay sai (xa giá trị thực) sẽ dẫn đến kết quả tìm được tốt hay xấu.  Không có chuẩn mực cho việc đánh giá một hàm lượng giá Heuristic. Lý do: – Không có cấu trúc chung cho hàm lượng giá – Tính đúng/sai thay đổi liên tục theo từng vấn đề cụ thể – Tính đúng/sai thay đổi theo từng tình huống cụ thể trong một vấn đề  Có thể dùng nhiều hàm lượng giá khác nhau theo tình huống  cần hàm lượng giá về các hàm lượng giá.
  • 23. Hàm lượng giá Heuristic  Xét bài toán 8 pussle với goal là: 1 2 3 8 4 7 6 5 Heuristic 1: Tổng số miếng sai vị trí Heuristic 2: Tổng khoảng cách sai vị trí của từng miếng. Heuristic 3: Số cặp hoán đổi vị trí nhân cho 2 5 6 0 3 4 0 5 6 0 2 8 3 1 6 4 7 5 2 8 3 1 4 7 6 5 2 8 3 1 6 4 7 5 Việc chọn lựa hàm Heuristic là khó khăn và có ý nghĩa quyết định đối với tốc độ của giải thuật
  • 24. Hàm lượng giá Heuristic  Xét lại hoạt động của giải thuật Best First Search: – Khi có 2 nút cùng có giá trị kỳ vọng đạt đến mục tiêu bằng nhau thì nút có path từ nút bắt đầu đến nút đó ngắn hơn sẽ được chọn trước như vậy nút này có giá trị Heuristic tốt hơn. – Hay nói cách khác hàm lượng giá Heuristic cho nút gần start hơn là tốt hơn nếu kỳ vọng đến goal là bằng nhau. – Vậy chọn nút nào nếu kỳ vọng của 2 nút khác nhau? Nút kỳ vọng tốt hơn nhưng xa start hay nút kỳ vọng xấu hơn nhưng gần root  Hàm lượng giá bao gồm cả 2 và có cấu trúc: F(n) := G(n) + H(n) G(n): phí tổn thực từ root đến n H(n): phí tổn ước luợng heuristic từ n đến goal.
  • 25. Ví dụ – Best first search  Xét ví dụ là bài toán 8 puzzle với: 2 8 3 1 6 4 7 5 Bắt đầu 1 2 3 8 4 7 6 5 Mục tiêu  Hàm lượng giá: F(n) = G(n) + H(n) Với G(n): số lần chuyển vị trí tile đã thực hiện H(n): Số tile nằm sai vị trí Nút X có giá trị heuristic tốt hơn nút Y nếu F(x) < F(y). Ta có hoạt động của giải thuật Best First search trên như hình sau:
  • 26. Ví dụ – Best first search (tt) 57 461 3821 State A F(a) =0+4=4 57 461 382x State B F(b) =1+5=6 567 41 3822 State C F(c) =1+3=4 57 461 382x State D F(c) =1+5=6 567 41 3823 State E F(e) =2+3=5 567 481 324 State F F(f) =2+3=5 567 41 382x State G F(g) =2+4=6 567 412 38x State H F(h) =3+3=6 56 417 382x State I F(i) =3+4=7
  • 27. Ví dụ – Best first search (tt) 567 481 324 State F F(f) =2+3=5 567 481 325 State J F(j) =3+2=5 567 481 32x State K F(k) =3+4=7 567 41 382y State Close 567 481 32y Close 567 48 3216 State L F(l) =4+1=5 567 481 32y State Close 567 48 3217 State M F(m) =5+0=5 56 487 321x State N F(n) =5+1=7
  • 28. Lần X Open Close 0 1 2 3 4 5 6 7 A4 C4 E5 F5 J5 l5 m5 [a4] [c4,b6,d6] [e5,f5,g6,b6,d6] [f5,h6,g6,b6,d6,i7] [j5,h6,g6,b6,d6,k7,i7] [l5,h6,g6,b6,d6,k7,i7] [m5,h6,g6,b6,d6,k7,i7,n7] [] [a4] [a4,c4] [a4,c4,e5] [a4,c4,e5,f5] [a4,c4,e5,f5,j5] [a4,c4,e5,f5,j5,l5]
  • 29. Biến thể của Best First Search  Giải thuật best-first-search có các biến thể sau:  Khi h(n) là chi phí của dãy phép chuyển từ trạng thái đầu đến trạng thái n thì giải thuật best-first-search có tên gọi khác là giải thuật tìm kiếm đều (uniform search).  Khi h(n) là ước lượng chi phí/khoảng cách từ n đến đích (ví dụ như khoảng cách Manhatan trong bài toán 8 số ở trên) thì giải thuật best-first-search được gọi là giải thuật tham ăn (greedy search).  Khi h(n) = f(n) + g(n), trong đó f(n) là hàm chi phí/khoảng cách từ trạng thái đầu đến n và g(n) là hàm ước lượng chi phí/khoảng cách từ n đến trạng thái đích thì giải thuật best- first-search được gọi là giải thuật A*.
  • 30. Thuật toán A*  Thuật toán A* sử dụng tìm kiếm tốt nhất đầu tiên với hàm đánh giá f(u) Begin 1. Khởi tạo danh sách L chỉ chứa trạng thái đầu; 2. Loop do 2.1 If L rỗng then {thông báo thất bại; stop}; 2.2 Lấy trạng thái u ở đầu danh sách L; 2.3 If u là trạng thái kết thúc then { thông báo thành công; stop }
  • 31. 2.4 For mỗi trạng thái v kề u do { g(v) ← g(u) + k(u,v); f(v) ← g(v) + h(v); Đặt v vào danh sách L } 2.5 Sắp xếp L theo thứ tự tăng dần của hàm đánh giá sao cho trạng thái tốt nhất ở đầu danh sách L; End;
  • 32.  Ví dụ: cho không gian trạng thái với hàm đánh giá :
  • 33.
  • 34. Đánh giá giải thuật Heuristic  Admissibility – Tính chấp nhận Một giải thuật Best first search với hàm đánh giá F(n) = G(n) + H(n) với N : Trạng thái bất kỳ G(n) : Phí tổn đi từ nút bắt đầu đến nút n H(n) : Phí tổn ước lượng heuristic đi từ nút n đến goal Được gọi là giải thuật A Một giải thuật tìm kiếm được xem là admissible nếu đối với một đồ thị bất kỳ nó luôn dừng ở path nghiệm tốt nhất (nếu có). Giải thuật A*: Là giải thuật A với hàm heuristic H(n)luôn luôn ≤ giá trị thực đi từ n đến goal. Giải thuật A* là admissible
  • 35. Các giải thuật khác  Tìm kiếm leo đồi (hill-climbing)  Ý tưởng: Tìm kiếm theo chiều sâu kết hợp với hàm đánh giá. Mở rộng trạng thái hiện tại và đánh giá các trạng thái con của nó bằng hàm đánh giá heuristic. Tại mỗi bước, nút lá “tốt nhất” sẽ được chọn để đi tiếp.
  • 36. Tìm kiếm leo đồi Procedure Hill-Climbing_search; Begin 1. Khởi tạo ngăn xếp S chỉ chứa trạng thái đầu; 2. Loop do 2.1 If S rỗng then {thông báo thất bại; stop}; 2.2 Lấy trạng thái u ở đầu ngăn xếp S; 2.3 If u là trạng thái kết thúc then {thông báo thành công; stop}; 2.4 For mỗi trạng thái v kề u do đặt v vào danh sách L; 2.5 Sắp xếp L theo thứ tự tăng dần của hàm đánh giá sao cho trạng thái tốt nhất ở đầu danh sách L; 2.6 Chuyển danh sách Lvào ngăn xếp S; End;
  • 37.
  • 38.
  • 39. Thuật toán nhánh – cận  Sử dụng thuật toán leo đồi với hàm đánh giá f(u)  Trong thuật toán này, tại mỗi bước khi phát triển trạng thái u, ta sẽ chọn trạng thái tốt nhất v (f(v) nhỏ nhất) trong số các trạng thái kề u để phát triển trạng thái tiếp theo.  Đi xuống cho tới khi gặp v là đích, hoặc v không có đỉnh kề, hoặc gặp v mà f(v) lớn hơn đường đi tối ưu tạm thời. Trong trường hợp này không phát triển đỉnh v nữa, mà quay lên cha của v để tiếp tục đi xuống những trạng thái tốt nhất còn lại chưa xét.
  • 40. Thuật toán nhánh – cận (tt) Procedure Branch_and_Bound_search; Begin 1. Khởi tạo danh sách L chỉ chứa trạng thái đầu; Gán giá trị ban đầu cho cost; 2. Loop do 2.1 If L rỗng then {thông báo thất bại; stop}; 2.2 Lấy trạng thái u ở đầu danh sách L; 2.3 If u là trạng thái kết thúc then if g(u) ≤ y then {y ← g(y); Quay lại 2.1}; 2.4 If f(u) > y then Quay lại 2.1
  • 41. 2.5 For mỗi trạng thái v kề u do { g(v) ← g(u) + k(u,v); f(v) ← g(v) + h(v); Đặt v vào danh sách L1 } 2.5 Sắp xếp L1 theo thứ tự tăng dần của hàm đánh giá; 2.6 Chuyển L1 vào đầu danh sách L sao cho trạng thái tốt nhất ở đầu L1 ở đầu danh sách L; End;
  • 42.  Ví dụ: cho không gian trạng thái với hàm đánh giá :