Ben bir bilgisayar bilimi teorisyeni değilim ama bu gerçek dünya probleminin buraya ait olduğunu düşünüyorum.
Sorun
Şirketimin ülke genelinde birkaç birimi var.
Çalışanlarımıza başka bir birimde çalışma imkanı sunduk. Ancak bir şart var: Bir birimin toplam çalışan sayısı değişemez.
Bunun anlamı: Birisi onun yerini istiyorsa bir çalışanın birimini bırakmasına izin vereceğiz.
Örnek (kurgusal) istek verileri:
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
Yukarıdaki, çizilen:
Kırmızı, mavi veya siyah seçenekler arasında nasıl seçim yapmamız gerektiğini gördünüz mü?
Asıl sorun biraz daha karmaşık, çünkü 27 birim ve 751 isteğimiz var. Lütfen görselleştirmeye bir göz atın
Amaç
Tüm talepleri topladıktan sonra, çoğu nasıl karşılanır?
Teori (?) Uygulaması
grafiğine sahip , her birimin bir V köşesi olmasına ve bir isteğin bir E kenarı olmasına izin verin. , başarılı bir alışveriş, yönlendirilmiş bir tüp şeklini alacaktır.
Her döngü yalnızca bir kez kullanmalıdır ( bir işçi ünitesini iki kez bırakamaz ), ancak birkaç kez V'yi ziyaret edebilir ( bir birim bırakmak isteyen birçok işçiye sahip olabilir ).
Soru
Bu sorun olarak ifade edilirse
"Birlikte, en çok paylaşılmayan kenarı yönlendirilmiş grafikte içeren çevrimleri nasıl bulabilirim?"
Talep edenlerin çoğunu tatmin edecek miyiz?
Bu doğru, bu optimal döngü setini bulmak için bir algoritma var?
Bu garip yaklaşım bu sorunu çözecek mi?
- en büyük yönlendirilmiş çevrimi bulun ;
- Kenarlarını çıkarın ;
- yönlendirilmiş bir döngü olmadıkça 1'i tekrarlayın ;
Bana yardımcı olabilir misiniz?
Özgün sorunu tanımlamanın başka bir yolunu biliyor musunuz (talep edenlerin çoğunu mutlu etmek)?
Düzenleme : sorunu daha iyi tanımlamak için departmanı birime değiştirdi.