Este problema es NP-hard . Para mostrar esto, primero reformularé este problema (de optimización) en un problema de decisión. Luego, reformulo ese problema en uno equivalente, a partir del cual es bastante simple obtener una reducción del problema de coloración , que es NP-difícil para cualquier k ≥ 3 .kk ≥ 3
Una breve formulación del problema es la siguiente:
Dadas personas y un gráfico G que codifica sus relaciones de 'obsequio', encuentre la cantidad mínima de viajes necesarios para que todos los obsequios se puedan comprar sin arruinar ninguna sorpresa.nortesol
Sin embargo, este es un problema de optimización. La clase NP generalmente se define para problemas de decisión (donde la respuesta a cada instancia es SÍ o NO). Una variante de decisión de esto es:
Dadas personas y un gráfico G que codifica sus relaciones de 'obsequio' y un número entero t , ¿es suficiente a lo sumo t viajes para comprar todos los regalos sin arruinar ninguna sorpresa?nortesoltt
Defino el problema de encontrar un t -multicoloring dirigido apropiadot de algún gráfico como encontrar una función multicolor c : V → P ( C ) que es adecuada , donde C es un conjunto de t 'colores' ( es decir, | C | = t ) y P ( C ) es el conjunto de potencia de C (es decir, el conjunto de todos los subconjuntos de CG = ( V, E) c : V→ P( C)CtEl | CEl | =tPAGS( C)CC) Una función multicolor es adecuada si y solo si para cada arista , tenemos que c ( u ) ⊈ c ( v ) .( u → v ) ∈ Ec ( u ) ⊈ c ( v )
Yo reclamo que el problema viaje de compras es equivalente al problema de decidir la existencia de una dirigida -multicoloringt de la misma gráfica .sol
Prueba : si tenemos una dirigida adecuada -multicoloreando c para G , donde cambiamos el nombre de los colores de tal manera que C = { 1 , ... , t } entonces considere la secuencia de t dispara T 1 , ... , T t , donde un vértice v va de compras en el viaje T i si y solo si i ∈ c ( v ) . Entonces, para cada borde ( u → v ) ∈ EtCsolC= { 1 , ... , t }tT1, ... , TtvTyoi ∈ c ( v )( u → v ) ∈ E, tenemos que existe un viaje tal que u ∈ T i y v ∉ T i , ya que c ( u ) ⊈ c ( v ) . Por lo tanto, los viajes de T i son suficientes para comprar todos los regalos.Tyou∈Tiv∉Tic(u)⊈c(v)Ti
Si tenemos una secuencia de viajes , entonces construimos la función multicolorT1,…,Tt en el conjunto de colores C = { 1 , ... , t } tal que c ( u ) = { i ∈ N | u ∈ T i } . Entonces, para cada borde ( u → v ) ∈ E , existe un viaje T i tal que u ∈cC={1,…,t}c(u)={i∈N|u∈Ti}(u→v)∈ETi y v ∉ T i (ya que u puede comprar un regalo para v en algún viaje), lo que significa que i ∈ C ( T ) y i ∉ c ( v ) , por lo que c ( u ) ⊈ c ( v ) . ◻u∈Tiv∉Tiuvi∈c(u)i∉c(v)c(u)⊈c(v)□
Encontrar un -multicoloring dirigido adecuado es básicamente una reformulación extraña de un caso específico de k -coloring. Por lo tanto, puedo mostrar una reducción de tiempo polinomial desde ( ttk problema de coloración: dado un gráfico no dirigidoG′=((t⌊t/2⌋) , primero transforme este gráfico en el gráfico dirigido G = ( V , E ) , de modo que V = V ′ y ( u → v ) ∈ E si y solo si ( u , v ) ∈ E ′ o ( v , uG′=(V′,E′)G=(V,E)V=V′(u→v)∈E(u,v)∈E′ (en otras palabras, cambiamos los bordes no dirigidos en dos bordes dirigidos).(v,u)∈E′
Considere un conjunto más grande K⊂P(C) , tal que no exista , a ≠ b , tal que a ⊂ b . El conjunto de todos los subconjuntos de C de tamaño ⌊ t / 2 ⌋ , donde t = | C | , es tal conjunto. Por lo tanto, el tamaño máximo de dicho subconjunto es ( ta,b∈Ka≠ba⊂bC⌊t/2⌋t=|C| .(t⌊t/2⌋)
Si existe una -multicoloring adecuada para G , entonces existe una coloración adecuada que no utiliza más de ( ttG elementos desiguales deP(C)(*), por lo que este es un valor válido ( t(t⌊t/2⌋)P(C) -color paraG'.(t⌊t/2⌋)sol′
Si es apropiado -colores existe paraG′, entonces existe un conjuntoK⊂P(C),| C| =t, de modo que| K| ≥ ( t( t⌊ t / 2 ⌋)sol′K⊂ P( C)El | CEl | =t y no existe ningunaa,b∈K,a≠b, tal quea⊂b. Entonces,Gtiene unt-multicoloringdirigidoapropiado.El | KEl | ≥ ( t⌊ t / 2 ⌋)a , b ∈ Ka ≠ ba ⊂ bsolt
Por lo tanto, esta es una reducción de tiempo polinomial válida de coloración para el problema de compra actual conttrips, lo que significa que el problema de compra actual es NP-hard. Tenga en cuenta que el problema actual de la compra está NP-completo, ya que podemos comprobar fácilmente si una lista dada de a lo sumotviajes nos permite comprar todos los regalos sin arruinar sorpresas.( t⌊ t / 2 ⌋)tt
(*): Si alguna multi-colorear utiliza más Color: define que una máxima 'no subconjunto' multi-colorear C *CC∗ , podemos 'renombrar' manera que sea un superconjunto de C ∗ . C sigue siendo apropiado, ya que ninguno de los elementos de C ∗ que son adyacentes a un elemento diferente de C ∗ es un problema y ninguno de los conjuntos de colores eran adyacentes entre sí en el C original . Por lo tanto, sin pérdida de generalidad, podemos suponer C * ⊂ C .CC∗CC∗C∗CC∗⊂ C
Luego, tenga en cuenta que 'renombrar' a cualquier subconjunto de C ∗ no arruina los bordes entre los nodos de los conjuntos de colores C ∖ C ∗ , ya que C ∗ no contiene elementos que sean un subconjunto de otro. Lo único que queda es asegurarse de que los bordes entre C ∖ C ∗ y C ∗ no 'arruinen' el color.C∖ C∗C∗C∖ C∗C∗C∖ C∗C∗
Considere la siguiente relación en los conjuntos de colores en C ∪ C ∗ : dos conjuntos de colores A y B están conectados si y solo si existe un par de vértices a ,RC∪ C∗UNsi tal que a tenga el conjunto de colores A y b color- conjunto B y ( un , b ) ∈ e . Esta relación se puede representar mediante el gráfico no dirigido G = ( C ∪ C ∗ , R )a , bunUNsisi( a , b ) ∈ Esol= ( C∪ C∗, R ).
Primero, podemos 'reducir' reemplazando cualquier par que no tenga una arista en G por un solo conjunto de colores. La coloración sigue siendo adecuada, ya que cambiar dos conjuntos de colores que no son adyacentes en absoluto en el mismo color no introduce bordes no válidos. Como resultado, hemos reducido G a un gráfico completo.C∖ C∗solsol
Esto significa que si tiene una cantidad menor o igual de conjuntos de colores que | C ∗ | , existe el color requerido. De lo contrario, no existe una multicolores adecuada, ya que C ∗ es un conjunto 'no subconjunto' más grande, por lo que no podemos colorear esta camarilla. Por lo tanto, el color múltiple requerido necesariamente existe.solEl | C∗El |C∗
Como el gráfico completo en nodos K n puede colorear si y solo si tenemos al menos n colores, tenemos que n personas pueden ir de compras unos a otros en t viajes si y solo si ( tnorteKnortenortenortet. Esto significa en particular que, sin≤12870, hacer solo16viajes es suficiente. Si hay menos regalos para comprar, no se necesitarán más viajes, por lo que este es un límite superior general en cada solución.( t⌊ t / 2 ⌋) ≥nn ≤ 12870dieciséis
A continuación se encuentra mi 'respuesta' anterior, que proporciona un algoritmo heurístico que no garantiza obtener el óptimo, pero puede calcularse en tiempo polinómico.
Otra forma de formular este problema es encontrar una cobertura de gráficos bipartitos en las particiones ( S i , T i ) para algún gráfico dirigido G con n nodos, de modo que la cantidad de particiones (es decir, viajes), aquí m , es mínima.C= { ( S1, T1) , ... , ( Smetro, Tmetro) }( Syo, Tyo)solnortemetro
Primero, algunas observaciones, parcialmente provenientes de otras respuestas:
- La estrategia codiciosa, donde elegimos un con un gráfico bipartito donde la cantidad de aristas en común con G es máxima, no conduce a una solución óptima (un fuerte contraejemplo es el gráfico completo con 6 nodos, donde esta estrategia falla, sin importar qué gráfico bipartito máximo se elija).( Syo, Tyo)sol6 6
- La estrategia codiciosa no es óptima para gráficos acíclicos arbitrarios, considere el siguiente gráfico:
Ambos para como para S i = { 1 , 3 , 6 } el gráfico bipartito elimina 4 bordes, pero solo { 3 , 5 , 6 } es óptimo.Syo={3,5,6}Si={1,3,6}4{3,5,6}
- Cualquier algoritmo codicioso (óptimo) no puede preferir el tamaño de la partición elegida sobre la cantidad de ciclos (de cualquier tamaño) 'eliminados' por la partición. Para ver esto, considere el gráfico con nodos, donde hay un ciclo de n nodos y cada nodo en el ciclo tiene 2 bordes salientes adicionales hacia 2 nodos adicionales A , B , que no tienen bordes salientes (vea la figura a continuación para un ejemplo donde n = 4 ). Una elección codiciosa que prefiere maximizar la cantidad de aristas sobre ciclos de longitud nn+2n22A,Bn=4nenviará todos los vértices del ciclo en el primer viaje. Esto es subóptimo, ya que esto no elimina ningún borde del ciclo y simplemente ignora y elimina todos los bordes del ciclo, elimina todos los bordes hacia A , B también. Por lo tanto, cualquier elección codiciosa que prefiera el tamaño de la partición sobre la eliminación de un ciclo no es óptima.A,BA,B
Con base en estas observaciones, propongo la siguiente opción codiciosa: Elija tal que la cantidad de ciclos que este viaje 'elimina' de G sea máxima y, en caso de empate, elija una partición con superposición máxima con G entre ellos (es decir, mirar los bordes no en ciclos).(Si,Ti)GG
Dado que este algoritmo no es diferente de la estrategia codiciosa 'básica' en los gráficos acíclicos (eliminando una cantidad máxima de bordes en cada viaje), este algoritmo codicioso, por lo tanto, no es óptimo. Sin embargo, la intuición de eliminar ciclos todavía tiene sentido y es una mejora con respecto a la estrategia codiciosa básica, por lo que podría ser una heurística decente.