Complessità del problema dell'adozione del gattino


14

Questo è emerso mentre stavo cercando di rispondere a questa domanda sulla minimizzazione della lunghezza dei cavi . Stavo per chiamare questo il problema del "matrimonio poligamo", ma Internet, quindi i gattini. Sìì!

Supponiamo di avere gattini che hanno bisogno di essere adottato da N persone, M > N . Per ogni gattino, io e ogni persona j c'è un costo c i j . Vorremmo ridurre al minimo il costo totale per l'adozione di tutti i cuccioli. V'è anche un insieme di vincoli: ogni persona j è in grado di adottare non più di u j gattini.MNM>Nijcijjuj

Senza i vincoli il problema è semplice; ogni gattino va con la persona j per cui c i j è minimo. Con i vincoli esiste un algoritmo efficiente per questo problema o è NP-difficile?ijcij

Risposte:


5

Questo è il problema del flusso massimo di costo minimo.

Considera un grafico , dove A è l'insieme di gattini, B è l'insieme di persone.G=(AB{s,t},E)AB

Sia la capacità dei bordi e cC:ER+ il costo di un bordo. Ci assicuriamo chec:ER+

  1. C'è un bordo tra , dove a iA e b jB , e C ( a i , b j ) = 1 , c ( a i , b j ) = c i , j .ai,bjaiAbjBC(ai,bj)=1c(ai,bj)=ci,j
  2. C'è un bordo tra e a iA , e C ( s , a i ) = 1 , c ( ssaiAC(s,ai)=1 .c(s,ai)=0
  3. C'è un bordo tra e t , e C ( b j , t ) = u j , c ( b j , t ) = 0 .bjBtC(bj,t)=ujc(bj,t)=0

Se il flusso massimo è , allora sappiamo che esiste una soluzione. È possibile creare una soluzione di costo minimo dal flusso massimo di costo minimo.M


4

Questo è il problema di corrispondenza perfetta del peso minimo che è polinomiale. Si consideri il grafo bipartito completo , in cui L contiene un nodo l i per ciascuna gattino i , R è costituito da u j copie del nodo r j per ogni persona j , e bordi e i jE tra l i e ciascuna copia di r j , con pesi c i j .(L,R,E)LliiRujrjjeijElirjcij

Sappiamo che , altrimenti non tutti i gattini possono essere assegnati a persone.|L||R|

Poiché la corrispondenza perfetta deve corrispondere a tutti i nodi, è necessario aggiungere nodi fittizi a (per ottenere | L | = | R | ) e collegarli con bordi a peso zero a tutti i nodi in RL|L|=|R|R .


2

Forse di interesse è l'osservazione che si può ridurre la partizione a una variante di questo problema. Dato è un'istanza di Partizione con elementi con q anche da cui dobbiamo scegliere un sottoinsieme S { 1 , , q } con | S | = q / 2 tale che i S x i = i S x i = K{x1,,xq}qS{1,,q}|S|=q/2iSxi=iSxi=K. (Nota che il requisito di scegliere esattamente metà degli elementi non è la solita forma ma questa forma è ancora NP-difficile.) Lascia che ogni gattino sia un elemento del set; lascia che ci siano due persone; lasciare che i pesi siano e c i 2 = - x i ; lasciare u 1 = u 2 = q / 2 . Quindi questa istanza di Kitten Adoption ha un massimo di 0 se l'istanza di Partition ha una soluzione.ci1=xici2=xiu1=u2=q/20

CCq

Non sono sicuro di cosa si possa dire della complessità del problema originale, ma dato che il visto spesso "uno di minimizzare / massimizzare è NP-difficile, l'altro è in configurazione P" per problemi di ottimizzazione combinatoria, inizierei a cercare un algoritmo efficiente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.