Mục lục:
- Vấn đề giải quyết vấn đề là không gian lưu trữ
- Sẽ ngẫu nhiên và được may mắn bởi may mắn
- Sử dụng chức năng heuristic và chi phí
Video: Học trí tuệ nhân tạo Giải thuật AT tìm kiếm ưu tiên tối ưu 2025
Thông thường, bạn nhận thấy rằng heuristic approach, về tự khám phá và tạo ra những kết quả đầy đủ hữu ích (không nhất thiết tối ưu, nhưng đủ tốt) là phương pháp mà bạn thực sự cần để giải quyết vấn đề. Bắt các thuật toán để thực hiện một số công việc cần thiết cho bạn tiết kiệm thời gian và công sức bởi vì bạn có thể tạo ra các thuật toán mà nhìn thấy mô hình tốt hơn so với con người làm.
Do đó, tự khám phá là quá trình cho phép thuật toán hiển thị cho bạn một đường dẫn có ích cho một giải pháp (nhưng bạn vẫn phải dựa vào trực giác và hiểu biết của con người để biết liệu giải pháp là đúng hay không). Các phần dưới đây mô tả các kỹ thuật bạn có thể sử dụng để tính toán chi phí của một thuật toán sử dụng heuristics như một phương pháp để khám phá tính hữu ích thực tế của bất kỳ giải pháp nhất định.
Vấn đề giải quyết vấn đề là không gian lưu trữ
A không gian vấn đề là môi trường tìm kiếm giải pháp. Một tập hợp các trạng thái và toán tử được sử dụng để thay đổi các trạng thái này đại diện cho không gian vấn đề. Ví dụ: hãy xem xét một trò chơi ngói có tám ngói trong khung 3 x 3. Mỗi ngói hiển thị một phần của một hình ảnh, và các gạch bắt đầu theo thứ tự một số ngẫu nhiên để hình ảnh được scrambled. Mục đích là để di chuyển một trong những gạch một lúc để đặt tất cả các gạch theo thứ tự đúng và tiết lộ hình ảnh.
Sự kết hợp của trạng thái khởi đầu, gạch ngẫu nhiên, và trạng thái mục tiêu - các gạch theo một trật tự nhất định - là trường hợp vấn đề. Bạn có thể biểu diễn câu đố bằng đồ hoạ sử dụng đồ thị không gian vấn đề. Mỗi nút của đồ thị không gian vấn đề trình bày một trạng thái (8 ô ở một vị trí cụ thể). Các cạnh biểu diễn các thao tác, chẳng hạn như để di chuyển số ngạch lên đến tám. Khi bạn di chuyển ngói tám, hình ảnh thay đổi - nó chuyển sang trạng thái khác.
Chiến thắng trò chơi bằng cách chuyển từ trạng thái bắt đầu đến trạng thái mục tiêu không phải là sự cân nhắc duy nhất. Để giải quyết trò chơi một cách hiệu quả, bạn cần phải thực hiện nhiệm vụ trong số ít số di chuyển có thể, có nghĩa là sử dụng số lượng nhỏ nhất các toán tử. Số lượng di chuyển tối thiểu được sử dụng để giải quyết câu đố là độ sâu vấn đề.
Bạn phải xem xét một số yếu tố khi đại diện cho một vấn đề như một không gian. Ví dụ, bạn phải xem xét số lượng tối đa của các nút đó sẽ phù hợp trong bộ nhớ, đại diện cho không gian phức tạp. Khi bạn không thể khớp tất cả các nút trong bộ nhớ cùng một lúc, máy tính phải lưu trữ một số nút ở các vị trí khác, chẳng hạn như ổ cứng, có thể làm chậm thuật toán đáng kể.Để xác định liệu các nút có nằm trong bộ nhớ, bạn phải xem xét thời gian phức tạp, đó là số lượng nút tối đa được tạo ra để giải quyết vấn đề. Ngoài ra, điều quan trọng là phải xem xét yếu tố chi nhánh, là số nút trung bình được tạo ra trong đồ thị không gian vấn đề để giải quyết vấn đề.
Sẽ ngẫu nhiên và được may mắn bởi may mắn
Giải quyết vấn đề tìm kiếm sử dụng các kỹ thuật bạo lực là có thể. Ưu điểm của cách tiếp cận này là bạn không cần bất kỳ kiến thức cụ thể về miền nào để sử dụng một trong các thuật toán này. Thuật toán brute-force có xu hướng sử dụng cách tiếp cận đơn giản nhất có thể để giải quyết vấn đề. Bất lợi là một phương pháp brute-force chỉ hoạt động tốt cho một số lượng nhỏ các nút. Dưới đây là một số thuật toán tìm kiếm brute-force phổ biến:
- Breadth-first search: Kỹ thuật này bắt đầu ở nút gốc, khám phá từng nút con đầu tiên, và chỉ sau đó di chuyển đến cấp độ tiếp theo. Nó tiến triển theo mức độ cho đến khi nó tìm ra một giải pháp. Bất lợi của thuật toán này là nó phải lưu trữ tất cả các nút trong bộ nhớ, có nghĩa là nó sử dụng một lượng đáng kể bộ nhớ cho một số lượng lớn các nút. Kỹ thuật này có thể kiểm tra các nút trùng lặp, tiết kiệm thời gian, và nó luôn luôn đi kèm với một giải pháp.
- Độ sâu-tìm kiếm đầu tiên: Kỹ thuật này bắt đầu ở nút gốc và khám phá một tập các nút con kết nối cho đến khi nó đạt đến một nút lá. Nó tiến hành chi nhánh theo chi nhánh cho đến khi nó tìm ra một giải pháp. Bất lợi của thuật toán này là nó không thể kiểm tra các nút trùng lặp, có nghĩa là nó có thể đi qua các đường dẫn cùng một nút nhiều hơn một lần. Trong thực tế, thuật toán này có thể không tìm thấy một giải pháp nào cả, có nghĩa là bạn phải xác định một điểm cắt để giữ cho thuật toán tìm kiếm vô hạn. Một lợi thế của cách tiếp cận này là nó hiệu quả bộ nhớ.
- Tìm kiếm hai chiều: Kỹ thuật này tìm kiếm đồng thời từ nút gốc và nút mục tiêu cho đến khi hai đường tìm kiếm gặp nhau ở giữa. Một lợi thế của cách tiếp cận này là thời gian hiệu quả vì nó tìm ra giải pháp nhanh hơn nhiều giải pháp brute-force khác. Ngoài ra, nó sử dụng bộ nhớ hiệu quả hơn các phương pháp khác và luôn tìm ra giải pháp. Những bất lợi chính là sự phức tạp của việc thực hiện, chuyển sang giai đoạn phát triển dài hơn.
Sử dụng chức năng heuristic và chi phí
Đối với một số người, từ heuristic chỉ nghe có vẻ phức tạp. Nó cũng dễ dàng để nói rằng thuật toán này làm cho một giáo dục đoán và sau đó cố gắng một lần nữa khi nó không thành công. Không giống như phương pháp brute-force, các thuật toán heuristic học được. Họ cũng sử dụng các chức năng chi phí để có những lựa chọn tốt hơn. Do đó, các thuật toán heuristic phức tạp hơn, nhưng chúng có một ưu điểm riêng biệt trong việc giải quyết các vấn đề phức tạp. Giống như các thuật toán brute-force, có rất nhiều thuật toán heuristic và mỗi bộ đều có các ưu điểm, nhược điểm và các yêu cầu đặc biệt. Danh sách dưới đây mô tả một số thuật toán heuristic phổ biến nhất:
- Tìm kiếm thuần túy: Thuật toán mở rộng các nút theo thứ tự chi phí của chúng.Nó duy trì hai danh sách. Danh sách đóng có chứa các nút nó đã khám phá; danh sách mở chứa các nút mà nó vẫn phải khám phá. Trong mỗi lần lặp, thuật toán mở rộng nút có chi phí thấp nhất có thể. Tất cả các nút con của nó được đặt trong danh sách đóng và chi phí nút con riêng lẻ được tính toán. Thuật toán gửi các nút con với chi phí thấp trở lại danh sách mở và xóa các nút con với chi phí cao. Do đó, thuật toán thực hiện tìm kiếm thông minh dựa trên chi phí cho giải pháp.
- Tìm kiếm A *: Thuật toán theo dõi chi phí của các nút khi khám phá chúng sử dụng phương trình: f (n) = g n) + h (n), trong đó
- n là định danh nút.
- g (n) là chi phí để đạt được nút cho đến nay.
- h (n) là chi phí ước tính để đạt được mục tiêu từ nút.
- f (n) là chi phí ước tính của con đường từ n đến mục tiêu.
Ý tưởng là tìm kiếm những con đường hứa hẹn nhất trước và tránh đường dẫn tốn kém.
- Tìm kiếm tốt nhất đầu tiên: Thuật toán luôn lựa chọn đường đi gần mục tiêu sử dụng phương trình: f (n) = h