2015-04-15 2 views
3

Я использую networkx для всего моего приложения для графического отображения сети; однако для этого нового проекта требуются графики с 10^8 узлами в графике, а networkx не был создан для обработки этого количества узлов (он становится невероятно медленным), поэтому я переключился на graph-tool, который кажется, что он будет намного быстрее.Графический инструмент: найдите вершину с помощью определяемых пользователем меток

При использовании графического инструмента я хотел бы пометить каждую вершину в графе с помощью определяемой пользователем систематической метки; так что я могу искать их по метке, а не по индексу. Я пробовал перебирать documentation, но, похоже, для этого нет никакой поддержки; property maps map from vertex_indices -> значения, но я хочу обратное.

Есть ли фактическая поддержка для этого, что мне не хватает? В противном случае это мой лучший вариант - просто создать словарь python и сопоставить метки меток с вершинами?

+0

Можете ли вы прокомментировать, что проблема была с networkx? Я использовал его в сетях такого размера. Это немного с вашей темы вопроса, но в чем проблема, которая была узким местом? – Joel

+2

@Joel. Около 10^6 узлов потребовалось около 10 секунд, чтобы networkx добавила один узел и даже больше, чтобы добавить ребро (на 16-ядерный процессор с частотой 2,4 ГГц с 60 ГБ оперативной памяти). Я не мог понять, почему, пока я не прочитал документацию и некоторые другие сообщения, которые, по-видимому, указывают, что networkx действительно предназначен только для оптимального использования с до 10^5 узлов. – user2909415

ответ

3

Функция find_vertex(). Однако он имеет сложность O (N). Если вы хотите искать O (1), вы должны создать свой собственный словарь, как вы предложили.

Смежные вопросы