Tôi có một mạng có thể trông như thế này:
Về cơ bản, tôi muốn biết số lượng tối thiểu của các vòng tròn màu xanh lá cây có thể ngắt kết nối nguồn và ráo nước nếu loại bỏ/vô hiệu hóa. (trong trường hợp này là 1)
Tôi đã triển khai thành công trình giải thuật Edmonds-Karp, nhưng tôi không biết cách lập mô hình mạng với các cạnh được chỉ dẫn, vì vậy tôi nhận được kết quả mong muốn.
Nếu tôi chỉ thay thế mỗi kết nối giữa các nút với hai cạnh hướng đối diện với dung lượng 1, tôi nhận được luồng tối đa là 2 với EdmondsKarp, nhưng tôi chỉ cần xóa 1 vòng tròn màu xanh lá cây để ngắt mạng.
Làm cách nào để tạo mô hình mạng của mình dưới dạng các nút và được chỉ dẫn bằng lưỡi?mạng Modeling theo chỉ dẫn graph
Trả lời
Bạn có thể giảm vấn đề này xuống vấn đề cắt không tiêu chuẩn trong biểu đồ được chỉ dẫn, sau đó có thể giải quyết được ví dụ: bằng thuật toán Edmonds – Karp. Đối với mỗi v đỉnh, tạo hai đỉnh v_in và v_out và cạnh chỉ đạo (v_in, v_out) và cho mỗi cạnh {v, w}, thêm hai cạnh được hướng (v_out, w_in) và (w_out, v_in). Sau đó không khó để thấy rằng luồng cực đại từ s_in đến t_out tương ứng với một đỉnh cắt tối thiểu giữa s và t.
Bạn đã xác định luồng tối đa được xác định chính xác - đó là 2 cho mạng của bạn.
Từ định nghĩa của flow network
Một dòng chảy phải đáp ứng các hạn chế rằng lượng dòng chảy vào một nút bằng với lượng dòng chảy ra khỏi nó, trừ khi nó là một nguồn, trong đó có dòng chảy hoặc bồn rửa lớn hơn, có lưu lượng đến khác
Vì vậy, đối với nút giữa bạn có 2 dòng tối đa (vào và ra). Vì vậy, chỉ biết luồng tối đa sẽ không cung cấp cho bạn câu trả lời cho việc cắt giảm tối thiểu.
Định lý
max-flow min-cắt bang lý rằng trong một luồng trên mạng, số tiền tối đa dòng chảy đi từ nguồn đến bồn rửa là tương đương với công suất tối thiểu mà khi loại bỏ một cách cụ thể từ mạng gây ra tình hình rằng không có dòng chảy có thể vượt qua từ nguồn vào sink
như vậy, có bạn biết số lượng dòng chảy bạn cần phải loại bỏ, nhưng bạn không biết theo cách nào để loại bỏ nó. Tôi nghĩ rằng đây không phải là tầm thường và bạn sẽ cần phải tìm kiếm cụ thể để cắt giảm.
- 1. SQL Modeling Follower/Các mối quan hệ tiếp theo Đối với mạng xã hội
- 2. Modeling Các Shunting-Yard Algorithm
- 3. Làm thế nào để tái tạo GitHub Mạng Graph
- 4. Objective-C và UML Modeling
- 5. Graph Layout sử dụng Graph #
- 6. graph - Dijkstra cho The Single-Nguồn Longest Đường dẫn
- 7. Tìm địa chỉ mạng
- 8. EMF (Eclipse Modeling Framework) trong C#
- 9. Graph màu Algorithm
- 10. Graph âm mưu: chỉ giữ dữ liệu phù hợp nhất
- 11. Theo dõi mạng theo quy trình trong Obj-C?
- 12. Tìm tất cả các đường dẫn trong biểu đồ được chỉ dẫn bằng các chu kỳ
- 13. Chuyển đổi địa chỉ CIDR thành mặt nạ mạng con và địa chỉ mạng
- 14. Theo dõi lưu lượng mạng Mac
- 15. Neo4j graph visualizing library
- 16. RDF Graph Entailment
- 17. Kiểm tra xem đường dẫn có đang trên mạng
- 18. Đọc một tập tin trên một đường dẫn mạng
- 19. Chỉ báo chất lượng mạng trên webapp
- 20. Đặt chỉ số giao diện mạng
- 21. Router vs Switch (Dịch Địa chỉ Mạng)
- 22. Entity Framework CTP5 (Mã đầu tiên) Modeling - bảng tra cứu
- 23. Tạo các sự kiện C# với Visual Studio Modeling Project
- 24. Stacked Bar Graph Matlab
- 25. Clone Tổng Object Graph
- 26. WPF Graph Layout Component
- 27. C# minmax graph search
- 28. Có hướng dẫn UIScrollView nào tốt trên mạng không?
- 29. Đường dẫn mạng truy cập php dưới cửa sổ
- 30. Directory.Exists không hoạt động cho đường dẫn mạng
Sau khi một số Google không ăn quả, tôi đoán tôi sẽ thử "sức mạnh vũ phu" theo cách đầu tiên: Tìm luồng tối đa. Loại bỏ nút với hầu hết dòng chảy qua nó. Lặp lại 2 bước đó cho đến khi dòng tối đa bằng không. Số lượng các nút bị xóa phải là số lượng tối thiểu, vì vậy tôi chỉ đếm số đó. – Svante
@Svante, không có điều này sẽ không đưa ra câu trả lời đúng - hãy tưởng tượng một trường hợp có cùng lưu lượng tối đa, giá trị 7, đi qua 2 bộ nút, rít qua 4,2,1 và sau đó thông qua 3,2,2. Loại bỏ 4 và 3 sẽ không mang nó đến số không và bạn sẽ đạt được lưu lượng bằng không chỉ sau khi loại bỏ 2 cuối cùng trong tập thứ hai. Bằng cách này bạn sẽ đếm quá nhiều nút. Nhưng, tôi tin (đã không đi qua các thuật toán) mà Edmonds-Karp kiểm tra kịch bản cắt giảm tối thiểu, nhưng không giữ lại nó.Tôi sẽ tìm một cách để sửa đổi các thuật toán dòng chảy tối đa trong một cách mà sẽ trả lại các nút thông qua đó tối đa lưu lượng đi. – Unreason
yeah chỉ cần thực hiện nó, và nó không hoạt động. Dòng chảy tối đa và cắt nhỏ luôn giống nhau. Nhưng min-cut chỉ là tổng min của dòng chảy trên các cạnh được cắt để tách nguồn và cống. Vì vậy, nó không thực sự cho tôi biết nhiều hơn, hoặc bất cứ điều gì, về các cạnh hoặc nút là những người quan trọng. – Svante