Istnieje prosty algorytm wielomianowy, który decyduje, czy istnieje ścieżka między dwoma węzłami na ukierunkowanym wykresie (po prostu wykonaj rutynowe przemierzanie wykresu za pomocą, powiedzmy, głębokości pierwszego wyszukiwania).
Jednak wydaje się, że, co zaskakujące, problem staje się znacznie trudniejszy, jeśli zamiast testowania istnienia chcemy policzyć liczbę ścieżek.
Jeśli pozwolimy wierzchołków ścieżki do ponownego wykorzystania, a następnie istnieje rozwiązanie programowanie dynamiczne, aby znaleźć liczbę ścieżek z s do t o n krawędziach. Jeśli jednak zezwolimy tylko na proste ścieżki, które nie wykorzystują ponownie wierzchołków, jedynym rozwiązaniem, o którym mogę pomyśleć, jest wyliczenie ścieżek metodą brute force , co ma wykładniczą złożoność czasową.
Więc pytam,
- Czy trudno jest policzyć liczbę prostych ścieżek między dwoma wierzchołkami?
- Jeśli tak, to czy jest to rodzaj NP-complete? (Mówię trochę, ponieważ technicznie nie jest to problem decyzyjny ...)
- Czy są też inne problemy w P, które mają takie trudne wersje? **