Ich bin kein Theoretiker der Informatik, aber denke, dass dieses Problem der realen Welt hierher gehört.
Das Problem
Meine Firma hat mehrere Einheiten im ganzen Land.
Wir haben den Mitarbeitern die Möglichkeit geboten, an einer anderen Einheit zu arbeiten. Aber es gibt eine Bedingung: Die Gesamtzahl der Arbeiter in einer Einheit kann sich nicht ändern.
Das heißt: Wir erlauben einem Mitarbeiter, seine Einheit zu verlassen, wenn jemand seinen Platz will.
Beispiel (fiktive) Anforderungsdaten:
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
Das oben Gezeichnete:
Sehen Sie, wie wir zwischen den Optionen Rot, Blau oder Schwarz wählen müssen?
Das eigentliche Problem ist etwas komplexer, da wir 27 Einheiten und 751 Anfragen haben. Bitte schauen Sie sich die Visualisierung an
Das Ziel
Wenn Sie alle Anfragen gesammelt haben, wie können Sie die meisten davon befriedigen?
Theorie (?) Anwendung
Mit Graph sei jede Einheit ein Vertex und eine Anfrage eine gerichtete Kante , ein erfolgreicher Austausch wird die Form eines gerichteten Cylus annehmen.
Jeder Zyklus darf nur einmal verwenden ( ein Arbeiter kann seine Einheit nicht zweimal verlassen ), sondern kann mehrmals besuchen ( eine Einheit kann viele Arbeiter haben, die gehen wollen ).V
Die Frage
Wenn dieses Problem ausgedrückt wird als
"Wie finde ich die Zyklen, die zusammen die meisten nicht gemeinsam genutzten Kanten in einem gerichteten Graphen enthalten?"
Werden wir die meisten Anfragenden zufrieden stellen?
Wenn das stimmt, gibt es einen Algorithmus, um diese optimale Menge von Zyklen zu finden?
Wird dieser greddy Ansatz das Problem lösen?
- Finde den größten gerichteten Zyklus auf ;
- Entferne die Kanten von ;
- Wiederholen Sie 1, bis auf kein gerichteter Zyklus mehr vorliegt .
Können Sie mir helfen?
Kennen Sie einen anderen Weg, um das ursprüngliche Problem zu beschreiben (was die meisten Anfragenden glücklich macht)?
Bearbeiten : Abteilung in Einheit geändert, um das Problem besser zu beschreiben.