Перечисление всех простых путей между двумя вершинами в произвольном графе занимает в общем экспоненциальное время, так как между вершинами может быть экспоненциальное число простых путей. Но как насчет того, что нас интересуют только вершины, которые находятся по крайней мере на одном простом пути между двумя конечными вершинами?
То есть: Учитывая неориентированный граф и две различные вершины, существует ли алгоритм полиномиального времени, который находит каждую вершину, которая находится по крайней мере на одном простом пути между двумя вершинами? Это не такие же, как и для подключения; тупики и тупики исключены. Однако допустимы пути ветвления и соединения.
Я обнаружил, что очень легко написать алгоритм, который выглядит так, как будто он решает эту проблему, но либо не работает в некотором случае, либо занимает экспоненциальное время работы в патологических случаях.
В более общем смысле: Учитывая два непересекающихся множества вершин в графе, существует ли алгоритм полиномиального времени, который находит все вершины, которые лежат на простом пути от вершины в одном множестве до вершины в другом множестве?
(Простите меня, если есть действительно очевидное решение для этого. Конечно, похоже, что должно быть.)