Bài giảng Cơ sở Trí tuệ nhân tạo: Chương 2 trình bày các nội dung: Thuật toán là gì? Thuật toán và thuật giải, thuật giải Heuristic & các nguyên lý, tìm kiếm chiều sâu & tìm kiếm chiều rộng, tìm kiếm leo đồi, tìm kiếm ưu tiên tối ưu, một số thuật giải cơ bản. Mời các bạn cùng tham khảo để nắm bắt các nội dung chi tiết.
Trang 2Nội dung
1 Thuật toán?
2 Thuật toán vs Thuật giải
3 Thuật giải Heuristic & các nguyên lý
4 Tìm kiếm chiều sâu & Tìm kiếm chiều rộng
5 Tìm kiếm leo đồi
6 Tìm kiếm ưu tiên tối ưu
7 Một số thuật giải cơ bản
Trang 3Thuật toán?
Là một thủ tục tính toán xác định nhận các giá trị hoặc một tập các giá trị (input) và sinh ra một vài giá trị hoặc tập giá trị (output)
Cách thức/ quy trình thực hiện hoàn thành một công việc xác định cụ thể nào đó
VD Cộng 2 số, tính tổng dãy Fibonaci, …
Trang 5Đặc trưng của Thuật toán …
[1] Tính đúng đắn *
Đảm bảo kết quả đúng sau khi thực hiện đối với
bộ dữ liệu đầu vào
[2] Tính dừng
Dừng Sau một vài bước thực hiện
Trang 6- Giải quyết trong thời gian, điều kiện cho phép
- Đáp ứng yêu cầu người dùng
[5] Tính phổ quát
Có thể giải quyết được một lớp bài toán tương tự
Trang 8Cách biểu diễn thuật toán
[1] Mô tả các bước thực hiện của thuật toán
- Ngôn ngữ tự nhiên
- Mã giả (Pseudocode): Lai ghép ngôn ngữ tự nhiên với mã của ngôn ngữ lập trình
Trang 9VD Mô tả các bước thực hiện của thuật toán tìm USCLN của hai số nguyên – NN tự nhiên
Input: Hai số nguyên a, b
Output: USCLN của a và b
Thuật toán:
Bước 1: Nếu a = b thì USCLN là a
Bước 2: Nếu a > b thì tìm USCLN của a - b và b, quay lại Bước 1
Bước 3: Nếu a < b thì tìm USCLN của a và b - a, quay lại Bước 1
Trang 10VD Mô tả các bước thực hiện của thuật toán tìm USCLN của hai số nguyên – Mã giả
Input: Hai số nguyên a, b
Output: USCLN của a và b
Trang 11Một số từ khóa mã giả cơ bản
IF <Điều kiện> THEN …ENDIF
IF <Điều kiện> THEN ELSE ENDIFWHILE <Điều kiện> DO … ENDWHILE
DO … UNTIL <Điều kiện>
DISPLAY …
RETURN …
Trang 12Cách biểu diễn thuật toán
[2] Sử dụng sơ đồ thuật toán (flowchart)
Dùng các ký hiệu hình học để biểu diễn quá trình thực hiện
Trang 14Độ phức tạp thuật toán
Đánh giá độ tốt/ xấu của thuật toán cùng loại
Đơn giản, dễ hiểu, dễ cài đặt
Thời gian thực hiện, sử dụng tài nguyên hệ thống
??? Thực tế ???
- Thuật toán hiệu quả Dễ hiểu, dễ cài đặt?
- Ước lượng số phép tính thực hiện Thời gian?
Trang 15VD Thuật toán sắp xếp mảng một chiều bằng
phương pháp đổi chỗ trực tiếp
• Input: Mảng một chiều a, kích thước N
Trong khi j<=N thực hiện
Nếu a[j]<a[i]: Hoán vị a[i], a[j];
Trang 17Thuật toán vs Thuật giải
Tiêu chuẩn: tính xác định và tính đúng đắn được mở
rộng
Tính xác định thay đổi: giải thuật đệ quy và ngẫu nhiên
Tính đúng không còn bắt buộc: cách giải gần đúng
Chấp nhận các cách giải thường cho kết quả tốt (nhưng
không phải lúc nào cũng tốt) nhưng ít phức tạp và hiệu quả
Trang 18Thuật toán vs Thuật giải
Lựa chọn?
“giải một bài toán bằng thuật toán tối ưu đòi hỏi máy
tính thực hiện nhiều năm”
hay
“một giải pháp gần tối ưu mà chỉ cần máy tính chạy
trong vài ngày hoặc vài giờ”
Trang 19Khái niệm thuật giải
Cách giải chấp nhận được nhưng không hoàn toàn đáp ứng đầy đủ các tiêu chuẩn của thuật toán thường
được gọi là các thuật giải
Dễ dàng hơn trong việc tìm kiếm phương pháp để giải quyết các bài toán được đặt ra
Trong AI thường sử dụng cách giải theo kiểu
Heuristic
Trang 20Đặc điểm thuật giải Heuristic
Thường tìm được lời giải tốt (nhưng không chắc là
lời giải tốt nhất)
Dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu chi phí thấp hơn
Thể hiện khá tự nhiên, gần gũi với cách suy nghĩ
và hành động của con người
Trang 21Các phương pháp Heuristic
1 Nguyên lý vét cạn thông minh
2 Nguyên lý tham lam (Greedy)
3 Nguyên lý thứ tự
4 Hàm Heuristic
Trang 22Các phương pháp Heuristic
[1] Nguyên lý vét cạn thông minh
Tìm cách giới hạn lại không gian tìm kiếm/ thực
hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu
[2] Nguyên lý tham lam
Chọn lựa hành động tối ưu cho phạm vi cục bộ của
từng bước trong quá trình tìm kiếm lời giải
Trang 24Các bài toán tiêu biểu
Bài toán hành trình ngắn nhất – Nguyên lý GreedyBài toán phân việc – Nguyên lý thứ tự
Bài toán Ta-canh – Hàm Heuristic
Trang 25Bài toán hành trình ngắn nhất
Travelling Salesman Problem - TSP
Cho trước một danh sách các điểm giao hàng và khoảng cách giữa chúng Nhân viên giao hàng xuất phát từ một điểm cho trước Tìm đường đi ngắn nhất sao cho tất cả các điểm phải được giao hàng và mỗi điểm chỉ viếng thăm đúng một lần
Trang 26Ý tưởng
Từ điểm xuất phát, liệt kê tất cả đường đi từ điểm xuất phát cho đến n điểm chọn đi theo con đường ngắn nhất
Khi đã đi đến một điểm, chọn đi đến điểm kế tiếp cũng theo nguyên tắc trên
Lặp lại quá trình cho đến lúc không còn điểm nào để đi
Trang 27Xuất phát từ điểm A đường đi?
Trang 28Bài toán phân việc
Một công ty nhận được hợp đồng gia công m chi tiết máy J1,
J2, ,Jm Công ty có n máy gia công lần lượt là P1, P2, Pn Mọi chi tiết đều có thể được gia công trên bất kỳ máy nào Một khi
đã gia công một chi tiết trên một máy, công việc sẽ tiếp tục cho đến lúc hoàn thành, không thể bị ngắt ngang Ðể gia công một công việc Ji trên một máy bất kỳ ta cần dùng một thời gian tương ứng là ti Nhiệm vụ của công ty là phải làm sao gia công xong toàn bộ n chi tiết trong thời gian sớm nhất
Trang 29Bài toán phân việc
Giả sử có 3 máy M1, M2, M3 và 6 công việc với
thời gian là t1=2, t2=5, t3=8, t4=1, t5=5, t6=1
Phương án có thể có:
Trang 32Bài tập
Giả sử có 3 máy M 1 , M 2 , M 3 và 5 công việc có thời
gian thực hiện tương ứng như sau: j 1 =3, j 2 = 2, j 3 =
2, j 4 = 3, j 5 = 2
Áp dụng nguyên lý thứ tự phân công các công việc vào các máy
Trang 33Bài toán Ta-canh
Trò chơi bao gồm một hình vuông kích thước 3x3 ô Có 8 ô có
số, mỗi ô có một số từ 1 đến 8 Một ô còn trống Mỗi lần di chuyển chỉ được di chuyển một ô nằm cạnh ô trống về phía ô trống
Từ một trạng thái ban đầu bất kỳ, làm sao đưa được về trạng thái cuối là trạng thái mà các ô được sắp lần lượt từ 1 đến 8 theo thứ tự từ trái sang phải, từ trên xuống dưới, ô cuối dùng là
ô trống
Trang 34Bài toán Ta-canh
• Tại mỗi thời điểm có 4 cách di chuyển (trên, dưới,
trái, phải của ô trống)
Trang 35Bài toán Ta-canh
Gọi T0 là trạng thái đích của bài toán
Gọi Tk là trạng thái hiện tại đang xét
V(i, j) là giá trị của ô (i, j) – Số thể hiện trên ô (ô trống có giá trị 0)
d(i, j) là số ô cần di chuyển để con số tại ô (i, j) về đúng vị trí của nó ở trạng thái T0
Hàm Fk = tổng các d(i, j) của những ô (i, j) khác trống: Hàm trạng thái Tk
Trang 43Không gian trạng thái - KGTT
Một KGTT (state space) là 1 bộ [N, A, S, GD] trong đó:
• N (node): các nút/ trạng thái của đồ thị
• A (arc): các cung / các liên kết giữa các nút
• S (solution): chứa trạng thái ban đầu của bài toán
• GD (Goal Description): chứa các trạng thái đích của bài toán
Đường đi của lời giải (solution path) là một con đường đi qua đồ thị này
từ một nút thuộc S đến một nút thuộc GD
Trang 44Chiến lược tìm kiếm KGTT
• TK hướng từ dữ liệu (Data-driven Search)
• Suy diễn tiến (forward chaining)
• TK hướng từ mục tiêu (Goal-driven Search)
• Suy diễn lùi (backward chaining)
Trang 45Tìm kiếm hướng từ dữ liệu
• Việc tìm kiếm đi từ
dữ liệu đến mục tiêu
• Thích hợp khi:
• Tất cả/ một phần dữ liệu được cho từ đầu
• Có nhiều mục tiêu, nhưng chỉ có một số ít các phép toán có thể áp dụng cho một trạng thái bài toán
• Rất khó đưa ra một mục tiêu/ giả thuyết ngay lúc đầu
Trang 46Tìm kiếm hướng từ mục tiêu
• Việc tìm kiếm đi từ
mục tiêu trở về
dữ liệu
• Thích hợp khi:
• Có thể đưa ra mục tiêu/ giả thuyết ngay lúc đầu
• Có nhiều phép toán có thể áp dụng trên 1 trạng thái của bài toán => sự bùng
nổ số lượng các trạng thái
• Các dữ liệu của bài toán không được cho trước, nhưng hệ thống phải đạt được trong quá trình tìm kiếm
Trang 47Phương pháp TK trên đồ thị KGTT
Phát triển từ giải thuật quay lui (back – tracking)
• Tìm kiếm chiều rộng (breath-first search)
• Tìm kiếm chiều sâu (depth-first search)
• TK chiều sâu bằng cách đào sâu nhiều lần (depth-first search with
iterative deepening)
Trang 49Tìm kiếm chiều sâu
1 Khởi tạo: Open = [A];
Trang 50Tìm kiếm chiều sâu hay chiều rộng?
• Có cần thiết tìm một đường đi ngắn nhất đến mục tiêu hay không?
• Sự phân nhánh của không gian trạng thái
• Tài nguyên về không gian & thời gian sẵn có
• Khoảng cách trung bình của đường dẫn đến trạng thái mục tiêu
• Yêu cầu đưa ra tất cả các lời giải/chỉ là lời giải tìm được đầu tiên
Trang 51Tìm kiếm chiều sâu bằng cách đào sâu nhiều lần
• Độ sâu giới hạn (depth bound): giải thuật TK sâu sẽ quay lui
khi trạng thái đang xét đạt đến độ sâu giới hạn đã định
• TK chiều sâu bằng cách đào sâu nhiều lần: TK sâu với độ sâu giới
hạn là 1, nếu thất bại, nó sẽ lặp lại GT TK chiều sâu với
độ sâu là 2,… GT tiếp tục cho đến khi tìm được mục tiêu, mỗi lần lặp lại tăng độ sâu lên 1
• GT này có độ phức tạp về thời gian cùng bậc với TK Rộng và TK Sâu
Trang 52• Giải thuật có khuynh hướng bị sa lầy ở những cực đại cục bộ:
Lời giải tìm được không tối ưu
Không tìm được lời giải mặc dù có tồn tại lời giải
• Giải thuật có thể gặp vòng lặp vô hạn do không lưu giữ thông tin về các trạng thái đã duyệt
Trang 53Tìm kiếm leo đồi
1 Khởi tạo ngăn xếp S chỉ chứa trạng thái đầu;
2 Lặp
2.1 If S rỗng then
{thông báo thất bại; stop};
2.2 Lấy trạng thái u ở đầu ngăn xếp S;
2.3 If u là trạng thái kết thúc then
{thông báo thành công; stop};
2.4 For mỗi trạng thái v kề u do
đặt v vào danh sách L;
2.5 Sắp xếp L theo thứ tự: trạng thái tốt nhất ở đầu danh sách; 2.6 Chuyển danh sách L vào ngăn xếp S;
Trang 54Tìm kiếm leo đồi
1 Khởi tạo Open = [A5]; Closed = []
2 Đánh giá A5: Open = [B4,C4,D6];
Trang 55Tìm kiếm ưu tiên tối ưu (Best-First Search)
Tìm kiếm chiều sâu: không quan tâm đến sự mở rộng của tất cả các nhánh
Tìm kiếm chiều rộng: không bị rơi vào các nhánh cụt
Tìm kiếm ưu tiên tối ưu: kết hợp tìm kiếm chiều sâu + tìm kiếm chiều rộng
Mở rộng cây theo các nút có nhiều tiềm năng chứa trạng
thái đích hơn các nút khác
Trang 56Tìm kiếm BFS - Ví dụ
Trang 57Thuật giải BFS
1 Đặt OPEN chứa trạng thái khởi đầu.
2 Cho đến khi tìm được trạng thái đích hoặc không còn nút nào trong OPEN, thực hiện :
2.1 Chọn trạng thái tốt nhất (Tmax) trong OPEN (và xóa Tmaxkhỏi OPEN)
2.2 Nếu Tmax là trạng thái kết thúc thì thoát.
2.3 Ngược lại, tạo ra các trạng thái kế tiếp Tk có thể có từ trạng thái Tmax Đối với mỗi trạng thái kế tiếp Tk thực hiện:
Tính f(Tk);
Thêm Tk vào OPEN
Trang 581 Đặt OPEN chứa trạng thái khởi đầu.
2 Cho đến khi tìm được trạng thái đích hoặc không còn nút nào trong OPEN, thực hiện :
2.1 Chọn trạng thái (Tmax) có giá trị g nhỏ nhất trong OPEN (và xóa Tmax khỏi OPEN)
2.2 Nếu Tmax là trạng thái kết thúc thì thoát.
2.3 Ngược lại, tạo ra các trạng thái kế tiếp Tk có thể có từ trạng thái
Tmax Đối với mỗi trạng thái kế tiếp Tk thực hiện :
g(Tk) = g(Tmax) + cost(Tmax, Tk);
Thêm Tk vào OPEN.
Trang 59Thuật giải AKT
(Algorithm for Knowlegeable Tree Search)
1 Đặt OPEN chứa trạng thái khởi đầu.
2 Cho đến khi tìm được trạng thái đích/ không còn nút nào trong OPEN:
2.1 Chọn trạng thái (Tmax) có giá trị f nhỏ nhất trong
OPEN (và xóa Tmax khỏi OPEN)
2.2 Nếu Tmax là trạng thái kết thúc thì thoát.
2.3 Ngược lại, tạo ra các trạng thái kế tiếp Tk có thể có từ trạng thái Tmax Đối với mỗi trạng thái kế tiếp Tk
thực hiện :
g(Tk) = g(Tmax) + cost(Tmax, Tk);
Tính h’(Tk) f(Tk) = g(Tk) + h’(Tk);
Thêm Tk vào OPEN.
Trang 602.3 Di chuyển đỉnh p qua Close và tạo danh sách các đỉnh q có nối với p
2.3.1 Nếu q có trong Open:
Nếu (g(q) > g(p) +cost(p,q)) thì
g(q) = g(p) +cost(p,q) f(q) = g(q) + h(q);
Trang 61 Giá trị tại mỗi cạnh
là độ dài đường đi giữa hai đỉnh
Trang 62Đỉnh đã có trong Open
Đỉnh đã có trong Closed
Trang 64Thuật giải A* - Bài tập
Cho đồ thị, trạng thái ban đầu A Tìm đường đi ngắn nhất đến trạng thái đích K
7
5 8
7
5
3 5
Trang 65Bài toán tô màu đồ thị
Cho đồ thị vô hướng, hãy tô màu tất cả các đỉnh với số màu ít nhất, sao cho 2 đỉnh nối với nhau được tô khác màu
Trang 66Bài toán tô màu đồ thị
Gọi k là số màu đã được dùng để tô màu
Trang 68[1] Tô màu 1 cho đỉnh C
[2] Tô màu 2 cho đỉnh D
[3] Tô màu 1 cho đỉnh F
[4] Tô màu 3 cho đỉnh E
[5] Tô màu 3 cho đỉnh H
[6] Tô màu 1 cho đỉnh I
[7] Tô màu 2 cho đỉnh A
[8] Tô màu 2 cho đỉnh B
[9] Tô màu 2 cho đỉnh G
Trang 70Bài toán tô màu đồ thị
Gọi k là số màu đã được dùng để tô màu
Hạ bậc q, thêm màu tô p vào danh sách màu cấm tô của q Gán bậc của đỉnh p = 0
}
Trang 82Bài tập
Áp dụng giải thuật A* cho bài toán Ta-Canh
Áp dụng giải thuật tô màu đồ thị cho bài toán xếp lịch, cuộc họp và bố trí đèn tín hiệu giao thông
Cài đặt các thuật toán trên
Trang 83Q&A