Поиск начала, конца и цикла с помощью pydot - PullRequest
2 голосов
/ 08 апреля 2011

Есть ли способ добиться этого в pydot?

Возьмите следующий пример:

[Выведенный файл точек]

strict graph g{
"A" -> "B";
"B" -> "C";
"C" -> "D";
"D" -> "E";
}

[Python]

print(num.start)
>>> A
print(num.steps)
>>> ["a,b","b,c","c,d","d,e"]
print(num.end)
>>> E

или со следующим регистром:

[выведенный файл точек]

strict graph g{
"A" -> "B";
"B" -> "C";
"C" -> "A";
}

[Python]

if num["A"] == num.loop:
print("[%s] loop detected")%(num["A"])

Ответы [ 2 ]

1 голос
/ 08 апреля 2011

Ну, у вас есть вся структура графа, с помощью graph.get_edge_list() вы можете реализовать стандартный поиск по глубине, чтобы найти кратчайший путь между узлами.Поиск циклов также выполняется с помощью стандартных алгоритмов графов .См. Эту статью в Реализациях графов в Python для получения исходного кода о том, как сделать кратчайший путь между двумя узлами.

Если вы ищете библиотеку pydot, сделайте это за вас, вы можетеповезло.

0 голосов
/ 08 апреля 2011

Pydot может записывать точечные файлы, но это не для анализа графиков.

Вы хотите NetworkX .Он может читать и записывать точечные файлы , находить круги , находить достижимые узлы и выполнять топологическую сортировку.

Искать терминологию графиков в Википедии и NetworkX может сделатьотдых.

...