Bài giảng Trí tuệ nhân tạo - ThS. Nguyễn Thị Thúy Loan
Trang 1TRÍ TUỆ NHÂN TẠO
ThS Nguyễn Thị Thúy Loan
Cách đánh giá
Thực hành: 30%
Bài tập: 20%
Lý thuyết: 50%
Tài liệu tham khảo
[1] Bài giảng của Nguyễn Thị Thúy Loan
[2] Trí tuệ nhân tạo, Đỗ Trung Tuấn, NXB Giáo
dục, 1998.
[3] Bạch Hưng Khang – Hoàng Kiếm, Trí tuệ nhân
tạo, NXB KHKT - 1989.
[4] Lập trình C cho TTNT, 3C soft (dịch), NXB Đại
học và Trung học chuyên nghiệp Hà nội –
Các thuật giải tô màu đồ thị.
Các thuật giải tìm kiếm trên đồ thị.
Biểu diễn và xử lý tri thức.
Phân lớp.
Trang 2ThS Nguyễn Thị Thúy Loan
có nối với đỉnh j và 0 nếu ngược lại
Bài toán đặt ra là làm thế nào để tô màu đồthị sao cho không tồn tại hai đỉnh có quan hệvới nhau được tô chung một màu với số màu cần tô là ít nhất?
h e
Ví dụ
8
Thuật giải tô màu “Tối ưu”
Bước 1: [ Tô màu ] Tô màu i (i bắt đầu xét từ 1) cho đỉnh
Bước 3: Lặp lại bước 1 cho đến khi tất cả các đỉnh đều
Trang 36/8/2010 Nguyễn Thị Thúy Loan 9
9
Minh họa
9
d b
p
c e h
aa
d p
h e
Trang 46/8/2010 Nguyễn Thị Thúy Loan 13
Lặp lại bước 2 cho đến khi tất cả các đỉnh
đều được tô màu
DE i=5 5
Lặp lại bước 2 cho đến khi tất cả các đỉnh đều
được tô màu
Ví dụ
Cho ma trận bên
Trang 56/8/2010 Nguyễn Thị Thúy Loan 17
17
Ví dụ
Một cuộc hội thảo có 9 chủ đề a, b, c, d, e, f, g,
h, i biết rằng các chủ đề sau không được phép
diễn ra trong cùng một buổi: ac, bde, adg, cdf,
Hãy sắp xếp lịch thi sao cho số buổi thi cần sắp
Ref: http://www.cs.cmu.edu/~awm/tutorials
Phần 1
Trang 66/8/2010 Nguyễn Thị Thúy Loan 21
Nội dung
Bài toán tìm kiếm
Tìm kiếm Theo chiều Rộng
Tìm kiếm Theo chiều Sâu
Bài toán tìm kiếm
Làm sao đi từ S đến G? Số bước đi ít nhất có thể
là bao nhiêu? Đi qua các đỉnh nào?
S
G
d b
Bài toán tìm kiếm
Một bài toán tìm kiếm gồm năm thành phần:
Bài toán tìm kiếm
succs: Q P(Q) là một hàm nhận một trạng
thái làm đầu vào và trả về kết quả là một tập
trạng thái succs(s) nghĩa là “tập các trạng
thái có thể đến từ s trong một bước”
cost: Q Q R là một hàm nhận hai trạng thái s và s’ làm đầu vào Nó trả về chi phí một bước của việc di chuyển từ s đến s’
Hàm chi phí chỉ được xác định khi và chỉ khi
s’ là trạng thái con của s, nghĩa là s’
succs(s)
Trang 7c e h
a
f r
cost(s,s’) = 1 cho tất cả các biến đổi
START
GOAL
d b
c e h
a
f r
Bài toán tìm kiếm
Các bài toán tìm kiếm
Các bài toán tìm kiếm
Lập lịch
8-Hậu
Gì nữa? Giải toán
Trang 86/8/2010 Nguyễn Thị Thúy Loan 29
Tìm kiếm theo chiều rộng
(BFS – Breadth First Search)
START
GOAL
d b
p
q
c e
h
a
f
r
Tìm kiếm theo chiều rộng (BFS – Breadth First Search)
Gán nhãn tất cả trạng thái có thể đi đến được
từ S trong 1 bước
Sau đó gán nhãn tất cả trạng thái có thể đi đến được từ S trong 2 bước nhưng không thể đi đến được trong ít hơn 2 bước
Tìm kiếm theo chiều rộng
(BFS – Breadth First Search)
Sau đó gán nhãn tất cả trạng thái có thể đi đến
được từ S trong 3 bước nhưng không thể đi
đến được trong ít hơn 3 bước
v.v… cho đến khi đạt được trạng thái G hoặc
không còn đi tiếp được nữa
Tìm kiếm theo chiều rộng
START
GOAL
d b
Trang 96/8/2010 Nguyễn Thị Thúy Loan 33
START
GOAL
d b
p
q
c e
Tìm kiếm theo chiều rộng
START
GOAL
d b
1 bước từ start
2 bước từ start
Tìm kiếm theo chiều rộng
START
GOAL
d b
3 bước từ start
Tìm kiếm theo chiều rộng
START
GOAL
d b
1 bước từ start
2 bước từ start
3 bước từ start 4 bước từstart
Tìm kiếm theo chiều rộng
Trang 106/8/2010 Nguyễn Thị Thúy Loan 37
Ghi nhớ đường đi!
START
GOAL
d b
c e h
a
f r
Ghi nhớ đường đi!
Khi gán nhãn một trạng thái, ghi nhận trạng thái trước đó Ghi nhận này được gọi là con trỏ quay lui Lịch sử trước đó được dùng để phát sinh con
đường lời giải, khi đã tìm được đích:
“Tôi đã đến đích Tôi thấy mình đã ở f trước đó
Và tôi đã ở r trước khi tới f Và…
… do đó con đường lời giải là S e r f
G”
Con trỏ quay lui
START
GOAL
d b
4 bước từ start
START
GOAL
d b
1 bước từ start
2 bước từ start
3 bước từ start
4 bước từ start
Con trỏ quay lui
Trang 116/8/2010 Nguyễn Thị Thúy Loan 41
Tìm kiếm theo chiều rộng
Với bất kỳ trạng thái s nào đã gán nhãn, ghi nhớ:
previous(s) là trạng thái trước đó trên đường đi
ngắn nhất từ trạng thái START đến s.
Trong vòng lặp thứ k của thuật toán ta bắt đầu
với V k được định nghĩa là tập các trạng thái mà
từ trạng thái START đi đến có đúng k bước
Sau đó, trong suốt vòng lặp, ta sẽ tính V k+1, được định nghĩa là tập các trạng thái mà từ
trạng thái START đi đến có đúng k+1 bước
Chúng ta bắt đầu với k = 0, V 0 = {START}
và định nghĩa, previous(START) = NULL
Sau đó ta sẽ thêm vào những trạng thái một
bước từ START vào V 1 Và tiếp tục
Tìm kiếm theo chiều rộng
START
GOAL
d b
Trang 126/8/2010 Nguyễn Thị Thúy Loan 45
START
GOAL
d b
ách thuận tiện
•Có thể nghĩra một cách khác cho BFS?
•Có thể không cần phải lưu trữ những
gì trước đó phải lưu?
BFS
Trang 136/8/2010 Nguyễn Thị Thúy Loan 49
Chi phí chuyển đổi
START
GOAL
d b
1
2
3
5 3
4 4
15 1
5
5 2
Lưu ý rằng BFS tìm đường đi ngắn nhất theo
số bước Nó không tìm thấy đường đi có chi phí thấp nhất
Bây giờ chúng ta xem xét một thuật toán tìm đường đi với chi phí thấp nhất Trong vòng
lặp thứ k, với bất kỳ trạng thái S nào, đặt g(s)
là chi phí đường đi có chi phí nhỏ nhất đến S trong k bước hay ít hơn.
Chi phí chuyển đổi
Tìm kiếm với chi phí đồng nhất
(UCS – Uniform Cost Search)
Một cách tiếp cận BFS đơn giản về mặt khái
niệm khi có chi phí chuyển đổi
Dùng hàng đợi ưu tiên
Hàng đợi ưu tiên
Một hàng đợi ưu tiên là một cấu trúc dữ liệu trong
đó ta có thể thêm và lấy các cặp (thing, value) với các thao tác sau:
Init-PriQueue(PQ) khởi tạo PQ rỗng.
Insert-PriQueue(PQ, thing, value) thêm (thing, value) vào hàng đợi.
Pop-least(PQ) trả về cặp (thing, value) với giá trị
thấp nhất, và loại bỏ nó khỏi hàng đợi.
Hàng đợi ưu tiên có thể được cài đặt theo một cách sao cho chi phí của các toán tửthêm vào và lấy ra là:
Rất nhỏ (dù không tuyệt đối)
O(log(số mục trong hàng đợi ưu tiên))
Trang 146/8/2010 Nguyễn Thị Thúy Loan 53
UCS
Một cách tiếp cận BFS đơn giản về mặt khái
niệm khi có chi phí chuyển đổi
Dùng hàng đợi ưu tiên
PQ = Tập trạng thái đã được mở
Độ ưu tiên của trạng thái s là g(s) = chi phí đến
s sử dụng đường đi được cho bởi con trỏ quay
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
Trang 152
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
Trang 162
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
Trang 172
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
Trang 182
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
1
2
3
5 3
4 4
15 1
c e h
a
f r
Chún
g ta duyệt câ
y tìm kiếm
với BF
S the
o thứ
tựnào?
Trang 19d b
c e h
a
f r
Biểu diễn cây tìm
d b
c e h
a
f r
Biểu diễn cây tìm
kiếm
START
GOAL
d b
c e h
a
f r
Biểu diễn cây tìm
GOAL
d b
c e h
a
f r
Là đích, dừng
Biểu diễn cây tìm
kiếm
Trang 20Tìm kiếm theo chiều sâu
Một thay thế cho BFS Luôn mở từ node vừa mới
mở nhất, nếu nó có bất kỳ node con nào chưa thử
Ngược lại quay lại node trước đó trên đường đi
START
GOAL
d b
p
q
c e
1
2
3
5 3
4 4
15 1
5 5 2
DFS trên thực tế
START
START d START d b START d b a START d c START d c a START d e START d e r START d e r f START d e r f c START d e r f c a START d e r f
GOAL
START
GOAL
d b
p
q
c e
h
a
f
r
Duyệt cây tìm kiếm DFS
Thứ tự mà trong đó các node của cây tìm kiếm
Trang 21ThS Nguyễn Thị Thúy Loan
Thuật giải min – max
Thuật giải tìm kiếm với tri
thức bổ sung
1 Mọi đỉnh n, mọi hàm g đều ẩn
o Mở đỉnh S0
o Gán g(S0) = 0
2 Chọn đỉnh mở với hàm g là nhỏ nhất vàgọi là đỉnh n
o Nếu u là đích thì đường đi từ S0 u là đường đi ngắn nhất
Trang 226/8/2010 Nguyễn Thị Thúy Loan 85
o Nếu tồn tại nhiều hơn một đỉnh n có hàm g
là nhỏ nhất thì ta kiểm tra xem trong đó có
đỉnh nào là đích hay không, nếu có dừng
Nếu không thì chọn ngẫu nhiên 1 đỉnh gọi
là đỉnh u
o Nếu không tồn tại đỉnh mở tương ứng thì
cây biểu diễn vấn đề không có đường đi
ngắn nhất đến đích Dừng lại
AT (Algorithm for Tree Search)
3 Đóng n và mở mọi đỉnh sau n (có cùng hướng từ u đến)
o đỉnh S sau n:
o G(s) = g(u) + giá thành (u s)// cost(u,s)
4 Lặp lại bước 2
AT (Algorithm for Tree Search)
H F
4 1
Sử dụng tri thức bổ sung ước lượng h(S0)F(S0) = h(S0)
Trang 236/8/2010 Nguyễn Thị Thúy Loan 89
Thuật giải AKT
B2: Chọn đỉnh mở tương ứng với hàm f là
nhỏ nhất và gọi đỉnh này là đỉnh n
Nếu n là đích thì đường đi từ S0 n là
đường đi ngắn nhất đến đích nên dừng
(thành công)
Nếu không tồn tại đỉnh mở tương ứng nào
thì cây biểu diễn vấn đề không có đường
đi đến đích nên dừng (thất bại)
B3: Đóng đỉnh n và mọi đỉnh sau n (đỉnh sau
Trang 246/8/2010 Nguyễn Thị Thúy Loan 93
Sử dụng tri thức bổ sung ước lượng h(S0)f(S0) = h(S0)
O = {S0}
Trang 256/8/2010 Nguyễn Thị Thúy Loan 97
Thuật giải A*
B2: Chọn đỉnh trong O với hàm f là n hỏ
nhất và gọi là đỉnh n
Nếu n là đích thì đường đi từ S0 n là
đường đi ngắn nhất đến đích nên dừng
(thành công)
Nếu không tồn tại đỉnh mở tương ứng nào
thì cây biểu diễn vấn đề không có đường
đi đến đích nên dừng (thất bại)
đỉnh S đã có trong CNếu fmới(S) < fcũ(S) thì
O = O + {S}
C = C – {S}
B4: Quay lại B2
Trang 26Nếu s’ chưa gán nhãn hoặc g(s’) + h(s’) < f(s’)
f (s’) = g(s’) + h(s’) Insert-
PriQueue(O,s’,f(s’)) cuối nếu
cuối Cuối while
Trang 27Trong đó Số lần ít nhất phải di chuyển
giá trị i ở cấu hình a theo chiều ngang/ dọc về
đúng vị trí của giá trị i ở cấu hình b
) , ( ] 8 , 1 [
b i
a i i
Bài toán taci
hình sau (hg+1
) theo h của cấu hình trước (
hg)?
Trang 28hình sau (hg+1
) theo h của cấu hình trước (
hg)?
Bài toán đong sữa
1000L sữa
h(x,y) = (x+y) mod 3
Thuật giải hướng đích cho bài toán tháp hà nội
Gọi n là số đĩa cần di chuyển từ cột A sang cột
C với cột B làm trung gian Chi tiết thuật giải như sau:
Trang 296/8/2010 Nguyễn Thị Thúy Loan 113
Thuật giải hướng đích(N=4)
Bài toán người bán hàng (TSP)
Bài toán: Một người bán hàng muốn đi qua n
thành phố, mỗi thành phố đúng 1 lần và quay
về thành phố xuất phát u sao cho chi phí là
thấp nhất (Gọi Cij là chi phí đi từ thành phố i
đến thành phố j)
Bài toán người bán hàng (TSP)
Cách giải quyết bài toán: Bài toán chính là tìm chu trình Hamilton với chi phí thấp nhất, có thể
sử dụng đệ qui phi tuyến để giải quyết
Kết quả tối ưu nhưng độ phức tạp cao
Một cách giải quyết gần đúng là sử dụng phương pháp tham lam Cụ thể là thuật giải GTS (Greedy Traveling Salesman)
Trang 306/8/2010 Nguyễn Thị Thúy Loan 117
oCho k chạy từ 1 đến n – 1 qua bước 3
Thuật giải GTS1
Bước 3: [Tìm cạnh có chi phí thấp nhất]Tìm (v,w) là cạnh có chi phí thấp nhất từ v đến các đỉnh chưa đi qua w:
Cho đồ thị như sau:
a.Tìm hành trình tốt nhất và chi phí tương ứng theo
thuật giải GTS1 với thành phố xuất phát là A
b.Câu hỏi tương tự câu a nhưng thành phố xuất
phát là C Có nhận xét gì về hai kết quả trên?
v = D
Bước 3 với k = 2: w =ECOST = 30+50
TOUR = {(A,D), (D,E)}
v = E
Trang 316/8/2010 Nguyễn Thị Thúy Loan 121
D
30
E 50
F 50
COST = 280 + 200 = 480 TOUR = {(A,D), (D,E), (E,C), (C,B),(B,F), (F,A)}
Đầu vào: Ma trận chi phí C, mảng V = {v1,
v2, …, vp} chứa p đỉnh xuất phát
Đầu ra: Hành trình tốt nhất và chi phí tương
ứng với p đỉnh xuất phát trên
Thuật giải GTS2
Chia nhóm thảo luận cách giải quyết!
Thuật giải GTS2
Trang 326/8/2010 Nguyễn Thị Thúy Loan 125
Thuật giải MIN – MAX
Trong các trò chơi đối kháng, người chơi (A) luôn muốn cực đại hóa (max) cơ hội thắng của mình và cực tiểu hóa (min) cơ hội thắng của đối phương (B)
Gọi f là hàm mục tiêu (khả năng thắng của một nước đi), khi đó A luôn muốn f(A) là cực đại còn f(B) là cực tiểu Như vậy, vấn đề xác định hàm f là quan trọng nhất trong các bài toán sửdụng min – max
Bài toán mã đi tuần
Một con mã xuất phát từ một điểm bất kì trên
bàn cờ vua có kích thước nn Làm thế nào
để mã có thể đi qua tất cả các ô của bàn cờ,
mỗi ô đúng 1 lần?
Cách giải quyết: Sử dụng đệ qui phi tuyến
Cách này sẽ khó thực hiện được nếu n lớn
Có thể sử dụng min – max để giải quyết bài
toán
f(A) = Số nước đi kế tiếp có thể có khi mã đang ở vị trí A.
Tiêu chí chọn lựa: chọn nước đi kế tiếp (N) của quân mã sao cho f(N) đạt min.
Chọn lựa trên
có hàm ý gì?
Bài toán mã đi tuần
Trang 336/8/2010 Nguyễn Thị Thúy Loan 129
z
5
7 7 3
Bài toán mã đi tuần
z
5
7 7 3
5
3
7 6 5
3
3 7 7
Bài toán mã đi tuần
Làm thế nào để đặt n quân Hậu trên bàn cờ
vua có kích thước nn sao cho chúng không
ăn nhau?
Cách giải quyết: Sử dụng đệ qui phi tuyến
Cách này sẽ khó thực hiện được nếu n lớn
Có thể sử dụng min – max để giải quyết bài
toán
Bài toán tám quân hậu
f(A) = Số ô còn trống trên bàn cờ khi đã đặt Hậu tại A.
Tiêu chí chọn lựa: chọn nước đi kế tiếp (N) của quân Hậu sao cho f(N) đạt max.
Chọn lựa trên có hàm ý gì?
Bài toán tám quân hậu
Trang 346/8/2010 Nguyễn Thị Thúy Loan 133
z
Làm thế nào đ
ể đặt các quân Hậu
ở các dòng còn lại sao cho chún
g không ăn n
hau?
Bài toán tám quân hậu
Trang 356/8/2010 Nguyễn Thị Thúy Loan 137
Bài toán tám quân hậu
Bài toán tám quân hậu
Bài toán tám quân hậu
Trang 366/8/2010 Nguyễn Thị Thúy Loan 141
z
i = 8
Bài toán tám quân hậu
Phân công công việc
Bài toán 1: Cho n công việc {J1, J2,…, Jn} với thời gian thực hiện là T = {t1, t2, …, tn} và m máy Hãy phân công các công việc vào các máy sao cho thời gian hoàn tất các công việc là thấp nhất
Nhận xét: đây là bài toán lập lịch với độ phức tạp cao
Cách giải quyết: dùng heuristic
Giải quyết
TH1: Giả sử ban đầu các máy đều chưa thực hiện
công việc nào và có cùng công suất
Bước 1: sắp xếp các công việc theo chiều giảm dần
của thời gian thực hiện
i := 0;
Bước 2:
i := i+1
Phân công việc i cho máy có thời gian hoàn tất
các công việc hiện hành là thấp nhất
Bước 3: lặp lại bước 2 cho đến khi i = n
Ví dụ: cho n = 8 và T = {10, 6, 16, 12, 2, 4, 2, 8}, m=3 Tính thời gian hoàn tất các công việc?Giải:
t(M1) = t(M2) = t(M3) = 0Bước 1: sắp xếp T = {16, 12, 10, 8, 6, 4, 2, 2},
i = 0Bước 2 (i = 1): phân công việc J3 có thời gian thực hiện là 16 cho máy 1 t(M1) = 16
Giải quyết
Trang 376/8/2010 Nguyễn Thị Thúy Loan 145
B3:Bước 2 (i = 2): phân công việc J4 có thời gian
thực hiện là 12 cho máy 2 t(M2) = 12
B3:Bước 2 (i = 3): phân công việc J1 có thời gian
thực hiện là 10 cho máy 3 t(M3) = 10
Bước 2 (i = 4): phân công việc J8 có thời gian
thực hiện là 8 cho máy 3 t(M3) = 10 + 8 = 18
Bước 2 (i = 5): phân công việc J2 có thời gian
thực hiện là 6 cho máy 2 t(M2) = 12 + 6 = 18
Giải quyết
Bước 2 (i = 6): phân công việc J6 có thời gian thực hiện là 4 cho máy 1 t(M1) = 16 + 4 = 20Bước 2 (i = 7): phân công việc J5 có thời gian thực hiện là 2 cho máy 2 t(M2) = 18 + 2 = 20Bước 2 (i = 8): phân công việc J7 có thời gian thực hiện là 2 cho máy 3 t(M3) = 20
Giải quyết
TH2: Giả sử ban đầu các máy đều chưa thực hiện
công việc nào và có công suất khác nhau
Thuật giải?
Ví dụ: cho n = 8 và T = {10, 6, 16, 12, 2, 4, 2,
8}, m = 3 với công suất máy 2 nhanh gấp đôi
máy 1 và máy 3 (giả sử thời gian ở trên được
tính theo máy 1) Tính thời gian hoàn tất các
công việc?
Bài toán
Có n luận văn với số trang lần lượt là {P1, P2,
…, Pn} và có m người đánh máy {N1, …, Nm}, giả sử mỗi ngày Nj đánh được pj trang Tính thời gian hoàn tất các luận văn?
Ví dụ: n = 10 và P = {60, 36, 96, 72, 24, 60,
84, 36, 84, 72}, m = 3 và p = {2, 3, 6}
Bài tập
Trang 386/8/2010 Nguyễn Thị Thúy Loan 149
Có n kiện hàng với khối lượng(kg) lần lượt
là {k1, k2, …, kn}, một container có thể
chứa tối đa P kg Hãy sắp xếp các kiện hàng
vào các container sao cho số lượng
a Các qui luật logic cơ bản
b Chứng minh tự động: Thuật giải Vương
Hạo, Robinson, hợp giải
2 Suy diễn trong logic mệnh đề
3 Biểu diễn và xử lý tri thức bằng mô hình
mạng ngữ nghĩa (Semantic network)
Logic mệnh đề