关键节点检测-贪婪算法的局限性


一、什么是关键节点检测

关键结点检测(CDNP)也就是识别一些网络中的重要结点,当把这些结点删除后会对网络产生巨大影响(比如让图变的支离破碎),通过识别这样的结点,我们就可以很好的进行预防,就有很强的现实意义。

二、贪婪算法的局限性

案例

我们以结点中心性中的度中心性为衡量指标,来找出图中的关键节点。
在这里插入图片描述
其Matlab代码:

 % 示例使用  
% 假设 G 是一个邻接矩阵表示的图  
% 这里我们用一个简单的3x3邻接矩阵作为示例  
G =[0 1 1 1 1 0 ;1 0 1 0 0 0 ;
    1 1 0 1 0 0 ;1 0 1 0 1 0 ;
    1 0 0 1 0 1 ;0 0 0 0 1 0 ;
   ];    
k = 1; % 我们想要找到2个关键节点  
  
% 调用函数并获取结果  
S_star = greedy_node(G,k);  
disp(S_star); % 显示结果
function s_node=greedy_node(G, k)
%定义一个向量来接收获得关键结点
  V_node=[];
  %获取图的结点个数
  V=size(G,1);
  %获取图中每个结点的度
  V_d=sum(G,2);
  while numel(V_node)<k
      %得到不在V_node中的结点索引
      V_index=find(~ismember(1:V,V_node))
      [~,max_index]=max(V_d(V_index))
       i=V_index(max_index);
       V_node=[V_node,i];
  end
  s_node=V_node;
end

结果:
在这里插入图片描述
可以看出最终选择的是结点1,但是结点1删除后并不能对整个网络产生影响。
也就是说贪婪算法仅仅选择在当前看来最好的选择,但是从全局看并不一定是最好的选择。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值