Tôi không phải là một nhà lý luận khoa học máy tính, nhưng nghĩ rằng vấn đề thế giới thực này thuộc về nơi này.
Vấn đề
Công ty tôi có một số đơn vị trên toàn quốc.
Chúng tôi cung cấp cho nhân viên khả năng làm việc trên một đơn vị khác. Nhưng có một điều kiện: Tổng số công nhân trên một đơn vị không thể thay đổi.
Điều đó có nghĩa là: Chúng tôi sẽ cho phép một nhân viên rời khỏi đơn vị của mình nếu ai đó muốn vị trí của anh ta.
Ví dụ (hư cấu) dữ liệu yêu cầu:
Name Origin Destination
Maria 1 -> 2
Marcos 2 -> 3
Jones 3 -> 4
Terry 4 -> 5
Joe 5 -> 6
Rodrigo 6 -> 1
Barbara 6 -> 1
Marylin 1 -> 4
Brown 4 -> 6
Benjamin 1 -> 3
Lucas 4 -> 1
Trên đây, âm mưu:
Xem làm thế nào chúng ta phải lựa chọn giữa các tùy chọn màu đỏ, xanh hoặc đen?
Vấn đề thực sự phức tạp hơn một chút, bởi vì chúng tôi có 27 đơn vị và 751 yêu cầu. Xin hãy nhìn vào trực quan
Mục đích
Đã thu thập tất cả các yêu cầu, làm thế nào để đáp ứng hầu hết chúng?
Ứng dụng lý thuyết (?)
Có đồ thị , hãy để mọi đơn vị là một đỉnh và một yêu cầu là cạnh được định hướng , một trao đổi thành công sẽ có dạng một cyle có hướng.
Mỗi chu kỳ phải sử dụng chỉ một lần ( một công nhân không thể rời khỏi đơn vị của mình hai lần ), nhưng có thể truy cập nhiều lần ( một đơn vị có thể có nhiều công nhân muốn rời đi ).
Câu hỏi
Nếu vấn đề này được thể hiện là
"Làm thế nào để tìm các chu kỳ, cùng với nhau, liên quan đến số lượng cạnh không chia sẻ lớn nhất trong đồ thị có hướng"?
Chúng tôi sẽ đáp ứng hầu hết những người yêu cầu?
Điều đó có đúng không, có một thuật toán để tìm ra bộ chu trình tối ưu đó không?
Cách tiếp cận greddy này sẽ giải quyết vấn đề?
- Tìm chu trình định hướng lớn nhất trên ;
- Xóa các cạnh của nó khỏi ;
- Lặp lại 1 cho đến khi không có chu trình định hướng trên ;
Bạn có thể giúp tôi được không?
Bạn có biết một cách khác để mô tả vấn đề ban đầu (làm cho hầu hết những người yêu cầu hài lòng) không?
Chỉnh sửa : thay đổi bộ phận thành đơn vị, để mô tả tốt hơn vấn đề.