1 Nguyên lý heuristic trong việc giải quyết một số bài toán Phần này mở rộng khái niệm heuristic cho một số bài toán tìm kiếm khác. Các thuật toán tìm kiếm UCS, tìm kiếm tốt nhất và A* thực hiện chiến lược vét cạn trên không gian tìm kiếm để tìm lời giải. Chiến lược này bảo đảm tìm được đường đi (tối ưu) nhưng phải duyệt nhiều trạng thái, đặc biệt khi bài toán có độ sâu lời giải lớn. Các bài toán dưới đây áp dụng các chiến lược tìm kiếm heuristic (cố gắng đưa ra lời giải tốt tại mỗi bước thực hiện) và không quay lui. Do đó các thuật toán này không phải vét cạn không gian tìm kiếm và chỉ ra được những lời giải “đủ tốt”. 1.1 Bài toán người du lịch (Traveling Saleman Problem - TSP): 1.1.1 Phát biểu bài toán Cho N thành phố trong đó hai thành phố bất kỳ đều có đường nối với. Hãy xác định lộ trình cho người du lịch, xuất phát từ thành phố thứ nhất, đi qua tất cả các thành phố còn lại, trở về thành phố xuất phát sao cho tổng chi phí là nhỏ nhất. Hình bên trái dưới đây là đồ thị biểu diễn một ví dụ của bài toán người du lịch với N = 5. Hình bên phải biểu diễn bài toán dưới dạng ma trận kề. Trong ma trận kề, ô a[i, j] cho biết chi phí để đi từ thành phố i đến thành phố j. ∞ 2246 2 ∞135 21 ∞53 435 ∞1 6531 ∞ Lời giải tốt nhất của bài toán đạt được bằng cách so sánh tất cả các trường hợp đường đi có thể có. Số trường hợp có thể có chính là một sắp xếp hoán vị của N thành phố hay nói cách khác không gian tìm kiếm của bài toán có kích thước N! lời giải. Việc tìm kiếm trên không gian trạng thái là không khả thi do số trường hợp là khổng lồ (ví dụ, N=25 thì N! = 25! 10 25 trạng thái). Áp dụng nguyên lý heuristic, ta có thể đạt được những thuật toán đơn giản với lời giải đủ tốt như sau. 1.1.2 Thuật toán GTS1 (Greedy Traveling Saleman) Thuật toán GTS1 cố gắng đạt được lời giải tốt nhất ở mỗi bước thực hiện bằng cách chọn đường đi có chi phí thấp nhất tại thành phố hiện tại và tiếp tục đi. Thuật toán gồm các bước sau: [Khởi đầu] TOUR = {}, COST = 0; v = 1. [Chọn lộ trình]: Lặp cho đến khi chọn đủ N đỉnh Với mỗi bước lặp: Chọn (v,w) là cạnh có chi phí nhỏ nhất tính từ v đến các đỉnh chưa sử dụng w. 1 2 3 5 4 1 5 1 2 6 5 3 4 2 3 2 Gán TOUR = TOUR + {(v,w)}, COST = COST + C(v,w). Sử dụng đỉnh w cho bước kế tiếp: v = w. [Hoàn thành]: Gán TOUR = TOUR + {(v,1)}, COST = COST + C(v,1). Áp dụng GTS 1 với ví dụ trên: [Khởi đầu]: - Chọn w = ___: TOUR = - Chọn w = ___: - Chọn w = ___: - Chọn w = ___: [Hoàn thành]: Chu trình: 1.1.3 Thuật toán GTS2 Thuật toán GTS1 rõ ràng không bảo đảm tìm được lộ trình tốt nhất. Nếu không bị ràng buộc bởi đỉnh xuất phát, GTS2 lựa chọn P (P<<N) đỉnh bắt đầu khác nhau và áp dụng GTS1 lên từng đỉnh xuất phát. Kết quả tốt nhất trong P chu trình là lời giải cuối cùng của bài toán. Quay trở lại ví dụ trên, giả sử ta chọn P= 3 đỉnh xuất phát khác nhau, kết quả thực hiện của thuật toán là: Chọn xuất phát là ___: Chu trình: Chọn xuất phát là ___: Chu trình: Chọn xuất phát là ___: Chu trình: Vậy lời giải tốt nhất của bài toán là _____ với chu trình: 1.2 Bài toán phân công công việc 1.2.1 Biểu diễn Trong bài toán phân công công việc, ta có: N máy: M 1 , M 2 , …, M N giống nhau. M công việc: V 1 , V 2 , …, V M độc lập với nhau. Công việc V i cần thực hiện trong T i giờ mới có thể hoàn thành. Yêu cầu: Hãy lập kế hoạch phân phối các công việc vào từng máy sao cho thời gian cần để hoàn tất M công việc là nhỏ nhất. Lời giải của bài toán theo Nguyên lý sắp thứ tự: Sắp xếp các công việc theo thứ tự giảm dần về thời gian và lần lượt phân công công việc cho các máy rãnh. 3 Xét ví dụ: Cho 3 máy M 1 , M 2 , M 3 và 6 công việc với thời gian thực hiện tương ứng: T 1 = 2, T 2 = 5, T 3 = 8, T 4 = 1, T 5 = 5, T 6 = 1. Hãy bố trí công việc vào các máy sao cho thời gian thực hiện là thấp nhất. Thứ tự các công việc sắp xếp theo thời gian Công việc Thời gian Phân công: M 1 M 2 M 3 1.3 Bài toán thoả mãn ràng buộc – Thuật toán tô màu 1.3.1 Phát biểu Trong bài toán thoả mãn ràng buộc, ta cần xác định các gán giá trị cho một tập đỉnh sao cho việc gán giá trị này thoả mãn một điều kiện cho trước. Một ví dụ tiêu biểu là bài toán tô màu: cho bản đồ các quốc gia trong một khu vực, xác định cách tô màu cho các quốc gia sao cho hai quốc gia láng giềng được tô bằng hai màu khác nhau và tổng số màu tô là thấp nhất. Hình là đồ thị biểu diễn các nước láng giềng của Việt Nam. 1.3.2 Thuật toán tô màu Hai thuật toán tô màu bao gồm: thuật toán heuristic dựa trên ràng buộc (đỉnh nào có nhiều ràng buộc nhất –bậc cao nhất– sẽ được tô trước) và thuật toán tô màu theo giá trị (tham lam). 4 Thuật toán tô màu trên đồ thị dựa vào số bậc (ràng buộc) Đếm bậc các đỉnh và Lặp lại các bước sau cho đến khi bậc của tất cả các đỉnh bằng 0 và các đỉnh đã được tô màu: Bước 1: Tô màu i cho đỉnh có bậc lớn nhất Bước 2: Hạ bậc. + Bậc của đỉnh được tô màu i thì: Bậc = 0 + Bậc của đỉnh có liên hệ với đỉnh được tô màu i thì: Bậc= Bậc -1 Bư ớc 3 : C ấm tô m àu i cho các đ ỉnh vừa bị h ạ bậc. Với ví dụ tô màu cho các nước ở trên, các bước thực hiện của thuật toán như sau: Xác định bậc của các đỉnh Đỉnh TQ VN LAO MIA THAI CAM PHI MAL BRU SING INDO Bậc Tô màu: Đỉnh TQ VN LAO MIA THAI CAM PHI MAL BRU SING INDO Bậc Màu Bậc Màu Bậc Màu Bậc Màu Bậc Màu Thuật toán tô màu greedy Dùng màu thứ nhất tô cho một đỉnh bất kỳ và tất cả các đỉnh khác có thể tô được. Sau đó dùng màu thứ hai tiếp tục tô cho các đỉnh còn lại theo cùng nguyên tắc … cho đến khi tất cả các đỉnh của đồ thị đã được tô màu. TQ VN LAO MIA THAI CAM PHI MAL BRU SING INDO i=1 i=2 i=3 i=4 . 1 Nguyên lý heuristic trong việc giải quyết một số bài toán Phần này mở rộng khái niệm heuristic cho một số bài toán tìm kiếm khác. Các thuật. thi do số trường hợp là khổng lồ (ví dụ, N=25 thì N! = 25! 10 25 trạng thái). Áp dụng nguyên lý heuristic, ta có thể đạt được những thuật toán đơn giản với lời giải đủ tốt như sau. 1.1.2. máy sao cho thời gian cần để hoàn tất M công việc là nhỏ nhất. Lời giải của bài toán theo Nguyên lý sắp thứ tự: Sắp xếp các công việc theo thứ tự giảm dần về thời gian và lần lượt phân công