Complexidade do problema da adoção de gatinhos

14

Isso surgiu enquanto eu tentava responder a essa pergunta sobre Minimização do comprimento da fiação . Eu chamaria isso de problema do "casamento polígamo", mas a internet, então gatinhos. Yay!

Suponha que temos gatinhos que precisam ser adotado por pessoas, . Para cada gatinho, e cada pessoa existe um custo . Gostaríamos de minimizar o custo total da adoção de todos os gatinhos. Há também um conjunto de restrições: cada pessoa é capaz de adotar não mais que gatinhos.N M > N i j c i j j u jMNM>NEujcEujjvocêj

Sem as restrições, o problema é fácil; cada gatinho que acompanho com a pessoa para a qual é mínimo. Com as restrições, existe um algoritmo eficiente para esse problema ou é NP-difícil?j c i jEujcEuj

Lógica Errante
fonte

Respostas:

5

Esse é o problema de fluxo máximo de custo mínimo.

Considere um gráfico , onde A é o conjunto de gatinhos, B é o conjunto de pessoas.G=(UMAB{s,t},E)UMAB

Seja a capacidade das arestas e c : E R + seja o custo de uma aresta. Garantimos queC:ER+c:ER+

  1. Existe uma aresta entre , onde a iA e b jB e C ( a i , b j ) = 1 , c ( a i , b j ) = c i , j .umaEu,bjumaEuUMAbjBC(umaEu,bj)=1c(umaEu,bj)=cEu,j
  2. Há uma vantagem entre e um iA , e C ( s , um i ) = 1 , c ( s , um i ) = 0 .sumaEuUMAC(s,umaEu)=1c(s,umaEu)=0 0
  3. Existe uma aresta entre e t , e C ( b j , t ) = u j , c ( b j , t ) = 0 .bjBtC(bj,t)=vocêjc(bj,t)=0 0

Se o fluxo máximo é , sabemos que existe uma solução. Você pode construir uma solução de custo mínimo a partir do fluxo máximo de custo mínimo.M

Chao Xu
fonte
4

Esse é o problema de correspondência perfeita de peso mínimo que é polinomial. Considere o grafo bipartido completo , em que L contém um nó l i para cada gatinho i , R consiste de u j cópias do nó r j para cada pessoa j , e arestas de e i jE entre l i e cada cópia de r j , com pesos c i j .(eu,R,E)eueuEuEuRvocêjrjjeijElirjcij

Nós sabemos que , caso contrário, nem todos os gatinhos poderão ser atribuídos a pessoas.|L||R|

Desde perfeita correspondência deve coincidir com todos os nós, precisamos adicionar nós fictícios para (para obter | L | = | R | ) e conectá-los com zero bordas de peso para todos os nós em R .L|L|=|R|R

Parham
fonte
2

Possivelmente interessante é a observação de que se pode reduzir a Partição a uma variante desse problema. Dada é uma instância da Partição com elementos com q mesmo a partir do qual temos que escolher um subconjunto S { 1 , , q } com | S | = q / 2 tal quei S x i = i S x i = K{x1,,xq}qS{1,,q}|S|=q/2iSxi=iSxi=K. (Observe que o requisito de escolher exatamente metade dos elementos não é a forma usual, mas essa forma ainda é difícil para o NP.) Deixe cada gatinho ser um elemento do conjunto; que haja duas pessoas; deixar os pesos ser e C i 2 = - x i ; Seja u 1 = u 2 = q / 2 . Em seguida, este exemplo de adopção gatinho tem um máximo de 0 sse o exemplo de partição tem uma solução.ci1=xici2=xiu1=u2=q/20

Se os custos no Kitten Adoption forem sempre positivos, basta adicionar uma constante grande o suficiente a todos os pesos para garantir que eles sejam o sinal certo, quando o limite necessário for C q em vez de 0.CCq

Não sei ao certo o que isso diz sobre a complexidade do problema original, mas, considerando o frequentemente visto "um de minimizar / maximizar é NP-difícil, o outro está na configuração P" para problemas de otimização combinatória, eu começaria a procurar um algoritmo eficiente.

András Salamon
fonte