1. TRÍ TUỆ NHÂN TẠO
Trần Thị Hương
Khoa Kỹ Thuật – Công Nghệ
Trường Đại Học Hà Tĩnh
Email: huong.tranthi@htu.vn
1
2. NỘI DUNG
TỔNG QUAN VỀ KHOA HỌC TTNT
CÁC PHƯƠNG PHÁP BIỂU DIỄN VÀ
GIẢI QUYẾT VẤN ĐỀ
2
3. TÀI LIỆU THAM KHẢO
1. Trí tuệ nhân tạo – Các phương pháp Giải quyết vấn
đề và kỹ thuật xử lý tri thức (1999)
Nguyễn Thanh Thuỷ
2. Trí tuệ nhân tạo – Đinh Mạnh Tường
3
4. KHỐI LƯỢNG & CẤU TRÚC HỌC PHẦN
Số đơn vị học trình: 3
Lý thuyết: 30 tiết
Thực hành, bài tập: 15tiết
4
6. Trí Tuệ Nhân Tạo là gì?
Là một nhánh của khoa học máy tính liên quan
đến sự tự động hóa hành vi thông minh.
Trí tuệ là gì?
Các câu hỏi chưa có câu trả lời:
Liệu trí tuệ có phải là một khả năng duy nhất hay chỉ
là một tên gọi cho một tập hợp các hành vi phân biệt
và độc lập nhau?
Thế nào là khả năng sáng tạo?
Thế nào là trực giác?
Điều gì diễn ra trong quá trình học?
6
7. Trí Tuệ Nhân Tạo là gì?
Intelligence? Trí năng, trí tuệ, trí thông minh
Thế nào là Artificial intelligence? Chúng ta sẽ
phân tích 4 loại quan niệm về intelligence sau :
7
8. Trí Tuệ Nhân Tạo là gì?
“Nỗ lực tạo ra các máy tính “Việc nghiên cứu các năng lực trí
biết tư duy … máy tính có ý tuệ sử dụng các mô hình tính toán
thức (The exciting new effort to (The study of mental faculties
make computers thinks … through the use of computational
machine with minds, in the full models)”
and literal sense)” (Charniak et al. 1985)
(Haugeland 1985)
“Nghệ thuật sáng tạo ra các “Nghiên cứu tìm cách giải thích và
máy thực hiện các chức năng mô phỏng các hành vi thông minh
đòi hỏi sự thông minh như khi bằng các quá trình tính toán (A field
thực hiện bởi con người (The of study that seeks to explain and
art of creating machines that emulate intelligent behavior in terms
perform functions that require of computational processes)”
intelligence when performed (Schalkol, 1990)
by people)” (Kurzweil, 1990) 8
9. Trí tuệ nhân tạo: Hệ thống tư duy như con người
“Nỗ lực tạo ra các máy tính Hệ thống tư duy như con
biết tư duy … máy tính có ý người
thức (The exciting new effort to
( Systems that think
make computers thinks …
machine with minds, in the full like humans )
and literal sense)”
(Haugeland 1985)
Ví dụ: Newell&Simson
Con người tư duy như thế (1961) phát triển GPS
nào? Chưa có câu trả lời (General Problem
chính xác trong rất nhiều Solving) bắt chước cách
tình huống. giải quyết các bài toán
trong toán học của con
người.
9
10. Trí tuệ nhân tạo: hệ thống ứng xử như con người
Hệ thống ứng xử (hành động) Turing (1950) đề xuất
như con người (Hệ thống mà bộ test (Turing test):
hành vi, ứng xử của nó như hội thoại giữa hệ
con người) thống và người phỏng
vấn. Nếu người phỏng
Systems that act like vấn không biết được
humans hệ thống là người hay
“Nghệ thuật sáng tạo ra các là máy thì hệ thống
máy thực hiện các chức năng đó được cho là thông
đòi hỏi sự thông minh như khi minh.
thực hiện bởi con người (The
art of creating machines that - Con người lúc nào cũng
perform functions that require ứng xử “đúng”?
intelligence when performed - Hành vi như thế nào được
by people)” (Kurzweil, 1990) coi là giống con người?
11. Trí tuệ nhân tạo: hệ thống tư duy hợp lý
Hệ thống tư duy hợp “Việc nghiên cứu các năng lực trí
lý tuệ sử dụng các mô hình tính toán
(The study of mental faculties
System that think through the use of computational
rationally models)”
Aristotle hình thức (Charniak et al. 1985)
hóa “tư duy đúng”
1. Không biểu diễn được tri
(Luật của tư duy thức không chắc chắn
đúng). Hệ tam đoạn 2. Nhiều bài toán không dễ giải
luận là khuôn mẫu để quyết do thiếu tài nguyên
thu được kết luận (không gian nhớ và thời
đúng khi cho giả thiết gian)
đúng. VD: Socrat là 3. Nhiều hành động coi là
người; tất cả mọi thông minh nhưng ko liên
người đều chết; do đó quan đến tư duy (chẳng hạn:
Socrat phải chết. co tay lại khi chạm vật nóng)
12. Trí tuệ nhân tạo: hệ thống ứng xử hợp lý
Hệ thống ứng xử hợp lý (Hệ thống
mà hành động/ứng xử hợp lý)
Systems that act rationally
Ưu điểm: “Nghiên cứu tìm cách giải thích và
-Tổng quát hơn mô phỏng các hành vi thông minh
-Tính hợp lý có thể bằng các quá trình tính toán (A field
dễ dàng được định of study that seeks to explain and
nghĩa (rationality is emulate intelligent behavior in terms
well defined) of computational processes)”
(Schalkol, 1990)
CS 460, Lecture 1
13. Artificial Intelligence: Hành động hợp lý
Intelligence? Trí năng, trí tuệ, trí thông minh
Môn học này, chúng ta thống nhất quan niệm trí thông
minh là hành động hợp lý, hành động tốt nhất hoặc hợp
lý nhất mà cho kết quả tối ưu của một hàm nào đó.
Quan niệm như trên phù hợp với: khi nói đến tính thông
minh, chúng ta thường gắn với một hành động, hành vi,
ứng xử nào đó. Vi vậy Intelligence có thể coi đồng
nghĩa với rational action, hay intelligent/rational
agent
14. Turing Test
Interrogator
Ưu điểm của Turing Test
Khái niệm khách quan về trí tuệ
Tránh đi những thảo luận về quá trình bên trong
và ý thức
Loại trừ định kiến thiên vị của người thẩm vấn
15. Các ý kiến phản đối Turing Test
Thiên vị các nhiệm vụ giải quyết vấn đề bằng
ký hiệu
Trói buộc sự thông minh máy tính theo kiểu
con người, trong khi con người có:
Bộ nhớ giới hạn
Có khuynh hướng nhầm lẫn
Tuy nhiên, trắc nghiệm Turing đã cung cấp một
cơ sở cho nhiều sơ đồ đánh giá dùng thực sự
cho các chương trình TTNT hiện đại.
16. Các Ứng Dụng của TTNT
1. Trò chơi và các bài toán đố
2. Suy luận và chứng minh định lý tự động
3. Các hệ chuyên gia (các hệ tri thức)
4. Xử lý ngôn ngữ tự nhiên
5. Lập kế hoạch và người máy
6. Máy học
7. Mạng Neuron và giải thuật di truyền
8. …
17. Trí Tuệ Nhân Tạo - Đặc Điểm
Sử dụng máy tính vào suy luận trên các ký hiệu,
nhận dạng qua mẫu, học, và các suy luận khác…
Tập trung vào các vấn đề “khó” không thích hợp
với các lời giải mang tính thuật toán.
Quan tâm đến các kỹ thuật giải quyết vấn đề sử
dụng các thông tin không chính xác, không đầy đủ,
mơ hồ…
Cho lời giải ‘đủ tốt’ chứ không phải là lời giải
chính xác hay tối ưu.
Sử dụng heuristics – “bí quyết”
Sử dụng tri thức chuyên môn
…
18. Những vấn đề chưa được giải quyết
Chương trình chưa tự sinh ra được heuristic
Chưa có khả năng xử lý song song của con
người
Chưa có khả năng diễn giải một vấn đề theo
nhiều phương pháp khác nhau như con người.
Chưa có khả năng xử lý thông tin trong môi
trường liên tục như con người.
Chưa có khả năng học như con người.
Chưa có khả năng tự thích nghi với môi
trường.
19. Các phương pháp và kỹ thuật
Các phương pháp biểu diễn tri thức và kỹ
thuật xử lý tri thức
Các phương pháp giải quyết vấn đề
Các phương pháp Heuristic
Các phương pháp học
Các ngôn ngữ TTNT
19
20. Các phương pháp và kỹ thuật
Các phương pháp biểu diễn tri thức và kỹ
thuật xử lý tri thức
Các phương pháp giải quyết vấn đề
Các phương pháp Heuristic
Các phương pháp học
Các ngôn ngữ TTNT
20
21. CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNT
TTNT kế thừa nhiều ý tưởng, quan điểm và các kỹ thuật từ các
ngành khoa học khác
Tâ
m
lý c
Nghiên cứu tâm họ
c t họ Các lý thuyết của lập
trí con người Triế
luận và học
TTNT
Ngôn ngữ học
Toán học
Nghiên cứu ý nghĩa và Các lý thuyết xác suất logic,
cấu trúc của ngôn ngữ tạo quyết định và tính toán
Khoa học
máy tính
Làm cho TTNT trở
thành hiện thực
21
38. I. Biểu diễn vấn đề trong KG trạng thái.
Vấn đề là gì?
Một bài toán nào đó cần giải quyết, chẳng hạn
như một trò chơi, c.minh một định lý,…
Một lớp rộng các bài toán có thể giải quyết
bằng cách biểu diễn bởi các trạng thái và các
tóan tử (phép biến đổi trạng thái).
40. Các thành phần của KGTT
Sự sắp xếp các số tại mỗi thời điểm là một
TT.
Hình bên trái là trạng thái ban đầu.
Hình bên phải là trạng thái kết thúc hay trạng
thái đích (goal).
Trạng thái đích của một bài toán có thể nhiều
hơn một.
41. Toán tử là một phép biển đổi hợp lệ chuyển từ
trạng thái này sang trạng thái khác.
Bằng các tóan tử, từ trạng thái ban đầu, tiếp
tục phát triển, cuối cùng thu được một không
gian trạng thái (KGTT).
42. Định nghĩa
KGTT là một bộ bốn (X, u0, F, G), trong đó:
X là tập các trạng thái
u0 là trạng thái bắt đầu
F là tập các toán tử, gồm các phép biến đổi.
G là tập trạng thái đích.
43. Biểu diễn KGTT
Không gian trạng thái có thể biểu diễn bằng
đồ thị có hướng: mỗi đỉnh là một trạng thái,
mỗi cung là một toán tử.
Nghiệm của bài toán nếu như ta tìm được
đường đi từ trạng thái bắt đầu đến một trong
các trạng thái đích.
44. Biểu diễn bằng cây
Trong đồ thị của KGTT có thể xuất hiện chu
trình gây khó khăn cho việc tìm kiếm, hạn chế
các toán tử trong F có thể đưa đồ thị trở thành
cây, một cấu trúc dễ tìm kiếm hơn.
VD. KGTT của trò chơi caro là cây.
45. Chiến lược tìm kiếm?
Khi tìm kiếm lời giải, từ một trạng thái nào đó chưa
phải là trạng thái đích, ta dựa theo toán tử sinh ra tập
các trạng thái mới: mở rộng.
Để được lời giải, ta phải liên tục chọn trạng thái mới,
mở rộng, kiểm tra cho đến khi tìm được trạng thái
đích hoặc không mở rộng được KGTT.
Tập các trạng thái được mở rộng sẽ có nhiều phần
tử, việc chọn trạng thái nào để tiếp tục mở rộng được
gọi là chiến lược tìm kiếm.
46. Đánh giá một chiến lược?
+ Tính đầy đủ: chiến lược phải đảm bảo tìm
được lời giải nếu có.
+ Độ phức tạp thời gian: mất thời gian bao lâu để
tìm được lời giải.
+ Độ phức tạp không gian: tốn bao nhiêu đơn vị
bộ nhớ để tìm được lời giải.
+ Tính tối ưu: tốt hơn so với một số chiến lược
khác hay không.
47. Thông tin mỗi nút?
+ Nội dung trạng thái mà nút hiện hành đang
biểu diễn.
+ Nút cha đã sinh ra nó.
+ Toán tử đã được sử dụng để sinh ra nút hiện
hành.
+ Độ sâu của nút.
+ Giá trị đường đi từ nút gốc đến nút hiện hành.
48. Tìm kiếm mù?
Trạng thái được chọn để phát triển chỉ đơn
thuần dựa theo cấu trúc của KGTT mà không
có thông tin hướng dẫn nào khác.
Nói chung tìm kiếm mù sẽ không hiệu quả.
Đây là cơ sở để chúng ta cải tiến và thu được
những chiến lược hiệu quả hơn.
49. 1. Tìm kiếm theo chiều rộng (BFS)
Trạng thái được ưu tiên phát triển là trạng thái
được sinh ra trước.
Dùng danh sách open chứa các trạng thái sinh
ra đang chờ phát triển
Danh sách closed chứa các trạng thái đã được
khảo sát.
51. Thuật toán BFS
procedure bfs;
begin
open:=[start]; closed:=[];
while open<>[] do
begin
loại tt ngoài cùng bên trái của open, gọi nó là u
if (u là một đích) then thông báo kết quả, thoát
else begin
Đưa u vào closed
Phát sinh các con v của u
Loại các con đã có trong open+closed
Đưa các con còn lại vào bên phải open (1)
end
end
Thông báo thất bại
End
52. 1. Open = [A]; closed = []
2. Open = [B,C,D];
closed = [A]
2. Open = [C,D,E,F];
closed = [B,A]
3. Open = [D,E,F,G,H];
closed = [C,B,A]
4. Open = [E,F,G,H,I,J];
closed = [D,C,B,A]
5. Open = [F,G,H,I,J,K,L];
closed = [E,D,C,B,A]
6. Open = [G,H,I,J,K,L,M];
(vì L đã có trong open);
closed = [F,E,D,C,B,A]
…
53. Nhận xét
Các trạng thái con phát sinh nhờ các toán tử hợp lệ.
Danh sách open bổ sung phần tử bên phải, lấy phần
tử bên trái.
Thuật tóan khảo sát tất cả các nút ở độ sâu d sau đó
mới đến mức d+1 nên chắc chắn tìm được nghiệm.
Nếu vô nghiệm và KGTT hữu hạn thì thuật toán sẽ
dừng và thông báo vô nghiệm.
54. Đánh giá
Giả sử mỗi trạng thái trung bình sinh ra b
trạng thái con (kề), b - gọi là nhân tố nhánh.
Giả sử đường đi nghiệm có độ dài d. Tình
trạng xấu nhất phải khảo sát là ?
Độ phức tạp thời gian là O(b^d), độ phức tạp
không gian cũng là O(b^d).
56. 2. Tìm kiếm theo chiều sâu
(DFS)
Mở rộng nút có độ sâu hơn trước các nút khác
đang chờ xử lý.
Khi nào không mở rộng được nữa thì mới
quay lại nút ở độ sâu thấp hơn.
Do đó, các nút mới được sinh ra chờ xử lý
phải được bỏ bên trái của hàng đợi open (tại
câu lệnh 1).
56
57. Thuật toán DFS
procedure bfs;
begin
open:=[start]; closed:=[];
while open<>[] do
begin
loại tt u ngoài cùng bên trái của open
if (u là một đích) then thông báo kết quả, thoát
else begin
Đưa u vào closed
Phát sinh các con v của u
Loại các con đã có trong open+closed
Đưa các con còn lại vào bên trái open (1)
end
end
Thông báo thất bại
End
57
58. Tìm kiếm Sâu
1. Open = [A]; closed = []
2. Open = [B,C,D]; closed = [A]
3. Open = [E,F,C,D];closed =
[B,A]
4. Open = [K,L,F,C,D];
closed = [E,B,A]
5. Open = [S,L,F,C,D];
closed = [K,E,B,A]
6. Open = [L,F,C,D];
closed = [S,K,E,B,A]
7. Open = [T,F,C,D];
closed = [L,S,K,E,B,A]
8. Open = [F,C,D];
closed = [T,L,S,K,E,B,A]
9. …
58
59. Nhận xét
Khảo sát nút ở độ sâu d thì DFS lưu trữ b*d nút, khi
đó BFS phải lưu trữ b^d nút.
Ở độ sâu d=12, DFS chỉ sử dụng 12KB trong khi
BFS dùng đến 111TB.
Độ phức tạp thời gian của DFS vẫn là O(b^d) vì
trong trường hợp xấu nhất các nút được khảo sát vẫn
như BFS.
Cơ hội để tìm thấy đích nhanh hơn nếu nó nằm ở
phần KGTT bên trái.
59
60. Hạn chế
Bỏ qua cơ hội tìm thấy ngay trạng thái đích khi trạng
thái này nằm gần gốc.
Nếu KGTT vô hạn có thể không tìm được trạng thái
đích.
Nghiệm nói chung không phải là đường đi ngắn
nhất.
DFS là chiến lược không đầy đủ, không tối ưu.
Không nên sử dụng khi KGTT có độ sâu lớn hoặc
vô hạn.
60
61. Tìm kiếm sâu bằng cách đào sâu nhiều lần
Độ sâu giới hạn (depth bound): giải thuật TK
sâu sẽ quay lui khi trạng thái đang xét đạt đến độ sâu
giới hạn đã định.
TK Sâu bằng cách đào sâu nhiều lần: TK sâu
với độ sâu giới hạn là 1, nếu thất bại, nó sẽ lặp lại
GT TK sâu với độ sâu là 2,… GT tiếp tục cho đến
khi tìm được mục tiêu, mỗi lần lặp lại tăng độ sâu
lên 1.
GT này có độ phức tạp về thời gian cùng bậc
với TK Rộng và TK Sâu.
61
62. Thuật toán
procedure DFS(d);
begin
open:=[start]; closed:=[]; depth(start):=0;
while open<>[] do
begin
loại u ngoài cùng bên trái open
if (u là một đích) then thbáo kết quả, thoát
else
62
63. begin
Đưa u vào closed
If depth(u)<d then begin
Phát sinh các con v của u
Loại các con vừa phát sinh đã có trong open+ closed
Gán độ sâu cho các v bằng depth(u)+1
Đưa các con v còn lại vào bên trái open
End;
End;
End; {while}
Thông báo thất bại
End.
63
68. Tìm kiếm sâu dần
Số lượng nodes được sinh trong giới hạn độ sâu d với độ
phân nhánh b:
NDLS = b0 + b1 + b2 + … + bd-2 + bd-1 + bd
Số lượng nodes được sinh trong tìm kiếm sâu dần với độ sâu
d độ phân nhánh b:
NIDS = (d+1)b0 + d b1 + (d-1)b2 + … + 3bd-2 +2bd-1 + 1bd
Ví dụ b = 10, d = 5,.
NDLS = 1 + 10 + 100 + 1,000 + 10,000 + 100,000 = 111,111.
NIDS = 6 + 50 + 400 + 3,000 + 20,000 + 100,000 = 123,456.
Tỷ lệ (123,456 - 111,111)/111,111 = 11%
68
69. Qui bài toán về các bài toán con và các
chiến lược tìm kiếm trên đồ thị Và/Hoặc
Qui bài toán về các bài toán con
Thể hiện dưới dạng đồ thị VÀ/HOẶC
Các phương pháp tìm kiếm trong đồ thị
VÀ/HOẶC
69
70. Qui bài toán về các bài toán con
Ý tưởng cơ bản là xuất phát từ bài toán đặt ra,
tách bài toán này thành các bài toán con cho
đến khi bài toán ban đầu trở thành các bài
toán sơ cấp.
Bài toán sơ cấp được hiểu là bài toán mà lời
giải của chúng có thể nhận được ngay.
VD: Với bài toán n2 – 1 số, bài toán sơ cấp
chính là bài toán chuyển ô trống 1 lần để nhận
được trạng đích.
70
71. Thể hiện dưới dạng đồ thị VÀ/HOẶC
Đồ thị (định hướng) VÀ/HOẶC là cặp G =
(N,A), sao cho ∀n ∈ N, tất cả các đỉnh m∈
B(n) cùng thuộc vào một trong hai kiểu: đỉnh
VÀ, đỉnh HOẶC.
Khi các đỉnh con m của n là đỉnh VÀ thì cung
(n,m) (m∈ B(n)) được nối bởi ngoặc lớn.
VD:
71
72. Thể hiện dưới dạng đồ thị VÀ/HOẶC
Quy bµi to¸n vÒ c¸c bµi to¸n con § å thÞv µ /h o Æc
Bµi to¸ n §Ø
nh
To¸ n tö quy bµi to¸ n vÒbµi to¸ n con Cung
Bµi to¸ n ban ® u
Ç § Ø ® u (® nh gèc)
nh Ç Ø
C¸ c bµi to¸ n s¬ cÊp § Ø cuèi, ® nh kÕ thóc
nh Ø t
C¸ c bµi to¸ n con phô thuéc § Ø vµ
nh
C¸ c bµi to¸ n con ® lË
éc p § Ø hoÆ
nh c
Gi¶i bµi to¸ n ban ® u.
Ç T× ® thÞcon lêi gi¶i.
m å
72
73. Thể hiện dưới dạng đồ thị VÀ/HOẶC
Đỉnh giải được:
Các đỉnh kết thúc (cuối) là đỉnh giải được.
Nếu đỉnh n có các đỉnh con là đỉnh VÀ thì nó là đỉnh giải được
khi và chỉ khi tất cả các đỉnh con của nó giải được.
Nếu đỉnh n có các đỉnh con là đỉnh HOẶC thì nó là đỉnh giải
được khi và chỉ khi tồn tại 1 đỉnh con của nó giải được.
Đỉnh không giải được:
Nếu đỉnh n không là đỉnh kết thúc và không có các đỉnh con thì
nó là đỉnh không giải được.
Nếu đỉnh n không là đỉnh kết thúc và có các đỉnh con là đỉnh VÀ
thì nó là đỉnh không giải được khi và chỉ khi tồn tại một đỉnh con
không giải được.
Nếu đỉnh n không là đỉnh kết thúc mà có các đỉnh con là đỉnh
HOẶC thì nó là đỉnh không giải được khi và chỉ khi tất cả các
73
74. Thể hiện dưới dạng đồ thị VÀ/HOẶC
Đồ thị lời giải: Là đồ thị con của đồ thị
VÀ/HOẶC chỉ chứa các đỉnh giải được và
đỉnh đầu.
Nhận xét:
Nếu trên đồ thị VÀ/HOẶC không có đỉnh VÀ
nào thì đồ thị VÀ/HOẶC trở thành đồ thị thông
thường và khi đó đồ thị con lời giải sẽ suy biến
thành đường đi từ đỉnh đầu tới một đỉnh kết thúc
nào đó.
74
76. Các phương pháp tìm kiếm trong đồ thị
VÀ/HOẶC
Thủ tục gđ(n∈N)
{ if nhan(n)= “kxđ” then
if kt(n) then nhan(n)="gđ"
else if n ∉MO ∪ĐONG then nhan(n)=”kxđ”
else if kieu(n) then
{bien=True;
While B(n) ≠∅ and bien do
{m ← get(B(n));
gđ(m);
bien=(nhan(m)=”gđ”)}
if bien then nhan(n)=”gđ” else nhan(n)=”kxđ”}
else {bien=false;
repeat {m← get(B(n));
gđ(m);
bien=(nhan(m)=”gđ”)}
until bien or B(n)=∅
if bien then nhan(n)=”gđ” else nhan(n)=”kxđ”}}
76
77. Các phương pháp tìm kiếm trong đồ thị
VÀ/HOẶC
Thủ tục tìm kiếm theo chiều rộng TKRM
Thủ tục tìm kiếm theo chiều sâu TKSM
Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 77
78. Các phương pháp tìm kiếm trong đồ thị
VÀ/HOẶC: Thủ tục TKRM
Vào: Cây VÀ/HOẶC G=(N, A) với đỉnh đầu n0, tập đỉnh kết thúc T={ti}⊆ N
Ra: Thông báo “không thành công” nếu n0 kgđ, “thành công” nếu n0 gđ và đưa ra cây lời giải.
Phương pháp: /* sử dụng hai danh sách FIFO: MO, ĐONG */
{MO ={n0};
While MO ≠ ∅ do
{n← get(MO); /*Lấy đỉnh n đầu danh sách MO*/
ĐONG←{n} ∪ ĐONG;
bool = false;
if B(n) ≠∅ and bool = false then
{MO← MO ∪B(n); /* đưa B(n) vào cuối danh sách MO */
For each m ∈B(n) do
{if kt(m) then {nhan=”gđ”; bool=true}}
if bool then
{gđ(n0);
if nhan(n0)=”gđ” then exit(“thành công”)
else loại khỏi MO các đỉnh có tổ tiên là đỉnh giải được}}
else {nhan(n)=”kgđ”; kgđ(n0);
if nhan(n0) = “kgđ” then exit (“không thành công”)
else loại khỏi MO các đỉnh có tổ tiên là đỉnh không giải được;}}}
78
79. Các phương pháp tìm kiếm trong đồ thị
VÀ/HOẶC Thủ tục TKRM
VD:Áp dụng thuật toán TKRM đối với cây
sau
Tập T = {t1,t2,t3,t4}
Thứ tự duyệt:
abcdefgijk
g
Cây lời giải:
t4
các cung tô đậm D
k
E
c
f
t3
C
t2
F
e
B
a
t1
Nhận xét: Nếu cây lời giải tồn tại thì thủ tục TKRM sẽ dừng và
j
cho kết quả là cây lời giải có độ cao nhỏ nhất
b
A
d
i
79
80. Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC
Thủ tục TKSM
Vào: Cây VÀ/HOẶC G=(N, A) với đỉnh đầu n0, tập đỉnh kết thúc T={ti}⊆ N. Giới hạn sâu D.
Ra: Thông báo “không thành công” nếu n0 kgđ, “thành công” nếu n0 gđ và đưa ra cây lời giải.
Phương pháp: /* sử dụng hai danh sách FIFO: DONG, LIFO: MO */
{MO ={n0};
While MO ≠ ∅ do
{n← get(MO); /*Lấy đỉnh n đầu danh sách MO*/
ĐONG←{n} ∪ ĐONG;
bool = false;
if d(n)<= D and B(n) ≠∅ and bool = false then
{MO← MO ∪B(n); /* đưa B(n) vào đầu danh sách MO */
For each m ∈B(n) do
{if kt(m) then {nhan=”gđ”; bool=true}}
if bool then
{gđ(n0);
if nhan(n0)=”gđ” then exit(“thành công”)
else loại khỏi MO các đỉnh có tổ tiên là đỉnh giải được}}
else {nhan(n)=”kgđ”; kgđ(n0);
if nhan(n0) = “kgđ” then exit (“không thành công”)
else loại khỏi MO các đỉnh có tổ tiên là đỉnh không giải được;}}}
80
81. Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC
Thủ tục TKSM
VD: Áp dụng thuật toán TKSM đối với cây sau
d
B
Tập T = {t1,t2,t3,t4}
b
f
t1
Thứ tự duyệt:
a
abdAfceg C E
t2
Cây lời giải:
t3
A
e
D
g
c
các cung tô đậm
t4
Nếu một đỉnh kết thúc nào đó có độ sâu vượt quá giới hạn độ sâu D thì nó sẽ
bị bỏ qua trong quá trình tìm kiếm. Do vậy, trên thực tế có thể tồn tại cây lời
giải, song thuật toán lại thông báo không thành công. Để khắc phục tình trạng
này, người ta có thể cải biên thủ tục tìm kiếm theo chiều sâu thành thủ tục tìm
kiếm sâu dần, trong đó các nút được duyệt từng mức một.
81
83. Nguyên nhân
Các chiến lược tìm kiếm mù kém hiệu quả và
không thể áp dụng được trong nhiều trường
hợp.
Sử dụng thông tin của trạng thái kết hợp với
nhận xét dựa theo kinh nghiệm để cải tiến là
quan điểm chung của các chiến lược tìm kiếm
kinh nghiệm.
83
85. Khái niệm về hàm đánh giá
Hàm đánh giá là một hàm ước lượng khả
năng về đích của mỗi trạng thái.
Chỉ là ước lượng vì nói chung chúng ta không
thể tính toán chính xác khả năng này, nếu tính
được nghĩa là đã tìm được lời giải!
Tuy nhiên, nhờ kinh nghiệm trong nhiều bài
toán cụ thể, có thể ước lượng được g.trị này.
85
86. Ví dụ
Nếu đếm các số sai vị trí của một trạng thái so
với trạng thái đích thì B là 3 và C là 1.
Như vậy, số này càng nhỏ thì trạng thái đó
càng có khả năng về đích
Có thể dùng số này làm giá trị cho hàm đánh
giá.
86
87. Hình thức hóa
Trong đó X là KGTTcủa bài toán.
Dễ thấy, nếu u là trạng thái đích thì h(u)=0. Mỗi
u ta có một giá trị ước lượng là h(u)
h(B)=3; h(C)=1
Hàm đánh giá còn được gọi là hàm heuristic. Giá
trị hàm càng nhỏ thì khả năng về đích của trạng
thái càng lớn.
87
89. Nhiều cách XD hàm h
h(D)=h(E)=2
Về mặt đường đi qua các ô ngang dọc để di chuyển
về đúng vị trí thì (D) phải di chuyển đọan đường xa
hơn (E) nên có thể là (D) không tốt bằng (E).
Theo nhận xét này, ta có thể xây dựng hàm h bằng
tổng khoảng cách phải di chuyển của các ô sai vị trí.
Ví dụ: h1(D)=3+3 = 6, h1(E)=2+2=4
Một ví dụ khác là lấy độ dài đường chim bay !
89
90. Các bước xây dựng chiến lược tìm kiếm
+ Biểu diễn bài toán bằng một KGTT thích hợp
+ Xây dựng hàm đánh giá
+ Thiết kế chiến lược chọn trạng thái
90
92. a) Tìm kiếm leo đồi – Hill Climbing
Search (Pearl, 1984)
Chọn một trạng thái tốt hơn trạng thái đang khảo sát
để phát triển. Nếu không có thuật tóan phải dừng.
Nếu chỉ chọn một trạng thái tốt hơn: leo đồi đơn
giản, trạng thái tốt nhất: leo đồi dốc đứng.
Sử dụng hàm h để biết trạng thái nào tốt hơn.
Khác với tìm kiếm sâu, leo đồi không lưu tất cả các
con mà chỉ lưu đúng một t.thái được chọn nếu có.
92
93. Thuật toán HCS
procedure hcs(start);
begin
open:=[start]; closed:=[];
while open<>[] do
begin
loại tt ngoài cùng bên trái của open, gọi nó là u
if (u là một đích) then thông báo kết quả, thoát
else begin
Đưa u vào closed
Phát sinh các con v của u
Loại các con đã có trong open+closed
Sap xep danh sach cac dinh con cua u theo thu tu
tang dan, goi la L1.
Day L1 vao ben trai danh sach open.
end 93
94. B1: open =[A], close=[]
B2: close=[A], open=[C]
B3: close=[A,C], open=[G];
B4: Thông báo thành công
94
95. Yêu cầu: áp dụng thuật toán leo đồi mô tả không gian
trạng thái qua các bước. Vẽ đồ thị đường đi
96. Nhanh, có thể thất bại
Hiệu quả khi có một hàm đánh giá tốt. Bế tắc
nếu
Gặp điểm cực đại địa phương.
Khu vực bình nguyên.
Giải pháp xáo trộn ngẫu nhiên.
Không có giải pháp tổng quát. Cải tiến?
96
97. Tìm kiếm ưu tiên tốt nhất – Best
First Search (Best-FS)
Chọn trạng thái tốt nhất trong open để phát triển, kể
cả trạng thái này không tốt bằng trạng thái đã sinh ra
nó.
Lưu trữ tất cả các trạng thái anh em nên khi đi vào
ngõ cụt, chiến lược này có thể lui ra được mà không
bị bế tắc.
Best-FS kết hợp tìm kiếm sâu và rộng.
Best-FS “cẩn thận” hơn ghi nhớ lại các một số trạng
thái không tốt hơn trước đó để còn có thể quay lại.
97
100. Thuật toán Best_FS
procedure Best_FS;
begin
open:={u0}; closed:={ };
while open<>{ } do
begin
loại trạng thái ngoài cùng bên trái của open, gọi nó là u
if (u là một đích) then thông báo thắng lợi, thoát
else begin
Đưa u vào closed
Phát sinh các con v của u
Loại các con v đã có mặt trong open + closed
Đưa các con còn lại vào open
Sắp xếp open sao cho phần tử tốt nhất nằm bên trái
end
end
Thông báo thất bại
end
100