Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (640.18 KB, 36 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
GV: Nguyễn Thị Trúc Viên
Email:
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 3
– DFS có quay lui
– BrFS
<b>Procedure Depth_first_search;</b>
<b>Begin</b>
<b>open :=[start]; close:=[];</b>
<b>While (open <>[]) do</b>
<b>begin</b>
<b>remove X which is the leftmost of Open;</b>
<b>If (X=goal) the return (Success)</b>
<b>else begin</b>
<b>generate children of X; Put X to close;</b>
<b>eleminate children of X which is in Open or Close;</b>
<b>Put remain children on LEFT end of open;</b>
<b>End;</b>
<b>End;</b>
<b>Return (FALL);</b>
<b>End;</b>
<b>DFS</b>
<b>có quay lui</b>
– DFS có quay lui
– BrFS
<b>BrFS</b>
<b>Procedure Breadth_first_search;</b>
<b>Begin</b>
<b>open :=[start]; close:=[];</b>
<b>While (open <>[]) do</b>
<b>begin</b>
<b>remove X which is the leftmost of Open;</b>
<b>If (X=goal) the return (Success)</b>
<b>else begin</b>
<b>generate children of X; Put X to close;</b>
<b>eleminate children of X which is in Open or Close;</b>
<b>Put remain children on RIGHT end of open;</b>
<b>End;</b>
<b>End;</b>
<b>Return (FALL);</b>
<b>End;</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 5
1. Sinh một lời giải nào đó (trạng thái OR con đường).
2. So sánh với trạng thái đích.
3. Nếu là đích dừng; ngược lại đến bước 1.
– Có hệthống: sinh các trạng thái một cách có hệthống, bằng
giải thuật tìm kiếm vét cạn KGTT, như DFS có quay lui.
– Ngẫu nhiên: sinh các trạng thái một cách ngẫu nhiên.
– Heuristic: dùng heuristic đểkhông phải sinh những trạng thái
mà nó dường như khơng dẫn đến đích.
– Thường khơng chỉsửdụng sinh-và-thử.
– Thường kết hợp với các kỹthuật khác đểgiới hạn KGTT được
khảo sát, (như DENRAL)
1. Xét trạng thái bắt đầu.
<b>1.</b> <b>Nếu là đích </b><sub></sub><sub></sub><sub></sub><sub></sub><b>dừng.</b>
<b>2.</b> <b>Ngược lại: thiết lập khởi đầu như TT hiện tại.</b>
2. Lặp đến khi: gặp đích OR khơng cịn luật nào chưa được áp
dụng vào TT hiện tại
<b>1.</b> <b>Lựa một luật đểáp dụng vào TT hiện tại đểsinh ra một TT mới.</b>
<b>2.</b> <b>Xem xét TT mới này:</b>
1. Nếu là đích dừng.
2. Nếu khơng là đích, nhưng tốt hơn TT hiện tại thiết lập TT mới là TT
hiện tại.
3. Nếu khơng tốt hơn thì thì tiếp lần lặp kế.
– Có sửdụng hàm đánh giá đểtích hợp tri thức vào điều khiển.
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 7
<b>Phiên b</b>ả<b>n c</b>ả<b>i ti</b>ế<b>n:</b>
1. Xem xét trạng thái đầu.
<b>1.</b> <b>N</b>ế<b>u là</b> đ<b>ích d</b>ừ<b>ng.</b>
<b>2.</b> <b>Ng</b>ượ<b>c l</b>ạ<b>i thi</b>ế<b>t l</b>ậ<b>p TT </b>đầ<b>u là TT hi</b>ệ<b>n t</b>ạ<b>i.</b>
2. Lặp đến khi: gặp đích OR khơng có sự thay đổi TT hiện tại
<b>1.</b> <b>SUCC = TT con b</b>ấ<b>t k</b>ỳ<b>nào c</b>ủ<b>a TT hi</b>ệ<b>n t</b>ạ<b>i</b>
<b>2.</b> <b>V</b>ớ<b>i m</b>ỗ<b>i lu</b>ậ<b>t:</b>
1. Áp dụng luật đểsinh ra TT mới.
2. Nếu TT mới là đích dừng. Ngược lại, so sánh với SUCC. Nếu tốt hơn SUCC thì
thiết lập SUCC là TT này. Ngược lại, không thay đổi SUCC.
3. Nếu SUCC tốt hơn TT hiện tại SUCC làm TT hiện tại.
<b>Nh</b>ậ<b>n xét:</b>
– Cảhai phiên bản trên có thểsẽkhơng thểtìm đến đích được trong 3 trường
hợp sau:
<b>Local Maximum:</b>
<b>Plateau:</b>
<b>Ridge:</b>
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
<b>H</b>
<b>A</b>
<b>A</b>
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
<b>H</b>
Trạng thái đầu Trạng thái đích
Thửgiải với giải thuật leo đồi, với hai heuristic (H1 và H2):
1. Cộng 1 cho các khối nằm mà nó nằm trên khối khác như mong muốn.
Trừ1 cho các khối nằm mà nó khơng nằm trên khối mong muốn
2. Cộng 1 cho mỗi khối nằm trong cấu trúc mong muốn (nhưđích).
Trừ1 cho mỗi khối khơng nằm trong cấu trúc mong muốn.
H1=4
H2=-28
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Môn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 9
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
<b>H</b>
<b>A</b>
H2=-16 H1=4<sub>H2=-15</sub>
– T: nhiệt độluyện, được chọn dựa vào lịch luyện thép.
– <sub>∆</sub>E: Chuyển đổi trong mức năng lượng (dương). Trong giải
thuật đó là hiệu sốcủa hai hàm heuristic.
– Là một cải tiến của leo đồi đểnó có thểchấp nhận TT mới khi
khơng có TT nào tốt hơn TT hiện tại.
– Lịch luyện phải được xây dựng trước, dựa vào kinh nghiệm, và
được lưu lại trong lúc GT chạy.
– Có thểchấp nhận TT mới tệ hơn TT hiện tại.
<i>T</i>
<i>E</i>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Môn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 11
<b>Gi</b>ả<b>i thu</b>ậ<b>t:</b>
1. Xem xét trạng thái đầu.
<b>1.</b> <b>N</b>ế<b>u là</b> đ<b>ích d</b>ừ<b>ng.</b>
<b>2.</b> <b>Ng</b>ượ<b>c l</b>ạ<b>i thi</b>ế<b>t l</b>ậ<b>p TT </b>đầ<b>u là TT hi</b>ệ<b>n t</b>ạ<b>i.</b>
2. Khởi động BEST-SO-FAR = TT hiện tại.
3. Khởi động T dựa vào lịch luyện.
4. Lặp đến khi: gặp đích OR khơng cịn luật nào chưa được áp dụng vào TT
hiện tại.
<b>1.</b> <b>Ch</b>ọ<b>n m</b>ộ<b>t lu</b>ậ<b>t </b>để<b>áp d</b>ụ<b>ng vào TT hi</b>ệ<b>n t</b>ạ<b>i và sinh ra TT m</b>ớ<b>i.</b>
<b>2.</b> <b>Xem xét TT m</b>ớ<b>i, tính:</b>
∆
∆<b>E = (Tr</b>ị<b>c</b>ủ<b>a TT hi</b>ệ<b>n t</b>ạ<b>i) – (Tr</b>ị<b>c</b>ủ<b>a TT m</b>ớ<b>i)</b>
1. TT mới = đích dừng.
2. TT mới khơng là đích, nhưng tốt hơn TT hiện tại TT hiện tại là TT mới và
BEST-SO-FAR = TT mới.
3. Nếu không tốt hơn TT hiện tại thì:
1. Tính xác suất p’ nói trên.
2. Sinh ngẫu nhiên một sốp thuộc [0,1]. Nếu p < p’ thì chấp nhận TT mới tệ hơn
này.
<b>3.</b> <b>Thay </b>đổ<b>i T d</b>ự<b>a vào l</b>ị<b>ch luy</b>ệ<b>n.</b>
5. TrảvềBEST-SO-FAR
– Là phương pháp dung hồ của BrFS và DFS.
– Có bơm tri thức cụthểcủa bài tốn vào phần điều khiển.
– Có sửdụng để đánh giá ưu thếcủa mỗi trạng thái, có thểlà
ước lượng từnó đến TT đích.
– Tại mỗi bước, GT sẽchọn trạng thái mà nó cho rằng là có ưu
thếnhất trong sốcác trạng thái đã sinh ra được đến thời điểm
đó.
– Khác với GT leo đồi có cải tiến ởchổ: có lưu tất cảnhững TT
đã phát sinh đến thời điểm chọn TT đểxét tiếp.
– Dùng hai danh sách:
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 13
1. OPEN = [TT đầu]
2. Lặp đến khi: gặp đích OR OPEN rỗng.
<b>1.</b> <b>Lấy TT tốt nhất từOPEN.</b>
<b>2.</b> <b>Phát sinh các con của nó.</b>
<b>3.</b> <b>Với mỗi con:</b>
1. Nếu nó chưa được phát sinh: gán nó trị đánh giá, đưa vào OPEN, ghi nhận
TT cha của nó.
2. Nếu đã được phát sinh trước: Nếu đạt đến bởi đường khác tốt hơn ghi
nhận lại TT cha của nó, cập nhật lại trị đánh giá của nó và của các con của
nó.
<b>A</b> <b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(3) (5) (1)
Bước 1 Bước 2
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(3) (5)
Bước 3
<b>E</b> <b>F</b>
(4) (6)
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(5)
Bước 4
<b>E</b> <b>F</b>
<b>G</b> <b>H</b>
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(5)
Bước 5
<b>E</b> <b>F</b>
(6)
<b>G</b> <b>H</b>
(6) (5)
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Môn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 15
– h(n) = Ước lượng chi phí từ TT n đến TT đích
Khơng đảm bảo tính tối ưu lẫn tính đầy đủ
– g(n) = Ước lượng chi phí từ TT đầu đến TT n
Tối ưu và đầy đủ, nhưng khơng hiệu quả
<b>Gi</b>ớ<b>i thi</b>ệ<b>u gi</b>ả<b>i thu</b>ậ<b>t A*:</b>
– Sửdụng 3 hàm:
<b>f’(n) : </b>Ướ<b>c l</b>ượ<b>ng chi phí t</b>ừ TT đầ<b>u </b>đế<b>n </b>đ<b>ich trên con </b>đườ<b>ng có qua TT n.</b>
<b>g(n) : chi phí</b> đã phả<b>i tr</b>ả<b>i t</b>ừ TT đầ<b>u </b>đế<b>n TT n.</b>
<b>h’(n):</b> Ướ<b>c l</b>ượ<b>ng chi phí t</b>ừ TT n đế<b>n TT </b>đ<b>ích.</b>
<b>f’(n) = g(n) + h’(n)</b>
– Sửdụng hai danh sách OPEN và CLOSED như đã nói trên.
<b>Gi</b>ả<b>i thu</b>ậ<b>t A*:</b>
1. OPEN =[TT đầu, g=0, f’=g+ h’ = h’]
2. Lặp đến khi: gặp TT đích:
<b>1.</b> <b>OPEN r</b>ỗ<b>ng báo error.</b>
<b>2.</b> <b>BESTNODE = TT t</b>ố<b>t nh</b>ấ<b>t( f nh</b>ỏ<b>nh</b>ấ<b>t) trên OPEN.</b>
<b>Xoá BESTNODE kh</b>ỏ<b>i OPEN.</b>
Đư<b>a vào CLOSED.</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 17
Với mỗi con gọi là SUCCESSOR:
(a) Thiết lập đểSUCCESSOR chỉ ngược về BESTNODE, đểcho phép trả
về con đường khi gặp đích.
(b) Tính g(SUCCESSOR) = g(BESTNODE) + cost(BESTNODE,
SUCCESSOR).
(c) Nếu SUCCESSOR đã có trong OPEN, TT trong OPEN gọi là OLD.
Nếu g(SUCCESSOR) < g(OLD) thì gán lại parent của OLD là
BESTNODE. Cập nhật lại con đường đạt đến OLD và trị đánh giá f cho
(d) Nếu SUCCESSOR đã có trong CLOSED, gọi đó là OLD’. Thực hiện
kiểm tra tương tự như OPEN, song chú ý là nếu đạt tới SUCCESSOR bởi
con đường tốt hơn thì:
- Cập nhật lại cha của OLD’
- Đưa OLD’ vào lại OPEN.
<i><b>- C</b></i>ậ<i><b>p nh</b></i>ậ<i><b>t l</b></i>ạ<i><b>i giá tr</b></i>ị<i><b>f cho các TT con c</b></i>ủ<i><b>a OLD’.</b></i>
(e) Nếu SUCCESSOR khơng có trong cảOPEN , CLOSED thì: đưa nó
vào OPEN và thêm nó nào ds con của BESTNODE. Tính tốn gía trịf cho
nó.
Procedure Best_First_Search;
Begin
open:=[start]; close:=[];
<b>While</b>(open<>[]) do
<b>begin</b>
X = removefirst(OPEN).
<b>if</b>X=GOAL then return path.
else begin
Sinh các con của X;
<b>FOR</b>mỗi con Y của X DO
case Y khơng có trong OPEN, CLOSED:
begin
Khoa Cơng Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 19
<b>if</b> đến được Y bởi một path ngắn hơn
<b>then</b>
gán path ngắn hơn này cho Y trên OPEN.
<b>case Y</b>có trong CLOSED
<b>if</b> đến được Y bởi một path ngắn hơn
<b>then begin</b>
Xoá Y khỏi CLOSED;
Thêm Y vào OPEN
<b>end</b>
<b>end</b>; /*end FOR*/
Đưa X vào CLOSED
Sắp xếp các TT trên OPEN (tăng dần theo hàm f)
<b>end</b>; / while/
return failure;
<b>End;</b>
– Được dùng đểbiểu diễn KGTT cho bài toán giải được bằng
cách phân rã ra các bài toán nhỏ hơn
– Khi bài toán được phân rã thành N bài toán con, mà tất cả
chúng phải được giải đểhồn thành bài tốn lớn thì được biểu
diễn thành cung AND chỉ đến N trạng thái con.
– Nhiều cách giải cho bài tốn có thể được dùng thì có thểbiểu
diễn bởi cung OR .
– Ví dụ: <b>A</b>
<b>B</b> <b>C</b> <b>D</b>
<b>A có thể được thơng qua hai cách:</b>
-<b>Giải B, hoặc</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 21
– Nếu dùng giải thuật BFS cho việc tìm lời giải trên đồthị
AND-OR thì có lẽkhơng thích hợp vì như xem xét đồthịsau:
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(5) (3) (4)
-<b>Nếu giá trịghi kềbên trạng thái là trị ước lượng cho trạng thái đó.</b>
-<b>Theo BFS thì trạng thái kếtiếp được chọn là C, như:</b>
-<b>Khi chọn cách giải qua C thì bắt buộc phải giải cảD. Do vậy </b>
<b>tổng chi phí cho cách giải này là: C+D+ 2 = 9, 2 là giá trịcủa </b>
<b>hàm g trong BFS.</b>
- Trong khi đó nếu chọn cách giải qua B thì chi phí chỉ<b>là: B+1 = </b>
<b>6.</b>
(9)
1. Khởi động đồthịlà TT bắt đầu.
2. Lặp đến khi: TT đầu được gán nhãn là SOLVED OR chi phí
vượt qua ngưỡng FUTILITY:
<b>1.</b> <b>Duyệt đồthịbắt đầu từ TT đầu, theo con đường tốt nhất hiện tại, </b>
<b>tích luỹtập trạng thái trên con đường đó mà nó chưa được mở</b>
<b>rộng hoặc được gán nhãn SOLVED.</b>
<b>2.</b> <b>Lấy một TT chưa mởrộng và mởrộng nó. Nếu khơng có con thì</b>
<b>gán FUTILITY bằng trịcủa TT này. Ngược lại, thêm các con vào </b>
đồ<b>thịvà mỗi chúng tính f’ (sửdụng chỉh’, bỏqua g). Nếu f’ =0 thì</b>
<b>gán nhãn cho TT đó là SOLVED.</b>
<b>3.</b> <b>Thay đổi f’ của TT đã được mởrộng đểphản ánh thông tin được </b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 23
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
<b>A</b>
Trước bước 1:
(<b>5</b>)
Trước bước 2:
(3) (4) (5)
(<b>9</b>)
(<b>6</b>)
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
Trước bước 3:
(3) (4)
(<b>9</b>)
<b>E</b> <b>F</b>
4 4
<b>10</b>
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
Trước bước 4:
(4)
(<b>12</b>)
<b>E</b> <b>F</b>
4 4
<b>10</b>
10 10
<b>G</b> <b>H</b>
5 7
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 25
1. Gán GRAPH chứa TT đầu (INIT). Tính h’(INIT).
2. Lặp đến khi INIT có nhãn SOLVED OR h’(INIT) >
FUTILITY:
<b>1.</b> <b>Lần theo cung đã được gán nhãn đi từINIT, lựa chọn một NODE </b>
để<b>mởrộng.</b>
<b>2.</b> <b>Phát sinh con của NODE. Nếu khơng có con thì FUTILITY = </b>
<b>h’(NODE). Nếu có con, với mỗi con SUCCESSOR thực hiện:</b>
1. Đưa SUCCESSOR vào GRAPH.
2. Nếu SUCCESSOR là nốt dừng, gán nhãn SOLVED, gán
h’(SUCCESSOR) =0.
3. Nếu SUCCESSOR không là nốt dừng thì tính h’(SUCCESSOR).
<b>3.</b> <b>Lan truyền ngược lên đồthị như sau: Gọi S là tập các nốt có nhãn </b>
<b>SOLVED, h’ của nó đã chuyển đổi, cần lan truyền ngược lên nốt </b>
<b>cha. Khởi động S chưa NODE. Đến khi S trống thực hiện:</b>
1. ...
2. …
<b>1.</b> <b>…</b>
<b>2.</b> <b>…</b>
<b>3.</b> <b>…</b>
1. Nếu có thểthì: lựa từS một nốt mà khơng có con nào của nó trong
GRAPH nằm trong S. nếu khơng có nốt như vậy thì : lựa một nốt bất kỳtừ
S, gọi là CURRENT, xố nó khỏi S.
2. Tính tốn phí của mỗi cung đi từCURRENT. Phí này bằng tổng các h’
của con nốt nằm ởcuối cung (AND NODE), cộng với phí của chính cung
đó (thơng thường là 1 cho mỗi cung). Gán cost nhỏnhất (trong các OR
NODE) cho CURRENT.
3. Đánh dấu con đường tốt nhất hiện tại.
4. Đánh dấu SOLVED cho CURRENT nếu: tất cảnốt nối vào nó xuyên qua
5. Nếu CURRENT là SOLVED hoặc nếu chi phí của CURRENT đã thay đổi
thì phải lan truyền ngược lên trên. Đưa vào S tất cảcác cha của
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 27
<b>Gi</b>ả<b>i thu</b>ậ<b>t:</b>
1. Sinh ra các ràng buộc có thểcó:
Gọi OPEN = tập các đối tượng phải được gán trị. Lặp đến khi OPEN trống
OR vi phạm xảy ra:
<b>1.</b> <b>OB là m</b>ộ<b>t </b>đố<b>i t</b>ượ<b>ng c</b>ủ<b>a OPEN. Áp d</b>ụ<b>ng các ràng bu</b>ộ<b>c có th</b>ể<b>có vào OB.</b>
<b>2.</b> <b>N</b>ế<b>u t</b>ậ<b>p này khác so v</b>ớ<b>i t</b>ậ<b>p </b>đ<b>ã </b>đượ<b>c gán trong l</b>ầ<b>n sau cùng OB </b>đượ<b>c xem </b>
<b>xét, ho</b>ặ<b>c </b>đ<b>ây là l</b>ầ<b>n </b>đầ<b>u tiên OB </b>đượ<b>c xem xét.</b> Đưa v<b>ào OPEN t</b>ấ<b>t c</b>ả<b>các </b>
đố<b>i t</b>ượ<b>ng n</b>ằ<b>m trong cùng ràng bu</b>ộ<b>c v</b>ớ<b>i OB.</b>
<b>3.</b> <b>B</b>ỏ<b>OB kh</b>ỏ<b>i OPEN.</b>
2. Nếu hợp các ràng buộc đã được sinh ra có lời giải dừng.
3. Nếu hợp ràng buộc sinh đã được sinh ra có vi phạm trảvềlỗi.
4. Nếu hai điều trên khơng xảy ra thì: thực hiện cơng việc đốn, bằng cách:
lặp đến khi có lời giải OR tất cảcác lời giải có khả năng đã bịloại:
<b>1.</b> <b>L</b>ự<b>a m</b>ộ<b>t </b>đố<b>i t</b>ượ<b>ng ch</b>ư<b>a có tr</b>ị<b>. Ch</b>ọ<b>n cách gán tr</b>ị để<b>tho</b>ả<b>các ràng bu</b>ộ<b>c </b>
<b>trên </b>đ<b>ó.</b>
<b>2.</b> <b>G</b>ọ<b>i </b>đệ<b>qui trên t</b>ậ<b>p ràng bu</b>ộ<b>c m</b>ớ<b>i v</b>ừ<b>a c</b>ậ<b>p nh</b>ậ<b>t </b>ở bướ<b>c trên.</b>
<b>SEND</b>
<b>+MORE</b>
<b></b>
<b>---MONEY</b>
<b>Trạng thái đầu:</b>
Khoa Cơng Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 29
<b>M=1</b>
<b>S = 8 | 9</b>
<b>O = 0 | 1O=0</b>
<b>N +R > 8</b>
<b>E <> 9</b>
<b>N =3</b>
<b>R = 8 | 9</b>
<b>2 + D = Y | 2 + D = 10 + Y</b>
Trạng thái đầu
SEND
+MORE
---MONEY
E =2 Đốn !!!
<b>N =3</b>
<b>R = 8 | 9</b>
<b>2 + D = Y | 2 + D = 10 + Y</b>
<b>2 + D = Y</b>
<b>N + R = 10 + E</b>
<b>S = 8</b>
<b>2 + D = 10 + Y</b>
<b>D = 8 + Y</b>
<b>D = 8 | 9</b>
C1 =0 C1 =1
<b>Y= 0</b> <b>Y = 1</b>
D=8 D=9
Vi phạm Vi phạm
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 31
– Tiến (forward)
– Lùi (backward)
– Hay kết hợp cả 2 như dạng: phương tiện - mục đích.
– Nếu muốn đi từtrạng thái (A) đến (B), mà đã có tốn tửO
(luật) làm được như vậy thì áp dụng O dừng.
– Nếu khơng có tốn tử O như vậy thì:
<b>Cốgắng tìm một con đường từ(A) (C), gọi lại thủtục này.</b>
<b>Mỗi khi đến (C) được rồi thì có thểáp dụng tốn tử O để đến (D). </b>
<b>Nếu (D) là GOAL dừng.</b>
<b>Nếu khơng thì cốgắng tìm đường đến (D), gọi lại thủtục này.</b>
<b>Chi</b>ế<b>n l</b>ượ<b>c tìm ki</b>ế<b>m có th</b>ể<b>là:</b>
– Tiến (forward)
– Lùi (backward)
– Hay kết hợp cả 2 như dạng: phương tiện - mục đích.
<b>Gi</b>ả<b>i thu</b>ậ<b>t: Mean-End-Analysis, MEA(CURRENT-GOAL):</b>
1. So sánh CURRENT và GOAL. If không khác dừng.
2. Ngược lại: Chọn sựkhác nhau lớn nhất, thực hiện:
<b>1.</b> <b>L</b>ự<b>a m</b>ộ<b>t tốn t</b>ử<b>(lu</b>ậ<b>t) O mà có th</b>ể<b>dùng </b>đượ<b>c cho s</b>ự<b>khác nhau này. N</b>ế<b>u </b>
<b>2.</b> <b>Áp d</b>ụ<b>ng O vào CURRENT. Phát sinh hai tr</b>ạ<b>ng thái: (i) O-START, tr</b>ạ<b>ng </b>
<b>thái mà</b> điề<b>u ki</b>ệ<b>n </b>đầ<b>u c</b>ủ<b>a O </b>đượ<b>c tho</b>ả<b>mãn, (ii) O-RESULT , tr</b>ạ<b>ng thái </b>
<b>k</b>ế<b>t c</b>ụ<b>c n</b>ế<b>u nh</b>ư<b> O </b>đ<b>ã </b>đượ<b>c áp d</b>ụ<b>ng vào O-START.</b>
<b>3.</b> <b>IF</b>
<b>(FIRST-PART </b><b>MEA(CURRENT, O-START))</b>
<b>AND</b>
<b>(LAST-PART </b><b>MEA(O-RESULT, GOAL))</b>
<b>Là thành công</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 33
<b>Một robot với các hành động có thể như bảng 1 và cho trước hành </b>
động nào thì được dùng để<b>làm giảm sựkhác biệt của bài toán như </b>
<b>bảng 2 (bảng khác biệt).</b>
Đưa ra chuổi hành động để<b>robot có thểmang một cái bàn từ</b>
<b>phịng này sang phịng khác, trên bàn có hai vật nhỏ.</b>
<b>at(robot, loc)</b>
<b>WALK(loc)</b>
<b>at(obj, loc) ^</b>
<b>at(robot, loc)</b>
<b>at(robot, obj)^</b>
<b>small(obj)</b>
<b>CARRY(obj, loc)</b>
<b>at(obj, loc) ^</b>
<b>at(robot, loc)</b>
<b>at(robot, obj)^</b>
<b>large(obj)^</b>
<b>clear(obj)^</b>
<b>armempty.</b>
<b>PUSH(obj, loc)</b>
<b>Kết quả</b>
Điều kiện đầu
<b>Tốn tử</b>
<b><Bảng 1></b>
<b>on(obj1,obj2)</b>
<b>holding(obj1)</b>
<b>PLACE(obj1, obj2)</b>
<b>¬holding(obj)</b>
<b>holding(obj)</b>
<b>PUTDOWN(obj)</b>
<b>holding(obj)</b>
<b>at(robot, obj)</b>
<b>PICKUP(obj)</b>
<b>Kết quả</b>
Điều kiện đầu
<b>Tốn tử</b>
<b>*</b>
<b>Be holding object</b>
<b>*</b>
<b>*</b>
<b>Get arm empty</b>
<b>*</b>
<b>Get object on object</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 35
– Move: bàn <sub></sub>phịng 2.
<b>Khơng có tốn tửnào dùng được.</b>
<b>Bảng khác biệt cho biết có PUSH và CARRY có thễdùng được.</b>
– Nếu chọn CARRY: hai điều kiện phải thoả:
at(robot, bàn) ^ small(bàn).
<b>at(robot, bàn) : giải được bằng WALK</b>
<b>small(bàn): khơng thể được vì khơng có tốn tửnào.</b>
<b>DEAD END.</b>
– Chỉcòn giải pháp: dùng PUSH
<b>A</b> <b>C</b> <b>PUSH</b> <b>D</b> <b>B</b>
<b>START</b> <b>GOAL</b>
– Hai bài tốn cịn lại là : (A)(C) và (D) (B)
– Giải (A)(C): Khi dùng PUSH thì cần 4 điều kiện:
<b>at(robot, bàn) : giải được WALK.</b>
<b>large(bàn): bàn sẵn sàng là large.</b>
<b>clear(bàn): giải được bằng PICKUP.</b>
<b>armempty: robot đã sẵn empty.</b>
– Sau khi dùng PICKUP thì sau đó phải dùng PUTDOWN để
đưa cánh tay robot vềrỗng.
– … Kết quảcó thểtóm lược như sau:
<b>A</b> <b>walk</b> <b>pickup</b> <b>putdown</b> <b>pickup</b> <b>putdown</b> <b>C</b> <b>D</b> <b>B</b>
GV: Nguyễn Thị Trúc Viên
Email:
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 3
– DFS có quay lui
– BrFS
<b>Procedure Depth_first_search;</b>
<b>Begin</b>
<b>open :=[start]; close:=[];</b>
<b>While (open <>[]) do</b>
<b>begin</b>
<b>remove X which is the leftmost of Open;</b>
<b>If (X=goal) the return (Success)</b>
<b>else begin</b>
<b>generate children of X; Put X to close;</b>
<b>eleminate children of X which is in Open or Close;</b>
<b>Put remain children on LEFT end of open;</b>
<b>End;</b>
<b>End;</b>
<b>Return (FALL);</b>
<b>End;</b>
<b>DFS</b>
<b>có quay lui</b>
– DFS có quay lui
– BrFS
<b>BrFS</b>
<b>Procedure Breadth_first_search;</b>
<b>Begin</b>
<b>open :=[start]; close:=[];</b>
<b>begin</b>
<b>remove X which is the leftmost of Open;</b>
<b>If (X=goal) the return (Success)</b>
<b>else begin</b>
<b>generate children of X; Put X to close;</b>
<b>eleminate children of X which is in Open or Close;</b>
<b>Put remain children on RIGHT end of open;</b>
<b>End;</b>
<b>End;</b>
<b>Return (FALL);</b>
<b>End;</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 5
1. Sinh một lời giải nào đó (trạng thái OR con đường).
2. So sánh với trạng thái đích.
3. Nếu là đích dừng; ngược lại đến bước 1.
– Có hệthống: sinh các trạng thái một cách có hệthống, bằng
giải thuật tìm kiếm vét cạn KGTT, như DFS có quay lui.
– Ngẫu nhiên: sinh các trạng thái một cách ngẫu nhiên.
– Heuristic: dùng heuristic đểkhông phải sinh những trạng thái
mà nó dường như khơng dẫn đến đích.
– Thường khơng chỉsửdụng sinh-và-thử.
– Thường kết hợp với các kỹthuật khác đểgiới hạn KGTT được
khảo sát, (như DENRAL)
1. Xét trạng thái bắt đầu.
<b>1.</b> <b>Nếu là đích </b><sub></sub><sub></sub><sub></sub><sub></sub><b>dừng.</b>
<b>2.</b> <b>Ngược lại: thiết lập khởi đầu như TT hiện tại.</b>
2. Lặp đến khi: gặp đích OR khơng cịn luật nào chưa được áp
dụng vào TT hiện tại
<b>1.</b> <b>Lựa một luật đểáp dụng vào TT hiện tại đểsinh ra một TT mới.</b>
<b>2.</b> <b>Xem xét TT mới này:</b>
1. Nếu là đích dừng.
2. Nếu khơng là đích, nhưng tốt hơn TT hiện tại thiết lập TT mới là TT
hiện tại.
3. Nếu khơng tốt hơn thì thì tiếp lần lặp kế.
– Có sửdụng hàm đánh giá đểtích hợp tri thức vào điều khiển.
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 7
<b>Phiên b</b>ả<b>n c</b>ả<b>i ti</b>ế<b>n:</b>
1. Xem xét trạng thái đầu.
<b>1.</b> <b>N</b>ế<b>u là</b> đ<b>ích d</b>ừ<b>ng.</b>
<b>2.</b> <b>Ng</b>ượ<b>c l</b>ạ<b>i thi</b>ế<b>t l</b>ậ<b>p TT </b>đầ<b>u là TT hi</b>ệ<b>n t</b>ạ<b>i.</b>
2. Lặp đến khi: gặp đích OR khơng có sự thay đổi TT hiện tại
<b>1.</b> <b>SUCC = TT con b</b>ấ<b>t k</b>ỳ<b>nào c</b>ủ<b>a TT hi</b>ệ<b>n t</b>ạ<b>i</b>
<b>2.</b> <b>V</b>ớ<b>i m</b>ỗ<b>i lu</b>ậ<b>t:</b>
1. Áp dụng luật đểsinh ra TT mới.
2. Nếu TT mới là đích dừng. Ngược lại, so sánh với SUCC. Nếu tốt hơn SUCC thì
thiết lập SUCC là TT này. Ngược lại, khơng thay đổi SUCC.
3. Nếu SUCC tốt hơn TT hiện tại SUCC làm TT hiện tại.
<b>Nh</b>ậ<b>n xét:</b>
– Cảhai phiên bản trên có thểsẽkhơng thểtìm đến đích được trong 3 trường
hợp sau:
<b>Local Maximum:</b>
<b>Plateau:</b>
<b>Ridge:</b>
<b>B</b>
<b>A</b>
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
<b>H</b>
Trạng thái đầu Trạng thái đích
Thửgiải với giải thuật leo đồi, với hai heuristic (H1 và H2):
1. Cộng 1 cho các khối nằm mà nó nằm trên khối khác như mong muốn.
Trừ1 cho các khối nằm mà nó không nằm trên khối mong muốn
2. Cộng 1 cho mỗi khối nằm trong cấu trúc mong muốn (nhưđích).
Trừ1 cho mỗi khối không nằm trong cấu trúc mong muốn.
H1=4
H2=-28
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 9
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
<b>H</b>
<b>A</b>
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
<b>H</b>
<b>A</b>
<b>B</b>
<b>C</b>
<b>D</b>
<b>E</b>
<b>F</b>
<b>G</b>
H2=-16 H1=4<sub>H2=-15</sub>
– T: nhiệt độluyện, được chọn dựa vào lịch luyện thép.
– <sub>∆</sub>E: Chuyển đổi trong mức năng lượng (dương). Trong giải
thuật đó là hiệu sốcủa hai hàm heuristic.
– Là một cải tiến của leo đồi đểnó có thểchấp nhận TT mới khi
khơng có TT nào tốt hơn TT hiện tại.
– Lịch luyện phải được xây dựng trước, dựa vào kinh nghiệm, và
được lưu lại trong lúc GT chạy.
– Có thểchấp nhận TT mới tệ hơn TT hiện tại.
<i>T</i>
<i>E</i>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 11
<b>Gi</b>ả<b>i thu</b>ậ<b>t:</b>
1. Xem xét trạng thái đầu.
<b>1.</b> <b>N</b>ế<b>u là</b> đ<b>ích d</b>ừ<b>ng.</b>
<b>2.</b> <b>Ng</b>ượ<b>c l</b>ạ<b>i thi</b>ế<b>t l</b>ậ<b>p TT </b>đầ<b>u là TT hi</b>ệ<b>n t</b>ạ<b>i.</b>
2. Khởi động BEST-SO-FAR = TT hiện tại.
3. Khởi động T dựa vào lịch luyện.
4. Lặp đến khi: gặp đích OR khơng cịn luật nào chưa được áp dụng vào TT
hiện tại.
<b>1.</b> <b>Ch</b>ọ<b>n m</b>ộ<b>t lu</b>ậ<b>t </b>để<b>áp d</b>ụ<b>ng vào TT hi</b>ệ<b>n t</b>ạ<b>i và sinh ra TT m</b>ớ<b>i.</b>
<b>2.</b> <b>Xem xét TT m</b>ớ<b>i, tính:</b>
∆
∆
∆
∆<b>E = (Tr</b>ị<b>c</b>ủ<b>a TT hi</b>ệ<b>n t</b>ạ<b>i) – (Tr</b>ị<b>c</b>ủ<b>a TT m</b>ớ<b>i)</b>
1. TT mới = đích dừng.
2. TT mới khơng là đích, nhưng tốt hơn TT hiện tại TT hiện tại là TT mới và
BEST-SO-FAR = TT mới.
3. Nếu khơng tốt hơn TT hiện tại thì:
1. Tính xác suất p’ nói trên.
2. Sinh ngẫu nhiên một sốp thuộc [0,1]. Nếu p < p’ thì chấp nhận TT mới tệ hơn
này.
<b>3.</b> <b>Thay </b>đổ<b>i T d</b>ự<b>a vào l</b>ị<b>ch luy</b>ệ<b>n.</b>
5. TrảvềBEST-SO-FAR
– Là phương pháp dung hoà của BrFS và DFS.
– Có bơm tri thức cụthểcủa bài tốn vào phần điều khiển.
– Có sửdụng để đánh giá ưu thếcủa mỗi trạng thái, có thểlà
ước lượng từnó đến TT đích.
– Tại mỗi bước, GT sẽchọn trạng thái mà nó cho rằng là có ưu
thếnhất trong sốcác trạng thái đã sinh ra được đến thời điểm
đó.
– Khác với GT leo đồi có cải tiến ởchổ: có lưu tất cảnhững TT
đã phát sinh đến thời điểm chọn TT đểxét tiếp.
– Dùng hai danh sách:
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Môn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 13
1. OPEN = [TT đầu]
2. Lặp đến khi: gặp đích OR OPEN rỗng.
<b>1.</b> <b>Lấy TT tốt nhất từOPEN.</b>
<b>2.</b> <b>Phát sinh các con của nó.</b>
<b>3.</b> <b>Với mỗi con:</b>
1. Nếu nó chưa được phát sinh: gán nó trị đánh giá, đưa vào OPEN, ghi nhận
TT cha của nó.
2. Nếu đã được phát sinh trước: Nếu đạt đến bởi đường khác tốt hơn ghi
nhận lại TT cha của nó, cập nhật lại trị đánh giá của nó và của các con của
nó.
<b>A</b> <b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(3) (5) (1)
Bước 1 Bước 2
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(3) (5)
Bước 3
<b>E</b> <b>F</b>
(4) (6)
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(5)
Bước 4
<b>E</b> <b>F</b>
<b>G</b> <b>H</b>
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(5)
Bước 5
<b>E</b> <b>F</b>
(6)
<b>G</b> <b>H</b>
(6) (5)
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 15
– Sửdụng hàm h(n) = Ước lượng chi phí từ TT n đến TT đích
Khơng đảm bảo tính tối ưu lẫn tính đầy đủ
– Sửdụng hàm g(n) = Ước lượng chi phí từ TT đầu đến TT n
Tối ưu và đầy đủ, nhưng khơng hiệu quả
<b>Gi</b>ớ<b>i thi</b>ệ<b>u gi</b>ả<b>i thu</b>ậ<b>t A*:</b>
– Sửdụng 3 hàm:
<b>f’(n) : </b>Ướ<b>c l</b>ượ<b>ng chi phí t</b>ừ TT đầ<b>u </b>đế<b>n </b>đ<b>ich trên con </b>đườ<b>ng có qua TT n.</b>
<b>g(n) : chi phí</b> đã phả<b>i tr</b>ả<b>i t</b>ừ TT đầ<b>u </b>đế<b>n TT n.</b>
<b>h’(n):</b> Ướ<b>c l</b>ượ<b>ng chi phí t</b>ừ TT n đế<b>n TT </b>đ<b>ích.</b>
<b>f’(n) = g(n) + h’(n)</b>
– Sửdụng hai danh sách OPEN và CLOSED như đã nói trên.
<b>Gi</b>ả<b>i thu</b>ậ<b>t A*:</b>
1. OPEN =[TT đầu, g=0, f’=g+ h’ = h’]
2. Lặp đến khi: gặp TT đích:
<b>1.</b> <b>OPEN r</b>ỗ<b>ng báo error.</b>
<b>2.</b> <b>BESTNODE = TT t</b>ố<b>t nh</b>ấ<b>t( f nh</b>ỏ<b>nh</b>ấ<b>t) trên OPEN.</b>
<b>Xoá BESTNODE kh</b>ỏ<b>i OPEN.</b>
Đư<b>a vào CLOSED.</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 17
Với mỗi con gọi là SUCCESSOR:
(a) Thiết lập đểSUCCESSOR chỉ ngược về BESTNODE, đểcho phép trả
về con đường khi gặp đích.
(b) Tính g(SUCCESSOR) = g(BESTNODE) + cost(BESTNODE,
SUCCESSOR).
(c) Nếu SUCCESSOR đã có trong OPEN, TT trong OPEN gọi là OLD.
Nếu g(SUCCESSOR) < g(OLD) thì gán lại parent của OLD là
BESTNODE. Cập nhật lại con đường đạt đến OLD và trị đánh giá f cho
OLD trong OPEN.
(d) Nếu SUCCESSOR đã có trong CLOSED, gọi đó là OLD’. Thực hiện
kiểm tra tương tự như OPEN, song chú ý là nếu đạt tới SUCCESSOR bởi
con đường tốt hơn thì:
- Cập nhật lại cha của OLD’
- Đưa OLD’ vào lại OPEN.
<i><b>- C</b></i>ậ<i><b>p nh</b></i>ậ<i><b>t l</b></i>ạ<i><b>i giá tr</b></i>ị<i><b>f cho các TT con c</b></i>ủ<i><b>a OLD’.</b></i>
(e) Nếu SUCCESSOR khơng có trong cảOPEN , CLOSED thì: đưa nó
vào OPEN và thêm nó nào ds con của BESTNODE. Tính tốn gía trịf cho
nó.
Procedure Best_First_Search;
Begin
open:=[start]; close:=[];
<b>While</b>(open<>[]) do
<b>begin</b>
X = removefirst(OPEN).
<b>if</b>X=GOAL then return path.
else begin
Sinh các con của X;
<b>FOR</b>mỗi con Y của X DO
case Y khơng có trong OPEN, CLOSED:
begin
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 19
<b>if</b> đến được Y bởi một path ngắn hơn
<b>then</b>
gán path ngắn hơn này cho Y trên OPEN.
<b>case Y</b>có trong CLOSED
<b>if</b> đến được Y bởi một path ngắn hơn
<b>then begin</b>
Xoá Y khỏi CLOSED;
Thêm Y vào OPEN
<b>end</b>
<b>end</b>; /*end FOR*/
Đưa X vào CLOSED
Sắp xếp các TT trên OPEN (tăng dần theo hàm f)
<b>end</b>; / while/
return failure;
<b>End;</b>
– Được dùng đểbiểu diễn KGTT cho bài toán giải được bằng
cách phân rã ra các bài toán nhỏ hơn
– Khi bài toán được phân rã thành N bài tốn con, mà tất cả
chúng phải được giải đểhồn thành bài tốn lớn thì được biểu
diễn thành cung AND chỉ đến N trạng thái con.
– Nhiều cách giải cho bài tốn có thể được dùng thì có thểbiểu
diễn bởi cung OR .
– Ví dụ: <b>A</b>
<b>B</b> <b>C</b> <b>D</b>
<b>A có thể được thông qua hai cách:</b>
-<b>Giải B, hoặc</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 21
– Nếu dùng giải thuật BFS cho việc tìm lời giải trên đồthị
AND-OR thì có lẽkhơng thích hợp vì như xem xét đồthịsau:
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
(5) (3) (4)
-<b>Nếu giá trịghi kềbên trạng thái là trị ước lượng cho trạng thái đó.</b>
-<b>Theo BFS thì trạng thái kếtiếp được chọn là C, như:</b>
-<b>Khi chọn cách giải qua C thì bắt buộc phải giải cảD. Do vậy </b>
<b>tổng chi phí cho cách giải này là: C+D+ 2 = 9, 2 là giá trịcủa </b>
<b>hàm g trong BFS.</b>
- Trong khi đó nếu chọn cách giải qua B thì chi phí chỉ<b>là: B+1 = </b>
<b>6.</b>
(9)
1. Khởi động đồthịlà TT bắt đầu.
2. Lặp đến khi: TT đầu được gán nhãn là SOLVED OR chi phí
vượt qua ngưỡng FUTILITY:
<b>1.</b> <b>Duyệt đồthịbắt đầu từ TT đầu, theo con đường tốt nhất hiện tại, </b>
<b>tích luỹtập trạng thái trên con đường đó mà nó chưa được mở</b>
<b>rộng hoặc được gán nhãn SOLVED.</b>
<b>2.</b> <b>Lấy một TT chưa mởrộng và mởrộng nó. Nếu khơng có con thì</b>
<b>gán FUTILITY bằng trịcủa TT này. Ngược lại, thêm các con vào </b>
đồ<b>thịvà mỗi chúng tính f’ (sửdụng chỉh’, bỏqua g). Nếu f’ =0 thì</b>
<b>gán nhãn cho TT đó là SOLVED.</b>
<b>3.</b> <b>Thay đổi f’ của TT đã được mởrộng đểphản ánh thông tin được </b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Môn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 23
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
<b>A</b>
Trước bước 1:
(<b>5</b>)
Trước bước 2:
(3) (4) (5)
(<b>9</b>)
(<b>6</b>)
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
Trước bước 3:
(3) (4)
(<b>9</b>)
<b>E</b> <b>F</b>
4 4
<b>10</b>
<b>A</b>
<b>B</b> <b>C</b> <b>D</b>
Trước bước 4:
(4)
(<b>12</b>)
<b>E</b> <b>F</b>
4 4
<b>10</b>
10 10
<b>G</b> <b>H</b>
5 7
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 25
1. Gán GRAPH chứa TT đầu (INIT). Tính h’(INIT).
2. Lặp đến khi INIT có nhãn SOLVED OR h’(INIT) >
FUTILITY:
<b>1.</b> <b>Lần theo cung đã được gán nhãn đi từINIT, lựa chọn một NODE </b>
để<b>mởrộng.</b>
<b>2.</b> <b>Phát sinh con của NODE. Nếu khơng có con thì FUTILITY = </b>
<b>h’(NODE). Nếu có con, với mỗi con SUCCESSOR thực hiện:</b>
1. Đưa SUCCESSOR vào GRAPH.
2. Nếu SUCCESSOR là nốt dừng, gán nhãn SOLVED, gán
h’(SUCCESSOR) =0.
3. Nếu SUCCESSOR không là nốt dừng thì tính h’(SUCCESSOR).
<b>3.</b> <b>Lan truyền ngược lên đồthị như sau: Gọi S là tập các nốt có nhãn </b>
<b>SOLVED, h’ của nó đã chuyển đổi, cần lan truyền ngược lên nốt </b>
<b>cha. Khởi động S chưa NODE. Đến khi S trống thực hiện:</b>
1. ...
2. …
<b>1.</b> <b>…</b>
<b>2.</b> <b>…</b>
<b>3.</b> <b>…</b>
1. Nếu có thểthì: lựa từS một nốt mà khơng có con nào của nó trong
GRAPH nằm trong S. nếu khơng có nốt như vậy thì : lựa một nốt bất kỳtừ
S, gọi là CURRENT, xố nó khỏi S.
2. Tính tốn phí của mỗi cung đi từCURRENT. Phí này bằng tổng các h’
của con nốt nằm ởcuối cung (AND NODE), cộng với phí của chính cung
đó (thơng thường là 1 cho mỗi cung). Gán cost nhỏnhất (trong các OR
NODE) cho CURRENT.
3. Đánh dấu con đường tốt nhất hiện tại.
4. Đánh dấu SOLVED cho CURRENT nếu: tất cảnốt nối vào nó xuyên qua
cung mới nói trên là SOLVED.
5. Nếu CURRENT là SOLVED hoặc nếu chi phí của CURRENT đã thay đổi
thì phải lan truyền ngược lên trên. Đưa vào S tất cảcác cha của
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Môn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 27
<b>Gi</b>ả<b>i thu</b>ậ<b>t:</b>
1. Sinh ra các ràng buộc có thểcó:
Gọi OPEN = tập các đối tượng phải được gán trị. Lặp đến khi OPEN trống
OR vi phạm xảy ra:
<b>1.</b> <b>OB là m</b>ộ<b>t </b>đố<b>i t</b>ượ<b>ng c</b>ủ<b>a OPEN. Áp d</b>ụ<b>ng các ràng bu</b>ộ<b>c có th</b>ể<b>có vào OB.</b>
<b>2.</b> <b>N</b>ế<b>u t</b>ậ<b>p này khác so v</b>ớ<b>i t</b>ậ<b>p </b>đ<b>ã </b>đượ<b>c gán trong l</b>ầ<b>n sau cùng OB </b>đượ<b>c xem </b>
<b>xét, ho</b>ặ<b>c </b>đ<b>ây là l</b>ầ<b>n </b>đầ<b>u tiên OB </b>đượ<b>c xem xét.</b> Đưa v<b>ào OPEN t</b>ấ<b>t c</b>ả<b>các </b>
đố<b>i t</b>ượ<b>ng n</b>ằ<b>m trong cùng ràng bu</b>ộ<b>c v</b>ớ<b>i OB.</b>
<b>3.</b> <b>B</b>ỏ<b>OB kh</b>ỏ<b>i OPEN.</b>
2. Nếu hợp các ràng buộc đã được sinh ra có lời giải dừng.
3. Nếu hợp ràng buộc sinh đã được sinh ra có vi phạm trảvềlỗi.
4. Nếu hai điều trên khơng xảy ra thì: thực hiện cơng việc đốn, bằng cách:
lặp đến khi có lời giải OR tất cảcác lời giải có khả năng đã bịloại:
<b>1.</b> <b>L</b>ự<b>a m</b>ộ<b>t </b>đố<b>i t</b>ượ<b>ng ch</b>ư<b>a có tr</b>ị<b>. Ch</b>ọ<b>n cách gán tr</b>ị để<b>tho</b>ả<b>các ràng bu</b>ộ<b>c </b>
<b>trên </b>đ<b>ó.</b>
<b>2.</b> <b>G</b>ọ<b>i </b>đệ<b>qui trên t</b>ậ<b>p ràng bu</b>ộ<b>c m</b>ớ<b>i v</b>ừ<b>a c</b>ậ<b>p nh</b>ậ<b>t </b>ở bướ<b>c trên.</b>
<b>SEND</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 29
<b>M=1</b>
<b>S = 8 | 9</b>
<b>O = 0 | 1O=0</b>
<b>N=E | E+1 N = E+1.</b>
<b>C2 = 1</b>
<b>N +R > 8</b>
<b>E <> 9</b>
<b>N =3</b>
<b>R = 8 | 9</b>
<b>2 + D = Y | 2 + D = 10 + Y</b>
Trạng thái đầu
SEND
+MORE
E =2 Đoán !!!
<b>N =3</b>
<b>R = 8 | 9</b>
<b>2 + D = Y | 2 + D = 10 + Y</b>
<b>2 + D = Y</b>
<b>N + R = 10 + E</b>
<b>R =9</b>
<b>S = 8</b>
<b>2 + D = 10 + Y</b>
<b>D = 8 + Y</b>
<b>D = 8 | 9</b>
C1 =0 C1 =1
<b>Y= 0</b> <b>Y = 1</b>
D=8 D=9
Vi phạm Vi phạm
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 31
– Tiến (forward)
– Lùi (backward)
– Hay kết hợp cả 2 như dạng: phương tiện - mục đích.
– Nếu muốn đi từtrạng thái (A) đến (B), mà đã có tốn tửO
(luật) làm được như vậy thì áp dụng O dừng.
– Nếu khơng có tốn tử O như vậy thì:
<b>Cốgắng tìm một con đường từ(A) (C), gọi lại thủtục này.</b>
<b>Mỗi khi đến (C) được rồi thì có thểáp dụng tốn tử O để đến (D). </b>
<b>Nếu (D) là GOAL dừng.</b>
<b>Nếu khơng thì cốgắng tìm đường đến (D), gọi lại thủtục này.</b>
<b>Chi</b>ế<b>n l</b>ượ<b>c tìm ki</b>ế<b>m có th</b>ể<b>là:</b>
– Tiến (forward)
– Lùi (backward)
– Hay kết hợp cả 2 như dạng: phương tiện - mục đích.
<b>Gi</b>ả<b>i thu</b>ậ<b>t: Mean-End-Analysis, MEA(CURRENT-GOAL):</b>
1. So sánh CURRENT và GOAL. If không khác dừng.
2. Ngược lại: Chọn sựkhác nhau lớn nhất, thực hiện:
<b>1.</b> <b>L</b>ự<b>a m</b>ộ<b>t toán t</b>ử<b>(lu</b>ậ<b>t) O mà có th</b>ể<b>dùng </b>đượ<b>c cho s</b>ự<b>khác nhau này. N</b>ế<b>u </b>
<b>khơng cóbáo error.</b>
<b>2.</b> <b>Áp d</b>ụ<b>ng O vào CURRENT. Phát sinh hai tr</b>ạ<b>ng thái: (i) O-START, tr</b>ạ<b>ng </b>
<b>thái mà</b> điề<b>u ki</b>ệ<b>n </b>đầ<b>u c</b>ủ<b>a O </b>đượ<b>c tho</b>ả<b>mãn, (ii) O-RESULT , tr</b>ạ<b>ng thái </b>
<b>k</b>ế<b>t c</b>ụ<b>c n</b>ế<b>u nh</b>ư<b> O </b>đ<b>ã </b>đượ<b>c áp d</b>ụ<b>ng vào O-START.</b>
<b>3.</b> <b>IF</b>
<b>(FIRST-PART </b><b>MEA(CURRENT, O-START))</b>
<b>AND</b>
<b>(LAST-PART </b><b>MEA(O-RESULT, GOAL))</b>
<b>Là thành công</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 33
<b>Một robot với các hành động có thể như bảng 1 và cho trước hành </b>
động nào thì được dùng để<b>làm giảm sựkhác biệt của bài toán như </b>
<b>bảng 2 (bảng khác biệt).</b>
Đưa ra chuổi hành động để<b>robot có thểmang một cái bàn từ</b>
<b>phòng này sang phòng khác, trên bàn có hai vật nhỏ.</b>
<b>at(robot, loc)</b>
<b>None</b>
<b>WALK(loc)</b>
<b>at(obj, loc) ^</b>
<b>at(robot, loc)</b>
<b>at(robot, obj)^</b>
<b>small(obj)</b>
<b>CARRY(obj, loc)</b>
<b>at(obj, loc) ^</b>
<b>at(robot, loc)</b>
<b>at(robot, obj)^</b>
<b>Toán tử</b>
<b><Bảng 1></b>
<b>on(obj1,obj2)</b>
<b>at(robot, obj2) ^</b>
<b>holding(obj1)</b>
<b>PLACE(obj1, obj2)</b>
<b>¬holding(obj)</b>
<b>holding(obj)</b>
<b>PUTDOWN(obj)</b>
<b>holding(obj)</b>
<b>at(robot, obj)</b>
<b>PICKUP(obj)</b>
<b>Kết quả</b>
Điều kiện đầu
<b>Tốn tử</b>
<b>*</b>
<b>Be holding object</b>
<b>*</b>
<b>*</b>
<b>Get arm empty</b>
<b>*</b>
<b>Get object on object</b>
Khoa Công Nghệ Thông Tin - Đại Học Bách Khoa Tp. HCM
Bài Giảng Mơn: Trí tuệ<b>nhân t</b>ạ<b>o</b> Chương 03. Side 35
– Move: bàn <sub></sub>phịng 2.
<b>Khơng có tốn tửnào dùng được.</b>
<b>Bảng khác biệt cho biết có PUSH và CARRY có thễdùng được.</b>
– Nếu chọn CARRY: hai điều kiện phải thoả:
at(robot, bàn) ^ small(bàn).
<b>at(robot, bàn) : giải được bằng WALK</b>
<b>small(bàn): không thể được vì khơng có tốn tửnào.</b>
<b>DEAD END.</b>
– Chỉcịn giải pháp: dùng PUSH
<b>A</b> <b>C</b> <b>PUSH</b> <b>D</b> <b>B</b>
<b>START</b> <b>GOAL</b>
– Hai bài tốn còn lại là : (A)(C) và (D) (B)
– Giải (A)(C): Khi dùng PUSH thì cần 4 điều kiện:
<b>at(robot, bàn) : giải được WALK.</b>
<b>large(bàn): bàn sẵn sàng là large.</b>
<b>clear(bàn): giải được bằng PICKUP.</b>
<b>armempty: robot đã sẵn empty.</b>
– Sau khi dùng PICKUP thì sau đó phải dùng PUTDOWN để
đưa cánh tay robot vềrỗng.
– … Kết quảcó thểtóm lược như sau:
<b>A</b> <b>walk</b> <b>pickup</b> <b>putdown</b> <b>pickup</b> <b>putdown</b> <b>C</b> <b>D</b> <b>B</b>