Существует простой полиномиальный алгоритм, позволяющий определить, существует ли путь между двумя узлами в ориентированном графе (просто выполните обычный обход графа с, скажем, поиском по глубине).
Однако, на удивление, проблема становится намного сложнее, если вместо проверки существования мы хотим посчитать количество путей.
Если мы разрешаем путям повторно использовать вершины, то существует динамическое программное решение, позволяющее найти число путей от s до t с n ребрами. Однако, если мы разрешаем только простые пути, которые не используют вершины, единственное решение, которое я могу придумать, - это перечисление путей методом грубой силы , что имеет экспоненциальную временную сложность.
Поэтому я спрашиваю,
- Трудно ли считать число простых путей между двумя вершинами?
- Если так, то это своего рода NP-полный? (Я говорю вроде как, потому что технически это не проблема решения ...)
- Есть ли другие проблемы в P, у которых есть версии с таким же жестким подсчетом? **