exponenta event banner

центрированность

Измерение важности узла

Описание

пример

C = centrality(G,type) вычисляет центральную роль узла, указанную в type для каждого узла на графике.

пример

C = centrality(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими аргументами пары Name-Value. Например, centrality(G,'closeness','Cost',c) указывает стоимость прохождения каждой кромки.

Примеры

свернуть все

Создайте и постройте график, содержащий шесть фиктивных веб-сайтов.

s = [1 1 2 2 3 3 3 4 5];
t = [2 5 3 4 4 5 6 1 1];
names = {'http://www.example.com/alpha', 'http://www.example.com/beta', ...
         'http://www.example.com/gamma', 'http://www.example.com/delta', ...
         'http://www.example.com/epsilon', 'http://www.example.com/zeta'};
G = digraph(s,t,[],names);
plot(G,'NodeLabel',{'alpha','beta','gamma','delta','epsilon','zeta'})

Figure contains an axes. The axes contains an object of type graphplot.

Рассчитайте ранг страницы каждого веб-сайта с помощью centrality функция. Добавить эту информацию в Nodes таблица графа как атрибут узлов графа.

pg_ranks = centrality(G,'pagerank')
pg_ranks = 6×1

    0.3210
    0.1706
    0.1066
    0.1368
    0.2008
    0.0643

G.Nodes.PageRank = pg_ranks;
G.Nodes
ans=6×2 table
                   Name                   PageRank
    __________________________________    ________

    {'http://www.example.com/alpha'  }    0.32098 
    {'http://www.example.com/beta'   }    0.17057 
    {'http://www.example.com/gamma'  }    0.10657 
    {'http://www.example.com/delta'  }    0.13678 
    {'http://www.example.com/epsilon'}    0.20078 
    {'http://www.example.com/zeta'   }    0.06432 

Также определите, какие узлы являются концентраторами и органами власти с помощью centrality и добавить баллы к Nodes таблица.

hub_ranks = centrality(G,'hubs');
auth_ranks = centrality(G,'authorities');
G.Nodes.Hubs = hub_ranks;
G.Nodes.Authorities = auth_ranks;
G.Nodes
ans=6×4 table
                   Name                   PageRank       Hubs       Authorities
    __________________________________    ________    __________    ___________

    {'http://www.example.com/alpha'  }    0.32098        0.24995    7.3237e-05 
    {'http://www.example.com/beta'   }    0.17057        0.24995      0.099993 
    {'http://www.example.com/gamma'  }    0.10657        0.49991      0.099993 
    {'http://www.example.com/delta'  }    0.13678     9.1536e-05       0.29998 
    {'http://www.example.com/epsilon'}    0.20078     9.1536e-05       0.29998 
    {'http://www.example.com/zeta'   }    0.06432              0       0.19999 

Создайте и постройте график взвешивания, используя случайную разреженную матрицу смежности. Поскольку существует много ребер, используйте очень маленькое значение для EdgeAlpha сделать края в основном прозрачными.

A = sprand(1000,1000,0.15);
A = A + A';
G = graph(A,'omitselfloops');
p = plot(G,'Layout','force','EdgeAlpha',0.005,'NodeColor','r');

Figure contains an axes. The axes contains an object of type graphplot.

Вычислите степень центрованности каждого узла. Укажите важность каждой кромки, используя веса кромки.

deg_ranks = centrality(G,'degree','Importance',G.Edges.Weight);

Использовать discretize чтобы поместить узлы в 7 равноотстоящих ячеек на основе их центральных показателей.

edges = linspace(min(deg_ranks),max(deg_ranks),7);
bins = discretize(deg_ranks,edges);

Сделайте размер каждого узла на графике пропорциональным его центральному значению. Размер маркера каждого узла равен номеру ячейки (1-7).

p.MarkerSize = bins;

Figure contains an axes. The axes contains an object of type graphplot.

Загрузить данные в minnesota.mat, который содержит объект graph G представляет сеть дорог в Миннесоте. Узлы графика имеют координаты xy, содержащиеся в XCoord и YCoord переменные G.Nodes таблица.

load minnesota.mat
xy = [G.Nodes.XCoord G.Nodes.YCoord];

Добавьте к графу веса ребер, примерно соответствующие длине дорог, рассчитанные с использованием евклидова расстояния между координатами xy конечных узлов каждого ребра.

[s,t] = findedge(G);
G.Edges.Weight = hypot(xy(s,1)-xy(t,1), xy(s,2)-xy(t,2));

Постройте график, используя координаты xy для узлов.

p = plot(G,'XData',xy(:,1),'YData',xy(:,2),'MarkerSize',5);
title('Minnesota Road Network')

Figure contains an axes. The axes with title Minnesota Road Network contains an object of type graphplot.

Вычислите централь близости каждого узла. Масштабирование цвета узла NodeCData быть пропорциональным центральному показателю.

ucc = centrality(G,'closeness');
p.NodeCData = ucc;
colormap jet
colorbar
title('Closeness Centrality Scores - Unweighted')

Figure contains an axes. The axes with title Closeness Centrality Scores - Unweighted contains an object of type graphplot.

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

wcc = centrality(G,'closeness','Cost',G.Edges.Weight);
p.NodeCData = wcc;
title('Closeness Centrality Scores - Weighted')

Figure contains an axes. The axes with title Closeness Centrality Scores - Weighted contains an object of type graphplot.

Вычислите взвешенные оценки центральности между точками для графика, чтобы определить дороги, чаще всего встречающиеся на кратчайшем пути между двумя узлами. Нормализуйте показатели центральности с помощью коэффициента (n-2) (n-1) 2 так, чтобы показатель представлял вероятность того, что путешественник по кратчайшему пути между двумя случайными узлами пройдет через данный узел. Сюжет указывает на то, что есть несколько очень важных дорог, ведущих в город и из него.

wbc = centrality(G,'betweenness','Cost',G.Edges.Weight);
n = numnodes(G);
p.NodeCData = 2*wbc./((n-2)*(n-1));
colormap(flip(autumn,1));
title('Betweenness Centrality Scores - Weighted')

Figure contains an axes. The axes with title Betweenness Centrality Scores - Weighted contains an object of type graphplot.

Входные аргументы

свернуть все

Входной график, указанный как graph или digraph объект. Использовать graph для создания неориентированного графика или digraph для создания направленного графа.

Пример: G = graph(1,2)

Пример: G = digraph([1 2],[2 3])

Тип центрального узла, указанный в таблице в качестве одного из параметров. В таблице также перечислены совместимые пары Имя (Name) - Значение (Value), которые работают с каждым типом. Каждое разнообразие узловой центральности предлагает различную меру важности узла в графике.

Выбор

Тип графика

Описание

Пары «имя-значение»

'degree'

Ненаправленный

'degree', 'outdegree', и 'indegree' типы центральности основаны на количестве кромок, соединяющихся с каждым узлом:

  • 'degree' - Количество краев, соединяющихся с каждым узлом. Самокольцо считается двумя краями, соединяющимися с узлом.

  • 'indegree' - количество входящих ребер в каждый узел. Самокольцо считается одним входящим краем.

  • 'outdegree' - Количество исходящих краев от каждого узла. Самокольцо считается одним исходящим краем.

При указании 'Importance' веса ребер, то алгоритм использует сумму весов ребер, а не количество соединяющих ребер.

'Importance'

'indegree'

'outdegree'

Направленный

'closeness'

Ненаправленный

'closeness', 'incloseness', и 'outcloseness' типы центральности используют обратную сумму расстояния от узла до всех других узлов графа. Если доступны не все узлы, то централизованность узла i является:

c (i) = (A iN 1) 21Ci.

Ai - количество доступных узлов из узла i (не считая i), N - количество узлов в G, и Ci - сумма расстояний от узла i ко всем достижимым узлам.

  • Если узлы не доступны из узла i, то c(i) равно нулю.

  • Для 'incloseness', измерение расстояния от всех узлов до узла i.

  • 'Cost' веса кромок определяют длину кромок.

'Cost'

'incloseness'

'outcloseness'

Направленный

'betweenness'

Неориентированные или направленные

'betweenness' тип центральности измеряет частоту появления каждого узла графа на кратчайшем пути между двумя узлами графа. Поскольку между двумя узлами графа может быть несколько кратчайших путей s и t, центральная роль узла u является:

c (u) =∑s,t≠unst (u) Nst.

nst (u) - число кратчайших путей изs кому t которые проходят через узел u, и Nst - общее число кратчайших путей из s кому t.

  • Если граф неориентирован, то пути из s кому t и от t кому s подсчитать только как один путь (разделить формулу на два).

  • 'Cost' веса кромок определяют длину кромок и помогают определить кратчайшие пути между узлами s и t.

'Cost'

'pagerank'

Неориентированные или направленные

'pagerank' тип центральности является результатом случайного обхода сети. В каждом узле графа следующий узел выбирается с вероятностью 'FollowProbability' из набора преемников текущего узла (соседей для неориентированного случая). В противном случае, или когда узел не имеет преемников, следующий узел выбирается из всех узлов. Показатель центральности - это среднее время, проведенное на каждом узле во время случайной прогулки.

  • Если узел имеет самокольцо, то есть вероятность, что алгоритм пройдёт его. Таким образом, самокольцы увеличивают показатель централизованности пейджера узла, к которому они присоединяются.

  • В мультиграфах с несколькими рёбрами между одними и теми же двумя узлами с большей вероятностью выбираются узлы с несколькими рёбрами.

  • 'Importance' граничные веса влияют на то, как алгоритм выбирает преемников. Более вероятно, что будут выбраны узлы с более высокой важностью.

'Importance'

'FollowProbability'

'Tolerance'

'MaxIterations'

'eigenvector'

Ненаправленный

'eigenvector' центральный тип использует собственный вектор, соответствующий наибольшему собственному значению матрицы смежности графа. Оценки нормализуются таким образом, что сумма всех централизованных оценок равна 1.

  • Если существует несколько разъединенных компонентов, то алгоритм вычисляет центральность собственных векторов индивидуально для каждого компонента, затем масштабирует баллы в соответствии с процентом узлов графа в этом компоненте.

  • Показатель централизованности отсоединенных узлов равен 1/numnodes(G).

  • Определить 'Importance' веса кромок, чтобы использовать взвешенную матрицу смежности при вычислении.

'Importance'

'Tolerance'

'MaxIterations'

'hubs'

'authorities'

Направленный

'hubs' и 'authorities' баллы центральности - это два связанных показателя центральности, которые являются рекурсивными. Балл концентраторов узла - это сумма баллов полномочий всех его преемников. Аналогичным образом, оценка властей - это сумма баллов хабов всех его предшественников. Сумма всех баллов концентраторов равна 1, а сумма баллов всех органов власти - 1.

  • Эти оценки можно интерпретировать как левый (концентраторы) и правый (авторитеты) сингулярные векторы, соответствующие наибольшему сингулярному значению матрицы смежности.

  • Показатель централизованности отсоединенных узлов равен 1/numnodes(G).

  • Определить 'Importance' граничные веса для использования взвешенной суммы, а не простой суммы всех баллов преемника/предшественника. Это эквивалентно использованию сингулярных векторов взвешенной матрицы смежности.

  • Если существует несколько отсоединенных компонентов (в слабо связанном смысле), то алгоритм вычисляет баллы концентраторов и органов власти индивидуально для каждого компонента. Затем оценки масштабируются в соответствии с процентом узлов графика в этом компоненте, так что общая сумма остается равной 1.

'Importance'

'Tolerance'

'MaxIterations'

Примечание

centrality функция предполагает, что все веса кромок равны 1. Чтобы изменить это, укажите веса кромок для использования с 'Cost' или 'Importance' пары имя-значение.

Пример: centrality(G,'degree')

Пример: centrality(G,'hubs','Tolerance',tol)

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: C = centrality(G,'closeness','Cost',edgeCosts) вычисляет централь близости с помощью edgeCosts как стоимость (вес) прохождения каждого ребра в графике.

Стоимость пересечения кромки, указанная как разделенная запятыми пара, состоящая из 'Cost' и вектор положительных краевых весов. Вес i-ой кромки определяет стоимость, связанную с пересечением кромки findedge(G,i). Все веса кромок должны быть больше нуля.

'Cost' вес края меньше, когда соединение короче, быстрее или дешевле. Некоторые примеры 'Cost' веса кромок:

  • Длина контура

  • Время в пути

  • Стоимость билета

Примечание

'Cost' применяется только к 'closeness', 'outcloseness', 'incloseness', и 'betweenness' типы центральности.

Пример: centrality(G,'closeness','Cost',c)

Вероятность выбора следующего узла, указанного как пара, разделенная запятыми, состоящая из 'FollowProbability' и скаляр между 0 и 1. Следующая вероятность - вероятность того, что следующий узел, выбранный в обходе алгоритмом pagerank, выбирается среди преемников текущего узла, а не случайным образом из всех узлов. Для веб-сайтов эта вероятность соответствует щелчку по ссылке на текущей веб-странице вместо перехода на другую случайную веб-страницу.

Примечание

'FollowProbability' применяется только к 'pagerank' тип центра.

Пример: centrality(G,'pagerank','FollowProbability',0.5)

Важность кромки, заданная как разделенная запятыми пара, состоящая из 'Importance' и вектор неотрицательных краевых весов. Вес i-го края определяет важность ребра findedge(G,i). Нулевой вес ребра эквивалентен удалению этого ребра из графа.

Для мультиграфов с несколькими ребрами между двумя узлами, centrality добавляет несколько кромок вместе и обрабатывает их как одну кромку с объединенным весом.

'Importance' вес кромки больше, когда соединение прочнее. Некоторые примеры 'Importance' веса кромок:

  • Число путешественников в день

  • Количество щелчков по ссылке

  • Количество опубликованных вместе документов

Примечание

'Importance' применяется только к 'degree', 'outdegree', 'indegree', 'pagerank', 'eigenvector', 'hubs', и 'authorities' типы центральности.

Пример: centrality(G,'degree','Importance',x)

Максимальное количество итераций, указанное как пара, разделенная запятыми, состоящая из 'MaxIterations' и скаляр. centrality алгоритм выполняется до тех пор, пока не будет соблюден допуск или не будет достигнуто максимальное число итераций, в зависимости от того, что наступит раньше.

Примечание

'MaxIterations' применяется только к 'pagerank', 'eigenvector', 'hubs', и 'authorities' типы центральности.

Пример: centrality(G,'pagerank','MaxIterations',250)

Критерий остановки итеративных решателей, определяемый как разделенная запятыми пара, состоящая из 'Tolerance' и скаляр. centrality алгоритм выполняется до тех пор, пока не будет соблюден допуск или не будет достигнуто максимальное число итераций, в зависимости от того, что наступит раньше.

Примечание

'Tolerance' применяется только к 'pagerank', 'eigenvector', 'hubs', и 'authorities' типы центральности.

Пример: centrality(G,'pagerank','Tolerance',1e-5)

Выходные аргументы

свернуть все

Показатели центральности узлов, возвращаемые в виде вектора столбца. C(i) - показатель централизованности узла i. Интерпретация показателя центральности узла зависит от выбранного типа вычисления центральности. Чем более центральным является узел, тем больше его центральная оценка.

См. также

|

Представлен в R2016a