Edit: Eu primeiro formulei minha restrição (2), agora ela está corrigida. Eu também adicionei mais informações e exemplos.
Com alguns colegas, estudando outra questão algorítmica, conseguimos reduzir nosso problema ao seguinte problema interessante, mas não conseguimos resolver a questão de sua complexidade. O problema é o seguinte.
Instância: Um número inteiro , um número inteiro e um conjunto de pares do conjunto .
Pergunta: Existe um conjunto de tamanho tal que para cada elemento de :
(1) se , o intervalo seja incluído em algum intervalo definido por um par em e
(2) pelo menos um de , pertence a algum par de ?
(2) pertence a algum par de S ′ .
Exemplo
O conjunto é uma solução viável (assumindo que n seja par): o par { 1 , n } garante a condição (1), enquanto todos os outros pares garantem a condição (2).
Observações
(I) Como cada par contém exatamente dois elementos, para atender à condição (2), precisamos de pelo menos pares. BTW, isso implica uma aproximação 2 trivial retornandoSinteiro, pois assumimos que| S| ≤n.
(II) Outra maneira de analisar o problema é considerar uma escada com etapas (como a abaixo ), juntamente com um conjunto S de n ciclos da escada. Cada passo da escada corresponde a algum elemento, e cada aresta lateral é um intervalo [ i , i + 1 ] . Um ciclo incluindo as etapas s , t corresponde exactamente a um par { s , t } : ele abrange todos os intervalos consecutivos de entre s e t , e que pare em ambos s e t .
A questão é saber se existe um conjunto de k ciclos cuja união cobre todas as arestas da escada (incluindo arestas de degraus e arestas laterais).
(III) Se alguém estivesse solicitando apenas a condição (1), o problema corresponderia ao problema do conjunto dominante em algum gráfico de intervalo definido a partir dos intervalos dados pelos pares de S juntamente com pequenos intervalos adicionais para cada i em { 1 , … , n - 1 } . Este problema é classicamente solucionável em tempo linear (veja, por exemplo, aqui ).
Da mesma forma, se alguém estivesse apenas pedindo a condição (2), isso poderia ser reduzido ao problema da cobertura da aresta (vértices são os elementos, arestas são os pares), que também é solucionável em tempo polinomial por uma abordagem de correspondência máxima.
Então, minha pergunta está no título:
Esse problema está em P? É NP-completo?
Qualquer referência a um problema semelhante é bem-vinda.
fonte
Respostas:
Embora isso não resolva a questão que você levanta, alguns dos comentários anteriores consideram algoritmos de aproximação. FWIW, acho que um PTAS (esquema de aproximação de tempo poligonal) é possível usando programação dinâmica. Aqui está a ideia.
Dada qualquer instância e , construa uma solução da seguinte maneira. Marcar cada ( 1 / ε ) 'th vértice. Para cada vértice marcado i , de todas as arestas ( j , k ) que "abrangem" i (ou seja, que atendem à restrição (1) para i ), escolha uma aresta que minimize jϵ>0 (1/ϵ) i (j,k) i i j e uma que k 2ϵn
minimizemaximize . Adicionar estas 2 ε n bordas para a solução.Essas arestas atendem às restrições do tipo (1) para muitos dos vértices. Enquanto isso, eles contribuem com arestas para a solução, que é apenas O ( ϵ OPT ) . Para finalizar, encontraremos uma solução ideal para o problema restante de encontrar um conjunto de arestas que atenda a todas as restrições de tipo (1) e tipo (2) restantes.2nϵ O(ϵOPT)
Defina um "bloco" de vértices como um conjunto de vértices consecutivos cujas restrições de tipo (1) são atendidas pelas arestas adicionadas até agora. Entre dois blocos consecutivos, há uma sequência de vértices cujas restrições de tipo (1) não são atendidas. (Qualquer uma dessas seqüências tem comprimento no máximo , porque os vértices marcados têm suas restrições de tipo (1) atendidas pelas arestas já adicionadas.) Chame qualquer sequência como uma "vizinhança" dos dois blocos adjacentes (para que cada bloco tenha um vizinhança à esquerda e vizinhança à direita).1/ϵ
Dentro de cada vizinhança, para cada vértice na vizinhança, cada aresta deixando o vértice mede uma distância de no máximo (porque a aresta não abrange nenhum vértice marcado). Assim, o vértice tem grau no máximo 1 / ϵ . Assim, cada bairro tem no máximo 1 / ϵ vértices e toca no máximo 1 / ϵ 2 arestas. Chame qualquer subconjunto dessas arestas de "configuração" da vizinhança. Se uma configuração atender a todas as restrições de tipo (1) e tipo (2) para os vértices na vizinhança, chame a configuração de "válida".1/ϵ 1/ϵ 1/ϵ 1/ϵ2
Para cada bloco , para cada par ( C i , C i + 1 ) de configurações válidas das duas vizinhanças do bloco, calcule (em tempo polinomial, usando a correspondência máxima etc), o tamanho mínimo F i ( C i , C i + 1 ) de qualquer conjunto S de arestas (se houver), de modo que as arestas em C i ∪ S ∪ C / ϵ 2i (Ci,Ci+1) Fi(Ci,Ci+1) S se encontram do tipo (2) restrições para os vértices no bloco. Uma vez que existem no máximo 2 1Ci∪S∪Ci+1 configurações, isso pode ser feito em tempo polinomial (para eps fixo). 21/ϵ2=O(1)
Agora você pode resolver a instância original por encontrar uma seqüência de configurações válidas, uma para cada vizinhança, que minimiza ∑ i | D i | + F i ( D i , D i + 1 ) , onde F i é como definido no parágrafo anterior. Isso pode ser feito encontrando um caminho mais curto no gráfico formado por todas as configurações válidas, com uma margem de custo | D i | +D1,D2,..,Dk ∑i|Di|+Fi(Di,Di+1) Fi de cada configuração D i para vizinhança i para cada configuração D i + 1 para vizinhança i + 1 . (Este gráfico tem tamanho ó ( 2 1 / ε 2 N ) , o qual é S ( n ) para fixa ε ).|Di|+Fi(Di,Di+1) Di i Di+1 i+1 O(21/ϵ2n) O(n) ϵ
fonte