Il existe un algorithme polynomial facile pour décider s'il existe un chemin entre deux nœuds dans un graphe orienté (il suffit de faire un parcours de graphe de routine avec, disons, la profondeur en premier).
Cependant, il semble que, de manière surprenante, le problème devienne beaucoup plus difficile si, au lieu de tester l'existence, nous voulons compter le nombre de chemins.
Si nous permettons aux chemins de réutiliser les sommets, il existe une solution de programmation dynamique pour trouver le nombre de chemins de s à t avec n arêtes. Cependant, si nous n'autorisons que des chemins simples, qui ne réutilisent pas les sommets, la seule solution à laquelle je peux penser est l'énumération par force brute des chemins , quelque chose qui a une complexité temporelle exponentielle.
Alors je demande,
- Est-ce difficile de compter le nombre de chemins simples entre deux sommets?
- Si oui, est-ce que c'est NP-complet? (Je dis en quelque sorte parce que ce n'est techniquement pas un problème de décision ...)
- Y a-t-il d'autres problèmes dans P qui ont aussi des versions de comptage comme ça? **