Existem caixotes, o i th bin conter um i bolas. As bolas tem n cores, há um i bolas de cor i . Deixe m = Σ n i = 1 um i .
Uma troca é pegar uma bola de uma caixa e trocar com uma bola de outra caixa. Queremos um número mínimo de trocas, de modo que cada compartimento contenha apenas bolas da mesma cor.
Conheço casos especiais fáceis para todos os i . (Se um i = 2 para todo i , então você pode até mesmo fazê-lo, trocando cada bola no máximo uma vez.)
Edit : Isso está errado, porque encontrar é NP-difícil.
Se soubermos qual cor vai para qual compartimento, o problema é fácil.
Considere um multi-dígrafo , V = { v 1 , … , v n } . Se sabemos que a cor i vai para o bin b ( i ) , então existem k arcos paralelos ( j , b ( i ) ) em A iff bin j contém k bolas da cor i. Cada componente do gráfico é euleriano. O número mínimo de permutas necessários é , onde c ( D ) é o número de ciclos disjuntos de arco que abrange um . Podemos trocar "seguindo" um circuito euleriano. (uma troca usando um arco de um ciclo mínimo pode alterá-lo para um ciclo mínimo menor e um loop automático). Depois que todo o gráfico é definido como auto-loops, fizemos todos os swaps necessários.
Quão difícil é esse problema em geral?