Tôi đang nghiên cứu tìm kiếm chi nhánh và ràng buộc và tốt nhất đầu tiên cho công việc luận án của mình nhưng đã tìm thấy rất nhiều mâu thuẫn trên web về hai khái niệm này. Đầu tiên tôi nghĩ chi nhánh và ràng buộc chỉ tỉa cành nhánh kết thúc với giải pháp chi phí cao (sử dụng heuristic) và không ưu tiên tìm kiếm (làm một DFS đơn giản hoặc BFS trên phần còn lại của cây sau khi cắt tỉa). Tuy nhiên, sau này tôi tìm thấy nhiều tài nguyên nói rằng BB cũng xếp hạng các trạng thái và xem xét các nút có xếp hạng cao hơn đầu tiên (một tìm kiếm được ưu tiên). Nếu nó là như vậy, sự khác biệt chính xác giữa BB và tìm kiếm tốt nhất là gì?Sự khác biệt giữa tìm kiếm chi nhánh và giới hạn và tìm kiếm tốt nhất đầu tiên
Trả lời
2 khái niệm có liên quan (bạn có thể thậm chí đôi khi kết hợp chúng) nhưng bạn chỉ nên tập trung vào sự khác biệt cơ bản giữa chúng như tên của màn hình:
Chi nhánh và bị ràng buộc khám phá không gian tìm kiếm cách thấu đáo bởi phân nhánh trên các biến (= kiểm tra các giá trị của các biến). Điều này tạo ra một số vấn đề phụ, ví dụ: phân nhánh trên một biến nhị phân tạo ra một vấn đề trong đó biến = 0 và một vấn đề trong đó nó = 1. Sau đó bạn có thể tiến hành và giải quyết chúng một cách đệ quy. Khía cạnh 'giới hạn' của kỹ thuật này bao gồm các giới hạn ước tính về các giải pháp có thể đạt được trong bài toán con. Nếu subproblem chỉ có thể mang lại các giải pháp xấu (so với giải pháp đã tìm thấy trước đó), bạn có thể bỏ qua một cách an toàn việc khám phá phần đó của không gian tìm kiếm.
Cách tốt nhất đầu tiên để tìm giải pháp nhanh nhất có thể bằng cách xem phần thú vị nhất của không gian tìm kiếm trước tiên (thú vị nhất = ước tính). Nó không phân chia không gian tìm kiếm, chỉ cố gắng để đạt được một/giải pháp càng nhanh càng tốt.
Cả hai cách tiếp cận đều cố gắng bỏ qua việc điều tra các phần của không gian tìm kiếm. Việc sử dụng và hiệu quả của chúng phụ thuộc vào việc thiết lập vấn đề. Tốt nhất đầu tiên yêu cầu bạn chỉ định một tiêu chí cho 'giải pháp thú vị nhất để khám phá', đôi khi có thể khó khăn/không thể. Chi nhánh và ràng buộc chỉ là thú vị nếu ràng buộc bạn có thể đưa vào các vấn đề con có ý nghĩa/không quá rộng. Nó phụ thuộc vào vấn đề bạn đang cân nhắc ...
- 1. Tìm sự khác biệt giữa thân cây và nhánh?
- 2. tìm sự khác biệt giữa 2 chi nhánh từ xa
- 3. Sự khác biệt về JQuery giữa tìm kiếm 'trẻ em' và 'tìm'?
- 4. Python regex - sự khác biệt giữa tìm kiếm và tìm tất cả
- 5. Chiều rộng tìm kiếm đầu tiên phân nhánh yếu tố
- 6. sự khác biệt giữa tìm kiếm lân cận và tìm kiếm văn bản trong API Google Địa điểm
- 7. Tìm kiếm đầu tiên về chiều sâu và chiều rộng Tìm hiểu đầu tiên
- 8. cách giới hạn thanh tìm kiếm
- 9. Sự khác biệt giữa tìm và lọc
- 10. Tìm kiếm topo và tìm kiếm theo chiều rộng đầu tiên
- 11. Ưu tiên tìm kiếm chiều sâu trên bề rộng tìm kiếm đầu tiên hoặc ngược lại
- 12. Tìm kiếm và thay thế Vim - giới hạn ở một số dòng nhất định
- 13. Tìm cam kết đầu tiên cụ thể cho chi nhánh
- 14. Sự khác nhau giữa Thanh tìm kiếm so với thanh tìm kiếm và bộ điều khiển hiển thị tìm kiếm là gì?
- 15. SQLAlchemy với PostgresSQL và Tìm kiếm Toàn văn Tìm kiếm
- 16. Sự khác biệt giữa tìm và lọc trong jquery
- 17. Tìm kiếm MySQL và tìm kiếm toàn văn bản
- 18. là gì sự khác biệt giữa bốn quả tìm kiếm File trong ASP.NET MVC
- 19. Sự khác nhau giữa cây tìm kiếm và cây nhị phân hiệu quả là gì?
- 20. Tìm kiếm heuristic tốt cho tìm kiếm A *
- 21. Cách tốt nhất tìm kiếm HashSet
- 22. Mã khung thực thể Đầu tiên & Tiêu chí tìm kiếm
- 23. MongoDB Tìm kiếm văn bản VÀ nhiều từ tìm kiếm
- 24. Kết quả Tìm kiếm Đầu tiên của Google (SEO?)
- 25. Giới hạn phạm vi tìm kiếm cho mã trong Vim
- 26. cách giới hạn phạm vi tìm kiếm jquery
- 27. Làm cách nào để thực hiện tìm kiếm đầu tiên trên một chiều sâu nhất định?
- 28. Nơi lưu trữ sự khác biệt giữa chi nhánh sản xuất và dev trong git?
- 29. Tìm kiếm rộng đầu tiên hữu ích cho việc gì?
- 30. Sự khác biệt giữa @instance_variable và attr_accessor
Điều tôi hiểu là: tìm kiếm đầu tiên chỉ xem xét chi phí đạt trạng thái (tức là tổng chi phí từ trạng thái gốc đến trạng thái đó) để xếp hạng , nhưng BB sử dụng chi phí tối thiểu ước tính của việc có các giải pháp hoàn chỉnh thông qua trạng thái đó. Tôi có đúng không? – Barpa
Không, Đầu tiên tốt nhất cố gắng chọn nút tiếp theo để xử lý bằng cách sử dụng ước tính chi phí toàn cầu và không chỉ chi phí hiện tại. Hãy xem xét một vấn đề chuyển hướng mà bạn có thể sử dụng Dijkstra để tạo ra các cây con đường ngắn nhất. Chỉ nhìn vào chi phí để đạt được trạng thái hiện tại là chính xác những gì Dijkstra làm bằng cách chọn nút có khoảng cách dự kiến thấp nhất để giải quyết tiếp theo. Bằng cách áp dụng Best First cho nó, bạn sẽ nhận được A * như trong A *, bạn luôn chọn nút có ước tính tổng chi phí thấp nhất. – Origin
Xin lỗi, nhưng bây giờ tôi thấy bối rối hơn. Bạn nói tốt nhất đầu tiên chọn nút tiếp theo bằng cách sử dụng ước tính chi phí toàn cầu. Không phải là ước tính chi phí toàn cầu giống như chi nhánh bị ràng buộc toàn cầu (thấp hơn hoặc cao hơn) và sử dụng bị ràng buộc để so sánh với trạng thái hiện tại bị ràng buộc? – Barpa