Eu não sou um teórico da ciência da computação, mas acho que esse problema do mundo real pertence aqui.
O problema
Minha empresa possui várias unidades em todo o país.
Oferecemos aos funcionários a possibilidade de trabalhar em outra unidade. Mas há uma condição: o número total de trabalhadores em uma unidade não pode mudar.
Isso significa: permitiremos que um funcionário saia de sua unidade se alguém quiser seu lugar.
Dados de solicitação de exemplo (ficticious):
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
O acima, plotado:
Veja como temos que escolher entre as opções vermelha, azul ou preta?
O problema real é um pouco mais complexo, porque temos 27 unidades e 751 solicitações. Por favor, dê uma olhada na visualização
O objetivo
Tendo coletado todos os pedidos, como satisfazer a maioria deles?
Aplicação da teoria (?)
Tendo o gráfico , que cada unidade seja um vértice V e uma solicitação seja uma aresta direcionada E , uma troca bem-sucedida assumirá a forma de um cyle direcionado.
Cada ciclo deve usar apenas uma vez ( um trabalhador não pode deixar sua unidade duas vezes ), mas pode visitar V várias vezes ( uma unidade pode ter muitos trabalhadores que desejam sair ).
A questão
Se este problema for expresso como
"Como encontrar os ciclos que, juntos, envolvem o maior número de arestas não compartilhadas em um gráfico direcionado"?
Satisfazeremos a maioria dos solicitantes?
Isso é verdade, existe um algoritmo para encontrar esse conjunto ideal de ciclos?
Essa abordagem greddy resolverá o problema?
- Encontre o maior ciclo direcionado em ;
- Remova as arestas de ;
- Repita 1 até que não haja um ciclo direcionado em ;
Pode me ajudar?
Você conhece outra maneira de descrever o problema original (agradar a maioria dos solicitantes)?
Editar : departamento alterado para unidade, para melhor descrever o problema.