You are on page 1of 19

3.

1 Các agent có khả năng giải quyết vấn đề

-Hầu hết các loại agent đều có khả năng giải quyết 1 hay nhiều vấn đề nhất định.
Thế nhưng, như chúng ta đã biết

//Nói sơ lược lại về 4 cái agent

//Xong rồi vô giải thích cái tiếp theo phía dưới

*So sánh 2 agent (Reflex agent và Goal-based agent)

Reflex agent rất đơn giản

- Khả năng thông minh thấp, ánh xạ trực tiếp từ trạng thái đến hành động dựa
trên các quy tắc được xác định, lập trình trước mà không cân nhắc kết quả
khi hành động.
- Không thể hoạt động tốt trong môi trường (ex: môi trường xe tự hành) vì:
o Ánh xạ có thể vượt quá khả năng lưu trữ.
o Cần nhiều thời gian để học tập.

Mặt khác Goal-based agent

- Có sự xem xét các hành động trong tương lai và kết quả dự kiến.
- Để đạt được mục tiêu, nó sử dụng thuật toán tìm kiếm và lập kế hoạch.
- Một hạn chế của Goal-based agent là không phải lúc nào cũng chọn con
đường tối ưu hóa nhất để đạt được mục tiêu cuối cùng.
 Reflex agent được biết đến như là agent đơn giản nhất ,bởi vì chúng trực
tiếp sắp xếp tình trạng (states) trong hành động (actions). Nhưng không
may , Chúng lại thất bại trong việc vận hành môi trường, Nơi mà bản đồ
(mapping) quá lớn để lưu trữ và học. Do đó , Goal-based agent đưa ra
những hành động (action) và kết quả như mong muốn.

 Thế nên, Problem-solving agent ra đời, là 1 loại Goal-based agent phát triển.
Problem-solving agent giải quyết vấn đề 1 cách hoàn hảo chính xác bằng
cách xác định vấn đề và các giải pháp có thể có, qua đó chọn được giải pháp
tối ưu nhất.

Các bước giải quyết vấn đề được thực hiện bởi Problem-solving agent:

Hình thành mục tiêu (Goal Formulation):

- Đây là bước đầu tiên và đơn giản nhất trong quá trình giải quyết vấn đề. Nó
tổ chức trình tự cần thiết để hình thành một mục tiêu trong số nhiều mục tiêu
cũng như các hành động để đạt được mục tiêu đó.
- Việc xây dựng mục tiêu dựa trên tình hình hiện tại và hiệu suất của agent.

Hình thành vấn đề (Problem Formulation):

- Đây là bước quan trọng nhất của quá trình giải quyết vấn đề, nó quyết định
những hành động cần được thực hiện để đạt được mục tiêu đã xây dựng.
- Có năm thành phần sau tham gia vào việc hình thành vấn đề:
o Trạng thái ban đầu (Initial state): Là trạng thái bắt đầu của agent
hướng tới mục tiêu của nó.
o Hành động (Action): Liệt kê các hành động có thể có của agent.
o Mô hình chuyển tiếp (Transition Model): Mô tả mỗi hành động thực
hiện.
o Kiểm tra mục tiêu (Goal test): Xác định xem trạng thái đã cho có phải
là trạng thái mục tiêu hay không.
o Chi phí đường dẫn (Path cost): Chỉ chi phí cho mỗi đường dẫn để đến
được mục tiêu. Problem-solving agent chọn một hàm chi phí, hàm
này phản ánh hiệu suất của nó.
 Một giải pháp tối ưu có chi phí đường dẫn thấp nhất trong số tất cả các giải
pháp.

Tìm kiếm (Search): Nó xác định tất cả các chuỗi hành động tốt nhất có thể, chứng
minh, tìm ra thuật toán tốt nhất, tối ưu nhất trong số các thuật toán khác nhau để
đạt được mục tiêu.

Thực thi (Execution): Nó thực thi giải pháp tối ưu tốt nhất từ các thuật toán tìm
kiếm để đạt được trạng thái mục tiêu từ trạng thái hiện tại.

 Mô phỏng thuật toán giải quyết vấn đề của Problem-solving agent


Link tham khảo

https://www.tutorialandexample.com/problem-solving-in-artificial-intelligence/

https://mhesham.wordpress.com/tag/problem-solving-agent/

3.2 Các loại vấn đề.


Có rất nhiều loại vấn đề với các dạng bài toán chúng ta có thể gặp trong các trò chơi,
trong cuộc sống, chẳng hạn:

1. Tìm kiếm nước đi tối ưu (mang lại lợi thế) chúng ta có thể tìm thấy ở nhiều game
chẳng hạn như chơi cờ vua, cờ tướng
2. Tìm kiếm phương án sắp xếp thoả mãn yêu cần đề ra (thoả mãn ràng buộc) bằng
việc lập thời khoá biểu về thời gian tự học trong tuần của chúng ta, và ràng buộc ở
đây có thể là các môn học trên trường, thời gian đi học thêm, thời gian ngủ nghỉ,..
3. Tìm đường đi tối ưu (chiều dài, thời gian, giá,..), chúng ta có thể dễ dàng thấy
thông qua việc sử dụng phần mềm google map.
Có rất nhiều loại vấn đề, nhưng tóm gọn lại có 4 loại chính:

1. Đơn định/ nắm toàn bộ không gian trạng thái


2. Đơn định/nắm được bộ phận trong không gian trạng thái
3. Không đơn định/nắm được 1 bộ phận của không gian trạng thái
4. Không đơn định/không nắm được bộ phận của không gian trạng thái
Trong lý thuyết tính toán, một thuật toán không đơn định là một thuật toán có một hoặc
nhiều điểm lựa chọn, mà tại đó có nhiều hướng đi tiếp khác nhau mà không được chỉ rõ
hướng nào sẽ được chọn. (Nguồn: https://vi.wikipedia.org/wiki/Thu%E1%BA%ADt_to
%C3%A1n_kh%C3%B4ng_%C4%91%C6%A1n_%C4%91%E1%BB%8Bnh)

Điều đó đồng nghĩa với việc, thuật toán đơn định là thuật toán có thể xác định được 1
hướng đi cụ thể.

Với vấn đề 1, chúng ta thường thấy nhất đó chính là việc lập thời khoá biểu, vì nó đã có
các ràng buộc như thời gian các môn trên trường cố định, … cộng với việc lập ra các thứ
muốn làm thêm ra thì khá đơn giản, nên không gian trạng thái của vấn đề khá nhỏ, dễ
dàng nắm được toàn bộ không gian trạng thái

Với vấn đề 2, ta có thể dễ dàng thấy ở việc tìm đường đi thông qua gg map, vì dù có
hướng đi cụ thể, thì những đường đi trên gg map lại không phải là toàn bộ không gian
trạng thái để đến được vị trí chúng ta muốn, có thể có nhiều hướng đi khác nữa.

Với vấn đề 3, chúng ta có thể dễ dàng thấy ở việc chơi cờ vua, có rất nhiều nước cờ có
thể đi nhưng chúng ta chỉ nắm được 1 phần các nước cờ phải đi đó thôi, và 1 phần đó là
vì các nước cờ đó hiện tại là có thể mang lại lợi thế cho chúng ta, và chỉ nắm được 1 phần
cũng là vì nếu đi nước cờ đó thì chúng ta chỉ có thể đoán được 2 3 nước cờ tiếp theo của
ván cờ chứ không thể nắm được hết toàn bộ.

Với vấn đề 4, dễ dàng thấy ở việc nếu như lần đầu đi 1 nơi nào đó như Sài Gòn và muốn
tìm 1 địa điểm như landmark 81 mà không dùng gg map hoặc bất cứ thông tin gì thì chắc
chắn sẽ có nhiều hướng đi khác nhau và chúng ta không thể xác định được là mình đã đi
đúng hướng hay chưa.

3.3 PHÁT BIỂU BÀI TOÁN


Để xây dựng các tác tử biết suy luận, ta cần sử dụng lý thuyết logic, xác suất, và tính hữu
dụng. Các kỹ thuật tìm kiếm được nghiên cứu trước hết vì:
• Tìm kiếm là vấn đề quan trọng trong TTNT:
– Tìm chuỗi hành động nhằm tối đa kết quả trong tương lai (lập kế hoạch)
– Tìm kiếm trong CSTT để tìm chỗi các hành động có thể thực hiện trong tương lai (suy
luận logic, xác suất)
– Tìm các mô hình phù hợp với các quan sát (trong học máy)
• Tìm kiếm là 1 trong những thành công của các nghiên cứu về TTNT giai đoạn đầu
VD: Bài toán tìm kiếm: Lập kế hoạch đường đi
Kết quả: đi từ Arad đến Bucharest trong thời gian ngắn nhất.

Biểu diễn bài toán trong không gian tìm kiếm:


Một khi chúng ta muốn giải quyết một vấn đề nào đó bằng tìm kiếm, đầu tiên ta phải xác
định không gian tìm kiếm. Không gian tìm kiếm bao gồm tất cả các đối tượng mà ta cần
quan tâm tìm kiếm. Nó có thể là không gian liên tục, chẳng hạn không gian các véctơ
thực n chiều; nó cũng có thể là không gian các đối tượng rời rạc.
Trong mục này ta sẽ xét việc biểu diễn một vấn đề trong không gian trạng thái sao cho
việc giải quyết vấn đề được quy về việc tìm kiếm trong không gian trạng thái.
Muốn biểu diễn một vấn đề trong không gian trạng thái, ta cần xác định các yếu tố sau:
 Trạng thái đầu s0
 Tập trạng thái đích ĐICH
 Tìm dãy trạng thái s0,s1,…,sn sao cho sn ϵ ĐICH và ∀ i: si →si+1 nhờ áp dụng
toán tử biến đổi
 Giá đường đi: (cộng gộp)
VD: tổng khoảng cách, số lượng hành động đã thực hiện, …
 Để biểu diễn phép biến đổi trạng thái, có 2 cách viết:
1. Cách viết dùng luật sản xuất,
VD: VT → VP
Bài toán Tháp Hà Nội
2. Cách viết dùng ký hiệu hàm
VD: B = f(A)
Bài toán n2-1 số

Tìm kiếm trên cây


Cây là một lớp con của đồ thị có hướng mặc dù đường kết nối giữa các nút trong ây
không có mũi tên định hướng. Các kết nối trong cây không tạo thành vòng và mỗi út
(ngoại trừ gốc) có một cha.
Khi được yêu cầu tìm kiếm trên một đồ thị chúng ta có thể chuyển đổi sang tìm kiếm
tương đương trên cây thông qua 2 bước:
- Chuyển kết nối vô hướng thành hai kết nối có hướng
- Tránh tạo thành vòng, hay tốt hơn là không được thăm một nút hai lần.
Chúng ta xét ví dụ chuyển đổi một đồ thị thành một cây. Giả sử ở đây, S là khởi đầu của
quá trình tìm kiếm và từ đó chúng ta cố gắng để tìm ra một ường đến G thì chúng ta sẽ đi
xuyên suốt đồ thị và tạo ra những kết nối từ mỗi nút đến mỗi nút được kết nối sao cho
không tạo thành vòng và ngừng bất cứ khi nào chúng ta tìm được G. Lưu ý rằng mỗi cây
như vậy có một nút lá cho mỗi đường hông có vòng lặp trên đồ thị khởi đầu từ S.
Tuy nhiên, ta cần lưu ý rằng, mặc dù chúng ta tránh được những vòng lặp nhưng một vài
nút (được minh hoạ có cùng màu trong hình) lại được gặp lại hai lần trên cây. Nói rõ hơn,
những nút trùng nhau này nằm ở những đường không tạo thành vòng lặp khác nhau. Điều
này có nghĩa là một tiến trình tìm kiếm hoàn chỉnh trên cây này có thể sẽ có một số công
đoạn thừa.
Đánh giá hiệu suất của thuật toán tìm kiếm:
Tính đầy đủ: Thuật toán có đảm bảo tìm ra giải pháp khi có một giải pháp không?
Tính tối ưu: Liệu chiến lược có tìm ra giải pháp tối ưu không?
Độ phức tạp về thời gian: Mất bao lâu để tìm ra giải pháp?
Độ phức tạp về không gian: Cần bao nhiêu bộ nhớ để thực hiện tìm kiếm?
Tài liệu tham khảo:
https://luwxmta.wordpress.com/2014/03/02/ai-chuong-i-cac-chien-luoc-tim-kiem-mu/
https://users.soict.hust.edu.vn/huonglt/AI/C3_giai%20quyet%20van%20de.pdf
Sách: S. Russell and P. Norvig, Artificial Intelligence: A Modern Approach Prentice
Hall, 2003, Second Edition.

3.4.1 Thuật toán BFS


Trong trí tuệ nhân tạo hay lý thuyết đồ thị, thuật toán tìm kiếm theo chiều rộng
(BFS) là một thuật toán phát triển các nút chưa xét theo chiều rộng và các nút được
xét theo thứ tự độ sâu tăng dần .
Ứng dụng:
 Tìm tất cả các đỉnh trong một thành phần liên thông:
Một đồ thị G được gọi là liên thông nếu có dây chuyền giữa mọi cặp đỉnh phân biệt
đồ thị G.

Thành phần liên thông của đồ thị G là các đồ thị con liên thông tối đại của G.

Đồ thị G được gọi là đồ thị liên thông nếu G chỉ có một thành phần liên thông.

Đồ thị có hướng gọi là liên thông mạnh nếu có đường đi từ a tới b và từ b tới a với


mọi cặp đỉnh a và b của đồ thị.

 Tìm đường đi ngắn nhất giữa hai đỉnh u và v:

Trong trí tuệ nhân tạo hay lý thuyết đồ thị, thuật toán tìm kiếm theo chiều rộng
(BFS) là một thuật toán phát triển các nút chưa xét theo chiều rộng và các nút được
xét theo thứ tự độ sâu tăng dần .BFS phù hợp với các bài toán tìm đường từ gốc
đến 1 điểm đích cho trước và thuật toán sẽ tốt nhất khi ở trong đồ thị không có
trọng số. khi đó, thuật toán sẽ luôn tìm được đường tới đích ngắn nhất có thể.

Ví dụ: Ứng dụng vào game Rắn săn mồi


Áp dụng AI trong game này để người chơi có thể đấu với máy. Như vậy bài toán
đặt ra là phải làm sao để con rắn mà máy điều khiển có thể tìm được đường ngắn
nhất đến thức ăn mà không lao đầu vào tường hoặc cắn nhầm thân của nó.
Lựa chọn thuật toán BFS vì
1. Không gian dữ liệu nhỏ. Ở đây chính là kích thước của bản đồ, với loại game
này thì chỉ giới hạn trong khoảng 50×50 ô là đủ.
2. Cần tìm ra đường đi ngắn nhất.

*Mô tả thuật toán: (làm trực tiếp)

Đây là thuật toán tìm các đỉnh bằng cách duyệt theo chiều sâu.

– Xuất phát từ 1 đỉnh và đi mãi cho đến khi không thể đi tiếp, sau đó đi về lại đỉnh
đầu.
Trong quá trình quay lại:

+ nếu gặp đường đi khác thì đi cho đến khi không đi tiếp được nữa

+ nếu không tìm ra đường đi nào khác thì ngừng việc tìm kiếm.
– Trong quá trình đi đến đỉnh khác, thuật toán sẽ lưu lại đỉnh cha vừa đi qua để khi
đi ngược lại từ đỉnh Kết thúc đến đỉnh Xuất phát, ta có thể xem được đường đi từ
đỉnh Kết thúc đến đỉnh Bắt Đầu

– Sở dĩ thuật toán này tìm được đường đi là nhờ vào cơ chế tô màu và lưu đỉnh
cha. Quá trình tô màu khiến 1 đỉnh không thể xét 2 lần trở lên và có thể xem được
đường đi từ đỉnh Kết Thúc đến đỉnh Xuất phát dựa vào việc lưu đỉnh cha.

Thuật toán sử dụng một cấu trúc dữ liệu hàng đợi để lưu trữ thông tin trung gian
thu được trong quá trình tìm kiếm:

B1. Chèn đỉnh gốc vào hàng đợi (đang hướng tới)

B2. Lấy ra đỉnh đầu tiên trong hàng đợi và quan sát nó

Nếu đỉnh này chính là đỉnh đích, dừng quá trình tìm kiếm và trả về kết quả.

Nếu không phải thì chèn tất cả các đỉnh kề với đỉnh vừa thăm nhưng chưa được
quan sát trước đó vào hàng đợi.

B3. Nếu hàng đợi là rỗng, thì tất cả các đỉnh có thể đến được đều đã được quan sát
– dừng việc tìm kiếm và trả về "không thấy".

B4. Nếu hàng đợi không rỗng thì quay về bước 2.

Code minh họa thuật toán BFS:


Ta duyệt đồ thị sau:

Ta nhập số đỉnh và đồ thị dưới dạng ma trận kề ta được kết quả là thứ tự duyệt như
sau:
Duyệt thử thuật toán bằng tay ta có bảng kết quả:
Nguồn:

https://bloglaptrinh2016.wordpress.com/2016/06/09/bfs-thuat-toan-tim-kiem-theo-
chieu-rong/

https://www.youtube.com/watch?v=IGrIwpAX9Qk&t=251s

https://expressmagazine.net/development/4008/ly-thuyet-thuat-toan-tim-kiem-
theo-chieu-rong-bfs-bang-cc-va-java

https://yinyangit.wordpress.com/2012/05/26/gamedev-ap-dung-ai-trong-game-ran-
san-moi-part1/

3.4.2 Thuật toán tìm kiếm theo chi phí thống nhất (Uniform-cost search).
Trong các ngành khoa học máy tính hay trí tuệ nhân tao, thuật toán tìm kiếm với
chi phí cực tiểu (UCS) là một cách duyệt cây dùng cho việc duyệt hay tìm kiếm
trên cây có trọng lượng chi phí. Thuật toán sẽ phát triển các nút chưa xét có chi phí
thấp nhất – các nút được xét theo thứ tự chi phí tăng dần.

MÔ TẢ THUẬT TOÁN (làm trực tiếp)

Tìm các node gần node start có chi phi nhỏ nhất rồi mở rộng cho đến khi tìm được
đích node goal.

Thuật toán UCS dùng một hàng đợi có ưu tiên để lưu trữ và duyệt các trạng thái
trên đường đi. Bên cạnh đó dùng một danh sách lưu trữ lại các trạng thái đã xét.

THUẬT TOÁN:

Khởi tạo: PQ rỗng, CLOSE rỗng.

Đưa trạng thái ban đầu START vào PQ, độ ưu tiên g(START) = 0

Lặp đến khi PQ rỗng

Lấy một trạng thái n (có g thấp nhất) ra khỏi PQ. Đưa n vào CLOSE.

Nếu n là trạng thái đích GOAL thì “đã tìm thấy”. Dừng thuật toán.

Nếu không, với mỗi trạng thái con n’ chưa xét (n’ không thuộc CLOSE) của n:

Tính độ ưu tiên: g(n’) = g(n) + cost(n, n’)

đưa (n’, g(n’)) vào PQ

PQ: hàng đợi ưu tiên

g(n) : tổng chi phí đường đi ngắn nhất hiện có


ỨNG DỤNG:

Bài toán Romania

Tìm đường đi ngắn nhất với chi phí là khoảng cách giữa hai địa điểm
8 puzzle:

Mỗi một lần dịch chuyển ô rỗng có chi phí là một

Source:

Nguồn code:

https://www.youtube.com/watch?v=QxZsIVBgMdA&t=1s

https://bloglaptrinh2016.wordpress.com/2016/06/09/ucs-thuat-toan-tim-kiem-voi-chi-phi-cuc-tieu/

hình ảnh: https://vi.wikipedia.org/wiki/T%C3%ACm_ki%E1%BA%BFm_chi_ph%C3%AD_%C4%91%E1%BB


%81u

thuật toán:

https://thuvienhuongdan.com/thuat-toan-tim-kiem-chi-phi-dong-nhat-uniform-cost-search-ucs-
894.html

ứng dụng vào bài toán 8 puzzle


https://www.youtube.com/watch?v=PisHmi_SyNg

You might also like