Я новичок в использовании библиотеки NetworkX с Python.Networkx - Как получить кратчайшую длину пути между узлами, отображающими идентификатор узла вместо метки
Допустим, что я импортировать Pajek отформатированный файл:
import networkx as nx
G=nx.read_pajek("pajek_network_file.net")
G=nx.Graph(G)
Содержимое моего файла являются (В Pajek, узлы называются "Вершины"):
*Network
*Vertices 6
123 Author1
456 Author2
789 Author3
111 Author4
222 Author5
333 Author6
*Edges
123 333
333 789
789 222
222 111
111 456
Теперь я хотите вычислить все кратчайшие длины пути между узлами в моей сети, и я использую эту функцию в документации библиотеки
path = nx.all_pairs_shortest_path_length(G)
Возвраты: длины - Словарь кратчайших путей длины, заданных по источнику и цели.
Возвращение я получаю:
print path
{u'Author4': {u'Author4': 0, u'Author5': 1, u'Author6': 3, u'Author1': 4, u'Author2': 1, u'Author3': 2}, u'Author5': {u'Author4': 1, u'Author5': 0, u'Author6': 2, u'Author1': 3, u'Author2': 2, u'Author3': 1}, u'Author6': {u'Author4': 3, u'Author5': 2, u'Author6': 0, u'Author1': 1, u'Author2': 4, u'Author3': 1}, u'Author1': {u'Author4': 4, u'Author5': 3, u'Author6': 1, u'Author1': 0, u'Author2': 5, u'Author3': 2}, u'Author2': {u'Author4': 1, u'Author5': 2, u'Author6': 4, u'Author1': 5, u'Author2': 0, u'Author3': 3}, u'Author3': {u'Author4': 2, u'Author5': 1, u'Author6': 1, u'Author1': 2, u'Author2': 3, u'Author3': 0}}
Как вы можете видеть, это очень трудно читать, и поставить на более позднее использование ...
В идеале, что бы я хотел возврат с форматом похож на ниже:
source_node_id, target_node_id, path_length
123, 456, 5
123, 789, 2
123, 111, 4
Короче говоря, мне нужно, чтобы получить отдачу, используя только (или, по крайней мере, в том числе) в узлах идентификаторами, а не только с указанием узлов метки. И, чтобы получить каждую возможную пару в одной строке с их соответствующим самым коротким путем ...
Возможно ли это в NetworkX?
Справочник по функциям: https://networkx.github.io/documentation/latest/reference/generated/networkx.algorithms.shortest_paths.unweighted.all_pairs_shortest_path_length.html
Можете ли вы объяснить, как вы генерировать граф G в NetworkX. Как 'Suda-t' связан с' 123'? – Unni
Попробуйте указать [MCVE] (http://stackoverflow.com/help/mcve). Я думаю, что networkx делает то, что вы хотите, но проблема связана с тем, где вы вводите сеть. – Joel
Я только что отредактировал сообщение, включая лучший пример и более подробную информацию о том, что я использую для импорта сети. Любая помощь очень ценится! – elvitaluz