Atualização: esta resposta parece estar com defeito. Veja o comentário de Kristoffer Arnsfelt Hansen.
Não sei como resolver o seu problema, mas aqui está uma técnica para resolver uma versão mais simples do seu problema: a saber, dada a aresta , teste se existe algum caminho simples de a que inclua a aresta . (Isso corresponde ao caso especial do seu problema em que .)estel=∞
Você pode resolver esse problema mais simples usando "fluxo máximo com limites inferiores" como sub-rotina. No problema de fluxo máximo padrão, a capacidade de cada aresta nos fornece um limite superior na quantidade de fluxo que passa por essa aresta, e exigimos que a quantidade de fluxo na aresta seja limitada em 0. Em "fluxo máximo com limites inferiores ", podemos especificar um limite inferior e um limite superior na quantidade de fluxo através dessa borda. Sabe-se que o "fluxo máximo com limites inferiores" pode ser resolvido em tempo polinomial.
Agora, suponha que tenhamos uma aresta e queremos testar se existe um caminho simples de a que inclua a aresta . Vamos configurar um problema de fluxo máximo com limites mais baixos. Particularmente, pegue o gráfico e adicione um novo nó com a borda um novo nó com a borda . Defina a capacidade (limite superior) em cada aresta 1. O limite inferior em todas as arestas será 0, exceto que o limite inferior na aresta é 1. Agora verifique se existe um fluxo viável de ae∈EsteGs0s0→st1t→t1estque satisfaça todos os limites (esse teste pode ser realizado em tempo polinomial, conforme mencionado acima). Se não houver fluxo, não haverá um caminho simples de para . Se houver esse fluxo, rastrear esse fluxo gera um caminho simples destste
e
Aprendi essa idéia no seguinte artigo:
(Certifique-se de ler a versão do relatório técnico, não a versão publicada. Essa ideia é encontrada no segundo parágrafo da introdução.)
l
Como alternativa, poderíamos resolver seu problema de maneira direta usando a programação linear inteira (ILP). Na prática, os solucionadores de ILP são muito bons em muitos problemas. No entanto, o pior tempo de execução ainda é exponencial, portanto, isso não dará um algoritmo com o pior tempo de execução polinomial. Deixe-me saber se você deseja que eu elabore como formular isso usando o ILP.