Existe um algoritmo polinomial fácil para decidir se existe um caminho entre dois nós em um gráfico direcionado (basta fazer uma travessia rotineira de um gráfico com, digamos, a primeira pesquisa de profundidade).
No entanto, parece que, surpreendentemente, o problema fica muito mais difícil se, em vez de testar a existência, queremos contar o número de caminhos.
Se permitirmos que os caminhos reutilizem os vértices, existe uma solução de programação dinâmica para encontrar o número de caminhos de s a t com n arestas. No entanto, se permitirmos apenas caminhos simples, que não reutilizem vértices, a única solução que posso pensar é a enumeração de caminhos por força bruta , algo que tem complexidade de tempo exponencial.
Então eu pergunto,
- Contar o número de caminhos simples entre dois vértices é difícil?
- Se sim, é um tipo de NP completo? (Eu digo mais ou menos porque tecnicamente não é um problema de decisão ...)
- Existem outros problemas em P que também possuem versões difíceis de contagem assim? **