Можно ли предложить мне алгоритм линейного времени , который принимает в качестве входных данных ориентированного ациклического граф и две вершины S и T и возвращает число простых путей от й до т в G .
У меня есть алгоритм, в котором я буду запускать DFS (Поиск в глубину), но если DFS найдет t, то он не изменит цвет (с белого на серый) ни одного из узлов, которые входят в путь s ⇝ t
так, что, если это подпуть любого другого пути, то и DFS снова проходит этот подпуть. Например, рассмотрим список смежности, где нам нужно найти количество путей от до v . P O S Z O
Здесь DFS будет начинаться сp,а затем предположим, что он переходит кp⇝z,поскольку он не сталкивается сvDFS будет работать нормально.Теперьвторой путь - этоpsryv,поскольку он сталкивается сv,мы не будем менять цвет вершинs,r,y,vк серому. Тогда путьpov,так как цветvвсе еще белый. Затем путьposryv,так как цветs
Is my algorithm correct? if not, what modifications are needed to make it correct or any other approaches will be greatly appreciated.
Note:Here I have considered the DFS algorithm which is given in the book "Introduction to algorithms by Cormen" in which it colors the nodes according to its status.So if the node is unvisited , unexplored and explored then the color will be white,grey and black respectively.All other things are standard.