Sự khác biệt giữa Backtracking và Branch and Bound

Mục lục:

Anonim

Sự khác biệt chính giữa backtracking và nhánh và ràng buộc là backtracking là một thuật toán để nắm bắt một số hoặc tất cả các giải pháp cho các vấn đề tính toán đã cho, đặc biệt là đối với các vấn đề thỏa mãn ràng buộc trong khi rẽ nhánh và ràng buộc là một thuật toán để tìm ra giải pháp tối ưu cho nhiều vấn đề tối ưu hóa, đặc biệt là trong tối ưu hóa tổ hợp và rời rạc.

Thuật toán là một chuỗi các bước có phương pháp để giải quyết một vấn đề cụ thể. Có nhiều thuật toán khác nhau, và hai trong số chúng là quay lui, rẽ nhánh và ràng buộc.

Backtracking, Branch and Bound

Backtracking là gì

Backtracking là một thuật toán giải quyết vấn đề theo cách đệ quy. Đó là một cách có hệ thống để thử các chuỗi quyết định khác nhau để tìm ra quyết định chính xác. Nó tìm ra lời giải bằng cách tìm kiếm không gian lời giải của bài toán đã cho một cách có phương pháp.

Tất cả các giải pháp cho backtracking cần phải thỏa mãn một tập hợp phức tạp các ràng buộc rõ ràng và ngầm định. Ràng buộc rõ ràng giới hạn mọi phần tử vectơ được chọn từ tập hợp đã cho. Hơn nữa, ràng buộc ngầm định tìm các bộ giá trị trong không gian giải pháp có thể thỏa mãn hàm tiêu chí.

Branch and Bound là gì

Nhánh và ràng buộc phù hợp hơn cho các tình huống mà chúng ta không thể áp dụng phương pháp tham lam và lập trình động. Thông thường, thuật toán này chậm vì nó đòi hỏi sự phức tạp về thời gian theo cấp số nhân trong trường hợp xấu nhất, nhưng đôi khi nó hoạt động với hiệu quả hợp lý. Tuy nhiên, phương pháp này giúp xác định tối ưu hóa toàn cục trong các bài toán không lồi.

Hơn nữa, để giải quyết một vấn đề, phương pháp này chia bài toán con đã cho thành ít nhất hai bài toán con bị hạn chế mới.

Sự khác biệt giữa Backtracking và Branch and Bound

Sự định nghĩa

Backtracking là một thuật toán để tìm kiếm tất cả các giải pháp cho một số vấn đề tính toán, đặc biệt là các vấn đề về mức độ thỏa mãn hạn chế mà từng bước xây dựng các ứng viên cho các giải pháp. Nhánh và ràng buộc là một thuật toán cho các bài toán tối ưu hóa tổ hợp và rời rạc và tối ưu hóa toán học. Vì vậy, đây là sự khác biệt chính giữa backtracking và rẽ nhánh và ràng buộc.

Tiến trình

Hơn nữa, backtracking tìm ra giải pháp cho vấn đề tổng thể bằng cách tìm ra giải pháp cho bài toán con đầu tiên và chúng giải một cách đệ quy các bài toán con khác dựa trên lời giải của bài toán đầu tiên. Tuy nhiên, nhánh và ràng buộc giải quyết một vấn đề nhất định bằng cách chia nó thành ít nhất hai bài toán con bị hạn chế mới. Do đó, đây là một sự khác biệt khác giữa backtracking với nhánh và ràng buộc.

Hiệu quả

Phần kết luận

Backtracking là một thuật toán để nắm bắt một số hoặc tất cả các giải pháp cho các vấn đề tính toán nhất định, đặc biệt là đối với các vấn đề thỏa mãn ràng buộc. Mặt khác, Branch and Bound là một thuật toán để tìm ra các giải pháp tối ưu cho nhiều vấn đề tối ưu hóa, đặc biệt là trong tối ưu hóa tổ hợp và rời rạc. Đó là sự khác biệt chính giữa Backtracking và Branch and Bound.

Thẩm quyền giải quyết:

1. “Kỹ thuật thiết kế thuật toán DAA - Javatpoint.” Www.javatpoint.com, Có sẵn tại đây. 2. “Giới thiệu Backtracking - Javatpoint.” Www.javatpoint.com, Có sẵn tại đây.3. "Bẻ khóa ngược." Wikipedia, Wikimedia Foundation, ngày 7 tháng 12 năm 2018, Có sẵn tại đây. 4. "Chi nhánh và ràng buộc." Wikipedia, Wikimedia Foundation, ngày 8 tháng 10 năm 2018, sẵn có tại đây. “Backtracking là gì? - Định nghĩa từ Techopedia. ” Techopedia.com, Có sẵn tại đây.

Hình ảnh lịch sự:

1. “Các thuật toán v.s. Ngôn ngữ lập trình ”của Lubaochuan - Tác phẩm riêng (CC BY-SA 4.0) qua Commons Wikimedia

Sự khác biệt giữa Backtracking và Branch and Bound