Phương pháp thiết kế thuật toán Chi nhánh và bị ràng buộc (còn gọi là Chi nhánh và Bound) là một biến thể của tùy ý cải thiện đáng kể và chủ yếu là áp dụng để giải quyết câu hỏi hoặc vấn đề của tối ưu hóa.
Kỹ thuật của Chi nhánh và bị ràng buộc thường hiểu là một cây, giải pháp, nơi mà mỗi chi nhánh dẫn đến một giải pháp có thể để các bài hiện hành. Đặc điểm của kỹ thuật này trên những người thân trước đó (và đó nợ tên của nó) là thuật toán có trách nhiệm phát hiện những phân nhánh các giải pháp đưa ra là không còn được tốt nhất, để "prune" mà chi nhánh của cây và không để tiếp tục lãng phí tài nguyên và các quá trình
Vấn đề
Từ thuật toán sau đây để giải quyết Backpack 0 / 1 thông qua chi nhánh và cắt tỉa, 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 - (Ngày Trong First Out) cuối cùng trong ra đầu tiên. (Pila)
- LC - LIFO - Array Ngày Trong ra đầu tiên. (Pin MẢNG)
- LC - FIFO - Array đầu tiên Trong Out đầu keo. (MẢNG OF)
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:
Quy trình giải quyết
- Vectors được xếp hạng theo trọng lượng lợi nhuận và tỷ lệ 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ác nút còn sống.
- Tại thời điểm này đi vào một vòng lặp đi lặp lại cho đến khi được LNV là có sản phẩm nào sau đây:
- Nếu nút trích xuất hứa hẹn những lợi ích lớn nhất mà chúng tôi đã nghiên cứu cho đến nay (đầu tiên tỉa) thể loại con cái của họ trong nút y.
- Đối với mỗi đứa trẻ nếu nó có trọng lượng là> mà trọng lượng tối đa không điều trị (không phải làm gì) rằng trong constructor lớp nút Tôi khởi tạo các giá trị của giới hạn về số lượng rất nhỏ.
- Nếu không điều trị và nút giới ước tính phù hợp.
- Sau đó 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 các giải pháp nút.
- Nếu không có giải pháp là xem liệu trên ràng buộc của nút mà chúng ta đang đối phó với lớn hơn hoặc bằng C mà chúng tôi (tỉa 2) được thêm vào LNV khác 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 đề Bài xếp ba lô với các chiến lược khác nhau và so sánh các con số của các nút 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ã mà giải quyết vấn đề của bốn chiến lược đã đề cập trước đó. 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ác nút được tạo ra, cho phép so sánh.











Jaaaaaaaa!
Oyster! Ông có nghĩ rằng tôi đã được cắt tỉa cây (tôi nghĩ. Rằng WEEB hoàn chỉnh hơn ... với tỉa và tất cả mọi thứ!)
Mà quên!
Sự thật ... Tôi không hiểu điều này.
Tôi thực sự sửa chữa các vấn đề đi "phần cứng", "mạng" và tạo ra Windows của tôi với "nLite" và "WPI" và một số những thứ khác.
Salu2!
Jajajja, trong trường hợp này trong phần mã của C # của tôi, tôi trình bày các giải pháp cá nhân của tôi đến các vấn đề phát sinh cổ điển trong sự nghiệp của Kỹ thuật Máy tính