M ục đích nghiên cứu, đố it ượ ng, phạm vi nghiên cứ u 12
1.5.3. Phương pháp heuristic 39
Trong nhiều bài toán phương pháp thử-sai sẽ dẫn đến số lượng thử quá lớn, vì vậy không thể chấp nhận được. Do đó người ta sử dụng phương pháp heuristic. Heristic chính là ước lượng khả năng dẫn đến một lời giải của một trạng thái, trong đó sử dụng các phương pháp như: vét cạn có thêm tri thức đi kèm, tối ưu cục bộ, nguyên lý hướng đích, nguyên lý sắp thứ tự.
Ta hãy xét bài toán tìm đường đi ngắn nhất làm ví dụ. Trong quá trình tìm kiếm
đường đi ngắn nhất, người ta thường sử dụng một hàm , là một hàm sốđịnh nghĩa trên các nút trên cây tìm kiếm, để ước đoán chi phí nhỏ nhất từ nút là đối số của hàm
đó tới nút đích. Thông tin heuristic này sẽ được các thuật toán tìm kiếm đã biết khác như thuật toán tìm kiếm tham lam Best-First Search hay thuật toán A* sử dụng để lựa chọn nút tiếp theo trên đường đi. Thuật toán tham lam Best-First Search thì lựa chọn nút có chi phí thấp nhất theo hàm heuristic , trong khi đó A* chọn nút có chi phí thấp nhất theo hàm trong đó là chi phí chính xác của đường đi từ
trạng thái đầu tới nút đang xét. Nếu h(n) là một hàm dựđoán tốt thì hiển nhiên A* cũng có nhiều khả năng tìm ra lời giải tốt, trong đó có thể có lời giải tối ưu. Vấn đề thực sự
giờ đây nằm ở chỗ lựa chọn hàm như thế nào để hỗ trợ tìm kiếm hiệu quả. Có nhiều cách để xây dựng heuristic cho bài toán.
• Sử dụng hàm chi phí của các bài toán con làm heuristic, vì chi phí của bài toán tổng được tổ hợp từ chi phí của bài toán con, tất nhiên có thể hàm tổ hợp đó rất phức tạp, nhưng những thông tin về chi phí các bài toán con là rất hữu ích cho việc ước đoán chi phí của bài toán tổng, đặc biệt nếu ta có nhiều kinh nghiệm tiếp xúc với dạng bài toán này. Để tiết kiệm thời gian tính toán thì người ta thường hay sử dụng một cơ sở dữ
40
• Sử dụng lời giải của chính bài toán đó nhưng đã được loại bỏ một số điều kiện ràng buộc (việc loại bỏ này cho phép ta có thể tìm được lời giải đúng cho bài toán với thời gian tính chấp nhận được).
Phương pháp heuristic có nét giống với phương pháp xác suất ở chỗ nó đôi lúc cho ra những lời giải tồi hoặc có thời gian thực hiện là rất lâu. Tuy nhiên xác suất để
xảy ra điều đó lại là rất thấp. Hơn thế nữa, nhờ sử dụng những tri thức và kinh nghiệm bổ trợ (heuristic), các phương pháp heuristic thường cho mang lại hiệu quả cao xét về
cả chất lượng lời giải lẫn thời gian tính toán trong quá trình ứng dụng thực tế, nhưng nó không đảm bảo được rằng điều đó lúc nào cũng xảy ra.
Các phương pháp heuristic có một ưu điểm là giúp cải thiện đáng kể hiệu quả
tính toán. Giả sử ta đang đứng ở một nút trên cây tìm kiếm, khoảng cách từ nút này tới nút đích là , và trên cây tìm kiếm trung bình một nút rẽ thành nhánh. Nếu sử dụng thuật toán tìm kiếm vét cạn thì thời gian tính sẽ là . Ta tìm được lời giải tối ưu nhưng trả giá bằng chi phí thời gian quá đắt và nhiều lúc sẽ trở thành không chấp nhận
được. Nhưng nếu sử dụng heuristic thì ta có thể rút hệ số rẽ nhánh (branching factor) từ
xuống một giá trị thấp hơn nào đó, và hiển nhiên chi phí thời gian sẽ được rút xuống rất nhiều.
Kĩ thuật heuristic được ứng dụng nhiều trong trí tuệ nhân tạo (Artificial Intelligence - AI) nhưng ta cũng thấy với cơ chế như trên nó cũng giúp nâng cao hiệu quả các thuật toán giải các bài toán tối ưu hóa thuộc lớp NP-khó.