Tôi không biết làm thế nào để nói một cách tao nhã, nhưng về cơ bản, tôi muốn thực hiện thuật toán tìm kiếm vũ phu, nhưng có nhiều cách khác nhau mà tôi có thể liệt kê trong không gian tìm kiếm. Điều này có thể là ngây thơ đối với tôi, nhưng tôi tưởng tượng rằng cách tôi chọn liệt kê trong không gian tìm kiếm có thể ảnh hưởng lớn đến việc thuật toán của tôi có hoạt động tốt trong thực tế hay không.
Hãy xem xét vấn đề quyết định sau đây là một ví dụ đơn giản.
Đầu vào: Một đa thức với các hệ số nguyên và số tự nhiên .
Câu hỏi: Có tồn tại không như vậy mà ?
Bây giờ, có thể có nhiều thuật toán khác nhau để giải quyết vấn đề này, nhưng tôi quyết định chọn cách tiếp cận vũ phu. Hãy xem xét các chiến lược sau đây để liệt kê thông qua không gian tìm kiếm.
Chiến lược tăng dần: Tôi có thể kiểm tra xem là 0, sau đó , sau đó , ..., cho đến khi tôi tìm thấy một như vậy mà hoặc tôi thử mọi .
Chiến lược giảm dần: Tôi có thể kiểm tra xem là 0, sau đó , sau đó , ..., cho đến khi tôi tìm thấy một như vậy mà hoặc tôi thử mọi .
Chiến lược phổ biến: Tôi có thể lưu trữ một danh sách nhỏ trong số các giải pháp phổ biến nhất và thử những giải pháp đầu tiên trước khi thử các con số trong .
Chiến lược sàng: Tôi có thể thực hiện một loại liệt kê sàng. Tôi thử tất cả các số chia hết cho 2 trong, sau đó các số chia hết cho 3 trong , rồi 5, rồi 7, rồi 11, rồi 13, vân vân. (Giả sử rằng tôi có quyền truy cập vào một số danh sách các số nguyên tố được tính toán trước.)
Chiến lược ngẫu nhiên: Có thể có một chiến lược liệt kê thú vị sử dụng một chuỗi lớn các bit ngẫu nhiên.
Về cơ bản, tôi đang tìm cách trả lời các câu hỏi sau đây về thuật toán tìm kiếm vũ phu:
Câu hỏi A: Có bất kỳ lợi ích nào khi chọn một chiến lược liệt kê cụ thể không?
Câu hỏi B: Có bất kỳ ví dụ nào về các vấn đề tìm kiếm trong thực tế bạn sẽ chọn một chiến lược liệt kê thú vị không? Tôi cảm thấy có thể có một số vấn đề tìm kiếm trong đó trên thực tế, một biến thể của Chiến lược phổ biến hoạt động hiệu quả.