Переполнение стека!
У меня есть ориентированный граф, и мне нужно найти все пути между исходной и целевой вершинами.Между несколькими вершинами есть несколько ребер.Используя graph-tool, можно предложить использовать graph_tool.topology.all_paths(g, source, target)
, однако списки, содержащиеся в этом вершинном итераторе, предназначены только для вершин;см. некоторые результаты ниже.Из-за того, что между вершинами имеется множество ребер, есть несколько вхождений путей, таких как [ 0 4 8 13]
и [0 4 13]
, и я не могу различить эти пути.
iterator, paths: [ 0 4 8 13]
iterator, paths: [ 0 4 13]
iterator, paths: [ 0 4 8 13]
iterator, paths: [ 0 4 13]
iterator, paths: [ 0 4 8 13]
iterator, paths: [ 0 4 13]
Мне нужны пути в форме ребер, чтобы иметь возможность перебирать свойства ребер вдоль каждого пути.Чтобы решить эту проблему, я могу думать только об одном методе (кроме переписывания больших объемов кода): создании промежуточных вершин, чтобы избежать появления множественных ребер между любыми двумя вершинами.Для любых параллельных ребер между двумя вершинами они будут связаны с каждой своей уникальной промежуточной вершиной, чтобы однозначно определять пути, возвращаемые из graph_tool.topology.all_paths(g, source, target)
.
Есть ли способ вернуть все пути в виде ребер между исходной и конечной вершинами?