Câu 1: Trình bày thuật giải đồng nhất hóa cho các ngôn ngữ lập trình logicThe unification algorithm: thuật giải đồng nhất hóa câu x cần đồng nhất với câu y X: biến, hằng, danh sách, kết
Trang 1Câu 1: Trình bày thuật giải đồng nhất hóa cho các ngôn ngữ lập trình logic
The unification algorithm: thuật giải đồng nhất hóa
câu x cần đồng nhất với câu y
X: biến, hằng, danh sách, kết hợp các vị từ
Theta: phép đồng nhất từ nãy đến giờ
If theta thất bại, tức là x không đồng nhất được với y
X = y phép đồng nhất đương nhiên trả về kết quả luôn theta
Kiểm tra x có phải là một biến hay không, gọi tới hàm đồng nhất biến (x, y, theta)
Kiểm tra y có phải là một biến hay không, gọi tới hàm đồng nhất biến (y, x, theta)
Kiểm tra x và y có phải là hỗn hợp các vị từ hay không, trả về đồng nhất (các đối số x, các đối số y, đồng nhất (các toán hạng của x, các toán hạng của y, theta))
Nếu x và y là danh sách thì đồng nhất(phần còn lại x, phần còn lại y, đồng nhất(phần tử đầu tiên của x, phần tử đầu tiên của y, theta))
Ngược lại trả về failure
(Trừơng hợp x, y là hằng số, chính là trường hợp list 1 phần tử)
Trang 2The unification algorithm
Đây là hàm đồng nhất biến (var, x, theta)
Var: là một biến
X: là bất kỳ biểu thức gì
Theta: phép thế từ nãy đến giờ
Nếu x là giá trị {var/val} thì trả về đồng nhất (val, x, theta)
Var: biến
Val: giá trị
Nếu x có thể thế với giá trị {x/val} thì đồng nhất (var, val, theta)
Nếu x không liên quan đến giá trị nào hết thì phát sinh kiểm tra xem có lỗi hay không, nếu cótrả về failure
Ngược lại nếu không có lỗi thì thêm vào {var/x}
Occur-check: tùy bài toán không có trường hợp cụ thể nên không thể viết được hàm này
Câu 2: Trình bày giải thuật lập luận tiến cho logic vị từ bậc 1
Trang 3Forward chaining algorithm
Giải thuật lập luận tiến:
Substitution: phép thế
New: là tập hợp các giả thiết và sự kiện suy được
Với mỗi câu r trong cơ sở tri thức thì
Standardize-apart (r): thủ tục chuẩn hóa từng phần r sẽ đổi tên các biến trùng tên, là thủ tục tự động do máy lập trình
R có dạng p1 và … kéo theo q : là dạng chuẩn hội (biến thành phép và)
Với mỗi phép thế theta là thế giá trị cụ thể cho một biến khiến cho p1 và … thành p’1 và …
(p’1 mất biến thành M1)
Từ các p’ cụ thể thì mình kết luận được q’ cụ thể từ q trừu tượng (ví dụ: q là hostile(x) còn q’ là hostile(Nono) Nếu q’ không phải là một câu đã có rồi trong cơ sở tri thức hay là câu mới thì
Thêm q’ mới suy ra được vào tập hợp new
Gọi thủ tục đồng nhất hóa unify(q’, anpha) để coi q’ có đồng nhất hóa được với anpha hay không
Nếu phép đồng nhất hóa phi mà không thất bại thì trả về kết quả là phép đồng nhất hóa phi
Sau khi đã áp dụng hết các luật, thêm tập hợp new mới chứa các sự kiện mới vào cơ sở tri thức
Khi new rỗng, nghĩa là không tạo ra được sự kiện mới, trả về false, bởi vì không còn luật nào có thể áp dụng được nữa
Câu 3: Trình bày giải thuật lập luận lùi cho logic vị từ bậc 1
Trang 4Backward chaining algorithm
SUBST(COMPOSE(θ1, θ2), p) = SUBST(θ2, SUBST(θ1, p))
Thuật toán lập luận lùi
Hàm vị từ bậc 1 lập luận lùi
KB: cơ sở tri thức
Goals: điều cần phải chứng minh
Theta: mình đã chứng minh tới ngay đâu rồi
Các biến cục bộ: ans, các phép thế diễn ra khởi đầu là rỗng
Nếu điều cần chứng minh là rỗng thì trả về lời giải từ trứơc đến nay (theta)
Ngược lại, thế điều chứng minh thứ nhất thành một mệnh đề q’ cụ thể: thế American(x) bằngAmerican(West)
Với mỗi luật r trong cơ sở tri thức đã được chuẩn hóa từng phần (đổi tên các biến trùng tên, chuyển về dạng chuẩn hội)
Đồng nhất hóa kết luận q trừu tượng của luật r với q’ cụ thể (đồng nhất hóa để suy ra z chính là Nono)
Sau khi thóat khỏi vòng lặp for nghĩa là đã xài hết tất cả các luật, gọi đệ quy đến lập luận lùi với những điều cần chứng minh còn lại ghi nhớ khi đệ quy là theta (American(West)) và theta’ (z và Nono) để có phép suy luận lùi ans
Trả về lời giải ans
Câu 4: Trình bày giải thuật hợp giải
Trang 5Resolution: brief summary
Full first-order version:
Dấu phẩy là phép hội hay phép và
Có 2 mệnh đề, mỗi mệnh đề được tuyển với nhau
Nếu tồn tại một phép đồng nhất theta mà phép đồng nhất theta này là giữa mệnh đề anpha i
= phủ định beta j thì hai mệnh đề anpha và beta tương đương với mệnh đề thứ ba
Hai mệnh đề anpha và beta giả thiết là được chuẩn hóa từng phần nghĩa là các biến trùng tên đã được đổi tên
Conversion to CNF
Everyone who loves all animals is loved by someone:
"x ["y Animal(y) Þ Loves(x,y)] Þ [$y Loves(y,x)]
1 Eliminate biconditionals and implications
"x [Øb"y ØbAnimal(y) Ú Loves(x,y)] Ú [$y Loves(y,x)]
2 Move Øb inwards: Øb"x p ≡ $x Øbp, Øb $x p ≡ "x Øbp
"x [$y Øb(ØbAnimal(y) Ú Loves(x,y))] Ú [$y Loves(y,x)]
"x [$y ØbØbAnimal(y) Ù ØbLoves(x,y)] Ú [$y Loves(y,x)]
"x [$y Animal(y) Ù ØbLoves(x,y)] Ú [$y Loves(y,x)]
Chuyển đổi thành dạng chuẩn hội (CNF):
Mọi người nào mà yêu mến các thú vật thì sẽ được yêu bởi một người khác nào đó
1 Lọai trừ các phép tương đương và các phép kéo theo
2 Di chuyển dấu phủ định vào trong: tính chất đối ngẫu của lượng từ
Trang 6"x [$y Animal(y) Ù ØbLoves(x,y)] Ú [$z Loves(z,x)]
4 Skolemize: a more general form of existential instantiation.
Each existential variable is replaced by a Skolem function of the enclosing universally
quantified variables:
"x [Animal(F(x)) Ù ØbLoves(x,F(x))] Ú Loves(G(x),x)
5 Drop universal quantifiers:
[Animal(F(x)) Ù ØbLoves(x,F(x))] Ú Loves(G(x),x)
6 Distribute Ú over Ù :
[Animal(F(x)) Ú Loves(G(x),x)] Ù [ØbLoves(x,F(x)) Ú Loves(G(x),x)]
3 Chuẩn hóa các biến: mỗi lượng từ nên sử dụng một biến khác nhau
Biến y thứ hai đã được đổi tên thành z
4 Đặt tên các biến skolem cho lượng từ tồn tại để bỏ lượng từ tồn tại khỏi câu logic
Trong trường hợp này có thể nâng cấp lên bằng cách dùng hàm Skolem
5 Bỏ lượng từ với mọi
6 Áp dụng luật phân phối phép tuyển (hay) đối với phép hội (và)
Câu 5: Hãy chứng minh ví dụ Nono, America, West bằng hợp giải
Example knowledge base
Trang 7The law says that it is a crime for an American to sell weapons to hostile (thù địch) nations The country Nono, an enemy of America, has some missiles (tên lửa), and all of its missiles were sold to it by Colonel West, who is American Prove that Col West is a criminal
Luật lệ nói rằng nó là một kẻ tội phạm cho một người Mỹ bán vũ khí cho các quốc gia thù địch Nước Nono, một kẻ thù địch của Mỹ, có một vài tên lửa và tất cả các tên lửa của nó do ông Colonel West bán cho nó mà ông này là người Mỹ
Chứng minh rằng Colonel West là một kẻ tội phạm
Resolution proof: definite clauses
Dòng cuối cùng màu xanh bỏ sót phủ định Enemy(Nono, America)
Khi đã triệt tiêu hết nghĩa là đã chứng minh được
Câu 6: Hãy mô tả thuật giải tìm kiếm theo chiều sâu hạn chế
Depth-limited algorithm
Trang 8if GOAL-TEST[problem](STATE[node]) then return SOLUTION(node)
else if DEPTH[node] == limit then return cutoff: cắt ngang
else for each successor in EXPAND(node, problem) do
result ¬ RECURSIVE-DLS(successor, problem, limit)
if result == cutoff then cutoff_occurred? ¬ true
else if result ¹ failure then return result
if cutoff_occurred? then return cutoff else return failure
Giải thuật tìm kiếm theo chiều sâu hạn chế là giải thuật đệ quy DEPTH-LIMITED-SEARCH
(bài tóan, chiều sâu tối đa đạt tới) trả về 3 đầu ra: lời giải hoặc thất bại/cắt ngang (cutoff) Trong trường hợp cutoff thì không biết là có lời giải hay không
Gọi hàm đệ quy RECURSIVE-DLS có các tham số là nút gốc, bài toán và chiều sâu limit
Hàm Recursive-dls có tham số là nút node, bài toán và chiều sâu limit
Khởi động giá trị đầu cho cờ cutoff_occurred là false
Nếu kiểm tra đích là nút hiện tại node thì trả về lời giải tương ứng với với nút node
Ngược lại, nếu chiều sâu của nút node bằng với limit thì xảy ra cắt ngang cutoff
Ngược lại, với mỗi nút con khi bung nút node bằng hàm EXPAND thực hiện
Gọi đệ quy Recursive-dls cho nút con đó,
nếu kết quả của nút con là cutoff thì bật cờ cutoff_occurred là true
Ngược lại nếu kết quả của nút con khác với thất bại thì trả về lời giải của nút con
Cuối cùng hết nếu cờ cutoff_occurred là đúng (nghĩa là có một nút con xảy ra cutoff) thì trả
về cắt ngang cutoff
Ngược lại thì trả về thất bại
Ghi chú: có 2 trường hợp trả về cắt ngang cutoff, trường hợp 1 khi nút node có chiều sâu là limit, trường hợp 2 khi có nút con của nút node xảy ra cutoff thì ta cũng trả về cắt ngang cutoff
Câu 7: Trình bày thuật giải tìm kiếm lặp sâu dần
Iterative deepening search
Trang 9Thuật giải tìm kiếm lặp sâu dần:
Hàm tìm kiếm lặp sâu dần chỉ có một tham số là bài toán và trả về là lời giải hay thất bại
Với mọi chiều sâu tăng dần từ 0 - ∞
Gọi hàm tìm kiếm theo chiều sâu hạn chế có tham số chiều sâu depth
Nếu kết quả khác với cắt ngang cutoff thì trả về kết quả trong trường hợp đó là lời giải hay thất bại
Ngược lại, tăng chiều sâu depth lên 1 và lặp
Iterative deepening search l =3
Áp dụng giải thuật tìm kiếm theo chiều sâu hạn chế là 3, giả sử tìm ra lời giải tại nút M Lưu ý khi làm bài thi: những nút nào tô đen đậm thì bôi đen, những nút nào tô đen lợt thì vẽ bình thường, những nút nào lợt thì không cần vẽ
Câu 8: Hãy trình bày thuật giải A * và minh họa bằng bài toán tìm đường đi ngắn nhất
từ thành phố Arad tới thành phố Burcharest trên bản đồ Romania sau đây
Romania with step costs in km
Trang 10Cột bên phải của bản đồ là khoảng cách đường chim bay tới thành phố Burcharest
A* search
Best-known form of best-first search.
Idea: avoid expanding paths that are already expensive.
Evaluation function f(n) = g(n) + h(n)
g(n) the path cost from start node (so far) to node n
h(n) estimated cost to get from node n to the goal
f(n) estimated total cost of path through n to goal
A* search uses an admissible heuristic
A heuristic is admissible if it never overestimates the cost to reach the goal
1 h(n) <= h*(n) where h*(n) is the true cost from n to goal
2 h(n) >= 0 so h(G)=0 for any goal G.
3 e.g h SLD(n) never overestimates the actual road distance
If h is admissible, f(n) never overestimates the actual cost of the best solution through n
Tìm kiếm A*
Đây là hình thức tốt nhất của tìm kiếm lời giải đầu tiên tốt nhất
Ý tưởng: tránh bung ra các đoạn đường mà tốn kém
Trang 11Hàm đánh giá f(n) = g(n) + h(n)
g(n): đoạn đường vừa mới đi được từ nút đầu tiên tới nút n
h(n): chi phí lượng tính từ nút n tới nút đích
f(n): tổng chi phí lượng tính từ nút đầu qua nút n tới nút đích
Thuật tóan A* phải sử dụng một hàm heuristic mà có thể chấp nhận được
Một hàm heuristic là chấp nhận được nếu nó không bao giờ tính hớ chi phí đến đích
h(n) <= h*(n) : chi phí ước lượng đến đích h(n) <= chi phí thực sự đến đích h*(n)
h(n) >= 0 và sẽ bằng 0 khi tới đích
Nếu hàm h là chấp nhận được kéo theo f(n) sẽ không bao giờ tính hớ chi phí thực sự của lờigiải tốt nhất qua n
A* search example
Expand Arrad and determine f(n) for each node
f(Sibiu) = c(Arad, Sibiu) + h(Sibiu) = 140 + 253 = 393f(Timisoara) = c(Arad, Timisoara) + h(Timisoara) = 118 + 329 = 447f(Zerind) = c(Arad, Zerind) + h(Zerind) = 75 + 374 = 449
Best choice is Sibiu
Bung nút Arad và quyết định f(n) cho mỗi nút
f(Sibiu) = khoảng cách đã đi cho tới Sibiu + khoảng cách ước lượng (khoảng cách đường chim bay) cho tới đích = 140 + 253 = 393
f(Timisoara) = 447
f(Zerind) = 449
Hàm đánh giá thấp nhất là Sibiu 393 do đó ta sẽ chọn Sibiu
A* search example
Trang 12Expand Pitesti and determine f(n) for each node
f(Bucharest) = g(Pitesti) + c(Pitesti, Bucharest) + h(Bucharest) = 418
Best choice is Bucharest !!!
Optimal solution (only if h(n) is admissable)
Note values along optimal path !!
Khi ta bung Pitesti, không gian trạng thái hiện tại là 11 nút, trong đó có 2 nút đích là
Burcharest là 450 và 418 mà 418 là nhỏ nhất của 11 nút nên ta chọn Burcharest 418 là lời giải tối ưu và đúng
Lưu ý: Giá trị 418 cuối cùng đã trả ra khoảng cách đường đi thực tế
Lưu ý: khi làm bài thi không cần tô đen các nút đã bung, chỉ cần đánh dấu nút đích Burcharest giá trị
418 là được rồi
Câu 9: Hãy trình bày thuật giải leo đồi cho bài toán 8 quân Hậu
Example: n-queens
Trang 13Put n queens on an n × n board with no two queens on the same row, column, or
diagonal
Move a queen to reduce number of conflicts
Almost always solves n-queens problems almost instantaneously for very large n, e.g., n=1 million
Bài toán 8 quân Hậu
- Đặt n quân Hậu lên bàn cờ nxn mà không có 2 quân Hậu nào trên cùng một hàng, cùng một cột hay cùng một đường chéo
- Đầu tiên ta đặt 4 quân Hậu một cách ngẫu nhiên lên bàn cờ 4x4 như hình vẽ bên trái
Ta di chuyển mỗi quân Hậu để giảm số xung đột từ h = 5 xuống bằng 2 rồi bằng 0
- Cách này giải tức khắc các bài n quân Hậu cho tới n = 1 triệu
Hill-climbing search
"is a loop that continuously moves in the direction of increasing value”
It terminates when a peak is reached
Hill climbing does not look ahead of the immediate neighbors of the current state.
Hill-climbing chooses randomly among the set of best successors, if there is more than one
Hill-climbing a.k.a greedy local search
Thuật giải tìm kiếm leo đồi (hill climbing search)
- Sử dụng một giá trị đánh giá độ TỐT của trạng thái hiện tại
- Leo đồi là một vòng lặp để di chuyển tới hướng tăng giá trị TỐT
- Nó kết thúc khi đạt đến 1 đỉnh
- Leo đồi không vượt quá xem xét quá các lân cận của trạng thái hiện tại
- Leo đồi chọn ngẫu nhiên trong tập hợp các nút kế tiếp tốt nhất nếu có hơn 1 nút tốt nhất
- Leo đồi là một chiến lược tìm kiếm cục bộ, làm vội
Trang 14Function leo đồi có 1 tham số là bài toán trả về một trạng thái là cực đại cục bộ
Các biến sử dụng: current là một nút hiện tại; neighbor là một nút lân cận
Đầu tiên, ta tạo ra trạng thái khởi đầu của bài toán và gán vào nút current (đối với 8 quân hậu là phát sinh ngẫu nhiên các quân hậu)
Thực hiện lặp
Nút neighbor được gán là nút theo sau có giá trị cao nhất của nút current
Nếu giá trị của nút neighbor đã là tốt nhất của các nút theo sau mà vẫn nhỏ hơn nút current, nghĩa là nút current là tốt nhất trong các lân cận của nó thì trả về lời giải là nút current
Ngược lại cập nhật nút current là nút neighbor, tiếp tục lặp
Về bộ nhớ chỉ lưu 2 nút: current và neighbor
Hill-climbing search: 8-queens problem
h = number of pairs of queens that are attacking each other, either directly or indirectly
h = 17 for the above state
Giải bài toán 8 quân hậu bằng thuật giải leo đồi
Trên bàn cờ hiện tại gọi hàm heuristic h là số cặp hậu tấn công lẫn nhau có thể trực tiếp hay gián tiếp cách 1 quân hậu nằm giữa
Hill-climbing search: 8-queens problem
Trang 15A local minimum with h = 1
Khi leo đồi ra lời giải như sau, lời giải này vẫn còn 1 cặp hậu chiếu nhau h = 1
Nhưng không có cách nào di chuyển 1 quân hậu để h không tăng
Trang 16The vacuum-cleaner world
Percept sequence Action
function REFLEX-VACUUM-AGENT ([location, status]) return an action
if status == Dirty then return Suck
else if location == A then return Right
else if location == B then return Left
What is the right function? Can it be implemented in a small agent program?
Cho dãy nhận thức như trong hình và các thao tác như trong hình
Hàm agent hiện nay còn gọi là hàm phản ảnh REFLEX-VACUUM-AGENT để phản ảnh từ môi trường thành hành động (các thao tác sử dụng chương trình điều khiển thiết bị)
Làm sao để thiết kế hàm đúng? Liệu nó có thể cài đặt thành một chương trình agent nhỏ haykhông? (làm sao thiết kế để cài đặt cho tốt)
b. Với môi trường máy hút bụi 3x3 ô, hãy viết hàm phản ánh của agent để máy hút bụi vận hànhtrong môi trường 3x3 này