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

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=(UMA∪B∪{s,t},E)UMAB

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

  1. Existe uma aresta entre , onde a i ∈ A e b j ∈ B e C ( a i , b j ) = 1 , c ( a i , b j ) = c i , j .umaEu,bjumaEu∈UMAbj∈BC(umaEu,bj)=1c(umaEu,bj)=cEu,j
  2. Há uma vantagem entre e um i ∈ A , e C ( s , um i ) = 1 , c ( s , um i ) = 0 .sumaEu∈UMAC(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 .bj∈BtC(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


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 j ∈ E entre l i e cada cópia de r j , com pesos c i j .(eu,R,E)eueuEuEuRvocêjrjjeij∈Elirjcij

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


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 que ∑ i ∈ S x i = ∑ i ∉ S x i = K{x1,…,xq}qS⊆{1,…,q}|S|=q/2∑i∈Sxi=∑i∉Sxi=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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.