Questo problema è NP-difficile . Per dimostrarlo, per prima cosa riformulerò questo problema (ottimizzazione) in un problema decisionale. Poi, ho riformulare il problema in una equivalente, da cui è abbastanza semplice da ottenere una riduzione della -coloring problema, che è NP-difficile per qualsiasi k ≥ 3 .kk≥3
Una breve formulazione del problema è la seguente:
Dati persone e un grafico G che codifica le loro relazioni di "donazione", trova la quantità minima di viaggi richiesta in modo tale che tutti i regali possano essere acquistati senza rovinare sorprese.nG
Tuttavia, questo è un problema di ottimizzazione. La classe NP è generalmente definita per problemi di decisione (in cui la risposta a ogni istanza è SÌ o NO). Una variante decisionale di questo è:
Dati persone e un grafico G che codifica le loro relazioni di "donazione" e un numero intero t , sta facendo al massimo t viaggi sufficienti per acquistare tutti i regali senza rovinare sorprese?nGtt
Definisco il problema di trovare una t -multicoloring diretta correttat di alcuni grafici come trovare una funzione multicolore c : V → P ( C ) che è corretta , dove C è un insieme di t 'colori' ( ie | C | = t ) e P ( C ) è l'insieme di potenza di C (cioè l'insieme di tutti i sottoinsiemi di CG=(V,E) c:V→P(C)Ct|C|=tP(C)CC). Una funzione multicolore è corretta se e solo se per ogni fronte , abbiamo quella c ( u ) ⊈ c ( v ) .(u→v)∈Ec(u)⊈c(v)
Io sostengo che il problema giro di shopping è equivalente al problema di decidere l'esistenza di un diretto -multicoloringt dello stesso grafico .G
Prova : Se abbiamo una corretta diretto -multicoloring c per G , dove rinominiamo i colori tali che CtcG quindi prendere in considerazione la sequenza di t itinerari T 1 , ... , T t , dove un vertice v va a fare shopping in viaggio T i se e solo se i ∈ c ( v ) . Quindi, per ogni fronte ( u → v ) ∈ EC={1,…,t}tT1,…,TtvTii∈c(v)(u→v)∈E, abbiamo che esiste un viaggio tale che u ∈ T i e v ∉ T i , poiché c ( u ) ⊈ c ( v ) . Pertanto, i viaggi T che sono sufficienti per comprare tutti i regali.Tiu∈Tiv∉Tic(u)⊈c(v)Ti
Se abbiamo una sequenza di viaggi , quindi costruisci la funzione multicolore c sul set di colori C T iT1,…,Ttc tale che c ( u ) = { i ∈ N | u ∈ T i } . Poi, per ogni arco ( u → v ) ∈ E , esiste un viaggio T i tale che u ∈C= { 1 , … , t }c ( u ) = { i ∈ N | u ∈ Tio}( u → v ) ∈ ETiou ∈ Tio e (poiché u può acquistare un regalo per v su qualche viaggio), il che significa che i ∈ c ( u ) e i ∉ c ( v ) , quindi c ( u ) ⊈ c ( v ) . ◻v ∉ Tiouvi ∈ c ( u )i ∉ c ( v )c ( u ) ⊈ c ( v )□
Trovare una corretta -multicoloring è fondamentalmente una strana riformulazione di un caso specifico di k -coloring. Pertanto, posso mostrare una riduzione del tempo polinomiale da ( ttK -colore problema: dato un grafico non orientatoG′=(V′,E′( t⌊ t / 2 ⌋) , prima trasforma questo grafico nel grafico diretto G = ( V , E ) , in modo che V = V ′ e ( u → v ) ∈ E se e solo se ( u , v ) ∈ E ′ o ( v , usol'= ( V', E')G=(V,E)V=V′(u→v)∈E(u,v)∈E′ (in altre parole, cambiamo i bordi non orientati in due bordi diretti).(v,u)∈E′
Considera un insieme più grande , in modo tale che non esistano a , b ∈ K , a ≠ b , tale che a ⊂ b . L'insieme di tutti i sottoinsiemi di dimensione C ⌊ t / 2 ⌋ , dove t = | C | , è un tale insieme. Pertanto, la dimensione massima di tale sottoinsieme è ( tK⊂P(C)a,b∈Ka≠ba⊂bC⌊t/2⌋t=|C| .(t⌊t/2⌋)
Se esiste una corretta -multicoloring per G , allora esiste una colorazione corretta che non utilizza più di ( ttG elementi disuguali daP(C)(*), quindi questo è un valore valido ( t(t⌊t/2⌋)P( C) -colore perG′.( t⌊ t / 2 ⌋)sol'
Se un vero ( t⌊ t / 2 ⌋) -colore esiste per , quindi esiste un insieme K ⊂ P ( C ) , | C | = t , tale che | K | ≥ ( tsol'K⊂ P( C)| C| =te non esiste alcunaa,b∈K,a≠b, tale chea⊂b. Quindi,Gha una correttat-multicoloringdiretta.| K| ≥ ( t⌊ t / 2 ⌋)a , b ∈ Ka ≠ ba ⊂ bsolt
Pertanto, questa è una riduzione del tempo polinomiale valida da -colore dell'attuale problema di acquisto contviaggi, il che significa che l'attuale problema di acquisto è NP-difficile. Nota che l'attuale problema di shopping è NP-completo, dal momento che possiamo verificare facilmente se un determinato elenco, al massimotviaggi ci permette di comprare tutti i regali senza rovinare sorprese.( t⌊ t / 2 ⌋)tt
(*): Se alcuni multi-colorazione utilizza colori più insiemi di un massimo 'non sottoinsieme' multi-colorazione C * , possiamo 'rinomina' CCC*C tale che è un sovrainsieme . C rimane corretto, poiché nessuno degli elementi di C ∗ essendo adiacente a un elemento diverso da C ∗ è un problema e nessuno dei set di colori era adiacente l'uno all'altro nella C originale . Così, senza perdita di generalità, si può supporre C * ⊂ C .C*CC*C*CC*⊂ C
Quindi, nota che "rinomina" con qualsiasi sottoinsieme diC∖ C* non rovina i bordi tra i nodi dei set di colori C ∖ C ∗ , poiché C ∗ non contiene elementi che sono un sottoinsieme di un altro. L'unica cosa che rimane è assicurarsi che i bordi tra C ∖ C ∗ e C ∗ non "rovinino" la colorazione.C*C∖ C*C*C∖ C*C*
Considera la seguente relazione sui set di colori in C ∪ C ∗ : due set di colori A e B sono collegati se e solo se esiste una coppia di vertici a , b tale che a ha un set di coloriRC∪ C*UNBa , bun' e b colore- set B e ( un , b ) ∈ e . Questa relazione può essere rappresentata dal grafico non orientato G = ( C ∪ C ∗ , R )UNBB( a , b ) ∈ Esol= ( C∪ C*, R ).
Innanzitutto, possiamo "ridurre" sostituendo una coppia che non ha un bordo in G con un singolo set di colori. La colorazione rimane corretta, poiché la modifica di due set di colori che non sono affatto adiacenti nello stesso colore non introduce bordi non validi. Di conseguenza, abbiamo ridotto G a un grafico completo.C∖ C*solsol
Ciò significa che se ha una quantità di set di colori inferiore o uguale a | C ∗ | , esiste la colorazione richiesta. Altrimenti, non esiste alcuna vera multi-colorazione, dal momento che C ∗ è un insieme più grande di 'non sottoinsieme', quindi non siamo in grado di colorare questa cricca. Pertanto, esiste necessariamente la multi-colorazione richiesta.sol| C*|C*
Dato che il grafico completo su nodi K n è in grado di colorare se e solo se abbiamo almeno n colori, abbiamo che n persone possono fare shopping a vicenda in t viaggi se e solo se ( tnKnnnt. Ciò significa in particolare che, sen≤12870,è sufficientefare solo16viaggi. Se ci sono meno regali da acquistare, non saranno necessari più viaggi, quindi questo è un limite superiore generale per ogni soluzione.( t⌊ t / 2 ⌋) ≥nn ≤ 1287016
Di seguito è la mia precedente "risposta", che fornisce un algoritmo euristico che non garantisce di ottenere l'ottimale, ma può essere calcolato in tempo polinomiale.
Un altro modo per formulare questo problema è trovare una copertura di grafici bipartiti sulle partizioni ( S i , T i ) per alcuni grafici diretti G con n nodi, in modo tale che la quantità di partizioni (ovvero i viaggi), qui m , sia minima.C= { ( S1, T1) , ... , ( Sm, Tm) }( Sio, Tio)solnm
Innanzitutto, alcune osservazioni, in parte provenienti da altre risposte:
- La strategia avida, in cui scegliamo un con un grafico bipartito in cui la quantità di spigoli in comune con G è massima, non porta a una soluzione ottimale (Un forte contro-esempio è il grafico completo con 6 nodi, dove questa strategia fallisce, indipendentemente dal grafico bipartito massimo scelto.).( Sio, Tio)sol6
- La strategia avida non è ottimale per i grafici aciclici arbitrari, considerare il seguente grafico:
Sia per eSio= { 3 , 5 , 6 } il grafico bipartito rimuove 4 bordi, ma solo { 3 , 5 , 6 } è ottimale.Sio= { 1 , 3 , 6 }4{3,5,6}
- Qualsiasi algoritmo (ottimale) avido non può preferire la dimensione della partizione scelta rispetto alla quantità di cicli (di qualsiasi dimensione) "rimossi" dalla partizione. Per vedere questo, considera il grafico con n+2 nodi, dove esiste un ciclo di nodi e ogni nodo nel ciclo ha 2 bordi aggiuntivi in uscita verso 2 nodi aggiuntivi A , B , che non hanno bordi in uscita (vedi figura sotto per un esempio in cui n = 4 ). Una scelta golosa che preferisce massimizzare la quantità di spigoli su cicli di lunghezza nn22A,Bn=4ninvierà tutti i vertici nel ciclo durante il primo viaggio. Questo è ottimale, in quanto ciò non rimuove eventuali bordi del ciclo e semplicemente ignorare e la rimozione di tutti i bordi dal ciclo rimuove tutti i bordi verso A , B pure. Quindi qualsiasi scelta avida che preferisce la dimensione della partizione rispetto alla rimozione di un ciclo non è ottimale.A,BA,B
Sulla base di queste osservazioni, propongo la seguente scelta golosa: Scegli tale, che la quantità di cicli che questo viaggio "rimuove" da G sia massima e in caso di legami, scegli una partizione con la massima sovrapposizione con G tra loro (cioè guardare i bordi non sui cicli).(Si,Ti)GG
Poiché questo algoritmo non è diverso dalla strategia avida 'di base' sui grafici aciclici (rimuovendo una quantità massima di spigoli su ogni viaggio), questo algoritmo avido non è quindi ottimale. Tuttavia, l'intuizione di rimuovere i cicli ha ancora senso ed è un miglioramento rispetto alla strategia avida di base, quindi potrebbe essere un'euristica decente.