как сделать матрицу смежности в C ++ для поверхности - PullRequest
0 голосов
/ 17 октября 2018

Я работаю над графитом.Он находится во встроенных библиотеках C ++.

Я пытаюсь создать поверхность, которая была бы сферой.Сфера имеет форму сетки.

Как я могу сделать матрицу смежности и матрицу степеней для поверхности, чтобы я мог вычислить матрицу Лапласа?

Я работаю на поверхности, которую янужно деформировать его позже, для этого мне нужны матрица смежности и матрица степеней для поверхности.

Я использую C ++.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Если у вас есть неориентированный граф с N узлами, вам нужна матрица NxN (инициализированная на 0).

Для каждого ребра (a, b) на вашем графике пометьте запись в (a, b) и (b, a) 1 в матрице смежности, в то время как матрица степеней увеличивается на 1 в (a, a) и at (b, b).

Для простого графа (без нескольких ребер и самоконтролей) L = D - A.

0 голосов
/ 17 октября 2018

Как создать матрицу смежности

Вот как вы можете создать матрицу смежности:

#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) позиция ...

Дайте мне знать, если вам нужно, чтобы я на самом деле закодировал это.Я предполагаю, что вы понимаете и можете взять это отсюда.

Примечание: вышеупомянутое работает для матрицы смежности для невзвешенного ориентированного графа.Вам придется немного изменить его для других типов графиков.

...