Tải bản đầy đủ (.pptx) (236 trang)

Bai giang Tri Tue Nhan Tao

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 (9.18 MB, 236 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 1


<b>TRÍ TUỆ NHÂN TẠO</b>



<b>Nguyễn Ngọc Hiếu</b>


<b>Khoa Công nghệ Thông tin</b>
<b>Trường Đại học Vinh</b>


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 2


<b>NỘI DUNG</b>



 <sub>TỔNG QUAN VỀ KHOA HỌC TTNT</sub>


 <sub>CÁC PHƯƠNG PHÁP BIỂU DIỄN VÀ GIẢI </sub>
QUYẾT VẤN ĐỀ


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 3


<b>TÀI LIỆU THAM KHẢO</b>



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. Lập trình lơgic trong Prolog (2004)


Phan Huy Khánh



3. Artificial Intelligence: A Modern Approach (2nd edition,
2002)


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 4


<b>ĐÁNH GIÁ</b>



 <sub>Tham dự bài giảng: 10%</sub>
 <sub>Thi giữa kỳ: </sub> <sub>20%</sub>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 5


<b>KHỐI LƯỢNG & CẤU TRÚC HỌC PHẦN</b>


 <sub>Số đơn vị học trình: 3</sub>
 <sub>Lý thuyết: 35 tiết</sub>


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 6


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 7


<b>NỘI DUNG</b>



<b><sub>CÁC KHÁI NIỆM CƠ BẢN</sub></b>


<sub>CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNT</sub>


<sub>LỊCH SỬ PHÁT TRIỂN CỦA KHOA HỌC TTNT</sub>

<sub>CÁC THÀNH TỰU CỦA KHOA HỌC TTNT</sub>



</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 8

CÁC KHÁI NIỆM CƠ BẢN:



<b>TTNT là gì?</b>



<sub>Trí tuệ nhân tạo là khoa học liên quan đến việc làm </sub>


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 9


<sub>Intelligence: </sub><sub>trí thơng minh </sub>


“ability to learn, understand and think” (Oxford
dictionary)


<sub>Artificial Intelligence (AI):</sub> <sub>trí thơng minh nhân tạo </sub>


“attempts to understand intelligent entities”
“strives to build intelligent entities”


(Stuart Russell & Peter Norvig)


CÁC KHÁI NIỆM CƠ BẢN:



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 10

CÁC KHÁI NIỆM CƠ BẢN:



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 11

CÁC KHÁI NIỆM CƠ BẢN:



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 12



Thinking humanly


(Suy nghĩ như con người)


Thinking rationally
(Suy nghĩ hợp lý)
Acting humanly


(Hành động như con người) (Hành động hợp lý)Acting rationally


CÁC KHÁI NIỆM CƠ BẢN:



</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 13

CÁC KHÁI NIỆM CƠ BẢN:



Hành động như con người:Phép thử Turing

<sub>Alan Turing (1912-1954)</sub>


<sub>“Computing Machinery and Intelligence” (1950)</sub>


<b>Phép thử</b>


Người kiểm tra


Người


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 14


 <sub>Chỉ ra các lĩnh vực cần nghiên cứu trong AI: </sub>



 <sub>Xử lý ngôn ngữ tự nhiên: để giao tiếp</sub>


 <sub>Biểu diễn tri thức: để lưu trữ và phục hồi các </sub>


thông tin được cung cấp trước/trong quá trình
thẩm vấn


 <sub>Suy diễn tự động: để sử dụng các thông tin đã </sub>


được lưu trữ trả lời các câu hỏi và đưa ra các kết
luận mới


 <sub>Học máy: thích nghi với các tình huống mới, phát </sub>


hiện và suy ra các mẫu


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 15

CÁC KHÁI NIỆM CƠ BẢN:



Suy nghĩ như con người: Mô hình nhận thức


 <sub>Con người suy nghĩ ntn ? </sub>


 <sub>Nhờ tâm lý học, khoa học nhận thức. </sub>


 <sub>Người thuộc trường phái này, yêu cầu: </sub>


 <sub>Chương trình chẳng những giải đúng</sub>



 <sub>Còn so sánh từng bước giải với sự giải của 1 </sub>


người.


 <sub>VD: General Problem Solver (GPS), Newell & </sub>


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 16

CÁC KHÁI NIỆM CƠ BẢN:



Suy nghĩ có lý: Luật của suy nghĩ


 <sub>Aristole: ~420 BC.</sub>


 <sub>Tiến trình suy nghĩ đúng là gì? </sub>


 <sub>Mở ra nhánh: quá trình suy luận. </sub>


 <sub>VD: “Socrates is a man, all men are mortal; therefore </sub>


Socrates is mortal”


 <sub>Theo sau Aristole -> 20th: </sub>


 <sub>Logic hình thức (formal logic) ra đời.</sub>


 <sub>Hình thức hố về mặt ký hiệu và quá trình suy diễn với </sub>


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 17

CÁC KHÁI NIỆM CƠ BẢN:




Hành động có lý


 <sub>Hành động có lý ~ hành động để đạt được mục tiêu. </sub>


 <sub>Ưu thế: </sub>


 <sub>Tổng quát hơn luật suy nghĩ: Xử lý thông tin không chắc </sub>


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 18

CÁC KHÁI NIỆM CƠ BẢN:



<b>Các phương pháp và kỹ thuật</b>



 <sub>Các phương pháp biểu diễn tri thức và kỹ thuật </sub>
xử lý tri thức


 <sub>Các phương pháp giải quyết vấn đề</sub>
 <sub>Các phương pháp Heuristic</sub>


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 19

CÁC KHÁI NIỆM CƠ BẢN:



<b>Các thành phần trong hệ thống</b>



 <sub>Hai thành phần cơ bản:</sub>


 <sub>Các phương pháp biểu diễn vấn đề, các phương pháp </sub>


biểu diễn tri thức



 <sub>Các phương pháp tìm kiếm trong khơng gian bài tốn, </sub>


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 20


<b>NỘI DUNG</b>



<sub>CÁC KHÁI NIỆM CƠ BẢN</sub>


<b><sub>CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNT</sub></b>


<sub>LỊCH SỬ PHÁT TRIỂN CỦA KHOA HỌC TTNT</sub>

<sub>CÁC THÀNH TỰU CỦA KHOA HỌC TTNT</sub>


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 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


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


<b>TTNT</b>


<b>TTNT</b>


<b>Tâm</b>


<b> lý h<sub>ọc</sub></b>



<b>Ngôn ngữ học</b>


Khoa học
<b>máy tính</b>


<b>Triết</b>
<b> học</b>


<b>Tốn học</b>


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 tốn


Làm cho TTNT trở
thành hiện thực
Nghiên cứu ý nghĩa và


</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 22


<b>NỘI DUNG</b>



<sub>CÁC KHÁI NIỆM CƠ BẢN</sub>


<sub>CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNT</sub>


<b><sub>LỊCH SỬ PHÁT TRIỂN CỦA KHOA HỌC TTNT</sub></b>



</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 23

LỊCH SỬ PHÁT TRIỂN CỦA



KHOA HỌC TTNT



 <sub>Bắt đầu của AI (1943 - 1956): </sub>


 <sub>1943: McCulloch & Pitts: Mơ hình chuyển mạch logic.</sub>


 <sub>1950: Bài báo “Computing Machinery and Intelligence” </sub>


của Turing.


</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 24


 <sub>“birth day”: Hội nghị ở Dartmouth College mùa hè 1956, do </sub>


Minsky và McCarthy tổ chức, và ở đây McCarthy đề xuất
tên gọi “artificial intelligence”. Có Simon và Newell trong
những người tham dự.


John McCarthy Marvin Minsky


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 25


 <sub>Trơng mong nhất (1952 - 1969): </sub>


 <sub>Một số chương trình TTNT thành cơng:</sub>


 <sub>Samuel’s checkers </sub>



 <sub>Newell & Simon’s Logic Theorist</sub>


 <sub>Gelernter’s Geometry Theorem Prover.</sub>


 <sub>Thuật giải của Robinson cho lập luận logic.</sub>


</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 26


 <sub>Thực tế (1966 − 1974): </sub>


 <sub>Phát hiện được các khó khăn về độ phức tạp tính toán.</sub>
 <sub>Quyến sách của Minsky & Papert năm 1969.</sub>


 <sub>Hệ thống dựa trên tri thức (1969 − 1979): </sub>


 <sub>1969: DENDRAL by Buchanan et al.</sub>


Đưa ra cấu trúc phân tử từ thông tin của quang phổ kế


 <sub>1976: MYCIN by Shortliffle.</sub>


Chuẩn đoán nhiểm trùng máu


 <sub>1979: PROSPECTOR by Duda et al.</sub>


Chuẩn đốn vị trí khoan dầu


</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 27



 <sub>TTNT trở thành ngành công nghiệp (1980 - </sub>
1988):


 <sub>Bùng nổ về các hệ chuyên gia.</sub>


 <sub>1981: Đề án máy tính thế hệ thứ năm của Nhật </sub>


Bản.


 <sub>Sự trở lại của các mạng nơron và lý thuyết </sub>
TTNT (1986 - nay)


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 28

LỊCH SỬ PHÁT TRIỂN CỦA



</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 29


<b>NỘI DUNG</b>



<sub>CÁC KHÁI NIỆM CƠ BẢN</sub>


<sub>CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNT</sub>


<sub>LỊCH SỬ PHÁT TRIỂN CỦA KHOA HỌC TTNT</sub>


<b><sub>CÁC THÀNH TỰU CỦA KHOA HỌC TTNT</sub></b>


</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 30

CÁC THÀNH TỰU CỦA




</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 31

CÁC THÀNH TỰU CỦA



</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 32

CÁC THÀNH TỰU CỦA



</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 33


<b>SONY AIBO</b>


</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 34


Đi bộ


Quay


Lên xuống
cầu thang


<b>Honda Humanoid Robot</b>
<b>& Asimo</b>


</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 35

CÁC THÀNH TỰU CỦA



</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 36

CÁC THÀNH TỰU CỦA



</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 37



<b>NỘI DUNG</b>



<sub>CÁC KHÁI NIỆM CƠ BẢN</sub>


<sub>CÁC TIỀN ĐỀ CƠ BẢN CỦA TTNT</sub>


<sub>LỊCH SỬ PHÁT TRIỂN CỦA KHOA HỌC TTNT</sub>

<sub>CÁC THÀNH TỰU CỦA KHOA HỌC TTNT</sub>


</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38></div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39></div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40></div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41></div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42></div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43></div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44></div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45></div>
<span class='text_page_counter'>(46)</span><div class='page_container' data-page=46></div>
<span class='text_page_counter'>(47)</span><div class='page_container' data-page=47></div>
<span class='text_page_counter'>(48)</span><div class='page_container' data-page=48></div>
<span class='text_page_counter'>(49)</span><div class='page_container' data-page=49></div>
<span class='text_page_counter'>(50)</span><div class='page_container' data-page=50></div>
<span class='text_page_counter'>(51)</span><div class='page_container' data-page=51></div>
<span class='text_page_counter'>(52)</span><div class='page_container' data-page=52></div>
<span class='text_page_counter'>(53)</span><div class='page_container' data-page=53></div>
<span class='text_page_counter'>(54)</span><div class='page_container' data-page=54>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 54


<b>Một số chủ đề nghiên cứu</b>



 <sub>Giải thuật di truyền và ứng dụng</sub>


 <sub>Mạng Nơron nhân tạo và ứng dụng</sub>


 <sub>Công nghệ tác tử và ứng dụng</sub>


 <sub>KDD và ứng dụng</sub>


 <sub>Phân lớp - học có thầy</sub>


 <sub>Lý thuyết tập thô</sub>
 <sub>Cây quyết định</sub>
 <sub>...</sub>


 <sub>Phân cụm - học khơng có thầy</sub>
 <sub>Luật kết hợp</sub>



 <sub>....</sub>


</div>
<span class='text_page_counter'>(55)</span><div class='page_container' data-page=55>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 55


</div>
<span class='text_page_counter'>(56)</span><div class='page_container' data-page=56>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 56


<b>NỘI DUNG</b>



 <b><sub>BIỂU DIỄN VÀ GIẢI QUYẾT VẤN ĐỀ </sub></b>


<b>TRONG KHOA HỌC TTNT</b>


</div>
<span class='text_page_counter'>(57)</span><div class='page_container' data-page=57>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 57

BIỂU DIỄN VÀ GIẢI QUYẾT VẤN ĐỀ


TRONG KHOA HỌC TTNT



 <sub>Giải quyết vấn đề và khoa học TTNT</sub>
 <sub>Giải quyết vấn đề của con người</sub>


 <sub>Phân loại vấn đề & Các đặc trưng cơ bản của vấn đề</sub>
 <sub>Các thành phần cơ bản trong hệ thống giải quyết </sub>


</div>
<span class='text_page_counter'>(58)</span><div class='page_container' data-page=58>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 58


<b>Giải quyết vấn đề và khoa học TTNT</b>



 <sub>Hoạt động trí tuệ: vận dụng các kỹ thuật giải quyết </sub>
vấn đề


 <sub>Giải quyết vấn đề: tìm kiếm trong khơng gian các </sub>


lời giải bộ phận có thể có được.


 <sub>Phương pháp biểu diễn vấn đề => Phương pháp giải </sub>
quyết vấn đề.


 <sub>VD: Biểu diễn bằng logic vị từ => Phương pháp hợp giải</sub>


 <sub>VD: Biểu diễn bằng mạng ngữ nghĩa => Các thủ tục tìm </sub>


</div>
<span class='text_page_counter'>(59)</span><div class='page_container' data-page=59>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 59


 <sub>Giải quyết vấn đề: duyệt-tìm kiếm trong khơng gian </sub>
lời giải => bùng nổ tổ hợp => các thủ tục tìm kiếm
Heuristic


 <sub>Phân chia các hệ thống TTNT:</sub>


 <sub>Các hệ tìm kiếm thơng tin, các hệ hỏi đáp thông minh</sub>


 <sub>Các hệ suy diễn – tính tốn: dựa vào các mơ hình tốn </sub>


học và tri thức chuyên gia


 <sub>Các hệ chuyên gia</sub>


</div>
<span class='text_page_counter'>(60)</span><div class='page_container' data-page=60>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 60


Phát biểu bài toán-Xác định ph ơng phỏp bd bi toỏn


Sản sinh không gian bài toán



Bài toán có thể giải nhờ thuật toán đa thức


Xỏc nh li
giải nhờ các
ngơn ngữ lập


tr×nh


Xác định các tri thức đặc biệt để rút gọn khơng gian TK


X©y dùng các ph ơng pháp biểu diễn tri thức và suy diễn


Lựa chọn ngôn ngữ, công cụ phù hợp


Cỏc h gii quyt vn da vo tri thc
Bi toỏn (Vn )


Đ
S
Công nghệ
lập trình
truyền
thống
Công nghệ
xử lý
tri thức


Sơ đồ: Những khía cạnh khác nhau của TTNT



</div>
<span class='text_page_counter'>(61)</span><div class='page_container' data-page=61>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 61


<b>Giải quyết vấn đề của con người</b>



 <sub> Cách giải quyết vấn đề của con người là mơ hình </sub>
thực tiễn quan trọng để các chuyên gia TTNT tìm
cách mơ phỏng lại trên máy tính q trình giải quyết
bài tốn.


 <i><sub>Khoa học về nhận thức:</sub></i><sub> Nghiên cứu quá trình tổ chức, </sub>


lưu trữ, truy nhập, xử lý và thu nạp tri thức trong bộ não
người.


 <i><sub>Tâm lý học nhận thức</sub></i> <i><sub>và khoa học điều khiển:</sub></i><sub> Tạo ra </sub>


</div>
<span class='text_page_counter'>(62)</span><div class='page_container' data-page=62>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 62


 <sub>Quá trình xử lý thơng tin của con người</sub>


<b>Giải quyết vấn ca con ngi</b>



Hệ thống thụ cảm


Cơ quan
thụ cảm


B nh
m



Hệ thống nhận thức


Bộ nhớ dài hạn
Bộ nhớ lµm viƯc


Bé xư lý nhËn thøc


Hệ thống hành động


Cơ quan
hành
động
Bộ nhớ
đệm
Kích
thích
Trả
lời


</div>
<span class='text_page_counter'>(63)</span><div class='page_container' data-page=63>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 63


 <sub>Giải quyết vấn đề của con người là một trường hợp </sub>
riêng của q trình xử lý thơng tin trong bộ não. Đó
là việc tìm cách đi từ tình huống ban đầu nào đó đến
đích. Giải quyết vấn đề là một hoạt động đặc biệt
của hệ thần kinh cần tới quá trình suy nghĩ, tìm
kiếm trong khơng gian lời giải bộ phận để đi đến lời
giải cuối cùng.


 <sub>Tuy nhiên, cần lưu ý rằng không phải mọi hoạt động </sub>


xử lý thông tin đều là giải quyết vấn đề.


</div>
<span class='text_page_counter'>(64)</span><div class='page_container' data-page=64>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 64


Các chiến lược giải quyết vấn đề:


 <sub>Ước lượng mức độ phức tạp của vấn đề đặt ra: </sub>


 <sub>Nếu đơn giản, giải quyết vấn đề nhờ vào một thuật toán </sub>


tiền định nào đó với các thao tác cơ sở.


 <sub>Nếu phức tạp, các cơ quan não tìm cách hiểu chi tiết nội </sub>


dung của vấn đề để mã hố, tìm phương pháp phù hợp.


 <sub>Nới lỏng một vài ràng buộc của bài toán.</sub>


</div>
<span class='text_page_counter'>(65)</span><div class='page_container' data-page=65>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 65


Các chiến lược giải quyết vấn đề:


 <sub>Phương pháp thử - sai: Xuất phát từ tình huống ban đầu, </sub>


người ta đưa ra các tình huống mới, sau đó so sánh với các
ràng buộc để tìm ra các lời giải hợp lý.


 <sub>Phương pháp chia bài toán thành các bài toán con: Từ bài </sub>


toán phức tạp, con người chia thành các bài tốn nhỏ, ít


phức tạp cho đến khi gặp các bài toán sơ cấp, giải quyết
được ngay.


 <sub>Tổng quát hố bài tốn : Chuyển các thơng tin bên ngồi </sub>


thành các kí hiệu làm cho bài tốn dễ giải hơn. Q trình
này tạo ra một mơ hình trí tuệ của bài tốn, mơ hình này
thường được gọi khơng gian bài tốn.


</div>
<span class='text_page_counter'>(66)</span><div class='page_container' data-page=66>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 66


<i>Khơng gian bài toán bao gồm: </i>


 <sub> Các dạng mẫu ký hiệu, mỗi dạng biểu diễn một </sub>
trạng thái hay một tình huống bài toán.


 <sub> Các mối liên kết giữa các dạng mẫu ký hiệu, mỗi </sub>
mối liên kết tương ứng với các phép biến đổi từ
dạng này sang dạng khác.


</div>
<span class='text_page_counter'>(67)</span><div class='page_container' data-page=67>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 67


<b>Phân loại vấn đề & Các đặc trưng cơ </b>


<b>bản của vấn đề</b>



 <i><b><sub>Bài toán 1: </sub></b></i><sub> Bài tốn trị chơi n</sub>2-1 số (n<sub></sub>N, n>2).


1 2 3 4


5 6 7 8



9 10 11 12


</div>
<span class='text_page_counter'>(68)</span><div class='page_container' data-page=68>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 68


 <i><b><sub>Bài tốn 2: </sub></b></i><sub>Bài tốn Tháp Hà nội</sub>


<b>Phân loại vấn đề & Các đặc trưng cơ </b>


<b>bản của vấn đề</b>



3
2


1


3
2


1


</div>
<span class='text_page_counter'>(69)</span><div class='page_container' data-page=69>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 69


Phân loại vấn đề:


 <i><sub>Vấn đề (bài toán) phát biểu chỉnh (well-formed problems):</sub></i>


Là các bài tốn có thể biết được hình trạng đầu, hình trạng
đích và có thể quyết định khi nào vấn đề được coi là giải
quyết xong. Các bài toán 1 - 2 là những vấn đề được phát
biểu chỉnh.



 <i><sub>Vấn đề (bài tốn) phát biểu khơng chỉnh (ill-formed </sub></i>


<i>problems):</i> Là các vấn đề được phát biểu chưa đầy đủ, thiếu
dữ kiện. Các bài toán chẩn đoán và điều trị bệnh, bài toán
xác định chất lượng sản phẩm là các bài toán phát biểu
không chỉnh.


</div>
<span class='text_page_counter'>(70)</span><div class='page_container' data-page=70>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 70


 <sub>Các đặc trưng cơ bản của vấn đề</sub>


 <sub>Bài tốn có thể phân tích thành các bài tốn dễ giải hơn khơng?</sub>
 <sub>Các bước giải của bài tốn có thể bỏ qua hay huỷ bỏ hay khơng?</sub>
 <sub>Khơng gian bài tốn có thể đốn trước hay khơng?</sub>


 <sub>Có tiêu chuẩn để xác định lời giải nào đó là tốt đối với bài tốn </sub>


khơng?


 <sub>Có cần tri thức để giải quyết bài tốn hay điều khiển q trình tìm </sub>


kiếm khơng?


 <sub>Cơ sở tri thức để giải quyết bài tốn có nhất qn với nội dung </sub>


khơng?


 <sub>Có cần tương tác người máy trong q trình giải quyết khơng?</sub>



</div>
<span class='text_page_counter'>(71)</span><div class='page_container' data-page=71>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 71


<b>Các thành phần cơ bản trong hệ thống </b>


<b>giải quyết vấn đề</b>



 <sub>Giải quyết vấn đề: Biểu diễn bài toán và tìm kiếm </sub>
lời giải trong khơng gian bài tốn


 <sub>H thng gii quyt vn :</sub>


Giải thuật
tìm kiếm


Chiến l ợc
điều khiển


Kỹ thuật
Heuristic


Kỹ thuật
suy diƠn


Hệ thống giải quyết vấn đề


Bµi toán


Dữ liệu + Tri thức


Cơ sở
dữ liệu



</div>
<span class='text_page_counter'>(72)</span><div class='page_container' data-page=72>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 72


<b>NỘI DUNG</b>



 <sub>BIỂU DIỄN VÀ GIẢI QUYẾT VẤN ĐỀ TRONG </sub>
KHOA HỌC TTNT


 <b><sub>CÁC PHƯƠNG PHÁP BIỂU DIỄN VẤN ĐỀ</sub></b>


</div>
<span class='text_page_counter'>(73)</span><div class='page_container' data-page=73>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 73

CÁC PHƯƠNG PHÁP BIỂU DIỄN



VẤN ĐỀ



 <sub>Phương pháp biểu diễn nhờ không gian trạng thái</sub>
 <sub>Phương pháp qui bài toán về các bài toán con</sub>


 <sub>Phương pháp biểu diễn vấn đề nhờ logic hình thức</sub>
 <sub>Lựa chọn phương pháp biểu diễn thích hợp</sub>


 <sub>Biểu diễn vấn đề trong máy tính</sub>


</div>
<span class='text_page_counter'>(74)</span><div class='page_container' data-page=74>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 74


<b>Phương pháp biểu diễn nhờ KGTT</b>



 <i><b><sub>Trạng thái</sub></b></i> <i><b><sub>(State) </sub></b></i><sub>là hình trạng của bài tốn </sub>


 <i><b><sub>Tốn tử (Operator)</sub></b></i><sub> là các phép biến đổi từ trạng </sub>



thái này sang trạng thái khác


 <sub>Hình trạng đầu, hình trạng cuối của bài toán được </sub>
gọi là <i><b>trạng thái đầu, trạng thái cuối</b></i>


 <sub>Tập tất cả các trạng thái được sinh ra do xuất phát từ </sub>
trạng thái đầu và áp dụng các toán tử được gọi là


</div>
<span class='text_page_counter'>(75)</span><div class='page_container' data-page=75>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 75


 <sub>Một cách biểu diễn trực quan đối với khơng gian </sub>


trạng thái và các tốn tử là sử dụng đồ thị, trong đó,
các đỉnh của đồ thị t ơng ứng với các trạng thái còn
các cung t ơng ứng với các toán tử


 <sub>VD: Bài tốn trị chơi n</sub>2-1 số (n<sub></sub>N, n>2)


 <sub>n = 4 </sub> 1 2 3 4


5 6 7 8


9 10 11 12


13 14 15  


</div>
<span class='text_page_counter'>(76)</span><div class='page_container' data-page=76>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 76


</div>
<span class='text_page_counter'>(77)</span><div class='page_container' data-page=77>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 77



 <sub>Mỗi trạng thái là một sắp xếp nào đó của các con số từ 1 đến 15 sao </sub>


cho khơng có hai ơ nào có cùng giá trị


 <sub>Hình trạng đầu và cuối tương ứng với các trạng thái đầu và cuối</sub>


 <sub>Không gian trạng thái đạt được từ trạng thái đầu bao gồm tất cả các </sub>


hình trạng được sinh ra nhờ áp dụng những phép dịch chuyển chấp
nhận được của ô trống


 <sub>Đối với bài toán này số trạng thái chấp nhận được xấp xỉ (</sub><sub>1/2). 16 ! </sub><sub></sub>


10.5.1012


 <sub>Các toán tử chính là các phép biến đổi từ trạng thái này sang trạng </sub>


thái khác bao gồm: dịch ô trống sang phải, sang trái, lên trên, xuống
dưới. Đối với một số trạng thái có một số tốn tử khơng áp dụng
được.


 <sub>Lời giải của bài toán có thể nhận được nhờ sử dụng quá trình tìm </sub>


kiếm sau: áp dụng các toán tử vào trạng thái đầu để nhận được những
trạng thái mới, sau đó áp dụng các toán tử vào các trạng thái mới này
và cứ như vậy cho đến khi đạt đến trạng thái đích.


</div>
<span class='text_page_counter'>(78)</span><div class='page_container' data-page=78>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 78



<b>Phương pháp qui bài tốn về các bài </b>


<b>toán con</b>



 <sub>Tách bài toán thành các bài toán con sao cho lời giải </sub>
của tập các bài toán con cho phép xác định lời giải
của bài toán ban đầu.


 <sub>Cách tiếp cận này dẫn đến phương pháp biểu diễn </sub>
vấn đề bằng đồ thị Và /Hoặc.


A


Hoặc <sub>B</sub> C


E F


G


</div>
<span class='text_page_counter'>(79)</span><div class='page_container' data-page=79>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 79


<b>Phương pháp qui bài toán về các bài </b>


<b>toán con</b>



 <b><sub>VD:</sub></b> <sub>Bài toán Tháp Hà nội (n=3)</sub>


3
2


1



3
2


1


A B C A B C


Hµ Néi (3, A, B, C)


</div>
<span class='text_page_counter'>(80)</span><div class='page_container' data-page=80>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 80


 <sub>n = 3</sub>


 <sub>n = 4</sub>


</div>
<span class='text_page_counter'>(81)</span><div class='page_container' data-page=81>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 81


 <sub>Thông thường, để giải quyết vấn đề người ta cần </sub>
phân tích logic để thu gọn q trình tìm kiếm và đơi
khi nhờ phân tích logic có thể chứng tỏ được rằng
một bài tốn nào đó khơng thể giải được.


 <sub>VD: Bài tốn trị chơi n</sub>2-1 số


<b>Phương pháp biểu diễn vấn đề nhờ </b>


<b>logic hình thức</b>



<b>15</b> <b>14</b> <b>13</b> <b>12</b>


<b>11</b> <b>10</b> <b>9</b> <b>8</b>



</div>
<span class='text_page_counter'>(82)</span><div class='page_container' data-page=82>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 82
 <sub>Các dạng logic hình thức được sử dụng để biểu diễn bài </sub>


toán gồm:


 <sub>Logic mệnh đề </sub>
 <sub>Logic vị từ</sub>


 <sub>Phương pháp biểu diễn bài tốn nhờ logic hình thức cho </sub>


phép:


 <sub>Kiểm tra điều kiện kết thúc trong khi tìm kiếm đối với khơng gian </sub>


trạng thái


 <sub>Kiểm tra tính áp dụng được đối với các tốn tử</sub>
 <sub>Chứng minh khơng tồn tại lời giải</sub>


 <sub>Mục đích giải quyết vấn đề dựa trên logic hình thức là </sub>


chứng minh một phát biểu nào đó trên cơ sở những tiền đề
và luật suy diễn đã có.


</div>
<span class='text_page_counter'>(83)</span><div class='page_container' data-page=83>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 83


 <sub>Trong nhiều trường hợp, việc giải quyết bài toán </sub>


dựa trên các thuật ngữ đã được dùng để phát biểu nó


là rất khó khăn. Người ta thường lựa chọn một dạng
biểu diễn phù hợp nào đó đối với các dữ liệu của bài
toán, làm cho bài toán trở nên dễ giải hơn.


</div>
<span class='text_page_counter'>(84)</span><div class='page_container' data-page=84>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 84


 <sub>Việc lựa chọn phương pháp biểu diễn thích hợp nhằm:</sub>


 <sub>Tránh giải trực tiếp bài tốn đặt ra ban đầu do những khó khăn liên </sub>


quan tới kích cỡ, trọng số, tầm quan trọng và chi phí xử lý dữ liệu
của bài tốn.


 <sub>Bỏ bớt những thông tin thừa hoặc không quan trọng trong bài toán</sub>
 <sub>Tận dụng những phương pháp giải đã có đối với bài toán nhận </sub>


được sau khi phát biểu lại


 <sub>Cách phát biểu mới có thể cho phép thể hiện một vài tương quan </sub>


nào đó giữa các yếu tố của bài toán nhằm thu gọn quá trình giải


 <sub>Sau khi đã giải quyết xong bài tốn theo cách biểu diễn mới, </sub>


cần phải diễn giải lời giải nhận được cho sát với bài toán
thực tế và chứng minh rằng cách diễn giải đó thực sự giải
quyết được bài toán đặt ra.


</div>
<span class='text_page_counter'>(85)</span><div class='page_container' data-page=85>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 85



Để có thể giải quyết vấn đề trên máy tính, trước hết ta phải
tìm cách biểu diễn lại vấn đề sao cho máy tính có thể “hiểu”
được. Điều này có nghĩa là ta phải đưa các dữ liệu của bài
tốn về dạng có thể xử lý được trên máy tính.


 <sub>Cách biểu diễn dùng bảng: Sử dụng bảng để biểu diễn các </sub>


hình trạng của bài tốn.


<b>Biểu diễn vấn đề trong máy tính</b>



1 2 3 4


5 6 7 8


9 10 11 12


</div>
<span class='text_page_counter'>(86)</span><div class='page_container' data-page=86>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 86


 <sub>Cách biểu diễn dùng xâu ký hiệu</sub>


<b>Biểu diễn vấn đề trong máy tính</b>



TgT


ToĐ





</div>
<span class='text_page_counter'>(87)</span><div class='page_container' data-page=87>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 87


 <sub>Cách biểu diễn dùng cấu trúc danh sách</sub>


<b>Biểu diễn vấn đề trong máy tính</b>



<i>a</i>
<i>ac</i>
<i>b</i>


2
4


2




/


* 2 a




- b 2


</div>
<span class='text_page_counter'>(88)</span><div class='page_container' data-page=88>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 88


Có hai cách tiếp cận trong giải quyết vấn đề:


 <sub> Tổng qt hố để đưa ra mơ hình bài tốn</sub>



 <sub> Cụ thể hoá trên cơ sở sử dụng các tri thức đặc tả Trên </sub>


thực tế, có những bài tốn không thể giải được nhờ sử
dụng mơ hình, hơn nữa lời giải nhận được còn khá xa với
lời giải thực tế. Trong trường hợp đó, người ta áp dụng
cách tiếp cận sử dụng tri thức đặc tả. Các phương pháp
biểu diễn tri thức bao gồm: Frame, logic hình thức, mạng
ngữ nghĩa và các hệ sản xuất.


</div>
<span class='text_page_counter'>(89)</span><div class='page_container' data-page=89>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 89


<b>NỘI DUNG</b>



 <sub>BIỂU DIỄN VÀ GIẢI QUYẾT VẤN ĐỀ TRONG </sub>
KHOA HỌC TTNT


 <sub>CÁC PHƯƠNG PHÁP BIỂU DIỄN VẤN ĐỀ</sub>


</div>
<span class='text_page_counter'>(90)</span><div class='page_container' data-page=90>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 90

CÁC PHƯƠNG PHÁP GIẢI QUYẾT



VẤN ĐỀ



 <sub>Biểu diễn vấn đề trong không gian trạng thái và các </sub>
chiến lược tìm kiếm trên đồ thị


 <sub>Qui bài toán về bài toán con và các chiến lược tìm </sub>
kiếm trên đồ thị Và/Hoặc



 <sub>Biểu diễn vấn đề nhờ logic hình thức và phương </sub>
pháp suy diễn logic


</div>
<span class='text_page_counter'>(91)</span><div class='page_container' data-page=91>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 91


<b>Biểu diễn vấn đề trong KGTT </b>



<b>và các chiến lược tìm kiếm trên đồ thị </b>



 <sub>Các mơ tả trạng thái và tốn tử</sub>


 <sub>Biểu diễn vấn đề dưới dạng đồ thị</sub>


</div>
<span class='text_page_counter'>(92)</span><div class='page_container' data-page=92>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 92

Các mơ tả trạng thái và tốn tử



 <sub>Khi giải quyết bài tốn trong khơng gian trạng thái, </sub>
chúng ta cần phải xác định dạng mô tả các trạng thái
của bài toán.


 <sub>VD: Bài toán n</sub>2 - 1 số (n = 4)


 <sub>Mỗi trạng thái là bảng có kích thước 4 x 4</sub>


 <sub>Toán tử: phép biến đổi từ trạng thái này sang trạng thái </sub>


</div>
<span class='text_page_counter'>(93)</span><div class='page_container' data-page=93>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 93


 <sub>VD: Biến đổi biểu thức đại số:</sub>



(A x B + C x D)/(B * C) thành A/C + D/B.


 <sub>Mỗi trạng thái là biểu thức đại số.</sub>


 <sub>Toán tử: Biến đổi được từ biểu thức này sang biểu thức </sub>


khác.


 <sub>Dùng cấu trúc cây nhị phân.</sub>


 <sub>Dùng ký pháp nghịch đảo Ba lan (Hậu tố, tiền tố). </sub>


 <sub>Các tốn tử trong khơng gian trạng thái là những </sub>
phép biến đổi đưa trạng thái này về trạng thái khác


</div>
<span class='text_page_counter'>(94)</span><div class='page_container' data-page=94>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 94


 <sub>Có hai cách biểu diễn các tốn tử:</sub>


 <sub>Cách 1: Sử dụng kí hiệu hàm, có nghĩa là xem các toán tử như là </sub>


các hàm xác định trên tập các trạng thái và nhận giá trị cũng trong
tập này


 <sub>VD: Với bài toán trị chơi 15 số, ta có 4 loại tốn tử có thể mơ tả </sub>


được dưới dạng kí hiệu hàm như sau


dl: Dịch ô trống lên trên; dx: Dịch ô trống xuống dưới;
df: Dịch ô trống sang phải; dt: Dịch ô trống sang trái;



dl(A) = B, Giả sử A = (a<sub>ij</sub>). B = (b<sub>ij</sub>) và ô trống trong A ở vị trí (i<sub>0</sub>,
j<sub>0</sub>)). Khi đó ứng với phép dịch ô trống lên trên ta có thể viết B =
dl(A) = (bij) với aij (i, j) nÕu i0 = 1


b<sub>ij</sub> = nÕu (i, j)  (i<sub>0</sub>, j<sub>0</sub>) vµ (i, j)  (i<sub>0</sub>-1, j<sub>0</sub>), i<sub>0</sub>>1
a<sub>i0j0</sub> nÕu (i, j) = (i<sub>0</sub>-1, j<sub>0</sub>) vµ i<sub>0</sub>>1


a<sub>i0-1j0 </sub> nÕu (i, j) = (i<sub>0</sub>, j<sub>0</sub>) vµ i<sub>0</sub>>1


</div>
<span class='text_page_counter'>(95)</span><div class='page_container' data-page=95>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 95


 <sub>Cách 2: Sử dụng các quy tắc sản xuất (Production Rules) </sub>


s<sub>i</sub>  s<sub>j</sub>. Nghĩa là, mỗi khi xuất hiện trạng thái s<sub>i </sub>thì có thể


dẫn tới trạng thái s<sub>j</sub>.


 <sub> VD: Với bài tốn trị chơi 15 số, ta có sản xuất sau:</sub>


11 9 4 15 11 9 4 15


1 3 12 1 3 12


7 5 8 6 7 5 8 6


13 2 10 14 13 2 10 14


</div>
<span class='text_page_counter'>(96)</span><div class='page_container' data-page=96>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 96



 <sub>Các thủ tục tìm kiếm trong khơng gian trạng thái </sub>
thường bao gồm quá trình xây dựng các trạng thái
mới xuất phát từ các trạng thái cũ và kiểm tra xem
trạng thái mới này có thoả mãn những điều kiện áp
dụng cho trạng thái đích khơng.


</div>
<span class='text_page_counter'>(97)</span><div class='page_container' data-page=97>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 97


 <sub>Kết luận: Để biểu diễn bài toán trong không gian </sub>
trạng thái cần phải xác định:


 <sub>Dạng mô tả của các trạng thái.</sub>


 <sub>Tập các toán tử và tác động của chúng lên các mô tả </sub>


trạng thái .


 <sub>Các trạng thái đầu, các trạng thái đích .</sub>


</div>
<span class='text_page_counter'>(98)</span><div class='page_container' data-page=98>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 98


Một cách hình thức ta có thể phát biểu bài tốn như sau:


 <b>Bài toán P<sub>1</sub>:</b> Cho trạng thái đầu s<sub>0</sub>, tập trạng thái ĐICH.


Hãy tìm dãy trạng thái s<sub>0</sub>, s<sub>1</sub>, s<sub>2</sub>, . . ., s<sub>n</sub> sao cho s<sub>n</sub>  ĐICH,


thoả mãn một số điều kiện nào đó và với mọi i (i=0, .. ,n-1),
từ trạng thái s<sub>i</sub> có thể áp dụng tốn tử biến đổi nào đó để
nhận được trạng thái s<sub>i+1</sub>



(i o<sub>i </sub> O sao cho o<sub>i</sub>(s<sub>i</sub>) = s<sub>i+1</sub>


hoặc


i p<sub>i </sub> P sao cho s<sub>i</sub>  s<sub>i+1</sub> )


</div>
<span class='text_page_counter'>(99)</span><div class='page_container' data-page=99>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 99


Hay dưới dạng khác:


<b>Bài toán P<sub>2</sub>:</b> Cho trạng thái đầu s<sub>0</sub>, tập trạng thái
đích ĐICH.


- Tìm dãy tốn tử o<sub>1</sub>, . . ., o<sub>n</sub> sao cho


o<sub>n</sub>(o<sub>n-1</sub>(. . .(o<sub>1</sub>(s<sub>0</sub>). . .)) = s<sub>n</sub>  ĐICH


- Tìm dãy sản xuất p<sub>1</sub>, p<sub>2</sub>, . . ., p<sub>n</sub> sao cho


<i>n</i>
<i>p</i>


<i>p</i>


<i>p</i> <i><sub>s</sub></i> <i><sub>s</sub></i> <i><sub>s</sub></i>


<i>s</i> <i>n</i>
 


 

 


 <sub>1</sub> <sub>2</sub>...


0 1 2  ĐICH


</div>
<span class='text_page_counter'>(100)</span><div class='page_container' data-page=100>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 100

Biểu diễn vấn đề dưới dạng đồ thị



 <sub>Đồ</sub> <sub>th</sub>ò: <sub>là</sub> <sub>một</sub> <sub>cấu</sub> <sub>trúc</sub> <sub>G</sub> = (<sub>N</sub>,<sub>A</sub>) <sub>bao</sub> <sub>gồm</sub>:


 <sub>Tập</sub> <sub>các</sub> <sub>nút</sub> <sub>N</sub>


 <sub>Tập</sub> <sub>các</sub> <sub>cung</sub> <sub>A</sub> <sub>nối</sub> <sub>các</sub> <b><sub>cặp</sub></b> <b><sub>nút</sub></b>, <sub>có</sub> <sub>thể</sub> <sub>có</sub> <sub>nhiều</sub> <sub>cung</sub>


trên một cặp nút


<b>A</b>
<b>B</b>
<b>D</b>
<b>C</b>
<b>E</b>
<b>B</b>
<b>C</b>
<b>A</b>
<b>D</b>
<b>E</b>



<b>Nút</b>: {A,B,C,D,E}


<b>Cung</b>: {(a,d), (a,b), (a,c), (b,c), (c,d), (c,e), (d,e)},e),


</div>
<span class='text_page_counter'>(101)</span><div class='page_container' data-page=101>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 101


 <b><sub>Đồ thị có hướng</sub></b>: <sub>là</sub> <sub>đồ</sub> <sub>th</sub>ị <sub>với</sub> <sub>các</sub> <sub>cung</sub> <sub>có</sub> <sub>đ</sub>ị<sub>nh</sub>


hướng, nghĩa là cặp nút có quan hệ thứ tự trước sau


<b>theo</b> <b>từng</b> <b>cung. </b>Cung (Ni,Nj) có hướng từ Ni đến
Nj, Khi đó Ni là nút cha và Nj là nút con.


 <b><sub>Nút</sub></b> <b><sub>lá</sub></b>: <sub>là</sub> <sub>nút</sub> <sub>khơng</sub> <sub>có</sub> <sub>nút</sub> <sub>con</sub>.


 <b><sub>Đường</sub></b> <b><sub>đi</sub></b>: <sub>là</sub> <sub>chuo</sub>ã<sub>i</sub> <sub>có</sub> <sub>thứ</sub> <sub>tự</sub> <sub>các</sub> <sub>nút</sub> <sub>mà</sub> 2 <sub>nút</sub> <sub>kế</sub>
tiếp nhau tồn tại một cung.


 <b><sub>Đồ</sub></b> <b><sub>th</sub>ị <sub>có</sub></b> <b><sub>gốc</sub></b>: <sub>Trên</sub> <sub>đồ</sub> <sub>th</sub>ò <sub>tồn</sub> <sub>tại</sub> <sub>nút</sub> <sub>X</sub> <sub>sao</sub> <sub>cho</sub> <sub>tất</sub>
cả các đường đi đều đi qua nút đó. X là gốc.


</div>
<span class='text_page_counter'>(102)</span><div class='page_container' data-page=102>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 102

Biểu diễn vấn đề dưới dạng đồ thị



 <b><sub>Không</sub></b> <b><sub>gian</sub></b> <b><sub>trạng</sub></b> <b><sub>thái</sub></b> <sub>là</sub> <sub>một</sub> <sub>hệ</sub> <sub>thống</sub> <sub>gồm</sub> 4 <sub>thành</sub> <sub>phần</sub>


[N,A,S,DICH]. Trong đó:


 <sub>N</sub> <sub>là</sub> <sub>tập</sub> <sub>nút</sub> <sub>của</sub> đ <sub>ồ</sub> <sub>th</sub>ò. <sub>Mo</sub>ã<sub>i</sub> <sub>nút</sub> <sub>là</sub> <sub>một</sub> <sub>trạng</sub> <sub>thái</sub> <sub>của</sub> <sub>quá</sub> <sub>tr</sub>ì<sub>nh</sub> <sub>giải</sub>



quyết vấn đề


 <sub>A</sub>: <sub>Tập</sub> <sub>các</sub> <sub>cung</sub> <sub>nối</sub> <sub>giư</sub>õ<sub>a</sub> <sub>các</sub> <sub>nút</sub> <sub>N</sub>. <sub>Mo</sub>ã<sub>i</sub> <sub>cung</sub> <sub>là</sub> <sub>một</sub> <sub>bước</sub> (<sub>toán</sub>


tử) trong giải quyết vấn đ . ề Cung có thể có hướng


 <sub>S</sub>: <sub>Tập</sub> <sub>các</sub> <sub>trạng</sub> <sub>thái</sub> <sub>bắt</sub> <sub>đầu</sub>. <sub>S</sub> <sub>khác</sub> <sub>ro</sub>ã<sub>ng</sub>.


 <sub>DICH</sub>: <sub>Tập</sub> <sub>các</sub> <sub>trạng</sub> <sub>thái</sub> <sub>đích</sub>. <sub>DICH</sub> <sub>khác</sub> <sub>ro</sub>ã<sub>ng</sub>.


 <b><sub>Lời</sub></b> <b><sub>giải</sub></b>: <sub>Là</sub> <sub>một</sub> <sub>đường</sub> <sub>đi</sub> <sub>đi</sub> <sub>từ</sub> <sub>một</sub> <sub>nút</sub> <sub>bắt</sub> <sub>đầu</sub> <sub>Si</sub> <sub>đến</sub> <sub>một</sub> <sub>nút</sub>


kết thúc DICHj .


 <sub>Mục</sub> <sub>tiêu</sub> <sub>của</sub> <sub>các</sub> <sub>giải</sub> <sub>thuật</sub> <sub>t</sub>ì<sub>m</sub> <sub>kiếm</sub> <sub>là</sub> <sub>t</sub>ì<sub>m</sub> <sub>ra</sub> <sub>một</sub> <sub>lời</sub> <sub>giải</sub> <sub>và</sub>/<sub>hay</sub>


</div>
<span class='text_page_counter'>(103)</span><div class='page_container' data-page=103>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 103

Các phương pháp tìm kiếm trong KGTT



 <sub>Tìm kiếm theo chiều rộng (Breath – first search)</sub>
 <sub>Tìm kiếm theo chiều sâu (Depth –first search )</sub>
 <sub>Tìm kiếm sâu dần (Depthwise search)</sub>


 <sub>Tìm kiếm cực tiểu hố giá thành (Cost </sub>
minimization search)


 <sub>Tìm kiếm cực tiểu hố giá thành với tri thức bổ </sub>
sung


</div>
<span class='text_page_counter'>(104)</span><div class='page_container' data-page=104>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 104


Các phương pháp tìm kiếm trong KGTT:



Breath First Search (TKR)



Vào: Cây G = (N, A), đỉnh gốc n<sub>0</sub>, tập ĐICH  N


Ra : Đường đi p từ đỉnh n<sub>0</sub> tới đỉnh n* <sub></sub><sub> ĐICH</sub>


Phương pháp:


/* Sử dụng hai danh sách kiểu FIFO là MO và ĐONG, trong đó MO là danh sách
chứa các đỉnh chưa xét còn ĐONG là danh sách chứa các đỉnh đã xét */


{MO  n<sub>0</sub> /* Cho đỉnh n<sub>0</sub> vào cuối danh sách MO */


While MO   do


{n  get(MO) /* Lấy đỉnh n ở đầu danh sách MO */


ĐONG  ĐONG  {n}


if B(n)   then /* B(n) là tập các nút con của nút n


{MO  MO  B(n) /* Cho B(n) vào cuối danh sách MO */


if B(n)  ĐICH   then


{exit(thành công); Xây dựng đường đi p}
}



}


</div>
<span class='text_page_counter'>(105)</span><div class='page_container' data-page=105>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 105

Các phương pháp tìm kiếm trong KGTT:



Breath First Search (TKR)



 <sub>VD: Áp dụng thuật tốn tìm kiếm theo chiều rộng với cây </sub>


sau, tập ĐICH = {r, p}


</div>
<span class='text_page_counter'>(106)</span><div class='page_container' data-page=106>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 106

Các phương pháp tìm kiếm trong KGTT:



Breath First Search (TKR)



</div>
<span class='text_page_counter'>(107)</span><div class='page_container' data-page=107>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 107

Các phương pháp tìm kiếm trong KGTT:



Depth First Search (TKS)



Vào: Cây G = (N, A), đỉnh gốc n<sub>0</sub>, tập ĐICH  N


Ra : Đường đi p từ đỉnh n<sub>0</sub> tới đỉnh n* <sub></sub><sub> ĐICH</sub>


Phương pháp:


/* Sử dụng danh sách MO kiểu LIFO và danh sách ĐONG kiểu FIFO */
{MO  n<sub>0</sub> /* Cho đỉnh n<sub>0</sub> vào đầu danh sách MO */



While MO   do


{n  get(MO) /* Lấy đỉnh n ở đầu danh sách MO */


ĐONG  ĐONG  {n}


if B(n)   then


{MO  MO  B(n) /* Cho B(n) vào đầu danh sách MO */


if B(n)  ĐICH   then


{exit(thành công); Xây dựng đường đi p}
}


}


</div>
<span class='text_page_counter'>(108)</span><div class='page_container' data-page=108>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 108

Các phương pháp tìm kiếm trong KGTT:



Depth First Search (TKS)



 <sub>VD: Áp dụng thuật tốn tìm kiếm theo chiều sâu với </sub>
cây sau, tập ĐICH = {o, p}


Thứ tự duyệt:
a b d h


Đường đi:



</div>
<span class='text_page_counter'>(109)</span><div class='page_container' data-page=109>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 109

Các phương pháp tìm kiếm trong KGTT:



Depth First Search (TKS)



 <sub>Nếu cây G hữu hạn thì thủ tục tìm kiếm theo chiều </sub>
sâu sẽ dừng và cho kết quả là một đường đi từ n<sub>0</sub>
đến tập ĐICH


</div>
<span class='text_page_counter'>(110)</span><div class='page_container' data-page=110>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 110

Các phương pháp tìm kiếm trong KGTT:



Depth First Search (TKS)



 <sub>Khắc</sub> <sub>phục</sub> <sub>bằng</sub> <sub>cách</sub> <sub>giới</sub> <sub>hạn</sub> đ ộ <sub>sâu</sub> <sub>của</sub> <sub>giải</sub> <sub>thuật</sub>.
 <sub>Chiến</sub> <sub>lược</sub> <sub>giới</sub> <sub>hạn</sub>:


 <sub>Cố</sub> đò<sub>nh</sub> <sub>một</sub> đ ộ <sub>sâu</sub> <sub>D</sub>


 <sub>Theo</sub> <sub>cấu</sub> <sub>h</sub>ì<sub>nh</sub> <sub>tài nguyên</sub> <sub>của</sub> <sub>máy</sub> <sub>tính</sub>


 <sub>Tri</sub> <sub>th</sub>ứ<sub>c</sub> <sub>trong</sub> <sub>việc</sub> đị<sub>nh</sub> <sub>giới</sub> <sub>hạn</sub> đ ộ <sub>sâu</sub>.


 <sub>Giới</sub> <sub>hạn</sub> đ ộ <sub>sâu</sub> => <sub>co</sub> <sub>hẹp</sub> <sub>không</sub> <sub>gian</sub> <sub>trạng</sub> <sub>thái</sub> =>


</div>
<span class='text_page_counter'>(111)</span><div class='page_container' data-page=111>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 111

Các phương pháp tìm kiếm trong KGTT:


Depthwise search (TKSD)



 <sub>Tìm kiếm theo chiều sâu đối với lớp các đỉnh tuỳ </sub>


thuộc vào mức sâu k đã cho ban đầu.


 <sub>Cách thực hiện: Ta ký hiệu độ sâu hiện tại là DS, </sub>
ban đầu gán DS = k, duyệt các đỉnh trong phạm vi
độ sâu  DS, nếu chưa tìm được đường đi thì tăng


DS = DS + k và tiếp tục duyệt.


 <sub>Độ sâu d(n) của đỉnh n được định nghĩa:</sub>


 d(n<sub>0</sub>) = 0


</div>
<span class='text_page_counter'>(112)</span><div class='page_container' data-page=112>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 112

Các phương pháp tìm kiếm trong KGTT:


Depthwise search (TKSD)



Vào: Cây G = (N, A), đỉnh gốc n<sub>0</sub>, tập ĐICH  N, mức sâu k


Ra: Đường đi p từ đỉnh n<sub>0</sub> tới đỉnh n* <sub></sub><sub> ĐICH</sub>


Phương pháp: /* Sử dụng ds MO kiểu lai LIFO và FIFO, ds DONG kiểu FIFO */
{MO  n<sub>0</sub>; DS = k;


While MO   do


{n  get(MO) /* Lấy đỉnh n ở đầu danh sách MO */


DONG  ĐONG  {n}


if B(n)   then



{if B(n)  ĐICH   then {exit(thành công); Xây dựng đường đi p}


case d(n) do {


[0..DS - 1]: đặt B(n) vào đầu MO
DS: đặt B(n) vào cuối MO


DS + 1: {DS = DS + k;


if k =1 then đặt B(n) vào cuối MO
else đặt B(n) vào đầu MO


</div>
<span class='text_page_counter'>(113)</span><div class='page_container' data-page=113>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 113

Các phương pháp tìm kiếm trong KGTT:


Depthwise search (TKSD)



 <sub>VD: Áp dụng thuật toán TKSD với cây sau:</sub>


Tập ĐICH = {r, p}, độ sâu k = 2.


 <sub>Thứ tự duyệt: </sub>


a b d e c f g h n o k l


</div>
<span class='text_page_counter'>(114)</span><div class='page_container' data-page=114>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 114

Các phương pháp tìm kiếm trong KGTT:


Depthwise search (TKSD)



 <sub>Khi k =1 thủ tục TKSD trở thành thủ tục TKR</sub>



 <sub>Khi k>=2 thủ tục TKSD tìm theo chiều sâu đối với </sub>
các đỉnh có độ sâu nằm trong khoảng từ tk + 1 đến
(t + 1)k với t bắt đầu từ 0 và mỗi lần tăng lên 1


 <sub>Nếu trong cây G tồn tại ít nhất một đường đi từ đỉnh </sub>
n<sub>0</sub> đến ĐICH thì thủ tục TKSD sẽ dừng và cho kết
quả là đường đi có độ dài khác đường đi ngắn nhất
không quá k - 1. Nếu không tồn tại đường đi như


</div>
<span class='text_page_counter'>(115)</span><div class='page_container' data-page=115>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 115

Các phương pháp tìm kiếm trong KGTT:


Cost minimization search (TKCT)



 <sub>Giả sử C: A</sub><sub></sub><sub>R</sub>+ là hàm giá (cost) tương ứng mỗi cung a <sub></sub>


A với giá chi phí c(a)R+. Với một đường đi p trong G, p =


n<sub>1</sub>, ..., n<sub>k</sub> ta có:


Xác định p: n<sub>0</sub>n<sub>k</sub>  DICH sao cho: c(p)  min


Kí hiệu g(n) là giá của đường đi cực tiểu từ n<sub>0</sub> đến n.
Khi đó, bài tốn trên được phát biểu thành: <i>Tìm đường đi p<sub>0</sub></i>
<i>từ đỉnh gốc n<sub>0 </sub>đến đỉnh n<sub>k</sub></i> <i> DICH sao cho g(n<sub>k</sub>)=min{g(n)| </i>


<i>n </i><i> DICH}</i>.


</div>
<span class='text_page_counter'>(116)</span><div class='page_container' data-page=116>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 116



Vào: Cây G = (N, A), đỉnh gốc n<sub>0</sub>, tập ĐICH  N, c: A  R+


Ra: Đường đi p từ đỉnh n<sub>0</sub> tới đỉnh n* <sub></sub> ĐICH sao cho c(p) min


Phương pháp: /* Sử dụng 2 danh sách MO và DONG */


{MO  n<sub>0</sub>; g0(n<sub>0</sub>)=0; /*g0(n): giá của đường đi hiện tại từ n<sub>0</sub> đến n*/


While MO   do


{n  get(MO) /* Lấy đỉnh n  MO sao cho g0(n) min */


ĐONG  ĐONG  {n}


if n  ĐICH then exit(thành công)


if B(n)   then


{MO  B(n)  MO


for each m  B(n) do


g0<sub>(m) = g</sub>0<sub>(n) + c(n, m)}</sub>


} write(không thành công);
}


</div>
<span class='text_page_counter'>(117)</span><div class='page_container' data-page=117>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 117


 <sub>VD: Áp dụng thuật toán TKCT đối với cây sau</sub>


Tập ĐICH = {n, p}


Thứ tự duyệt:


a c b f l m d g h p
Đường đi:


<b>a c f l p</b>
Có giá: <b>10</b>


</div>
<span class='text_page_counter'>(118)</span><div class='page_container' data-page=118>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 118


 <sub>Thủ tục TKR là trường hợp riêng của thuật toán </sub>
TKCT khi c(a) =1 <b>a </b><b> A. </b>


 <sub>Thủ tục TKS cũng là trường hợp riêng của thủ tục </sub>
TKCT khi lấy tiêu chuẩn chọn n  MO là d(n) max


thay cho điều kiện g0(n) min


 Nếu trong cây G tồn tại đường đi p từ n<sub>0</sub> đến ĐICH
thì thủ tục TKCT sẽ dừng và cho kết quả là đường
đi p sao cho c(p) min. Hơn nữa, thủ tục TKCT tối
ưu theo nghĩa số đỉnh cho vào tập ĐONG là nhỏ


nhất so với các thủ tục tìm kiếm chỉ dựa vào giá các
cung.


</div>
<span class='text_page_counter'>(119)</span><div class='page_container' data-page=119>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 119



Các Heuristic áp dụng cho thủ tục TKCT :


 <sub> Chỉ xét các đỉnh trong B(n) có triển vọng đạt tới tập </sub>
ĐICH.


 <sub> Sắp xếp các đỉnh trong MO trước mỗi lần xử lý nhờ </sub>
các hàm đánh giá.


</div>
<span class='text_page_counter'>(120)</span><div class='page_container' data-page=120>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 120


 <sub>“Heuristics là các quy tắc, phương pháp, chiến lược, mẹo </sub>


giải hay phương cách nào đó nhằm làm giảm khối lượng tìm
kiếm lời giải trong khơng gian bài tốn cực lớn.”


 <sub>Thuật giải Heuristic là một sự mở rộng khái niệm thuật </sub>


toán. Nó thể hiện cách giải bài tốn với các đặc tính sau:


 <sub>Thường tìm được lời giải tốt (nhưng khơng chắc là lời giải tốt </sub>


nhất)


 <sub>Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh </sub>


chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí
thấp hơn.


 <sub>Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách </sub>



suy nghĩ và hành động của con người.


</div>
<span class='text_page_counter'>(121)</span><div class='page_container' data-page=121>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 121


 <sub>Có nhiều phương pháp để xây dựng một thuật giải </sub>
Heuristic, trong đó người ta thường dựa vào một số
nguyên lý cơ bản như sau:


 <b><sub>Nguyên lý vét cạn thơng minh:</sub></b><sub> Trong một bài tốn tìm </sub>


kiếm nào đó, khi khơng gian tìm kiếm lớn, ta thường tìm
cách giới hạn lại khơng gian tìm kiếm hoặc thực hiện một
kiểu dị tìm đặc biệt dựa vào đặc thù của bài tốn để


nhanh chóng tìm ra mục tiêu.


 <b><sub>Nguyên lý tham lam (Greedy):</sub></b><sub> Lấy tiêu chuẩn tối ưu </sub>


(trên phạm vi tồn cục) của bài tốn để làm tiêu chuẩn
chọn lựa hành động cho phạm vi cục bộ của từng bước
(hay từng giai đoạn) trong quá trình tìm kiếm lời giải.


</div>
<span class='text_page_counter'>(122)</span><div class='page_container' data-page=122>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 122


 <b><sub>Nguyên lý thứ tự:</sub></b><sub> Thực hiện hành động dựa trên một </sub>


cấu trúc thứ tự hợp lý của không gian khảo sát nhằm
nhanh chóng đạt được một lời giải tốt.


 <b><sub>Hàm Heuristic:</sub></b><sub> Trong việc xây dựng các thuật giải </sub>



Heuristic, người ta thường dùng các hàm Heuristic. Đó là
các hàm đánh giá thô, giá trị của hàm phụ thuộc vào


trạng thái hiện tại của bài toán tại mỗi bước giải. Nhờ giá
trị này, ta có thể chọn được cách hành động tương đối


hợp lý trong từng bước của thuật giải.


</div>
<span class='text_page_counter'>(123)</span><div class='page_container' data-page=123>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 123


 <sub>Thủ tục TKCT là thuật giải tìm kiếm đường đi tối </sub>


ưu khi chỉ xét tới các thông tin về các đỉnh, các cung
và giá thành của chúng.


 <sub>Trong nhiều trường hợp việc tìm kiếm đường đi sẽ </sub>
được định hướng rõ thêm nếu sử dụng các tri thức
thu được dựa trên các hiểu biết về tình huống vấn đề
ở mỗi bước.


</div>
<span class='text_page_counter'>(124)</span><div class='page_container' data-page=124>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 124


 <sub>Các Heuristic trong việc tìm kiếm cực tiểu hố giá thành:</sub>


 <sub>Chọn tốn tử xây dựng cung B sao cho có thể loại bớt những đỉnh </sub>


không liên quan đến bài tốn hoặc ít có triển vọng nằm trên đường
đi tối ưu.



 <sub>Sử dụng thông tin bổ sung nhằm xây dựng tập MO và cách lấy các </sub>


đỉnh trong tập MO. Muốn vậy, ta phải đưa ra độ đo, tiêu chuẩn nào
đó để tìm ra các đỉnh có triển vọng, thường gọi là các hàm đánh
giá. Một số phương pháp xây dựng hàm đánh giá:


- Dựa vào xác suất của đỉnh trên đường đi tối ưu.


- Dựa vào khoảng cách, sự sai khác giữa một đỉnh nào đó với tập
các đỉnh đích.


</div>
<span class='text_page_counter'>(125)</span><div class='page_container' data-page=125>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 125
Vào: Đồ thị G=(N,A) tuỳ ý, đỉnh gốc n<sub>0</sub>. tập đỉnh đích ĐICH.


Hàm f0<sub>: N</sub><sub></sub><sub>R</sub>+<sub>. /*f</sub>0 <sub>là hàm ước lượng heuristic nào đó*/</sub>


Ra: Đường đi p từ đỉnh n<sub>0</sub> tới đỉnh n* <sub></sub> ĐICH


Phương pháp:


{ MO{n<sub>0</sub>}; Tính f0(n<sub>0</sub>) ;


While MO   do


{n  get(MO); /* <i>Lấy n </i><i> MO sao cho f0 (n) </i><i> min</i> */


ĐONG  ĐONG  {n};


if n ĐICH then exit(“ thành công”);



if B(n)   then


for each m  B(n) do


if m ĐONG  MO then


{ MO MO  {m}; Tính f0(m)}


else if f0


cũ(m) >fmới(m) then MO MO  {m}};


Write(“ không thành công”)<b> }</b>


</div>
<span class='text_page_counter'>(126)</span><div class='page_container' data-page=126>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 126


 <sub>f</sub>0=g0+h0 , trong đó: h0(n) là tri thức bổ sung chỉ ra


triển vọng của đỉnh n nằm trên đường tối ưu.
 <sub>f</sub>0(n) là ước lượng của hàm:


f(n)=g(n)+h(n) , trong đó:


g(n) là giá đường đi tối ưu từ n0 tới n


h(n) là giá đường đi tối ưu từ n tới tập ĐICH
 f0(n) là xấp xỉ của giá đường đi tối ưu từ n


0 tới tập



ĐICH và đi qua đỉnh n.


 <sub>Thủ tục TKCT là trường hợp riêng của thủ tục </sub>
TKCT* khi lấy h0=0


</div>
<span class='text_page_counter'>(127)</span><div class='page_container' data-page=127>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 127


 <sub>Kết quả 1: (Tính đúng đắn)</sub>


Nếu đối với mỗi đỉnh nN ta có 0  h0(n)  h(n) và tồn tại
>0 sao cho aA c(a) thì thủ tục TKCT* dừng và cho


đường đi p: n<sub>0</sub>n*ĐICH sao cho g(n*) min.


 <sub>Kết quả 2: (Tính tối ưu)</sub>


Giả sử thủ tục TKCT*


i sử dụng hàm đánh giá f0i(n)=g0(n)


+h0


i(n), i=1,2 và giả sử h2 thoả mãn điều kiện h02(m) – h02(n)


 h(m, n), (h(m,n) là độ dài đường đi ngắn nhất từ m đến n)


và n 0  h0<sub>1</sub>(n)  h0<sub>2</sub>(n)  h(n) thì số nút đưa vào tập


DONG của thuật toán TKCT<sub>2</sub>* bao giờ cũng nhỏ hơn số nút



đối với thuật toán TKCT<sub>1</sub>*.


</div>
<span class='text_page_counter'>(128)</span><div class='page_container' data-page=128>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 128


 <sub>VD: Xét bài toán tháp Hà Nội với n=2, lấy hàm </sub>
f0=g0+h0, trong đó h0(n) là thơng tin nói thêm về mối


liên hệ giữa n và trạng thái đích. Chẳng hạn:
h0=2 nếu ở cọc C chưa có đĩa nào,


h0=1 nếu ở cọc C có đĩa to,


h0=3 nếu ở cọc C có đĩa nhỏ,


h0=0 nếu ở cọc C đã có hai đĩa.


</div>
<span class='text_page_counter'>(129)</span><div class='page_container' data-page=129>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 129

Các phương pháp tìm kiếm trong KGTT:


Heuristic search: TKCT*



g0 =0


g0 =1


g0 =2


g0 =3


h0 = 2, f0=2



h0 = 3,


f0=4 h


0<sub> = 2, f</sub>0<sub>=3 </sub>


h0 = 1
f0=3


h0 = 3


f0=5 h


0<sub> = 2 </sub>


f0=4


h0 = 2


f0=5 h


0<sub> = 0 </sub>


f0=3 h


0<sub> = 1 </sub>


</div>
<span class='text_page_counter'>(130)</span><div class='page_container' data-page=130>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 130


<b>Qui bài toán về các bài toán con và các </b>



<b>chiến lược tìm kiếm trên đồ thị Và/Hoặc</b>



 <sub>Qui bài toán về các bài toán con</sub>


 <sub>Thể hiện dưới dạng đồ thị VÀ/HOẶC</sub>


</div>
<span class='text_page_counter'>(131)</span><div class='page_container' data-page=131>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 131

Qui bài tốn về các bài toán con



 <sub>Ý tưởng cơ bản là xuất phát từ bài toán đặt ra, tách </sub>
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.


 <sub>Bài toán sơ cấp được hiểu là bài toán mà lời giải của </sub>
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à


</div>
<span class='text_page_counter'>(132)</span><div class='page_container' data-page=132>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 132

Thể hiện dưới dạng đồ thị VÀ/HOẶC



 <sub>Đồ thị (định hướng) VÀ/HOẶC là cặp G = (N,A), </sub>
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.



</div>
<span class='text_page_counter'>(133)</span><div class='page_container' data-page=133>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 133


<i><b>Quy bài toán về các bài toán con </b></i> <i><b><sub>Đồ thị </sub></b><b>và/hoặc</b></i>


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 tố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 li gii.


</div>
<span class='text_page_counter'>(134)</span><div class='page_container' data-page=134>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 134


 <sub>Đỉnh giải được:</sub>



 <sub>Các đỉnh kết thúc (cuối) là đỉnh giải được.</sub>


 <sub>Nếu đỉnh n có các đỉnh con là đỉnh VÀ thì nó là đỉnh giải được khi </sub>


và chỉ khi tất cả các đỉnh con của nó giải được.


 <sub>Nếu đỉnh n có các đỉnh con là đỉnh HOẶC thì nó là đỉnh giải được </sub>


khi và chỉ khi tồn tại 1 đỉnh con của nó giải được.


 <sub>Đỉnh không giải được:</sub>


 <sub>Nếu đỉnh n khơng là đỉnh kết thúc và khơng có các đỉnh con thì nó </sub>


là đỉnh khơng giải được.


 <sub>Nếu đỉnh n khơng là đỉnh kết thúc và có các đỉnh con là đỉnh VÀ </sub>


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.


 <sub>Nếu đỉnh n không là đỉnh kết thúc mà có các đỉnh con là đỉnh </sub>


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


</div>
<span class='text_page_counter'>(135)</span><div class='page_container' data-page=135>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 135


 <sub>Đồ thị lời giải: Là đồ thị con của đồ thị VÀ/HOẶC </sub>
chỉ chứa các đỉnh giải được và đỉnh đầu.



 <sub>Nhận xét: </sub>


 <sub>Nếu trên đồ thị VÀ/HOẶC khơng có đỉnh VÀ nào thì đồ </sub>


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 đó.


 <sub>Mục đích của q trình tìm kiếm trên đồ thị VÀ/HOẶC </sub>


là ta phải xác định xem đỉnh đầu có giải được hay khơng.
Trong trường hợp giải được thì ta phải đưa ra cây lời giải
thoả mãn điều kiện nào đó.


</div>
<span class='text_page_counter'>(136)</span><div class='page_container' data-page=136></div>
<span class='text_page_counter'>(137)</span><div class='page_container' data-page=137>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 137


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đ”}}


</div>
<span class='text_page_counter'>(138)</span><div class='page_container' data-page=138>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 138


 <sub>Thủ tục tìm kiếm theo chiều rộng TKRM</sub>
 <sub>Thủ tục tìm kiếm theo chiều sâu TKSM</sub>


</div>
<span class='text_page_counter'>(139)</span><div class='page_container' data-page=139>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 139


Vào: Cây VÀ/HOẶC G=(N, A) với đỉnh đầu n<sub>0</sub>, tập đỉnh kết thúc T={t<sub>i</sub>} N


Ra: Thông báo “không thành công” nếu n<sub>0 </sub>kgđ, “thành công” nếu n<sub>0</sub> 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 ={n<sub>0</sub>};


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 <i><b>cuối</b></i> danh sách MO */


For each m B(n) do


{if kt(m) then {nhan=”gđ”; bool=true}}
if bool then


{gđ(n<sub>0</sub>);


if nhan(n<sub>0</sub>)=”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đ(n<sub>0</sub>);


if nhan(n<sub>0</sub>) = “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;}}}


</div>
<span class='text_page_counter'>(140)</span><div class='page_container' data-page=140>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 140


 <sub>VD:Áp dụng thuật tốn TKRM đối với cây sau</sub>
Tập T = {t1,t2,t3,t4}


<b>Thứ tự duyệt</b>:
abcdefgijk


<b>Cây lời giải</b>:
các cung tô đậm


 <sub>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 </sub>


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 <sub>c</sub>


d <sub>e</sub>


f g


i j k



A


t1 t2


B <sub>C t3</sub>


t4


D <sub>E</sub>


</div>
<span class='text_page_counter'>(141)</span><div class='page_container' data-page=141>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 141

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 n<sub>0</sub>, tập đỉnh kết thúc T={t<sub>i</sub>} N. Giới hạn sâu D.


Ra: Thông báo “không thành công” nếu n<sub>0 </sub>kgđ, “thành công” nếu n<sub>0</sub> 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 ={n<sub>0</sub>};


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 <i><b>đầu</b></i> danh sách MO */


For each m B(n) do


{if kt(m) then {nhan=”gđ”; bool=true}}
if bool then


{gđ(n<sub>0</sub>);


if nhan(n<sub>0</sub>)=”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đ(n<sub>0</sub>);


if nhan(n<sub>0</sub>) = “kgđ” then exit (“không thành công”)


</div>
<span class='text_page_counter'>(142)</span><div class='page_container' data-page=142>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 142


 <sub>VD: Áp dụng thuật toán TKSM đối với cây sau</sub>


Tập T = {t1,t2,t3,t4}


Các phương pháp tìm kiếm trong đồ thị


VÀ/HOẶC: Thủ tục TKSM



a



b <sub>c</sub>


d


e


f g


B
t1 t2
t3
t4
A
C E
D
<b>Thứ tự duyệt</b>:


abdAfceg


<b>Cây lời giải</b>:
các cung tô đậm


 <sub>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ẽ </sub>


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 tốn lại thơng báo khơng thành cơng. Để khắc phục tình


</div>
<span class='text_page_counter'>(143)</span><div class='page_container' data-page=143>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 143



<b>Biểu diễn vấn đề nhờ logic hình thức và </b>


<b>phương pháp suy diễn logic</b>



 <sub>Logic mệnh đề</sub>
 <sub>Logic vị từ</sub>


 <sub>Chứng minh định lý nhờ logic hình thức</sub>


</div>
<span class='text_page_counter'>(144)</span><div class='page_container' data-page=144>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 144

Logic mệnh đề



 <sub>Mệnh đề p là một phát biểu chỉ có thể nhận giá trị đúng (True, 1) hoặc </sub>


sai (False, 0).


 <sub>VD: Phát biểu "1+1=2" có giá trị đúng. </sub>


Phát biểu "Mọi loại cá có thể sống trên bờ" có giá trị sai


 <sub>Các biểu thức trong logic mệnh đề được xây dựng trên cơ sở các tên </sub>


mệnh đề (thường ký hiệu bằng các chữ cái la tinh như a,b,p,q, . . .) và
các phép toán logic theo những quy tắc cú pháp nhất định. Các phép
toán logic bao gồm:


 <sub>Hội: </sub> <sub>(</sub><sub></sub><sub>, and, và).</sub>
 <sub>Tuyển: </sub> <sub>(</sub><sub></sub><sub>, or, hoặc).</sub>


 <sub>Phủ định: </sub> <sub>(</sub><sub></sub><sub>, not, không).</sub>
 <sub>Kéo theo: </sub> <sub>(</sub><sub></sub><sub>).</sub>



</div>
<span class='text_page_counter'>(145)</span><div class='page_container' data-page=145>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 145

Logic mệnh đề



 <sub>Giá trị chân lý của một biểu thức được tính dựa theo bảng chân lý:</sub>


 <sub>Dễ thấy a</sub><sub></sub><sub>b </sub><sub></sub> <sub></sub><sub>a</sub><sub></sub><sub>b</sub>


 <sub>Mọi biểu thức logic mệnh đề đều có thể đưa về dạng biểu thức tương </sub>


đương chỉ chứa các phép toán , , 


 <sub>Các phép tốn </sub><sub></sub><sub>, </sub><sub></sub><sub> có tính giao hốn, kết hợp, phân phối và luỹ đẳng</sub>


a b ab ab a ab ab


0 0 0 0 1 1 1


0 1 0 1 1 1 0


1 0 0 1 0 0 0


</div>
<span class='text_page_counter'>(146)</span><div class='page_container' data-page=146>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 146

Logic mệnh đề



 <sub>Các phép biến đổi tương đương:</sub>


R<sub>1</sub>. a  b  b  a; a  b  b  a


R<sub>2</sub>. a  b  b  a



R<sub>3</sub>. a  a  a; a  a  a


R<sub>4</sub>. a  (b  c)  (a  b)  c; a  (b  c)  (a  b)  c


R<sub>5</sub>. a  b  (a  b); a  b  (a b)


R<sub>6</sub>. a  b  a  b


R<sub>7</sub>. a  (b  c)  (a  b)  (a  c); a  (b  c)  (a  b)  (a  c)


R<sub>8</sub>. a  (a  b)  a; a  (a  b)  a


R<sub>9</sub>. a  a


R<sub>10</sub>. (a  b)  a  b; (a  b)  a  b


R<sub>11</sub>. a  a  0


R<sub>12</sub>. a  0  0; a  1  1; a  0  a; a  1  a


</div>
<span class='text_page_counter'>(147)</span><div class='page_container' data-page=147>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 147

Logic vị từ



 <sub>Biểu diễn vấn đề bằng mệnh đề gặp phải một trở ngại cơ bản là ta </sub>


không thể can thiệp vào cấu trúc của một mệnh đề. Hay nói một cách
khác là mệnh đề khơng có cấu trúc. Điều này làm hạn chế rất nhiều
thao tác suy luận. Do đó, ngồi các phép  , , , , , người ta đã



đưa vào khái niệm <i><b>vị từ</b></i> và <i><b>lượng từ</b></i> ( - với mọi,  - tồn tại) để tăng


cường tính cấu trúc của một mệnh đề.


 <sub>Vị từ p(x,...,y) là một phát biểu chứa các biến x,...,y sao cho khi x,...,y </sub>


nhận các giá trị cụ thể thì nó nhận giá trị hoặc đúng hoặc sai.


 <sub>VD: p(x, y, z) được phát biểu x.y = z là một vị từ 3 biến x, y, z trên </sub>


</div>
<span class='text_page_counter'>(148)</span><div class='page_container' data-page=148>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 148

Logic vị từ



 <sub>Lượng từ </sub><sub></sub><sub>: </sub><sub></sub><sub>x p(x, y, z,. . .) có nghĩa là tồn tại một giá trị </sub>


x<sub>0</sub> sao cho p(x<sub>0</sub>, y, z,. . .) đúng với mọi y, z, . . .


 <sub>Lượng từ </sub><sub></sub><sub>: </sub><sub></sub><sub>x p(x, y, z,. . .) có nghĩa là với mọi giá trị của </sub>


x p(x, y, z,. . .) đúng với mọi y, z,. . .


 <sub>Logic vị từ cho phép diễn đạt hầu hết các khái niệm và </sub>


nguyên lý của các khoa học cơ bản, nhất là toán học và vật
lý.


 <sub>Hai phạm vi ứng dụng chính của logic hình thức:</sub>


</div>
<span class='text_page_counter'>(149)</span><div class='page_container' data-page=149>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 149

Chứng minh định lý nhờ logic hình thức:



Giải thuật Wong.H (Vương Hạo)



 Bài toán: Cho các giả thiết dưới dạng các biểu thức mệnh đề (vị từ) GT<sub>1</sub>, GT<sub>2</sub>,. . .,


GT<sub>m</sub>. Hãy rút ra một trong các kết luận KL<sub>1</sub>, KL<sub>2</sub>,. . ., KL<sub>n</sub>


 <b><sub>Giải thuật Wong .H (Vương Hạo)</sub></b>


Vào: GT<sub>1</sub>, GT<sub>2</sub>,. . ., GT<sub>m</sub>; KL<sub>1</sub>, KL<sub>2</sub>,. . ., KL<sub>n</sub> .


Ra: Thông báo “thành công” nếu GT<sub>1</sub>  GT<sub>2</sub>  . . .  GT<sub>m</sub>  KL<sub>1</sub>  KL<sub>2</sub>  . . .  KL<sub>n</sub>


Phương pháp:


<b>{</b> for i=1 to m do <b>{</b>trans(GT<sub>i</sub>); VT  GT<sub>i</sub>  VT<b>}</b>


for i=1 to n do <b>{</b>trans(KL<sub>i</sub>);VP  KL<sub>i </sub> VP<b>}</b>


P  {(VT, VP)};


while P   do


<b>{</b>(VT, VP)  get(P);


if VT  VP =  then


<b>{</b>chuyen(VT, VP);
if VT  VP =  then


if not tach(VT, VP) then exit(“không thành công”)


else P  {(VT, VP)};<b>}}</b>


</div>
<span class='text_page_counter'>(150)</span><div class='page_container' data-page=150>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 150


 <b><sub>trans(BT)</sub></b><sub>: Đưa biểu thức BT về biểu thức tương đương mà chỉ chứa các phép toán </sub>


, ,  dưới 1 trong 2 dạng chuẩn sau:


hoặc , l<sub>ij</sub> = p<sub>ij</sub> hoặc l<sub>ij</sub> = p<sub>ij</sub> với p<sub>ij</sub> là các mệnh đề đơn




<b>VD:</b> (a  b)  (c  d) có thể đưa về thành: (a  b)  (c  d)


 <b>chuyen(VT, VP)</b>: chuyển vế các GT<sub>i</sub> và các KL<sub>j</sub> ở dạng phủ định. Thay dấu  bên


trong GT<sub>i</sub> và dấu  trong KL<sub>j</sub> bằng dấu phẩy.


<b>VD:</b> (a  b)  (c  d) được biến đổi thành: c, d  a, b


 <b>tach(VT, VP)</b>: tách VT, VP thành hai danh sách con nếu có dấu  trong một GT<sub>i</sub>


hoặc dấu  trong một KL<sub>j</sub> nào đó. Nếu tách được thì thủ tục tach(VT, VP) nhận giá


trị True. ngược lại nhận giá trị False


<b>VD:</b> p  q, p  q được tách thành p, p  q và q, p  q


 <sub>Kết quả: Thuật toán Wong.H dừng sau một số bước hữu hạn và cho ra thông báo </sub>



“thành công” nếu và chỉ nếu từ GT<sub>1</sub>, GT<sub>2</sub>,. . ., GT<sub>m</sub>có thể suy ra một trong các kết
luận KL<sub>1</sub>, KL<sub>2</sub>,. . ., KL<sub>n</sub>.


<i>ij</i>
<i>n</i>
<i>j</i>
<i>k</i>
<i>i</i> <i>l</i>
<i>i</i>
1
1 
 
 <i><sub>ij</sub></i>
<i>n</i>
<i>j</i>
<i>k</i>
<i>i</i> <i>l</i>
<i>i</i>
1
1 
 


</div>
<span class='text_page_counter'>(151)</span><div class='page_container' data-page=151>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 151
 <sub>VD: CMR từ a </sub><sub></sub><sub> b </sub><sub></sub><sub> c, b </sub><sub></sub><sub> c </sub><sub></sub><sub> d, a, b suy ra d</sub>


Dạng chuẩn:VT = a  b  c, b  c  d, a, b; VP = d


</div>
<span class='text_page_counter'>(152)</span><div class='page_container' data-page=152>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 152

Chứng minh định lý nhờ logic hình thức:



Thủ tục của Robinson



 <sub>Thuật giải này hoạt động dựa trên phương pháp chứng minh phản </sub>


</div>
<span class='text_page_counter'>(153)</span><div class='page_container' data-page=153>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 153

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



 <b><sub>Thủ tục Resolution1 (Dùng cho logic mệnh đề)</sub></b>


Vào: GT<sub>1</sub>,..., GT<sub>m</sub>; KL<sub>1</sub>,..., KL<sub>n</sub>


Ra: Thông báo “thành công” nếu GT<sub>1</sub>...GT<sub>m</sub>KL<sub>1</sub>...KL<sub>n</sub>.


Phương pháp:


{ For i=1 to m do { Trans(GTi); PGTi;}


For i=1 to n do {Trans(KLi); P KLi;} /* P=MĐ<sub>1</sub>,...,MĐk , k=m+n*/


If mt(P) then exit(“Thành công”); P<sub>1</sub>=;


While P  P<sub>1</sub> and mt(P) do {P<sub>1</sub>=P; hopgiai(P);}


If mt(P) then exit (“Thành công”) else exit (“Không thành công”)}


<b>Procedure</b> mt(P);
{mt=false;


for each pP do



for each qP and qp do if p=q or q=p then return (true)}


<b>Procedure</b> hopgiai(P);
{for each pP do


</div>
<span class='text_page_counter'>(154)</span><div class='page_container' data-page=154>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 154

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



 <sub>VD: CMR từ a </sub><sub></sub><sub> b </sub><sub></sub><sub> c, b </sub><sub></sub><sub> c </sub><sub></sub><sub> d, a, b suy ra d</sub>


Đưa các GT<sub>i</sub> và KL<sub>j </sub>về dạng chuẩn và xây dựng P ta có:
P ={a  b  c, b  c  d, a, b, d}.


Để đơn giản, ta viết các xâu trong P dưới dạng:
1. a  b  c


2. b  c  d


3. a
4. b
5. d


Quá trình hợp giải như sau:
6.  b  c Res(1A,3)


7.  a  c Res(1B, 4)


8.  c  d Res(2A, 4)



9.  b   c Res(2C, 5)


10. c Res(3, 7A)


</div>
<span class='text_page_counter'>(155)</span><div class='page_container' data-page=155>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 155

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



 <sub>Kết quả: Thuật giải Resolution1 sẽ dừng và đưa ra thông báo “thành </sub>


công” khi và chỉ khi GT<sub>1</sub>...GT<sub>m</sub>KL<sub>1</sub>...KL<sub>n</sub>.


 <sub>Thuật giải Resolution1 có thể mở rộng để giải quyết các bài toán </sub>


chứng minh định lý tự động sử dụng logic vị từ. Mấu chốt của phương
pháp là hợp giải hai vị từ:


A= P  Q<sub>1</sub> Q<sub>2 </sub> ...Q<sub>k</sub> và B=P  R<sub>1</sub>  R<sub>2 </sub>  ... R<sub>t</sub> thành vị từ


C = Q<sub>1</sub> Q<sub>2 </sub>...Qk  R<sub>1</sub>  R<sub>2 </sub> ... Rt.


 Do các vị từ P<sub>i</sub>, Q<sub>i</sub> và R<sub>j</sub> phụ thuộc và các biến nên để tạo ra các cặp


đối ngẫu thực sự P và P ta phải thực hiện các phép gán.


Cách chọn phép gán:


</div>
<span class='text_page_counter'>(156)</span><div class='page_container' data-page=156>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 156

Chứng minh định lý nhờ logic hình thức:



Thủ tục của Robinson



 <b><sub>Thủ tục Resolution2 (Dùng cho logic vị từ)</sub></b>


<b>Bước 1:</b> Đưa các GT<sub>i </sub> và KL<sub>j</sub> về dạng chuẩn: x<sub>1</sub>x<sub>2 </sub>. . .x<sub>k </sub>


sao cho mọi biến có mặt trong P<sub>ij</sub> đều thuộc vào tập {x<sub>1</sub>, x<sub>2 </sub>,. . .,x<sub>k</sub>}.
Muốn vậy ta thực hiện các thao tác sau:


1. Khử bỏ các dấu kéo theo và tương đương nhờ A  B  AB


2. Đưa dấu phủ định vào trong cùng chừng nào có thể, nhờ các phép biến đổi:
· (AB)  AB (AB)  AB


· A  A x A   x A


·   x A  xA


3. Thay tên biến để cho mỗi lượng từ chỉ có một tên biến riêng.


4. Khử bỏ các lượng từ tồn tại: x P(x) chuyển thành P(a), x y P(x,y) chuyển thành


P(x,g(x)). Hàm g(x) được gọi là hàm Scholem.


5. Chuyển mọi lượng từ  về đầu biểu thức, phần biểu thức gọi là ma trận.


6. Đưa ma trận về dạng chuẩn hội nhờ áp dụng A(BC)  (AB) (AC)


7. Loại bỏ các lượng từ 



8. Thay thế các liên kết  bởi các dấu phẩy, mỗi dòng được gọi là một câu.


</div>
<span class='text_page_counter'>(157)</span><div class='page_container' data-page=157>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 157

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



 <sub>VD: Xét </sub><sub></sub><sub>x {P(x) </sub><sub></sub><sub> {</sub><sub></sub><sub>y {P(y)</sub><sub></sub><sub>P(f(x,y))} </sub><sub></sub> <sub></sub> <sub></sub><sub>y {Q(x,y)</sub><sub></sub><sub>P(y)}}}.</sub>


Áp dụng các bước để đưa về dạng chuẩn như sau:


1. x { P(x) {y { P(y)  P(f(x,y))}   y {Q(x,y)  P(y)}}}


2. x { P(x) {y { P(y)  P(f(x,y))}  y {Q(x,y)  P(y)}}}


3. x { P(x) {y { P(y)  P(f(x,y))}   {Q(x, )  P()}}}


4. x { P(x) {y { P(y)  P(f(x,y))}  {Q(x, g(x))  P(g(x))}}}


5. xy { P(x) {{ P(y)  P(f(x,y))}  {Q(x, g(x))  P(g(x))}}}


6. xy{{P(x)P(y)P(f(x,y))}{P(x)Q(x,g(x))}{P(x)P(g(x))}}


7. {P(x)P(y)P(f(x,y))}{P(x)Q(x,g(x))}{P(x)P(g(x))}


8. Tách câu và viết thành các dòng


P(x)P(y)P(f(x,y))
P(x)Q(x,g(x))


</div>
<span class='text_page_counter'>(158)</span><div class='page_container' data-page=158>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 158


Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



<b>Bước 2.</b> Nếu tìm được một cặp câu P<sub>1</sub>, P<sub>2</sub> và một phép gán q sao cho P<sub>1q</sub>=P<sub>2q</sub> thì


thơng báo “Thành cơng” và thuật tốn dừng. Ngược lại sang bước 3.


<b>Bước 3:</b> Tìm cặp câu P = P<sub>0</sub>  P<sub>1</sub> ... P<sub>k</sub> và Q = Q<sub>0</sub>  Q<sub>1</sub>  Q<sub>2</sub> ...Q<sub>t</sub> và phép gán q sao


cho P<sub>0q</sub> = Q<sub>0q</sub>. Thực hiện hợp giải câu P với câu Q được câu R= P<sub>1</sub> ... P<sub>k</sub>  Q<sub>1</sub>  Q<sub>2</sub>
 Q<sub>2</sub> ...Q<sub>t</sub> và bổ sung câu R vào danh sách các câu.


<b>Bước 4:</b> Nếu không thể xây dựng thêm được các hợp giải và khơng có cặp câu đối
ngẫu thì bài toán sai, ngược lại bài toán được giải quyết xong và thông báo “Thành
công”.


Kết quả: Nếu từ GT<sub>1</sub> GT<sub>2</sub> ... GT<sub>m</sub>  KL<sub>1</sub>  KL<sub>2</sub> ...KL<sub>n</sub> thì thủ tục Resolution2


</div>
<span class='text_page_counter'>(159)</span><div class='page_container' data-page=159>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 159

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



 <sub>VD: Biết rằng: Ngón tay là bộ phận của bàn tay, bàn tay là bộ phận của cánh tay, cánh tay là </sub>


bộ phận của cơ thể. CMR: Ngón tay là bộ phận của cơ thể.
Đặt vị từ P(x,y): “ x là bộ phận của y ”. Ta có:


P(nt,bt), P(bt,ct), P(ct,cothe).


P(x,y) có tính bắc cầu: P(x,y)  P(y,z)  P(x,z)   P(x,y)  P(y,z)  P(x,z)



CMR P(nt, cothe)


Mỗi câu được cho trên một dòng, trong mỗi dòng các dấu  được thay bởi dấu phấy:


1. P(x,z),  P(x,y), P(y,z)


2. P(nt,bt)
3. P(bt,ct)
4. P(ct,cothe)
5. P(nt, cothe)


6. P(nt,z), P(bt,z) Res(1B,2) q1 = {nt /x, bt /y}


7. P(nt,ct) Res(3,6B) q2 = {ct /z}


8. P(nt,z), P(ct,z) Res(1B,7) q3 = {nt/x, ct/y}


</div>
<span class='text_page_counter'>(160)</span><div class='page_container' data-page=160>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 160

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson



 <sub>VD: Nếu xem một ai đó đi lừa dối người khác là kẻ bịp bợm và bất kỳ ai đồng tình </sub>


với kẻ bịp bợm cũng là bịp bợm, hơn nữa trong tập thể có một người nhút nhát đồng
tình với kẻ lừa dối thì chắc chắn là có một kẻ bịp bợm tính tình nhút nhát.


</div>
<span class='text_page_counter'>(161)</span><div class='page_container' data-page=161>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 161

Chứng minh định lý nhờ logic hình thức:


Thủ tục của Robinson




Khi đó ta có:


1. LD(x), BB(x)


2. ĐT(x,y), BB(y), BB(x)


3. NN(a)
4. LD(b)
5. ĐT(a,b)


6. BB(x), NN(x)


7. BB(b) Res(1A, 4), q1 ={b/x}


8. BB(b), BB(a)Res(2A, 5), q2 ={a/x, b/y}


9. BB(a) Res(3, 6B), q3 ={a/x}


10. NN(b) Res(6A, 7), q4 ={b/x}


11. BB(b) Res(8B, 9),


</div>
<span class='text_page_counter'>(162)</span><div class='page_container' data-page=162>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 162

Áp dụng phép tính vị từ trong



giải quyết vấn đề



 <sub>Phần này sẽ nghiên cứu việc xác định các phép gán trị cho các biến để từ </sub>



GT<sub>1</sub>...GT<sub>m </sub> suy ra KL<sub>1</sub>...KL<sub>n</sub>.


Có hai cách giải quyết:


 <sub>Lưu lại vết các phép gán giá trị nhận được cho đến khi đưa đến mâu thuẫn.</sub>


Ta đưa vào khái niệm hợp các phép gán. Giả sử ,  là hai phép gán trị, hợp của


chúng được kí hiệu bởi o sao cho đối với mọi biểu thức P ta có: P<sub></sub><sub>o</sub><sub></sub>=(P<sub></sub>)<sub></sub>.


 <sub>VD: Giả sử Mai và Dương rất thân nhau. Đi đâu Mai và Dương cũng có nhau. Hơn </sub>


nữa ta biết rằng hiện nay Mai đang ở thư viện. Hỏi Dương đang ở đâu?
Ta đưa vào vị từ: P(x,y): x đang ở vị trí y.


Khi đó, ta có:


x P(Mai, x)P(Dương, x)


P(Mai, Thư viện).


</div>
<span class='text_page_counter'>(163)</span><div class='page_container' data-page=163>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 163

Áp dụng phép tính vị từ trong



</div>
<span class='text_page_counter'>(164)</span><div class='page_container' data-page=164>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 164


 <sub>Cải biên đồ thị lời giải</sub>


Bên cạnh biểu thức là phủ định của kết luận KL<sub>j</sub> cần chứng minh ta thêm vào phủ
định của chính nó (tức là KLj) và giữ ngun các phép hợp giải giống như ở trong


đồ thị hợp giải.


</div>
<span class='text_page_counter'>(165)</span><div class='page_container' data-page=165>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 165


<b>Một số phương pháp giải quyết vấn đề </b>


<b>khác</b>



 <sub>Phương pháp tạo - kiểm tra</sub>
 <sub>Phương pháp leo đồi</sub>


</div>
<span class='text_page_counter'>(166)</span><div class='page_container' data-page=166>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 166


</div>
<span class='text_page_counter'>(167)</span><div class='page_container' data-page=167>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 167


<b>NỘI DUNG</b>



 <sub>GIỚI THIỆU</sub>


 <sub>CẤU TRÚC CHƯƠNG TRÌNH</sub>
 <sub>ĐỐI TƯỢNG DỮ LIỆU</sub>


 <sub>CÁC KIỂU DỮ LIỆU VÀ CÁC PHÉP TOÁN</sub>
 <sub>CÁC BƯỚC XÂY DỰNG CHƯƠNG TRÌNH</sub>
 <sub>CẤU TRÚC DANH SÁCH</sub>


</div>
<span class='text_page_counter'>(168)</span><div class='page_container' data-page=168>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 168


<b>GIỚI THIỆU</b>



 <sub>Prolog là một ngôn ngữ lập trình dùng cho tính tốn </sub>


ký hiệu.


</div>
<span class='text_page_counter'>(169)</span><div class='page_container' data-page=169>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 169


<b>GIỚI THIỆU</b>



 <sub>Cho quan hệ gia đình </sub>
qua cây gia phả


 <sub>Node : đối tượng</sub>
 <sub>Cung : quan hệ</sub>
 <sub>Đặt tên quan hệ : </sub>


<b>chame</b>.


 <sub>chame(X,Y) có nghĩa </sub><i><sub>X </sub></i>


<i>là cha/mẹ của Y</i>.


<b>minh</b>


<b>hoàng</b>


<b>mai</b>


<b>lê</b> <b><sub>tâm</sub></b>


<b>lan</b>


</div>
<span class='text_page_counter'>(170)</span><div class='page_container' data-page=170>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 170



<b>GIỚI THIỆU</b>



 <sub>Thể hiện bằng Prolog</sub>


chame(minh, hoàng).
chame(mai, lan).


chame(mai, hoàng).
chame(hoàng, lê).
chame(hoàng, tâm).
chame(tâm, hạnh).


 <sub>Có 6 mệnh đề (clause)</sub>


<b>minh</b>


<b>hoàng</b>


<b>mai</b>


<b>lê</b> <b><sub>tâm</sub></b>


<b>lan</b>


</div>
<span class='text_page_counter'>(171)</span><div class='page_container' data-page=171>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 171


<b>GIỚI THIỆU</b>



 <sub>Làm được gì với đoạn chương trình trên ?</sub>



 <sub>Hỏi các câu hỏi.</sub>


 <sub>Cho phép hỏi về những quan hệ đã được thiết lập trong </sub>


chương trình.


 <sub>Loại 1 : Có hay khơng ?</sub>


 <sub>hồng </sub><b><sub>có phải </sub></b><sub>là cha/mẹ</sub> <sub>của tâm </sub><b><sub>khơng</sub></b><sub> ?</sub>
 <sub>lan </sub><b><sub>có phải </sub></b><sub>là cha/mẹ</sub> <sub>của hồng </sub><b><sub>khơng</sub></b><sub> ?</sub>


 <sub>Loại 2 : Xác định (tìm tất cả)</sub>


 <b><sub>Ai</sub></b><sub> là cha/mẹ của hạnh ?</sub>
 <b><sub>Ai</sub></b><sub> là con của mai ?</sub>


</div>
<span class='text_page_counter'>(172)</span><div class='page_container' data-page=172>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 172


<b>GIỚI THIỆU</b>



 <sub>Loại 1 : Có hay khơng ?</sub>


 <sub>hồng </sub><b><sub>có phải </sub></b><sub>là cha/mẹ</sub> <sub>của tâm </sub><b><sub>khơng</sub></b><sub> ?</sub>


 <sub>?- chame(hồng, tâm).</sub>


 <sub>lan </sub><b><sub>có phải </sub></b><sub>là cha/mẹ</sub> <sub>của hồng </sub><b><sub>khơng</sub></b><sub> ?</sub>


 <sub>?- chame(lan, hồng).</sub>



 <sub>Loại 2 : Xác định.</sub>


 <b><sub>Ai</sub></b><sub> là cha/mẹ của hạnh ?</sub>


 <sub>?-chame(X, hạnh).</sub>


 <b><sub>Ai</sub></b><sub> là con của mai ?</sub>


 <sub>?-chame(mai, X).</sub>


 <b><sub>Xác định</sub></b><sub> tất cả các cặp cha/mẹ con ?</sub>


</div>
<span class='text_page_counter'>(173)</span><div class='page_container' data-page=173>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 173


 <sub>Các đối tượng trong một quan hệ có thể là : </sub><b><sub>đối tượng cụ </sub></b>


<b>thể</b> hoặc <b>đối tượng chung</b>.


 <i><sub>hoàng</sub></i><sub>, </sub><i><sub>tâm</sub></i><sub> trong </sub><b><sub>chame(hoàng, tâm)</sub></b><sub> : đối tượng cụ thể, </sub>


gọi là <b>atom</b> (nguyên tố).


 <i><sub>X</sub></i><sub> trong </sub><b><sub>chame(X, hạnh)</sub></b><sub> hoặc </sub><i><sub>X, Y </sub></i><sub>trong </sub><b><sub>chame(X, Y)</sub></b><sub> : </sub>


đối tượng chung, gọi là <b>variable</b> (biến).


 <sub>Biến bắt đầu bằng chữ </sub><b><sub>IN HOA</sub></b><sub>.</sub>


 <sub>Nguyên tố bắt đầu bằng chữ </sub><b><sub>thường</sub></b><sub>.</sub>



</div>
<span class='text_page_counter'>(174)</span><div class='page_container' data-page=174>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 174


 <sub>Mở rộng câu hỏi:</sub>


 <sub>Ai là ông/bà của hạnh ?</sub>


 <sub>Giải quyết:</sub>


 <sub>Giả sử X là kết quả cần tìm.</sub>


 <sub>Khi đó, X là cha/mẹ của Y và Y là cha/mẹ của hạnh.</sub>


 <sub>Vậy : cần tìm X, Y thoả :</sub>


 <sub>chame (X,Y) and chame(Y, hạnh)</sub>


 <sub>Thể hiện bằng Prolog :</sub>


 <sub>?-chame(X, Y), chame(Y, hạnh)</sub>


 <sub>Tương tự : </sub><i><sub>Ai là cháu của mai ?</sub></i>


</div>
<span class='text_page_counter'>(175)</span><div class='page_container' data-page=175>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 175


 <sub>Chương trình bao gồm các mệnh đề (clause), kết </sub>
thúc bằng dấu chấm (<b>.</b>).


 <sub>Tham số của quan hệ có thể là : đối tượng đã biết </sub>
(nguyên tố, atom) hoặc đối tượng chung (biến,



variable).


 <sub>Biến bắt đầu bằng chữ in hoa.</sub>


 <sub>Các câu hỏi có thể có một hoặc nhiều mục tiêu </sub>
(goal).


 <sub>Các câu hỏi có thể có dạng (1): có/khơng (thoả hay </sub>
khơng thoả) ; (2) tìm tất cả (nếu thoả).


</div>
<span class='text_page_counter'>(176)</span><div class='page_container' data-page=176>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 176


 <sub>Với đoạn chương trình bên </sub>


cạnh, hãy trả lời :


 <sub>?-chame(hoàng,X).</sub>
 <sub>?-chame(X, lan).</sub>


 <sub>?-chame(minh, X), chame(X, </sub>


tâm).


 <sub>?-chame(minh,X), </sub>


chame(X,Y), chame(Y, hạnh)


 <sub>Viết dạng Prolog các câu hỏi </sub>



sau:


 <sub>Ai là cha/mẹ của tâm ?</sub>
 <sub>tâm có con khơng ?</sub>
 <sub>hạnh có con khơng ?</sub>
 <sub>Ai là ơng/bà của lê ?</sub>


 <sub>Đoạn chương trình:</sub>


</div>
<span class='text_page_counter'>(177)</span><div class='page_container' data-page=177>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 177


 <sub>Bổ sung 2 quan hệ mới : </sub><b><sub>nam</sub></b><sub>, </sub><b><sub>nu</sub></b><sub>.</sub>


 <sub>Ví dụ :</sub>


 <sub>nam(minh).</sub>
 <sub>nam(hoàng).</sub>
 <sub>nu(lan).</sub>


 <sub>nu(mai).</sub>
 <sub>...</sub>


 <sub>Quan hệ </sub><b><sub>nam</sub></b><sub>, </sub><b><sub>nu</sub></b><sub> là các quan hệ một ngơi. (Chỉ </sub>
thuộc tính của đối tượng)


 <sub>Quan hệ </sub><b><sub>chame</sub></b><sub> là quan hệ hai ngôi. (Chỉ mối liên </sub>
hệ giữa các đối tượng)


</div>
<span class='text_page_counter'>(178)</span><div class='page_container' data-page=178>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 178



 <sub>Bổ sung thêm quan hệ </sub><b><sub>con</sub></b><sub>(X,Y). (X là con của Y). </sub>
(Quan hệ ngược của quan hệ <b>chame</b>).


 <sub>Ta biết được</sub>


Với mọi X, Y


Y là con của X nếu X là cha/mẹ của Y.


 <sub>Có thể định nghĩa quan hệ </sub><b><sub>con</sub></b><sub> dựa trên quan hệ </sub>


<b>chame</b>.


 <sub>con(Y,X) :- chame(X,Y).</sub>


 <sub>Mệnh đề trên được gọi là </sub><b><sub>quy tắc </sub></b><sub>(</sub><b><sub>rule</sub></b><sub>).</sub>


</div>
<span class='text_page_counter'>(179)</span><div class='page_container' data-page=179>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 179


 <sub>Quy tắc chỉ </sub><b><sub>đúng</sub></b><sub> khi điều kiện được </sub><b><sub>thoả</sub></b><sub>.</sub>
 <sub>1 quy tắc có 2 phần :</sub>


 <sub>Phần điều kiện (hay là </sub><b><sub>thân</sub></b><sub> quy tắc (</sub><b><sub>body</sub></b><sub>))</sub>
 <sub>Phần kết luận (hay là </sub><b><sub>đầu</sub></b><sub> quy tắc (</sub><b><sub>head</sub></b><sub>))</sub>


 <sub>Ví dụ :</sub>


 <sub>con(Y,X) :- chame(X,Y).</sub>


<b>Kết luận</b> <b>Điều kiện</b>



</div>
<span class='text_page_counter'>(180)</span><div class='page_container' data-page=180>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 180


 <sub>Giả sử có câu hỏi : ?-con(tâm, hồng)</sub>


 <sub>Prolog giải quyết ra sao ?</sub>


 <sub>1) Tìm kiếm sự kiện </sub><b><sub>con(tâm, hồng)</sub></b><sub> ? </sub>


 <sub>(Khơng có)</sub>


 <sub>2) Áp dụng quy tắc </sub><b><sub>con(X,Y)</sub></b><sub>.</sub>


 <sub>Khởi tạo X = tâm, Y = hoàng.</sub>


 <sub>Sau khởi tạo, ta có quy tắc đặc biệt :</sub>


 <sub>con(tâm, hồng):- chame(hoàng, tâm)</sub>


 <sub>Phần điều kiện trở thành chame(hoàng,tâm).</sub>


 <sub>Nếu phần điều kiện thoả thì phần kết luận đúng.</sub>


 <b><sub>chame(hồng, tâm)</sub></b><sub> là một sự kiện nên có thể kết luận </sub><b><sub>con(tâm, </sub></b>


<b>hoàng)</b> đúng.


</div>
<span class='text_page_counter'>(181)</span><div class='page_container' data-page=181>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 181


 <sub>Bổ sung các quan hệ mới : </sub><b><sub>cha</sub></b><sub>, </sub>



<b>me</b>, <b>chiemgai</b>, <b>ongba</b>.
 <sub>Quan hệ </sub><b><sub>cha</sub></b>


Với mọi X, Y


X là cha của Y nếu X là cha/mẹ của
Y <b>và</b> X thuộc phái nam.


 <sub>cha(X,Y) :- chame(X,Y), </sub>
nam(X).


<b>X</b>


<b>Y</b>
<b>chame</b>


<b>nam</b>


<b>cha</b>


</div>
<span class='text_page_counter'>(182)</span><div class='page_container' data-page=182>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 182


 <sub>Chương trình Prolog được mở rộng bằng cách thêm các mệnh đề </sub>


mới.


 <sub>Mệnh đề gồm phần đầu (head) và phần thân (body). Dấu </sub><b><sub>,</sub></b><sub> trong </sub>


phần thân chỉ phép <b>và</b>.



 <sub>Phân loại mệnh đề : sự kiện, quy tắc, câu hỏi</sub>
 <b><sub>Sự kiện</sub></b><sub> luôn đúng .</sub>


 <b><sub>Quy tắc</sub></b><sub> chỉ đúng khi điều kiện được thoả.</sub>
 <sub>Người sử dụng hỏi chương trình qua </sub><b><sub>câu hỏi</sub></b><sub>.</sub>


 <sub>Sự kiện chỉ gồm phần đầu. Câu hỏi chỉ có phần thân. Quy tắc có cả </sub>


phần đầu lẫn phần thân.


 <sub>Biến có thể thay thế bằng một đối tượng cụ thể. Ta nói biến được </sub>


khởi tạo.


</div>
<span class='text_page_counter'>(183)</span><div class='page_container' data-page=183>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 183


<b>CẤU TRÚC CHƯƠNG TRÌNH</b>



 <sub>Chương trình Prolog thường gồm các phần :</sub>


<b>domains</b>


...


<b>predicates</b>


...


<b>clauses</b>



...


<b>goal</b>


...


</div>
<span class='text_page_counter'>(184)</span><div class='page_container' data-page=184>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 184


 <sub>domains : phần định nghĩa các kiểu dữ liệu</sub>


 <sub>predicates : phần khai báo các quan hệ (vị từ)</sub>


 <sub>clauses : phần thể hiện các mệnh đề (có thể) của vị từ</sub>
 <sub>goal : đích cần đạt được của chương trình. </sub>


 <sub>goal được viết trong chương trình được gọi là internal goal.</sub>


 <sub>goal thực hiện lúc thực thi (cửa sổ Run) được gọi là external goal.</sub>


 <sub>Các ghi chú trong Prolog nằm trong cặp /* */ hoặc sau dấu </sub>


%


 <sub>Trong SWI-Prolog, người sử dụng không cần khai báo kiểu </sub>


dữ liệu, cấu trúc chương trình khơng cần các từ khóa trên.


</div>
<span class='text_page_counter'>(185)</span><div class='page_container' data-page=185>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 185



<b>ĐỐI TƯỢNG DỮ LIỆU</b>



 <sub>Gồm các loại :</sub>


 <sub>Nguyên tố (atoms)</sub>


 <sub>Số (numbers)</sub>


 <sub>Biến (variables)</sub>


 <sub>Cấu trúc (structures)</sub>


<b>Đối tượng dữ liệu</b>


<b>Đối tượng cơ bản</b> <b><sub>Cấu trúc</sub></b>


<b>Hằng số</b> <b>Biến</b>


</div>
<span class='text_page_counter'>(186)</span><div class='page_container' data-page=186>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 186


 <sub>Là chuỗi các ký tự</sub>


 <sub>Chữ hoa từ A đến Z</sub>


 <sub>Chữ thường từ a đến z</sub>


 <sub>Chữ số 0,..,9</sub>


 <sub>Ký tự đặc biệt : + - * / < > = : . & _ ~</sub>



 <sub>Dựa trên quy tắc</sub>


 <sub>Chuỗi các chữ cái, chữ số, dấu _ ,</sub><b><sub>bắt đầu bằng một chữ </sub></b>


<b>thường</b> (VD : anna, x25, x__y, alpha_beta,...)


 <sub>Chuỗi các ký tự đặc biệt (VD : <---> , === > , ...)</sub>


 <sub>Chuỗi các ký tự nằm trong cặp dấu ‘ ’ (VD : ‘Hoàng’, </sub>


‘Hoa’,...)


</div>
<span class='text_page_counter'>(187)</span><div class='page_container' data-page=187>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 187


 <sub>Gồm số nguyên và số thực</sub>
 <sub>Ví dụ :</sub>


Số nguyên : -3, -100, 1, 5 ,2, ...
Số thực : 1.25, -3.25, ...


 <sub>Số thực ít được sử dụng trong lập trình Prolog</sub>


</div>
<span class='text_page_counter'>(188)</span><div class='page_container' data-page=188>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 188


 <sub>Biến</sub>


 <sub>Chuỗi các chữ cái, chữ số và dấu _, </sub><b><sub>bắt đầu bằng một </sub></b>


<b>chữ viết HOA hoặc dấu _.</b>



 <sub>Ví dụ : X, Result, Object2, _23</sub>


 <sub>Biến vô danh</sub>


 <sub>Ký hiệu : _</sub>


 <sub>Nếu biến chỉ xuất hiện một lần, không cần đặt tên. Sử </sub>


dụng biến vơ danh


 <sub>Ví dụ : </sub>


haschild(X) :- parent(X,Y). %Biến Y chỉ xuất hiện một lần
haschild(X) :- parent(X,_). %Thay thế bằng biến vô danh


</div>
<span class='text_page_counter'>(189)</span><div class='page_container' data-page=189>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 189


<b>ĐỐI TƯỢNG DỮ LIỆU </b>

<b>– Cấu trúc</b>



 <sub>Các đối tượng có nhiều thành phần.</sub>
 <sub>Ví dụ :</sub>


 <sub>Đối tượng </sub><b><sub>date</sub></b><sub> có thể xem là một cấu trúc với các thành </sub>


phần : day, month, year.


 <sub>Thể hiện bằng Prolog: </sub>
 <sub>Ví dụ :</sub>


 <sub>date(1,may, 2005)</sub> <b>date</b>



</div>
<span class='text_page_counter'>(190)</span><div class='page_container' data-page=190>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 190


 <sub>Term (hạng)</sub>


 <sub>Tất cả các đối tượng dữ liệu trong Prolog được gọi là </sub>


term.


 <sub>Ví dụ : thangnam, ngay(1, thangchin,2005) là các term.</sub>


 <sub>So khớp (matching)</sub>


 <sub>Là thao tác quan trọng nhất trên các term.</sub>


 <sub>Là quá trình kiểm tra xem hai term có khớp nhau hay </sub>


khơng.


</div>
<span class='text_page_counter'>(191)</span><div class='page_container' data-page=191>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 191


 <sub>Hai term được xem là khớp (match) nhau nếu:</sub>


 <sub>Giống nhau hoàn toàn</sub>


 <sub>Các biến trong cả hai term được khởi tạo thành các đối </sub>


tượng sao cho sau khi thay thế chúng bằng các đối tượng
này thì chúng giống nhau hồn tồn.



 <sub>Ví dụ</sub>


 <sub>Cho hai term date(D,M, 2005) và date(D1, thangchin, </sub>


Y1) được coi là khớp nhau


 <sub>Ta có : D khởi tạo thành D1, M khởi tạo thành thangchin, </sub>


còn Y1 khởi tạo thành 2005.


</div>
<span class='text_page_counter'>(192)</span><div class='page_container' data-page=192>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 192


 <sub>Xác định hai term có khớp nhau hay khơng?</sub>


 <sub>Nếu S, T là hằng số thì chúng khớp nhau khi chúng cùng </sub>


một đối tượng.


 <sub>Nếu S là biến và T bất kỳ. Nếu chúng khớp nhau thì S </sub>


được khởi tạo thành T và ngược lại.


 <sub>Nếu S và T là cấu trúc. Chúng khớp nhau khi tất cả các </sub>


thành phần trong S và T khớp nhau.


</div>
<span class='text_page_counter'>(193)</span><div class='page_container' data-page=193>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 193


<b>KIỂU DỮ LIỆU & PHÉP TOÁN</b>




KIỂU DỮ LIỆU


 <sub>char : ký tự ở giữa cặp dấu ‘’.</sub>


 <sub>Ví dụ : ‘a’, ‘b’, ‘1’, ...</sub>


 <sub>integer : số nguyên (từ -32768 đến 32767)</sub>


 <sub>Ví dụ : 200, -521, 322, ...</sub>


 <sub>real : số thực</sub>


 <sub>Ví dụ : 25.18, -78.3e+21, 25.5e-20, ...</sub>


 <sub>string : chuỗi dài tối đa 64KB, nằm cặp dấu “”.</sub>


 <sub>Ví dụ : “chào các bạn”, “Prolog”</sub>


 <sub>symbol : chuỗi dài tối đa 80 ký tự, có thể khơng có dấu “”.</sub>


</div>
<span class='text_page_counter'>(194)</span><div class='page_container' data-page=194>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 194


<b>KIỂU DỮ LIỆU & PHÉP TỐN</b>



PHÉP TỐN TRONG SWI-PROLOG
 <sub>Phép tốn số học : +, -, *, /, mod, //, **</sub>


 <sub>Biểu thức số học: được xây dựng nhờ vị từ </sub><b><sub>is</sub></b>
Number <b>is</b> Expr



Number: đối tượng cơ bản


Expr: biểu thức số học được xây dựng từ các phép
toán số học, các số và các biến.


 <sub>Phép so sánh số học : >, <, =:=, >=, <=, =\= </sub>


</div>
<span class='text_page_counter'>(195)</span><div class='page_container' data-page=195>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 195


<b>KIỂU DỮ LIỆU & PHÉP TỐN</b>



Trong SWI-Prolog, có các vị từ xác định kiểu dữ liệu:


 <sub>var(V)</sub> <sub>V là một biến?</sub>


 <sub>nonvar(X)</sub> <sub>X không phải là một biến?</sub>


 <sub>atom(A)</sub> <sub>A là một nguyên tố?</sub>


 <sub>integer(I)</sub> <sub>I là một số nguyên?</sub>


 <sub>float(R)</sub> <sub>R là một số thực(dấu chấm động)?</sub>


 <sub>number(N)</sub> <sub>N là một số (nguyên hoặc thực)?</sub>


 <sub>atomic(A)</sub> <sub>A là một nguyên tố hoặc một số?</sub>


</div>
<span class='text_page_counter'>(196)</span><div class='page_container' data-page=196>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 196


 <sub>Tìm USCLN của 2 số a,b >0</sub>


Sử dụng thuật toán Euclide


 <sub>USCLN của X và X là X.</sub>


 <sub>USCLN của X và Y là USCLN của X – Y và Y nếu </sub>


X>Y.


 <sub>USCLN của X và Y là USCLN của Y-X và X nếu X<Y.</sub>


</div>
<span class='text_page_counter'>(197)</span><div class='page_container' data-page=197>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 197


<b>CÁC BƯỚC XÂY DỰNG </b>



(1) Đặc tả bài toán


=> xác định mục tiêu cần giải P


(2) Biểu diễn bài toán dưới dạng chuẩn
=> P <sub>i</sub>(<sub>j</sub>q<sub>ij</sub>).


</div>
<span class='text_page_counter'>(198)</span><div class='page_container' data-page=198>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 198


(1) uscln(X,Y,Z)  Z là USCLN của X,Y.


(2) uscln(X,Y,Z) 


[(X>Y)  (T=X-Y)  uscln(T,Y,Z)]


 <sub>[(X<Y) </sub><sub></sub><sub> (T=Y-X) </sub><sub></sub><sub> uscln(X,T,Z)] </sub>


 <sub>[(Y=X) </sub><sub></sub><sub> (Z=X)].</sub>


(3) uscln(X,Y,Z)  (X>Y)  (T=X-Y)  uscln(T,Y,Z).


uscln(X,Y,Z)  (X<Y)  uscln(X,T,Z)  (T=Y-X).


uscln(X,Y,Z)  (Y=X)  (Z=X).


</div>
<span class='text_page_counter'>(199)</span><div class='page_container' data-page=199>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 199


(4) Chuyển sang Prolog


uscln (X,Y,Z):-X>Y, T is X-Y, uscln(T,Y,Z).
uscln (X,Y,Z):-X<Y, T is Y-X, uscln(X,T,Z) .
uscln (X,Y,Z):-X=Y, Z=X.


 <sub>Rút gọn và chỉnh sửa</sub>


uscln (X,X,X).


uscln (X,Y,Z):-X>Y, is(T, X-Y), uscln(T,Y,Z).
uscln (X,Y,Z):-X<Y, is(T, Y-X), uscln(X,T,Z).


Thỏa mãn các ràng buộc?


</div>
<span class='text_page_counter'>(200)</span><div class='page_container' data-page=200>

Nguyễn Ngọc Hiếu - Các Bài giảng Trí tuệ Nhân tạo 200


 <sub>Tính giai thừa của số N ?</sub>


</div>


<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×