UPDATE: a resposta abaixo não está correta, porque assumi erroneamente que o caminho hamiltoniano está em um gráfico arbitrário, não em . Deixo-o sem exclusão, talvez eu conserte ou dê algumas dicas para outra resposta.Kn
Eu acho que é NP-completo. Esta é uma ideia de redução muito informal / rápida da 3SAT
Para cada variável adicionar um "dispositivo variável" com:xi
- três nós Xi,+Xi,−Xi
- duas arestas variáveis e ( X i , - X i )(Xi,+Xi)(Xi,−Xi)
Inclua um nó de origem e conecte-o a todas as variáveis X i .SXi
Para cada cláusula adicione um nó C j e conecte-o às variáveis correspondentes + X i ou - X i que formam a cláusula.CjCj+Xi−Xi
A figura a seguir representa: (+x1∨−x2∨−x3)∧(−x2∨x3∨x4)
O conjunto (nodos que devem ser ligadas) contém ( S , C 1 ) , ( S , C 2 ) , . . .R(S,C1),(S,C2),...
O caminho simples deve incluir todas as arestas "AZUIS", exceto as arestas variáveis ( X i , + X i ) e ( X i , - X i ) (na figura acima, as arestas azuis representam as arestas incluídas emP(Xi,+Xi)(Xi,−Xi)P ).
Nesse ponto, a fórmula inicial é satisfatória se e somente se o caminho mais curto de para cada nó da cláusula C j não for maior que três. De facto para atingir uma cláusula de S em três passos que devem atravessar, pelo menos, uma variável X i : S → X i → ± X i → C j . Portanto, devemos atravessar uma das duas arestas: X i → + X i ou X i → - X i ) e incluí-la em CSCjSXEuS→ XEu→ ± XEu→ CjXEu→ + XEuXEu→ - XEu)C (porque, por construção, não faz parte de P ). Mas ambos não podem ser incluídos, porque compartilham um vértice.
Mas não temos certeza de que podemos construir um caminho simples que inclua todas as arestas azuis porque alguns nós têm mais de uma aresta azul incidente.P
Para corrigir isso, substituímos cada nó por várias arestas azuis incidentes, por uma árvore que contém apenas pares de arestas azuis incidentes que serão incluídas em e arestas que as separam e que devem ser incluídas em C para alcançar os nós da cláusula:PC
O gráfico original se torna:
Cada árvore deve ter a mesma profundidade (podemos escolher o máximo da profundidade necessária para todas as cláusulas / variáveis / S); e devemos aumentar o valor de acordo (o número de etapas para alcançar C j deKCjS
Podemos incluir em C todas as arestas necessárias (não azuis) necessárias para alcançar os nós da cláusula porque elas não compartilham nenhum vértice.
P