Мой график слишком велик, чтобы с ним практически работать? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть DiGraph в networkx с ~ 8M узлами ~ 30M краями. Моя цель - отбросить подмножество (~ 1M) этих узлов и выполнить вычисления на оставшемся графе, добавив атрибуты к узлам и ребрам на основе отношений.

Однако кажется, что даже выполнение первого шага удаления узлов невозможно. То, что я пытался:

Цель: удалить все узлы, не являющиеся потомками узла 'a'.

nodesToKeep = nx.descendants(G, 'a') Время стены: 40 с

nodesToDrop = [n for n in G if n not in set(nodesToKeep )] Время стены: неясно,> 24 ч

Затем я бы удалил узлы, используя G.remove_nodes_from(nodesToDrop)

Проблема в том, что время выполнения даже понимание списка nodesToDrop само по себе настолько велико. Я завершил процесс через ~ 24 часа.

Разве это вообще нереально c использовать networkx для графов такого размера? Или есть какой-то другой подход, который мне следует принять?

Очень благодарен за любые ответы, которые могут направить меня в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...