Этот пример показывает применение разреженных матриц и объясняет взаимосвязь между графиками и матрицами.
Граф - это набор узлов с заданными связями или рёбрами между ними. Графики бывают разных форм и размеров. Одним из примеров является график связности геодезического купола Бакминстера Фуллера, который также имеет форму футбольного мяча или молекулы углерода-60.
В MATLAB ® можно использовать bucky для формирования графика геодезического купола.
[B,V] = bucky;
G = graph(B);
p = plot(G);
axis equal
Можно также указать координаты узлов для изменения отображения графика.
p.XData = V(:,1); p.YData = V(:,2);

bucky может использоваться для создания графа, поскольку он возвращает матрицу смежности. Матрица смежности является одним из способов представления узлов и рёбер в графе.
Чтобы построить матрицу смежности графа, узлы нумеруются от 1 до N. Тогда каждый элемент (i, j) матрицы N-by-N устанавливается в 1, если узел i соединен с узлом j, и 0 в противном случае. Таким образом, для неориентированных графов матрица смежности симметрична, но это не обязательно имеет место для направленных графов.
Например, здесь представлен простой граф и связанная с ним матрица смежности.
% Define a matrix A. A = [0 1 1 0 ; 1 0 0 1 ; 1 0 0 1 ; 0 1 1 0]; % Draw a picture showing the connected nodes. cla subplot(1,2,1); gplot(A,[0 1;1 1;0 0;1 0],'.-'); text([-0.2, 1.2 -0.2, 1.2],[1.2, 1.2, -.2, -.2],('1234')', ... 'HorizontalAlignment','center') axis([-1 2 -1 2],'off') % Draw a picture showing the adjacency matrix. subplot(1,2,2); xtemp = repmat(1:4,1,4); ytemp = reshape(repmat(1:4,4,1),16,1)'; text(xtemp-.5,ytemp-.5,char('0'+A(:)),'HorizontalAlignment','center'); line([.25 0 0 .25 NaN 3.75 4 4 3.75],[0 0 4 4 NaN 0 0 4 4]) axis off tight

Разреженные матрицы особенно полезны для представления очень больших графов. Это происходит потому, что каждый узел обычно подключен только к нескольким другим узлам. В результате плотность ненулевых записей в матрице смежности часто относительно мала для больших графов. Ярким примером может служить матрица смежности бакки-шара, так как она представляет собой симметричную разреженную матрицу 60 на 60 с только 180 ненулевыми элементами. Плотность этой матрицы составляет всего 5%.
Так как матрица смежности определяет график, можно построить график части бакового шара, используя подмножество записей в матрице смежности.
Используйте adjacency для создания новой матрицы смежности для графа. Отображение узлов в одной полусфере гребенчатого шара путем индексации в матрицу смежности для создания нового меньшего графика.
figure A = adjacency(G); H = graph(A(1:30,1:30)); h = plot(H);

Для визуализации матрицы смежности этой полусферы используйте spy функция для построения графика силуэта ненулевых элементов в матрице смежности.
Заметим, что матрица симметрична, так как если узел i соединен с узлом j, то узел j соединен с узлом i.
spy(A(1:30,1:30))
title('Top Left Corner of Bucky Ball Adjacency Matrix')
Наконец, вот spy график всей матрицы смежности бакового шара.
spy(A)
title('Bucky Ball Adjacency Matrix')