Phương pháp thiết kế thuật toán Chi nhánh và ràng buộc (còn gọi là phân nhánh và Dimensioning) là một biến thể của Backtracking cải thiện đáng kể và chủ yếu được áp dụng để giải quyết các câu hỏi hay vấn đề tối ưu.
Kỹ thuật của chi nhánh và ràng buộc thường được xem như là một cây giải pháp, trong đó mỗi chi nhánh dẫn đến một giải pháp có thể để các bài hiện tại. Các đặc điểm của kỹ thuật này trên những trang trước (và nợ mà tên của nó) là thuật toán có trách nhiệm phát hiện có chi nhánh giải pháp đưa ra không còn được tối ưu để "cắt tỉa" nhánh cây và không tiếp tục lãng phí nguồn lực và quy trình
Trình bày vấn đề
Từ các thuật toán sau để giải quyết Mochila 0 / 1 thông qua các chi nhánh và cắt tỉa cành, tôi đã thực hiện một chương trình trong C # mà giải quyết vấn đề này với các chiến lược sau:
- FIFO - (lần đầu tiên Trong Out) First In - First Out
- LIFO - (Lần đầu tiên trong Out) cuối năm đầu tiên. (Pila)
- LC - LIFO - cuối cùng trong Array đầu ra. (ARRAY OF Batteries)
- LC - FIFO - Array lần đầu trong đầu ra. (ARRAY OF KEO)
Danh sách các nút sống (LNV) sẽ được hình thành bởi các đối tượng của lớp Node, được định nghĩa như sau:
Nghị quyết Quy trình
- Vectors được xếp hạng theo trọng lượng và tỷ lệ lợi thế B / P.
- Một khi điều này nút gốc được tạo ra và thêm vào danh sách của các nút còn sống.
- Tại thời điểm này vào một vòng lặp được lặp đi lặp lại cho đến khi LNV là có sản phẩm nào sau đây:
- Nếu nút trích ra lời hứa rằng các lợi ích tốt nhất mà chúng tôi đã nghiên cứu cho đến nay (lần đầu tiên cắt tỉa) thể loại con cái của họ tại nút y.
- Đối với mỗi con nếu nó có trọng lượng là> hơn trọng lượng tối đa cho phép không thử (I DO NOTHING) rằng đối với nhà xây dựng lớp tôi khởi tạo các nút và chiều cao để các giá trị con số rất nhỏ.
- Nếu không điều trị và nút giới tính ước lượng cho phù hợp.
- Sau đó, nó sẽ kiểm tra xem tình hình hiện nay là một giải pháp và nếu được cập nhật nút giải pháp.
- Nếu không có giải pháp được xem nếu trên ràng buộc của các nút mà chúng tôi đang đối phó với lớn hơn hoặc bằng C mà chúng tôi (cắt tỉa 2) được thêm vào LNV nếu không.
Mục tiêu:
Mục tiêu là để có được những giải pháp tối ưu cho vấn đề knapsack với các chiến lược khác nhau và so sánh những con số của các nút được tạo ra trong mỗi để xem đó là hiệu quả hơn trong trường hợp quan hệ.
Đề xuất giải pháp
Dự án này có chứa mã rằng quyết định vấn đề của 4 chiến lược được liệt kê ở trên. Tôi cũng bao gồm một báo cáo với lời giải thích chi tiết, và so sánh với dấu vết của từng chiến lược, nơi chúng ta sẽ thấy số nút pruned và số lượng của các nút tạo ra, cho phép so sánh.











Jaaaaaaaa!
Oyster! Nghĩ rằng nó là cây trang trí. (Tôi nghĩ rằng weeb đầy đủ hơn ... với cắt tỉa và tất cả mọi thứ!)
Đó forgetfulness!
Sự thật này ... Tôi không hiểu.
A mi tôi đi khắc phục sự cố phần cứng, "mạng" và tạo ra Windows của mình với "nLite" và "WPi" và những thứ khác.
Salu2!
Jajajja, trong trường hợp này trong phần mã của tôi C #, tôi trình bày các giải pháp của cá nhân tôi cho rằng vấn đề cổ điển phát sinh trong sự nghiệp của Kỹ thuật Máy tính