Có bất kỳ chiến lược để tìm kiếm vũ lực?


7

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ứcp(x) với các hệ số nguyên và số tự nhiên k.

Câu hỏi: Có tồn tại khôngi[k] như vậy mà p(i)=0?

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 xemp(1) là 0, sau đó p(2), sau đó p(3), ..., cho đến khi tôi tìm thấy một i như vậy mà p(i)=0 hoặc tôi thử mọi i[k].

Chiến lược giảm dần: Tôi có thể kiểm tra xemp(k) là 0, sau đó p(k1), sau đó p(k2), ..., cho đến khi tôi tìm thấy một i như vậy mà p(i)=0 hoặc tôi thử mọi i[k].

Chiến lược phổ biến: Tôi có thể lưu trữ một danh sách nhỏL 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 [k]L.

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[k], sau đó các số chia hết cho 3 trong [k], 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ả.


3
Bạn có nghĩa là "lực lượng vũ phu" theo nghĩa nghiêm ngặt là cố gắng mọi đầu vào có thể, không sử dụng thông tin nào có được từ một đầu vào để chọn đầu vào trong tương lai ? Định nghĩa đặc biệt này về lực lượng vũ phu có liên quan vì nó song song tầm thường, nhưng nó tương thích với tất cả các chiến lược được đề xuất của bạn. OTOH, câu trả lời của Juho nói về "cắt tỉa không gian tìm kiếm", loại trừ nhiều đầu vào dựa trên thông tin thu được từ chỉ một đầu vào.
MSalters

1
Một mẩu tin - Tôi đã tính toán dàn tên lửa tối ưu cho Chương trình Không gian Kerbal một vài lần với tìm kiếm alpha / beta / heuristic (lực lượng vũ phu được định hướng cơ bản để cắt tỉa những cây không thể là câu trả lời tốt nhất) và điều chỉnh ưu tiên có thể làm cho nó mệnh lệnh cường độ nhanh hơn. Đặc biệt, đôi khi mở rộng một nút có heuristic tốt trái ngược với alpha tốt nhất dường như giúp ích đáng kể, vì không có cách nào rẻ tiền nhưng tốt để tính toán alpha mà tôi đã tìm thấy. Vì vậy, câu trả lời là có cho câu hỏi A.
TLW

1
@MSalters Bạn đã đưa ra một quan điểm tốt với nhận xét của bạn. Tôi gọi nó là tìm kiếm vũ phu bởi vì nếu không có giải pháp thì bạn vẫn sẽ thử từng yếu tố của không gian tìm kiếm (ít để không cắt tỉa). Tuy nhiên, bạn có thể sử dụng kiến ​​thức trước đây mà bạn đã đạt được để xác định một cách thông minh thứ tự mà bạn liệt kê trong không gian tìm kiếm. Ngoài ra, như bạn đã đề cập, bằng cách thay đổi thứ tự liệt kê, bạn có thể làm cho việc song song hóa trở nên khó khăn hơn.
Michael Wehar

1
Ví dụ cụ thể của bạn, bạn đã có tổng và sản phẩm gốc có thể giúp đơn giản hóa việc tìm kiếm.
Đánh dấu

Bài đăng này thảo luận về sự phức tạp của tìm kiếm vũ phu: cstheory.stackexchange.com/questions/14404/ gợi
Michael Wehar

Câu trả lời:


5

Câu trả lời cho cả hai câu hỏi của bạn là có! Chắc chắn, mặc dù trong trường hợp xấu nhất, bạn sẽ phải liệt kê toàn bộ không gian tìm kiếm bằng vũ lực (để chứng minh không có giải pháp nào), hoàn toàn có ý nghĩa khi xem xét cách bạn đi qua không gian tìm kiếm. Nói chung, bạn sẽ tìm thấy rất nhiều tài liệu và thảo luận về chủ đề từ lĩnh vực AI, và đặc biệt là giải SAT / CSP. Giới thiệu nhanh chóng và nhẹ nhàng được đưa ra bởi cuốn sách Russell và Norving.

Tôi thích sử dụng câu đố Sudoku làm ví dụ. Để quyết định xem một câu đố được lấp đầy một phần có giải pháp hay không, bạn có thể kiểm tra toàn diện mọi cách có thể để hoàn thành nó. Cách tiếp cận ngây thơ là một tìm kiếm backtracking mù. Điều này là vô cùng lãng phí. Một ý tưởng tốt hơn là đây: để ô tiếp theo được gán, luôn chọn ô có ít giá trị pháp lý nhất. Nói chung, đây là một "heuristic đầu tiên thất bại", và trực giác là sự lựa chọn này rất có thể sẽ thất bại sớm, và do đó nó cắt tỉa cây tìm kiếm một cách tích cực. Thực sự có một "sự khôn ngoan" trong lĩnh vực: "để thành công, bạn phải thất bại nhanh chóng". Một cách thô bạo, bạn càng thất bại sớm, bạn càng nhanh chóng tập trung nỗ lực vào phần khó của vấn đề.

Có vẻ như những điều trên rất cụ thể và chỉ áp dụng để nói câu đố Sudoku. May mắn thay, đây không phải là trường hợp. Nó khá hữu ích để mô hình hóa vấn đề của bạn, hoặc cố gắng để bạn nhìn thấy vấn đề của mình, ví dụ như một ví dụ SAT / CSP. Sau đó, bạn có thể ngay lập tức áp dụng các thủ thuật đã biết để tăng tốc độ vũ phu của mình, nghĩ ra phương pháp chữa trị tốt hơn, v.v. Tất nhiên, bạn có thể làm tốt hơn một số cường độ bằng cách sử dụng bộ giải CSP / SAT tốt thay vì vũ phu. Điều này có lợi ngay cả khi không có gì tốt hơn đáng kể so với vũ lực được biết đến cho vấn đề của bạn. Điều này là do thực tế là các trường hợp có xu hướng có cấu trúc có thể khai thác được bởi những người giải quyết thông minh và rất khó để tự phát hiện cấu trúc tương tự với lực lượng vũ phu.

Một câu trả lời cũ hơn của tôi cho một chút cụ thể hơn. Tôi nghĩ rằng mọi chiến lược bạn đề cập đã được thử nghiệm, đặc biệt là sự ngẫu nhiên. Chẳng hạn, các chiến lược khởi động lại ngẫu nhiên rất mạnh mẽ và được sử dụng trong các bộ giải hiện đại.


3

Lực lượng vũ phu thực sự có thể được cải thiện phần nào bằng phương pháp phỏng đoán, dựa trên một số kiến ​​thức về vấn đề hiện tại.

Không có chiến lược phổ quát nào có thể hoạt động ở bất cứ đâu, đặc biệt nếu đó là một chiến lược mù (độc lập với lịch sử kết quả cho các thử nghiệm khác nhau). Hơn nữa, có lẽ có vấn đề khó nắm bắt của bất kỳ chiến lược.

Một ví dụ về chiến lược heuristic được mô phỏng ủ, trong đó bạn cho rằng các giải pháp tốt hơn bạn tìm thấy, bạn càng tiến gần đến mức tối ưu. Một tài sản như vậy có thể không giữ tất cả cho các câu hỏi khác.

Câu hỏi A : không, không có chiến lược chung nào được áp dụng một cách mù quáng.


@Juho: ok, tôi đang loại bỏ B, vì OP đang yêu cầu ngoại lệ cho quy tắc.
Yves Daoust
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.