Используя NetworkX, я получил список кортежей, описывающих ребра (пары вершин) в графе:
G = [(1, 2), (1, 3), (1, 4), (2, 4), (3, 8), (4, 5), (8, 15), (5, 6), (5, 7), (6, 17), (7, 11), (7, 15), (7, 16), (17, 12), (11, 12), (11, 13), (15, 9), (15, 10), (16, 9), (9, 18), (18, 13), (18, 14), (10, 14)]
Используя этот список, я хочу перебрать каждую вершину и найти каждую соседнюю вершину, но я хочу сделать это по порядку. Так что я хотел бы получить, например, вложенный список с подсписком i
th, содержащим каждого из соседей для вершины i
.
Neighbors = [[2, 3, 4], [1, 4], [1, 8], [1, 2, 5], [4, 6, 7], [5, 17], [5, 11, 15, 16], [3, 15], [15, 16, 18], [14, 15], [7, 12, 13], [11, 17], [11, 18], [10, 18], [7, 8, 9, 10], [7, 9], [6, 12], [9, 13, 14]]
, но это может быть и другая отсортированная структура данных.
Однако, поскольку мой граф потенциально может содержать миллион ребер и вершин, я хочу создать подпрограмму, которая не будет перебирать весь список для каждой вершины, поскольку я хочу сохранить низкое время выполнения.
Есть ли способы добиться этого? Любая помощь очень ценится.