Думали ли вы, сколько таких путей может существовать?
В таком графе с V вершинами у вас есть около V ^ 2 разных пар. Давайте представим наихудший сценарий, когда у вас есть полный граф (тот, где существуют ребра между каждой парой). У путей может быть где угодно от 1 ребра до ребер V-1, потому что вы не допускаете дублирование вершин в пути.
Между каждой парой вершин:
- Существует только один путь с 1 ребром;
- Существуют пути V-2 с 2 ребрами: с использованием любой промежуточной вершины, которая не является исходной или конечной;
- Существуют (V-2) (V-3) пути с 3 ребрами: используются любые две разные промежуточные вершины;
- Есть (V-2) (V-3) (V-4) пути с 4 ребрами;
- Есть пути prod {k = 1 -> n-1} (V-k-1) с n ребрами.
Учитывая это, мы знаем, что существует не более V ^ 2 * sum {i = 1 -> V-1} (prod {k = 1 -> i-1} (Vk-1)) общих путей для граф с V вершинами.
Таким образом, общее количество путей равно P (V) = V ^ 2 * sum {i = 1 -> V-1} (prod {k = 1 -> i-1} (Vk-1)) = V ^ 2 * sum {i = 1 -> V-1} (O (V ^ V)) = O (V ^ 3 * V ^ V) = O (V!).
Теперь представьте себе идеальный мир, в котором вы можете вычислять каждый путь за постоянное время. Ваш алгоритм потребует O (1 * V!) = O (V!) Времени для запуска, что нецелесообразно.
Может существовать алгоритм, который может подсчитывать пути, не перечисляя их, и таким образом получить более эффективный алгоритм.