Encontrar o caminho mais curto na presença de ciclos negativos

13

Dado um gráfico cíclico direcionado em que o peso de cada aresta pode ser negativo, o conceito de "caminho mais curto" só faz sentido se não houver ciclos negativos e, nesse caso, você pode aplicar o algoritmo de Bellman-Ford.

No entanto, estou interessado em encontrar o caminho mais curto entre dois vértices que não envolvam ciclismo (ou seja, sob a restrição de que você não pode visitar o mesmo vértice duas vezes). Este problema está bem estudado? Uma variante do algoritmo Bellman-Ford pode ser empregada? Caso contrário, existe outra solução?

Também estou interessado no problema equivalente de pares, para o qual, de outra forma, poderia aplicar Floyd – Warshall.

jleahy
fonte

Respostas:

23

Caminhos sem vértices repetidos são chamados caminhos simples , portanto, você está procurando o caminho simples mais curto em um gráfico com ciclos negativos.

Isso pode ser reduzido a partir do problema do caminho mais longo . Se houvesse um solucionador rápido para o seu problema, um gráfico com apenas pesos de borda positivos, negando todos os pesos de borda e executando o seu solucionador, daria o caminho mais longo no gráfico original.

Portanto, seu problema é NP-Hard.

BlueRaja - Danny Pflughoeft
fonte
1
Esta é uma resposta bonita. Eu perguntei a várias pessoas esse IRL sem nenhuma solução e quando expliquei a elas a reação delas foi a mesma que a minha - "é claro, agora me sinto tão estúpida".
Jleahy #