Измерьте важность узла
использует дополнительные опции, заданные одним или несколькими аргументами пары "имя-значение". Для примера, C
= centrality(___,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'})
Вычислим ранг страниц каждого сайта используя 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');
Вычислим степень центр каждого узла. Укажите важность каждого ребра, используя веса ребер.
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;
Загрузите данные в minnesota.mat
, который содержит график 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')
Вычислите центр близости каждого узла. Масштабируйте цвет узла NodeCData
быть пропорциональным счетом централизации.
ucc = centrality(G,'closeness'); p.NodeCData = ucc; colormap jet colorbar title('Closeness Centrality Scores - Unweighted')
Также вычислите взвешенный счет центральности близости, используя веса кромок в качестве затрат на прохождение каждого ребра. Использование длин дорог в качестве весов кромок улучшает качество счета, поскольку теперь расстояния измеряются как сумма длин всех пройденных ребер, а не как количество пройденных ребер.
wcc = centrality(G,'closeness','Cost',G.Edges.Weight); p.NodeCData = wcc; title('Closeness Centrality Scores - Weighted')
Вычислите взвешенные счета центральности по бетвенскости для графика, чтобы определить дороги, наиболее часто встречающиеся на самом коротком пути между двумя узлами. Нормализуйте центральность, счета с фактором таким образом, счет представляет вероятность того, что путешественник по кратчайшему пути между двумя случайными узлами пройдет через заданный узел. Этот график показывает, что есть несколько очень важных дорог, ведущих в город и из него.
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')
type
- Тип центрального узла'degree'
| 'outdegree'
| 'indegree'
| 'closeness'
| 'incloseness'
| 'outcloseness'
| 'betweenness'
| 'pagerank'
| 'eigenvector'
| 'hubs'
| 'authorities'
Тип центра узла, заданный как один из опций в таблице. В таблице также перечислены совместимые Пары "имя-значение", которые работают с каждым типом. Каждое разнообразие центральности узла предлагает разную меру важности узла в графике.
Опция |
Тип графика |
Описание |
Пары "имя-значение" |
---|---|---|---|
|
Ненаправленный | The
Если вы задаете | |
|
Направленный | ||
|
Ненаправленный |
The A i - количество доступных узлов из узла
| |
|
Направленный | ||
|
Неориентированные или ориентированные |
The - количество самых коротких путей из
| |
|
Неориентированные или ориентированные | The
| |
|
Ненаправленный |
The
| |
|
Направленный |
The
|
Примечание
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'
- Стоимость обхода ребраСтоимость обхода ребра, заданная как разделенная разделенными запятой парами, состоящая из 'Cost'
и вектор положительных весов ребер. i-й веса ребра определяет стоимость, связанную с прохождением ребра findedge(G,i)
. Все веса кромок должны быть больше нуля.
'Cost'
веса кромок меньше, когда соединение короче, или быстрее, или дешевле. Некоторые примеры 'Cost'
веса кромок:
Длина пути
Время в пути
Стоимость билета
Примечание
'Cost'
применяется только к 'closeness'
, 'outcloseness'
, 'incloseness'
, и 'betweenness'
типы централизации.
Пример: centrality(G,'closeness','Cost',c)
'FollowProbability'
- Вероятность выбора узла-преемника0.85
(по умолчанию) | скаляром между 0 и 1Вероятность выбора узла, заданная как разделенная разделенными запятой парами, состоящая из 'FollowProbability'
и скаляром от 0 до 1. Вероятность следования является вероятностью того, что следующий узел, выбранный в обходе алгоритмом pagerank, выбран среди преемников текущего узла, а не наугад из всех узлов. Для веб-сайтов эта вероятность соответствует нажатию по ссылке на текущей веб-странице вместо серфинга на другую случайную веб-страницу.
Примечание
'FollowProbability'
применяется только к 'pagerank'
тип централизации.
Пример: centrality(G,'pagerank','FollowProbability',0.5)
'Importance'
- Важность ребраВажность ребра, заданная как разделенная разделенными запятой парами, состоящая из 'Importance'
и вектор неотрицательных весов ребер. i-й веса ребра определяет важность ребра findedge(G,i)
. Вес края нуля эквивалентен удалению края из графика.
Для мультиграфиков с несколькими ребрами между двумя узлами, centrality
складывает несколько ребер вместе и обрабатывает их как одно ребро с общим весом.
'Importance'
веса кромок больше, когда соединение сильнее. Некоторые примеры 'Importance'
веса кромок:
Количество путешественников в день
Количество нажатий кнопки по ссылке
Количество статей, опубликованных вместе
Примечание
'Importance'
применяется только к 'degree'
, 'outdegree'
, 'indegree'
, 'pagerank'
, 'eigenvector'
, 'hubs'
, и 'authorities'
типы централизации.
Пример: centrality(G,'degree','Importance',x)
'MaxIterations'
- Максимальное количество итераций100
(по умолчанию) | скаляромМаксимальное количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'MaxIterations'
и скаляром. centrality
алгоритм запускается до тех пор, пока не будет достигнут допуск или не будет достигнуто максимальное количество итераций, в зависимости от того, что наступит раньше.
Примечание
'MaxIterations'
применяется только к 'pagerank'
, 'eigenvector'
, 'hubs'
, и 'authorities'
типы централизации.
Пример: centrality(G,'pagerank','MaxIterations',250)
'Tolerance'
- Критерий остановки для итерационных решателей1e-4
(по умолчанию) | скаляромКритерий остановки для итерационных решателей, заданный как разделенная разделенными запятой парами, состоящая из 'Tolerance'
и скаляром. centrality
алгоритм запускается до тех пор, пока не будет достигнут допуск или не будет достигнуто максимальное количество итераций, в зависимости от того, что наступит раньше.
Примечание
'Tolerance'
применяется только к 'pagerank'
, 'eigenvector'
, 'hubs'
, и 'authorities'
типы централизации.
Пример: centrality(G,'pagerank','Tolerance',1e-5)
C
- счета центральности узлаЦентральность узла счетов, возвращается как вектор-столбец. C(i)
- счет централизации узла i
. Интерпретация счета централизованности узла зависит от типа выбранных расчетов централизованности. Чем больше центрального узла, тем больше его центральность счет.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.