В принципе, Mathematica 8 сможет решить вашу проблему с помощью нового объекта Graph . Я говорю «в принципе», потому что мне сложно представить, как будет выглядеть кластер из почти 5 миллионов узлов (или вершин) при печати на экране или на бумаге. Крайне важно, чтобы вы выбрали подходящий GraphLayout, поскольку это сравнение с Hu показывает:
Это 3 изображения одного и того же графа (936 вершин), с самым плохим отображением (конечно) слева. Статья содержит визуализацию графа с 225 тыс. Вершин, который имеет несколько различимую структуру.
В любом случае, он может обрабатывать ввод в виде матрицы смежности или списка ребер, среди прочего. Края могут быть направлены или нет. Вы можете показать и пометить все или некоторые или ни одну из вершин и ребер. Вы также можете удалить кластеры (GraphComponents) и отобразить их отдельно или в комбинации. Он также предоставляет различные варианты GraphLayout: CircularEmbedding, SpiralEmbedding, HighDimensionalEmbedding, LargeNetwork и т. Д. Существует множество графических стилей.
Существует команда NeighborhoodGraph, которая может оказаться полезной для этого огромного кластера. Соседство [g, v, n] генерирует подграф всех узлов в n шагах от вершины v. Вы также можете упростить задачу, запросив подграф с заранее определенным списком ребер, вершин или обоих.
Помните, что часть документации Graph ссылается на Combinatorica, которая, хотя и превосходна и полезна для многих целей, на мой взгляд, не отображает графики с такой точностью, как объект Graph версии 8.
Некоторые вопросы, касающиеся расположения графов для огромных графов, обсуждаются здесь . Существует также SO обсуждение о построении больших графиков, в которых сравниваются различные программные решения.