Как создать матрицу смежности
Вот как вы можете создать матрицу смежности:
#include <vector>
vector < vector<int> > adjacencyMatrix(vertices);
Как получить матрицу степеней
Рассмотрим следующую матрицу смежности, которая представляет невзвешенный ориентированный граф:
1 0 1
1 0 0
1 0 0
Индекс строки представляет вершину.Итак, строка 0 представляет вершину 0, 1 представляет вершину 1 ... Вершина 0 соединена с собой и имеет входящее ребро из вершины 2. Аналогично, 1 имеет входящее ребро из 0, а 2 имеет одно с 1.
Мы должны выяснить, сколько ребер заканчивается в каждой вершине.Используя эту информацию, мы создаем следующую матрицу степеней:
2 0 0
0 1 0
0 0 1
Из приведенного выше видно, что у вершины 0 есть 2 ребра, заканчивающихся на ней, у вершины 1 - 1, а у вершины 2 - 1.
.каждая строка в матрице смежности представляет входящие соединения для этой вершины, все, что вам нужно сделать, это суммировать каждую строку и сохранять их в другой матрице (то есть матрице степеней).Поскольку строка 0 имеет сумму 2, это означает, что вы сохраняете в позиции (0, 0) матрицы степеней значение 2. Аналогично, поскольку строка 1 имеет сумму 1, вы сохраняете это значение в (1, 1) позиция ...
Дайте мне знать, если вам нужно, чтобы я на самом деле закодировал это.Я предполагаю, что вы понимаете и можете взять это отсюда.
Примечание: вышеупомянутое работает для матрицы смежности для невзвешенного ориентированного графа.Вам придется немного изменить его для других типов графиков.