Я работаю над реализацией программы с сильно связанными компонентами из входного файла чисел. Я знаю алгоритм о том, как это сделать, но с трудом реализуя его в python.Реализация Сильно подключенных компонентов для целых чисел в файле
СИЛЬНО СВЯЗАННЫХ-КОМПОНЕНТЫ (G) 1. запустить DFS на G, чтобы вычислить время закончить 2. вычислить G « 3. запустить DFS на G», но при выборе, какой узел Вист сделать так, чтобы уменьшения времени закончить (как вычисляется на шаге 1) 4. выходной вершины каждого дерева в глубину первого леса шага 3 в качестве отдельного компонента, подключенного сильно
файл выглядит следующим образом:
5 5
1 2
2 4
2 3
3 4
4 5
Первая строка - нет. узлов и ребер. Остальные строки - это два целых числа u и v, разделенные пробелом, что означает направленное ребро от узла u до узла v. Выход должен быть сильно связанным компонентом и отсутствием этих компонентов.
DFS(G)
1 for each vertex u in G.V
2 u.color = WHITE
3 u.π = NIL
4 time = 0
5 for each vertex u in G.V
6 if u.color == WHITE
7 DFS-VISIT(G, u)
DFS-VISIT(G, u)
1 time = time + 1 // white vertex u has just been discovered
2 u.d = time
3 u.color = GRAY
4 for each v in G.adj[u]
5 if v.color == WHITE
6 v.π = u
7 DFS-VISIT(G, u)
8 u.color = BLACK // blacken u; it is finished
9 time = time + 1
10 u.f = time
В приведенном выше алгоритме, как я должен пройти обратный график, чтобы найти SCC.
Можете ли вы объяснить код, если это возможно, и как же вы берете вход от file.Did вы используете это - для линии в открытом (имя файла): – Rgeek
Я предполагаю, что вы читаете stdin, как это делается в большинстве конкурсов. Вам не нужно открывать файл, просто используйте 'python source.py
Okay.I понял рекурсивные функции, которые вы определили, но не после этого. – Rgeek