No soy un teórico de la informática, pero creo que este problema del mundo real pertenece aquí.
El problema
Mi compañía tiene varias unidades en todo el país.
Ofrecimos a los empleados la posibilidad de trabajar en otra unidad. Pero hay una condición: el número total de trabajadores en una unidad no puede cambiar.
Eso significa: permitiremos que un empleado abandone su unidad si alguien quiere su lugar.
Ejemplo de datos de solicitud (ficticios):
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
Lo anterior, trazado:
¿Ves cómo tenemos que elegir entre las opciones rojo, azul o negro?
El verdadero problema es un poco más complejo, porque tenemos 27 unidades y 751 solicitudes. Por favor, eche un vistazo a la visualización
La meta
Habiendo recogido todas las solicitudes, ¿cómo satisfacer la mayoría de ellas?
Aplicación de la teoría (?)
Teniendo el gráfico , deje que cada unidad sea un vértice V y una solicitud sea un borde dirigido E , un intercambio exitoso tomará la forma de un ciclo dirigido.
Cada ciclo debe usar solo una vez ( un trabajador no puede abandonar su unidad dos veces ), pero puede visitar V varias veces ( una unidad puede tener muchos trabajadores que quieran irse ).
La pregunta
Si este problema se expresa como
"¿Cómo encontrar los ciclos que, juntos, involucran el mayor número de aristas no compartidas en un gráfico dirigido"?
¿Satisfaceremos a la mayoría de los solicitantes?
Siendo cierto, ¿hay un algoritmo para encontrar ese conjunto óptimo de ciclos?
¿Este enfoque de greddy resolverá el problema?
- Encuentra el ciclo dirigido más grande en ;
- Quite sus bordes de ;
- Repita 1 hasta que no haya un ciclo dirigido en ;
¿Me puedes ayudar?
¿Conoces otra forma de describir el problema original (haciendo felices a la mayoría de los solicitantes)?
Editar : se cambió el departamento a la unidad, para describir mejor el problema.