Je ne suis pas un théoricien de l'informatique, mais je pense que ce problème du monde réel appartient ici.
Le problème
Mon entreprise possède plusieurs unités à travers le pays.
Nous avons offert aux employés la possibilité de travailler sur une autre unité. Mais il y a une condition: le nombre total de travailleurs dans une unité ne peut pas changer.
Cela signifie: nous autoriserons un employé à quitter son unité si quelqu'un veut sa place.
Exemple de données de demande (fictives):
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
Ce qui précède, tracé:
Voyez comment nous devons choisir entre les options rouge, bleu ou noir?
Le vrai problème est un peu plus complexe, car nous avons 27 unités et 751 demandes. Veuillez jeter un œil à la visualisation
Le but
Après avoir collecté toutes les demandes, comment satisfaire la plupart d'entre elles?
Application de la théorie (?)
Ayant le graphe , soit chaque unité soit un sommet V et une requête un bord dirigé E , un échange réussi prendra la forme d'un cyle dirigé.
Chaque cycle ne doit utiliser qu'une seule fois ( un travailleur ne peut pas quitter son unité deux fois ), mais peut visiter V plusieurs fois ( une unité peut avoir de nombreux travailleurs qui souhaitent quitter ).
La question
Si ce problème est exprimé comme
"Comment trouver les cycles qui, ensemble, impliquent le plus grand nombre d'arêtes non partagées dans un graphe orienté"?
Allons-nous satisfaire la plupart des demandeurs?
Cela étant vrai, il existe un algorithme pour trouver cet ensemble optimal de cycles?
Cette approche greddy résoudra-t-elle le problème?
- Trouvez le plus grand cycle dirigé sur ;
- Retirez ses bords de ;
- Répétez 1 jusqu'à ce qu'il n'y ait pas de cycle dirigé sur ;
Pouvez-vous m'aider?
Connaissez-vous une autre façon de décrire le problème d'origine (rendre la plupart des demandeurs heureux)?
Edit : changé de département en unité, pour mieux décrire le problème.