Dado um DAG não ponderado (gráfico acíclico direcionado) e dois vértices e , é possível encontrar o caminho mais curto e mais longo de para em tempo polinomial? Os comprimentos do caminho são medidos pelo número de arestas.
Estou interessado em encontrar o intervalo de possíveis comprimentos de caminho em tempo polinomial.
Ps., Esta pergunta é uma duplicata da pergunta StackOverflow Caminho mais longo em um DAG .
fonte
Sejae. Seja denotado o peso da aresta . Suponha que você queira encontrar o custo mínimo e máximo do caminho de a .m = | E ( G ) | w ( a → b ) ( a → b ) s tn = | V( G ) | m = | E( G ) | w ( a → b ) ( a → b ) s t
A partir de , execute o seguinte:b : = t
Se já tiver sido visitado, retorne os já calculados e . Caso contrário, marque como visitado.min ( b ) max ( b ) bb min ( b ) max ( b ) b
Determine e registre e seguinte maneira.max ( b )min ( b ) max ( b )
Você deve poder provar que esse algoritmo é executado no tempo , negligenciando o tempo necessário para inicializar todas as variáveis de vértice.O(m)
fonte