Предположим, у вас есть NODE_COUNT
узлы.Вы создаете вектор GRAPH
длины NODE_COUNT
.На записи X
у вас есть массив переменного размера (динамически распределяемый).Каждая запись выглядит как GRAPH[X]=[A1, A2, A3]
для представления ребер { (X,A1), (X,A2), (X,A3) }
.
Если вам нужно выполнить поиск некоторых ребер, также удобно использовать двоичное дерево поиска для записи GRAPH[X]
.Если у вас есть более 6 ребер для каждого узла, вы также можете рассмотреть эту возможность вместо использования неупорядоченного массива в позиции GRAPH[X]
.
Поскольку граф имеет много узлов и мало ребер, вы не должны использоватьматрица.
Если у вас миллионы или миллиарды узлов, проблема в другом, и вам следует подумать об использовании BDD .Это другая тема, я не вхожу в подробности в этой теме.Идея состоит в том, что граф может быть представлен как характеристическая функция множества, представляющего граф.