import networkx as nx
import matplotlib.pyplot as plt
import pylab
import numpy as np
defgetclosenesscentrality
(graph)
: closeness=
for i in graph.nodes():
sumdij =0;
for j in graph.nodes():
if(i != j)
:try
:
sumdij += nx.dijkstra_path_length(graph, source=i, target=j)
except
:continue
di = sumdij/nx.number_of_nodes(graph)
if di ==0:
(i,di)
)else
:
(i,1
/di)
)return closeness
#自定義網路
row=np.array([0
,0,0
,1,2
,3,6
])col=np.array([1
,2,3
,4,5
,6,7
])value=np.array([1
,2,1
,8,1
,3,5
])print
('生成乙個空的有向圖'
)g=nx.digraph(
)print
('為這個網路新增節點...'
)for i in
range(0
,np.size(col)+1
):g.add_node(i)
print
('在網路中新增帶權中的邊...'
)for i in
range
(np.size(row)):
g.add_weighted_edges_from(
[(row[i]
,col[i]
,value[i])]
)print
('給網路設定布局...'
)pos=nx.shell_layout(g)
print
('畫出網路影象:'
)nx.draw(g,pos,with_labels=
true
, node_color=
'white'
, edge_color=
'red'
, node_size=
400, alpha=
0.5)
pylab.title(
'closenesscentralitytest'
,fontsize=15)
pylab.show(
)close = getclosenesscentrality(g)
print
(close)
生成乙個空的有向圖
為這個網路新增節點...
在網路中新增帶權中的邊...
給網路設定布局...
畫出網路影象:
python求解接近中心性
求解網路科學裡面的接近中心性 import matplotlib.pyplot as plt import networkx as nx import operator def get closeness centrality g nx.graph filestr 需要讀入的鄰接矩陣 with op...
軟體構造之度中心性
ps 寫在這裡只是為了方便以後忘記後理解。對於了解圖論的朋友而言,最短路這個概念一定不陌生。我們設想乙個實際生活中的場景,比如你要建乙個大型的娛樂商場,你可能會希望周圍的顧客到達這個商場的距離都可以盡可能地短。這個就涉及到接近中心性的概念,接近中心性的值為路徑長度的倒數。接近中心性需要考量每個結點到...
各種度中心性的定義與區別
ps 知識儲備 當然,剛才這個情況是無向圖的情形,如果是有向圖,需要考慮的出度和入度的問題。接近中心性 closeness 對於了解圖論的朋友而言,最短路這個概念一定不陌生。我們設想乙個實際生活中的場景,比如你要建乙個大型的娛樂商場,你可能會希望周圍的顧客到達這個商場的距離都可以盡可能地短。這個就涉...