Chuong+1 2-3-4
description
Transcript of Chuong+1 2-3-4
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: [email protected]
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 ĐỀ
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
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
5
CHƯƠNG 1: TỔNG QUAN VỀ KHOA HỌC TTNT
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?
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:
8
Trí Tuệ Nhân Tạo là gì?“Nỗ lực tạo ra các máy tính biết tư duy … máy tính có ý thức (The exciting new effort to make computers thinks … machine with minds, in the full and literal sense)” (Haugeland 1985)“Nghệ thuật sáng tạo ra các máy thực hiện các chức năng đòi hỏi sự thông minh như khi thực hiện bởi con người (The art of creating machines that perform functions that require intelligence when performed by people)” (Kurzweil, 1990)
“Việc nghiên cứu các năng lực trí tuệ sử dụng các mô hình tính toán (The study of mental faculties through the use of computational models)” (Charniak et al. 1985)
“Nghiên cứu tìm cách giải thích và mô phỏng các hành vi thông minh bằng các quá trình tính toán (A field of study that seeks to explain and emulate intelligent behavior in terms of computational processes)” (Schalkol, 1990)
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 biết tư duy … máy tính có ý thức (The exciting new effort to make computers thinks … machine with minds, in the full and literal sense)” (Haugeland 1985)
Hệ thống tư duy như con người(Systems that think like humans)
Con người tư duy như thế nào? Chưa có câu trả lời chính xác trong rất nhiều tình huống.
Ví dụ: Newell&Simson (1961) phát triển GPS (General Problem Solving) bắt chước cách giải quyết các bài toán trong toán học của con người.
Trí tuệ nhân tạo: hệ thống ứng xử như con người
“Nghệ thuật sáng tạo ra các máy thực hiện các chức năng đòi hỏi sự thông minh như khi thực hiện bởi con người (The art of creating machines that perform functions that require intelligence when performed by people)” (Kurzweil, 1990)
Hệ thống ứng xử (hành động) như con người (Hệ thống mà hành vi, ứng xử của nó như con người)
Systems that act like humans
Turing (1950) đề xuất bộ test (Turing test): hội thoại giữa hệ thống và người phỏng vấn. Nếu người phỏng vấn không biết được hệ thống là người hay là máy thì hệ thống đó được cho là thông minh.
- Con người lúc nào cũng ứng xử “đúng”?- Hành vi như thế nào được coi là giống con người?
Trí tuệ nhân tạo: hệ thống tư duy hợp lý
“Việc nghiên cứu các năng lực trí tuệ sử dụng các mô hình tính toán (The study of mental faculties through the use of computational models)” (Charniak et al. 1985)
Hệ thống tư duy hợp lý
System that think rationallyAristotle hình thức hóa “tư duy đúng” (Luật của tư duy đúng). Hệ tam đoạn luận là khuôn mẫu để thu được kết luận đúng khi cho giả thiết đúng. VD: Socrat là người; tất cả mọi người đều chết; do đó Socrat phải chết.
1. Không biểu diễn được tri thức không chắc chắn
2. Nhiều bài toán không dễ giải quyết do thiếu tài nguyên (không gian nhớ và thời gian)
3. Nhiều hành động coi là thông minh nhưng ko liên quan đến tư duy (chẳng hạn: co tay lại khi chạm vật nóng)
Trí tuệ nhân tạo: hệ thống ứng xử hợp lý
CS 460, Lecture 1
“Nghiên cứu tìm cách giải thích và mô phỏng các hành vi thông minh bằng các quá trình tính toán (A field of study that seeks to explain and emulate intelligent behavior in terms of computational processes)” (Schalkol, 1990)
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:-Tổng quát hơn-Tính hợp lý có thể dễ dàng được định nghĩa (rationality is well defined)
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
Turing Test
Ư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
Interrogator
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.
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. …
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 …
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
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
21
CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNTTTNT 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ácTTNT 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
TTNTTTNT
Tâm lý học
Ngôn ngữ học
Khoa học máy tính
Triết học
Toán học
Các lý thuyết của lập luận và học
Các lý thuyết xác suất logic, tạo quyết định và tính toán
Làm cho TTNT trở thành hiện thực
Nghiên cứu ý nghĩa và cấu trúc của ngôn ngữ
Nghiên cứu tâm trí con người
22
LỊCH SỬ PHÁT TRIỂN CỦA KHOA HỌC TTNT
23
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
24
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
25
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
26
SONY AIBO
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
27
Đi bộ
Quay
Lên xuống cầu thang
Honda Humanoid Robot& Asimo
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
28
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
29
CÁC THÀNH TỰU CỦA KHOA HỌC TTNT
30
CÁC XU HƯỚNG MỚI TRONG TTNT
31
CÁC XU HƯỚNG MỚI TRONG TTNT
32
CÁC XU HƯỚNG MỚI TRONG TTNT
33
CÁC XU HƯỚNG MỚI TRONG TTNT
34
CÁC XU HƯỚNG MỚI TRONG TTNT
35
CÁC XU HƯỚNG MỚI TRONG TTNT
36
CÁC XU HƯỚNG MỚI TRONG TTNT
Chương 2. CÁC CHIẾN LƯỢC TÌM
KIẾM MÙ
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).
Ví dụ (trò chơi 8 số)
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.
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).
Đị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.
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.
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.
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.
Đá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.
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.
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.
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.
Ví dụ
Thuật toán BFSprocedure bfs;begin
open:=[start]; closed:=[];while open<>[] do
beginloại tt ngoài cùng bên trái của open, gọi nó là uif (u là một đích) then thông báo kết quả, thoátelse begin
Đưa u vào closedPhát sinh các con v của uLoạ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
endThông báo thất bại
End
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]…
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.
Đá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).
55
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
Thuật toán DFSprocedure bfs;begin
open:=[start]; closed:=[];while open<>[] do
beginloại tt u ngoài cùng bên trái của openif (u là một đích) then thông báo kết quả, thoátelse begin
Đưa u vào closedPhát sinh các con v của uLoạ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
endThông báo thất bại
End
57
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
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
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
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
Thuật toán
procedure DFS(d);begin
open:=[start]; closed:=[]; depth(start):=0;while open<>[] do
beginloại u ngoài cùng bên trái openif (u là một đích) then thbáo kết quả, thoátelse
62
beginĐưa u vào closedIf 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+ closedGá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 openEnd;
End;End; {while}Thông báo thất bạiEnd.
63
Tìm kiếm sâu dần l =0
64
Tìm kiếm sâu dần l =1
65
Tìm kiếm sâu dần l =2
66
Tìm kiếm sâu dần l =3
67
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
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
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
Quy bµi to n vÒ c c bµi to n con § å thÞ vµ/hoÆc
Bµi to n
To n tö quy bµi to n vÒ bµi to n con
Bµi to n ban ®Çu
C¸c bµi to n s¬ cÊp
C¸c bµi to n con phô thuéc
C¸c bµi to n con ®éc lËp
Gi¶i bµi to n ban ®Çu.
§ Ønh
Cung
§ Ønh ®Çu (®Ønh gèc)
§ Ønh cuèi, ®Ønh kÕt thóc
§ Ønh vµ
§ Ønh hoÆc
T×m ®å thÞ con lêi gi¶i.
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 đỉnh con là không giải được
Thể hiện dưới dạng đồ thị VÀ/HOẶC
73
74
Đồ 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 đó.
Thể hiện dưới dạng đồ thị VÀ/HOẶC
75
Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC
76
Thủ tục gđ(nN)
{ 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đ”}}
Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC
Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 77
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
Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC
78
Vào: Cây VÀ/HOẶC G=(N, A) với đỉnh đầu n0, tập đỉnh kết thúc T={ti} NRa: 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;}}}
Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC: Thủ tục TKRM
79
VD:Áp dụng thuật toán TKRM đối với cây sauTập T = {t1,t2,t3,t4}
Thứ tự duyệt:abcdefgijkCây lời giải:các cung tô đậm
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à cho kết quả là cây lời giải có độ cao nhỏ nhất
Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC Thủ tục TKRM
a
b c
d e fg
i j k
At1 t2
B C t3
t4
D E
F
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;}}}
81
VD: Áp dụng thuật toán TKSM đối với cây sau
Tập T = {t1,t2,t3,t4} a
b c
d e
f g
Bt1 t2
t3
t4
A
C E
D
Thứ tự duyệt:
abdAfceg
Cây lời giải:
các cung tô đậm
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.
Các phương pháp tìm kiếm trong đồ thị VÀ/HOẶC Thủ tục TKSM
Chương 3. CÁC CHIẾN LƯỢC TÌM
KINH NGHIỆM
82
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
1. Hàm đánh giá
84
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
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
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
Tính h(D), h(E)
88
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
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
II. Các chiến lược tìm kiếm kinh nghiệm.
91
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
Thuật toán HCSprocedure hcs(start);begin
open:=[start]; closed:=[];while open<>[] do
beginloại tt ngoài cùng bên trái của open, gọi nó là uif (u là một đích) then thông báo kết quả, thoátelse 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
endThông báo thất bại
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
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
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
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
Ví dụ
98
99
Thuật toán Best_FSprocedure Best_FS;begin
open:={u0}; closed:={ };while open<>{ } do
beginloại trạng thái ngoài cùng bên trái của open, gọi nó là uif (u là một đích) then thông báo thắng lợi, thoátelse begin
Đưa u vào closedPhát sinh các con v của uLoại các con v đã có mặt trong open + closed
Đưa các con còn lại vào openSắp xếp open sao cho phần tử tốt nhất nằm bên tráiend
endThông báo thất bại
end
100