Este problema é NP-difícil . Para mostrar isso, primeiro reformularei esse problema (otimização) em um problema de decisão. Em seguida, reformulo esse problema para um equivalente, do qual é bastante simples obter uma redução do problema da coloração , que é NP-difícil para qualquer k ≥ 3 .kk≥3
Uma breve formulação do problema é a seguinte:
Dadas pessoas e um gráfico G que codifica suas relações de 'oferta de presentes', encontre a quantidade mínima de viagens necessária para que todos os presentes possam ser comprados sem arruinar nenhuma surpresa.nG
No entanto, este é um problema de otimização. A classe NP é geralmente definida para problemas de decisão (onde a resposta para cada instância é SIM ou NÃO). Uma variante de decisão disso é:
Dadas pessoas e um gráfico G que codifica suas relações de 'doação de presentes' e um número inteiro t , está fazendo no máximo t viagens suficientes para comprar todos os presentes sem arruinar nenhuma surpresa?nGtt
Defino o problema de encontrar uma coloração t- multiculinária direcionada adequadat de algum gráfico como encontrar uma função multicolorida c : V → P ( C ) que é adequada , onde C é um conjunto de t 'cores' ( ou seja, | C | = t ) e P ( C ) é o conjunto de alimentação de C (ou seja, o conjunto de todos os subconjuntos de CG=(V,E) c:V→P(C)Ct|C|=tP(C)CC) Uma função multicolor é adequada se e somente se para cada aresta , temos que c ( u ) ⊈ c ( v ) .( u → v ) ∈ Ec ( u ) ⊈ c ( v )
I pedindo que o problema viagem de compras é equivalente para o problema de decidir a existência de um dirigida -multicoloringt do mesmo gráfico .G
Prova : Se tivermos uma coloração direcionada adequada c para G , onde renomearemos as cores de modo que C = { 1 , … , t } , considere a sequência de t dispara T 1 , … , T t , em que um vértice v vai às compras na viagem T i se e somente se i ∈ c ( v ) . Então, para cada aresta ( u → v ) ∈ EtcGC= { 1 , … , t }tT1 1, … , TtvTEui ∈ c ( v )( u → v ) ∈ E, temos que existe uma viagem tal que u ∈ T i e v ∉ T i , desde c ( u ) ⊈ c ( v ) . Portanto, as viagens T i são suficientes para comprar todos os presentes.TEuu ∈ TEuv ∉ TEuc ( u ) ⊈ c ( v )TEu
Se tivermos uma sequência de disparos , construa a função multicolorida c no conjunto de cores C = { 1 , … , t } de modo que c ( u ) = { i ∈ N | u ∈ T i } . Então, para cada aresta ( u → v ) ∈ E , existe uma viagem T i tal que u ∈T1 1, … , TtcC= { 1 , … , t }c ( u ) = { i ∈ N | u ∈ TEu}( u → v ) ∈ ETEu e v ∉ T i (já que você pode comprar um presente para v em alguma viagem), o que significa que i ∈ c ( u ) e i ∉ c ( v ) , então c ( u ) ⊈ c ( v ) . ◻u ∈ TEuv ∉ TEuvocêvi ∈ c ( u )i ∉ c ( v )c ( u ) ⊈ c ( v )□
Encontrar uma coloração multicor dirigida adequada é basicamente uma reformulação estranha de um caso específico de coloração- k . Portanto, eu posso mostrar uma redução de tempo polinomial a partir de ( ttk problema de coloração: dado um gráfico não direcionadoG′=(V′,E′), primeiro transforme esse gráfico no gráfico direcionadoG=(V,E), de modo queV=V′e(u→v)∈Ese e somente se(u,v)∈E'ou(v,u( t⌊ t / 2 ⌋)G′= ( V′, E′)G = ( V, E)V= V′( u → v ) ∈ E( u , v ) ∈ E′ (em outras palavras, alteramos as arestas não direcionadas em duas arestas direcionadas).( v , u ) ∈ E′
Considere um conjunto maior , de modo que não exista a , b ∈ K , a ≠ b , tal que a ⊂ b . O conjunto de todos os subconjuntos de C de tamanho ⌊ t / 2 ⌋ , em que t = | C | , é esse conjunto. Portanto, o tamanho máximo desse subconjunto é ( tK⊂ P( C)a , b ∈ Ka ≠ ba ⊂ bC⌊ t / 2 ⌋t = | C| .( t⌊ t / 2 ⌋)
Se existe uma coloração multicolorida adequada para G , existe uma coloração adequada que não usa mais do que ( ttG elementos desiguais deP(C)(*), portanto, este é um válido ( t( t⌊ t / 2 ⌋)P( C) coloração paraG′.( t⌊ t / 2 ⌋)G′
Se uma adequada -coloring existe paraG′, então existe um conjuntoK⊂P(C),| C| =t, de modo que| K| ≥ ( t( t⌊ t / 2 ⌋)G′K⊂ P( C)| C| =t e não existea,b∈K,a≠b, de modo quea⊂b. Portanto,Gtem umacoloraçãot-multicdirigida adequada.| K|≥(t⌊t/2⌋)a,b∈Ka≠ba⊂bGt
Portanto, essa é uma redução de tempo polinomial válida de colorindo para o atual problema de compras comtviagens, o que significa que o atual problema de compras é difícil de NP. Observe que o atual problema de compras é NP-completo, pois podemos verificar facilmente se uma determinada lista de no máximotviagens nos permite comprar todos os presentes sem arruinar surpresas.(t⌊t/2⌋)tt
(*): Se algum multi-colorir usa mais cor-conjuntos do que um máximo de 'não-subconjunto' multi-colorir C * , nós podemos 'renomear' C tal que é um super conjunto de C * . C permanece adequado, pois nenhum dos elementos de C ∗ sendo adjacente a um elemento diferente de C ∗ é um problema e nenhum conjunto de cores era adjacente um ao outro no C original . Assim, sem perda de generalidade, podemos assumir C * ⊂ C .CC∗CC∗CC∗C∗CC∗⊂ C
Observe que 'renomear' para qualquer subconjunto de C ∗ não arruina as arestas entre os nós dos conjuntos de cores C ∖ C ∗ , pois C ∗ não contém elementos que sejam um subconjunto de outro. A única coisa que resta é garantir que as arestas entre C ∖ C ∗ e C ∗ não ' estragem ' a coloração.C∖ C∗C∗C∖ C∗C∗C∖ C∗C∗
Consideremos a seguinte relação na cor-conjuntos em C ∪ C * : dois cor-conjuntos A e B são ligados , se e apenas se existe um par de vértices de um , b de tal forma que um tem cor-grupo A e b cor- conjunto b e ( um , b ) ∈ e . Essa relação pode ser representada pelo gráfico não direcionado G = ( C ∪ C ∗ , R )RC∪ C∗UMABa , bumaUMAbB( a , b ) ∈ EG= ( C∪ C∗, R ).
Primeiro, podemos "reduzir" substituindo qualquer par que não tenha uma aresta em G por um único conjunto de cores. A coloração permanece adequada, pois alterar dois conjuntos de cores que não são adjacentes na mesma cor não introduz bordas inválidas. Como resultado, reduzimos G para um gráfico completo.C∖ C∗GG
Isso significa que se tem uma quantidade menor ou igual de conjuntos de cores como | C * | , a coloração necessária existe. Caso contrário, não existe nenhuma multicoloração adequada, pois C ∗ é o maior conjunto 'não subconjunto'; portanto, não podemos colorir essa camarilha. Portanto, a multi-coloração necessária existe necessariamente.G| C∗|C∗
Como o gráfico completo sobre nodos K n é cor-able se e somente se temos pelo menos n cores, temos que n as pessoas podem ir às compras de presentes para o outro em t viagens se e somente se ( tnKnnnt. Isso significa, em particular, que, sen≤12870, fazer apenas16viagens é suficiente. Se houver menos presentes para comprar, não serão necessárias mais viagens, portanto esse é um limite superior geral em todas as soluções.( t⌊ t / 2 ⌋) ≥nn ≤ 1287016
Abaixo está minha 'resposta' anterior, que fornece um algoritmo heurístico que não garante o ideal, mas pode ser calculado em tempo polinomial.
Outra maneira de formular esse problema é encontrar uma cobertura de gráficos bipartidos nas partições ( S i , T i ) para algum gráfico direcionado G com n nós, de modo que a quantidade de partições (ou seja, viagens), aqui m , seja mínima.C= { ( S1 1, T1 1) , … , ( Sm, Tm) }( SEu, TEu)Gnm
Primeiro, algumas observações, parcialmente provenientes de outras respostas:
- A estratégia gananciosa, em que escolhemos um com um gráfico bipartido em que a quantidade de arestas em comum com G é máxima, não leva a uma solução ótima (um forte contra-exemplo é o gráfico completo com 6). onde essa estratégia falha, independentemente do gráfico bipartido máximo escolhido.).( SEu, TEu)G6
- A estratégia gananciosa não é ideal para gráficos acíclicos arbitrários, considere o seguinte gráfico:
Tanto para como S i = { 1 , 3 , 6 } o gráfico bipartido remove 4 arestas, mas apenas { 3 , 5 , 6 } é ideal.SEu= { 3 , 5 , 6 }SEu= { 1 , 3 , 6 }4{ 3 , 5 , 6 }
- Qualquer algoritmo ganancioso (ideal) não pode preferir o tamanho da partição escolhida sobre a quantidade de ciclos (de qualquer tamanho) 'removidos' pela partição. Para verificar isto, considere o gráfico com nós, onde existe um ciclo de n nós e todos os nós do ciclo tem 2 bordas de saída adicional para 2 nós adicionais A , B , que não têm bordos de saída (ver figura abaixo de um exemplo em que n = 4 ). Uma escolha gananciosa que prefere maximizar a quantidade de arestas ao longo de ciclos de comprimento nn + 2n22A , Bn=4nenviará todos os vértices do ciclo na primeira viagem. Isso é subótimo, pois isso não remove as arestas do ciclo e simplesmente ignora e remover todas as arestas do ciclo remove todas as arestas em direção a A , B também. Portanto, qualquer escolha gananciosa que prefere o tamanho da partição à remoção de um ciclo não é ideal.A,BA,B
Com base nessas observações, proponho a seguinte escolha gananciosa: Pick tal, que a quantidade de ciclos que essa viagem 'remove' de G seja máxima e, em caso de empate, escolha uma partição com sobreposição máxima com G entre eles (ou seja, observe as bordas que não estão em ciclos).(Si,Ti)GG
Como esse algoritmo não é diferente da estratégia gananciosa 'básica' dos gráficos acíclicos (removendo uma quantidade máxima de arestas em cada viagem), esse algoritmo ganancioso não é ideal. No entanto, a intuição de remover ciclos ainda faz sentido e é uma melhoria em relação à estratégia gananciosa básica, portanto pode ser uma heurística decente.