Обход диаграммы, которая представляет реальные операции - PullRequest
3 голосов
/ 27 мая 2011

Привет,

Может кто-нибудь сказать мне, какой алгоритм используется для обхода ориентированного ациклического графа / диаграммы, например:

Ex. Узлы диаграммы: A, B, C, D1, D2, D3, E
Края диаграммы: A → B, B → C, C → D1, C → D2, C → D3, D1 → E, D2 → E, D3 → E

Обход такой:

A → B → C → D1, затем C → D2, затем C → D3,
И после этого они присоединяются: D1 → E, D2 → E, D3 → E

Мой график представляет операции в реальном времени. Большинство операций являются линейными, но когда операции разбиваются по условию, каждое разбиение (например, узел C разделяется на D1, D2 и D3) ожидает завершения всех операций, прежде чем они снова соединятся (например, узлы D1, D2 и D3 соединяются в узле E )

Мне нужно перебрать все узлы и вызывать каждую операцию в точном порядке.

Я использую Python с pygraph, но вы можете использовать любой язык, если хотите опубликовать какой-то алгоритм.

Может быть, это стандартное название для этого алгоритма, например поиск в глубину, алгоритм Дейкстры, восхождение на холм, я не знаю? ...

Большое спасибо!

1 Ответ

5 голосов
/ 27 мая 2011

A топологическая сортировка даст вам порядок, который вам необходим для выполнения операций с заданными ребрами.

...