复杂网络节点重要性算法之局部中心性

3 篇文章 0 订阅
2 篇文章 1 订阅

介数中心性和接近中心性指标,  虽然具有较好的刻画节点重要性的能力,  但计算复杂度太高,  难以在大规模网络上使用.  为了权衡算法的效率和效果,  Chen 等人提出了一种基于半局部信息的节点重要性排序方法, 简称半局部中心性(semi-local  centrality).  首先定义N(w)为节点Vw的两层邻居度,其值等于从 Vw出发 2步内可到达的邻居的数目,  然后定义

其中 表示节点 vj的一阶邻居节点的集合.  最终节点 vi的局部中心性定义为  

可见,  半局部中心性涉及了节点的四阶邻居信息. 

#%%
import networkx as nx
#定义图的节点和边 
nodes=['1','2','3','4','5','6','7','8','9','10','11',
       '12','13','14','15','16','17','18','19','20',
       '21','22','23'] 
edges=[('1','2',1),('1','3',1),('1','4',1),('1','5',1),
       ('1','6',1),('1','7',1),('1','8',1),('1','9',1),
       ('2','3',1),('3','4',1),('6','10',1),('7','8',1),
       ('8','9',1),('10','11',1),('10','23',1),('11','12',1),
       ('11','21',1),('11','23',1),('12','13',1),('12','14',1),
       ('12','15',1),('13','14',1),('13','15',1),('13','22',1),('14','15',1),
       ('14','23',1),('15','16',1),('16','17',1),('16','18',1),
       ('16','22',1),('17','18',1),('17','20',1),('17','21',1),
       ('18','19',1),('18','22',1),('19','20',1),('19','21',1),
       ('20','21',1),('20','23',1),('22','23',1)] 
#%%
#定义无向图 
G = nx.Graph()
 
#往图添加节点和边 
G.add_nodes_from(nodes)
G.add_weighted_edges_from(edges) 
#%%
N = {}
Q = {}
CL = {}
for node in G.node:
    node_nei = list(G.neighbors(node))
    for n_i in node_nei:
        node_nei = node_nei + list(G.neighbors(n_i))
    node_nei = list(set(node_nei))
    N[node] = len(node_nei)-1

for node in G.node:
    node_nei = list(G.neighbors(node))
    t = 0
    for n_i in node_nei:
        t = t + N[n_i]
    Q[node] = t
    
for node in G.node:
    node_nei = list(G.neighbors(node))
    t = 0
    for n_i in node_nei:
        t = t + Q[n_i]
    CL[node] = t

for node in G.node:
    print(node,'N-value:',N[node],'Q-value:',Q[node],'CL-value:',CL[node])

结果: 

1 N-value: 9 Q-value: 67 CL-value: 145
2 N-value: 8 Q-value: 17 CL-value: 92
3 N-value: 8 Q-value: 25 CL-value: 101
4 N-value: 8 Q-value: 17 CL-value: 92
5 N-value: 8 Q-value: 9 CL-value: 67
6 N-value: 11 Q-value: 18 CL-value: 104
7 N-value: 8 Q-value: 17 CL-value: 92
8 N-value: 8 Q-value: 25 CL-value: 101
9 N-value: 8 Q-value: 17 CL-value: 92
10 N-value: 9 Q-value: 37 CL-value: 111
11 N-value: 12 Q-value: 41 CL-value: 166
12 N-value: 9 Q-value: 38 CL-value: 157
13 N-value: 8 Q-value: 39 CL-value: 157
14 N-value: 9 Q-value: 40 CL-value: 166
15 N-value: 9 Q-value: 37 CL-value: 156
16 N-value: 11 Q-value: 39 CL-value: 158
17 N-value: 9 Q-value: 39 CL-value: 158
18 N-value: 9 Q-value: 40 CL-value: 148
19 N-value: 8 Q-value: 28 CL-value: 119
20 N-value: 10 Q-value: 40 CL-value: 158
21 N-value: 9 Q-value: 39 CL-value: 148
22 N-value: 12 Q-value: 42 CL-value: 170
23 N-value: 14 Q-value: 52 CL-value: 200

参考:

Duanbing Chen, Linyuan Lü, Ming-Sheng Shang, et al. Identifying influential nodes in complex networks[J]. Physica A: Statistical Mechanics and its Applications, 2012, 391(4):1777-1787.

任晓龙, 吕琳媛. 网络重要节点排序方法综述[J]. 科学通报, 2014(13):1175-1197.

http://www.xiaowangyun.com/wyblog/detail/?id=121

 

 

  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
数据结构与算法是计算机科学中非常重要的基础知识。下面是一些数据结构与算法的术语和基础性知识的学习方法: 1. 数据结构的学习: - 数组:一种线性数据结构,用于存储相同类型的元素。 - 链表:一种线性数据结构,由节点组成,每个节点包含数据和指向下一个节点的指针。 - 栈:一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。 - 队列:一种先进先出(FIFO)的数据结构,可以在队尾插入元素,在队头删除元素。 - 树:一种非线性数据结构,由节点和边组成,每个节点可以有多个子节点。 - 图:一种非线性数据结构,由节点和边组成,节点之间可以有多个连接。 - 哈希表:一种根据关键字直接访问数据的数据结构,通过哈希函数将关键字映射到数组中的位置。 2. 算法的学习: - 排序算法:如冒泡排序、插入排序、选择排序、快速排序、归并排序等。 - 查找算法:如线性查找、二分查找、哈希查找等。 - 图算法:如深优先搜索(DFS)、广优先搜索(BFS)、最短路径算法等。 - 动态规划:一种解决复杂问题的方法,将问题分解为子问题,并保存子问题的解以避免重复计算。 - 贪心算法:一种在每个步骤选择局部最优解的方法,希望通过局部最优解达到全局最优解。 学习数据结构与算法的方法可以包括: - 阅读相关书籍或教程,了解基本概念和原理。 - 刷题练习,通过解决实际问题来巩固知识。 - 参与在线课程或学习小组,与他人交流和讨论。 - 实践编写代码,实现各种数据结构和算法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值