(python编程)k-shell的实现

2023-10-31

一.k-shell 算法(改错,他发的代码报错)

def kshell(graph):
    importance_dict = {}
    ks = 1
    while graph.nodes():
        temp = []
        node_degrees_dict = {}
        for i in graph.degree():
            node_degrees_dict[i[0]]=i[1]
        kks = min(node_degrees_dict.values())
        while True:
            for k, v in node_degrees_dict.items():
                if v == kks:
                    temp.append(k)
                    graph.remove_node(k)
                    node_degrees_dict = {}
                    for i in graph.degree():
                        node_degrees_dict[i[0]]=i[1]
            if kks not in node_degrees_dict.values():
                break
        importance_dict[ks] = temp
        ks += 1
    return importance_dict

k-shell原文:复杂网络K-Shell算法及其Python实现_梦家の博客-CSDN博客_k-shell算法

=========================================

上边这个算法不对,结果是错的

==============================================================

二.自己实现的k-shell改进算法(IKS):

由于k-shell算法每一层壳下有很多节点,重要性无法区分。所以引入熵对同层节点排序。

(python)改进的k-shell算法 The improved k-shell algorithm(IKS)_蓝砂石的博客-CSDN博客

====================

三. 更新2021.12.16 上边的kshell好像是错的,建议用下边的

def kshell(G):
    """
    kshell(G)计算k-shell值
    """
    graph = G.copy()
    importance_dict = {}
    ks = 1
    while graph.nodes():
        temp = []
        node_degrees_dict = gDegree(graph)
        kks = min(node_degrees_dict.values())
        while True:
            for k, v in node_degrees_dict.items(): 
                if v == kks:
                    temp.append(k)
                    graph.remove_node(k)
                    node_degrees_dict = gDegree(graph)
            if kks not in node_degrees_dict.values():
                break
        importance_dict[ks] = temp
        ks += 1
    return importance_dict

def gDegree(G):
    """
    将G.degree()的返回值变为字典
    """
    node_degrees_dict = {}
    for i in G.degree():
        node_degrees_dict[i[0]]=i[1]
    return node_degrees_dict.copy()

该算法引用自:7:45am的博客_CSDN博客-影响力最大化算法研究领域博主https://blog.csdn.net/qq_37730871

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(python编程)k-shell的实现 的相关文章

随机推荐

  • 怎么用计算机计算年月份,如何使用Excel计算两个日期之间的月数?

    一 这可以通过DATEDIF函数完成 二 DATEDIF函数的定义 DATEDIF函数是Excel中的隐藏函数 而不是帮助和插入公式中的隐藏函数 返回两个日期之间的年 月 日间隔的数量 DATEDIF函数通常用于计算两个日期之间的时差 语法
  • Windows11之QT开发框架超详细下载安装与使用教程

    文章目录 前言 3 1 QT开发框架下载 3 2 QT开发框架安装 3 3 QT开发框架使用 总结 前言 本博客的主要内容为在Windows11系统下的QT开发框架的下载安装与使用教程 QT开发框架开发C 图形化界面十分有用 读者跟着我一步
  • 球坐标系下梯度、散度、旋度和拉普拉斯的简单计算

    转载于 https www cnblogs com hiramlee0534 p 5480045 html
  • 七天玩转Redis

    一 简要了解 redis是一个key value存储系统 和Memcached类似 它支持存储的value类型相对更多 包括string 字符串 list 链表 set 集合 zset sorted set 有序集合 和hash 哈希类型
  • ELK系列(九)、配置ES和Kibana的用户密码

    前面介绍的都是没有设置密码的情况 ES默认没有密码 什么数据泄露的新闻简直是家常便饭 所以这里还是建议大家给ES和kibana设置用户登陆 或者使用nginx限制IP或用户访问 本文介绍ELK自带的创建用户的方式 ELK系列 一 安装Ela
  • CSDN编程竞赛第六期

    CSDN编程竞赛报名地址 https edu csdn net contest detail 16 本次是我第二次参加CSDN举办的编程竞赛 这一次的题相比上一次简单不少 对编程新人或者刚开始学习算法的人很友好 前言 背景 本次CSDN编程
  • 服务器管理系统是什么

    服务器管理系统是什么 服务器管理系统 是在操作系统下对操作系统的服务器软件及其相关软件进行二次设置的管理软件 是运营商管理域名 服务器 企业邮局 数据库等服务器主机类产品的一个网站平台 以达到快捷实现域名 服务器主机 企业邮局 数据库等产品
  • C#连接数据库SQlServer+Form窗格实现简单动态增删查改操作

    C 连接数据库SQlServer Form窗格实现简单动态增删查改操作 一 数据库连接 数据库连接部分学习自该博主原创博客 点击即可跳转 再附上该博主的博客链接 https blog csdn net kiss soul article d
  • 深度学习去运动模糊----《DeblurGAN》

    前言 现实生活中 大多数图片是模糊不清的 试想一下 追剧时视频不清晰 看着都很捉急 何况现实中好端端的一幅美景 美女也可以 被抓拍得不忍直视 瞬间暴躁 拍照时手抖 或者画面中的物体运动都会让画面模糊 女友辛辛苦苦摆好的各种Pose也将淹没在
  • 海湾主机汉字注释表打字出_海湾报警主机(JB-QG-GST5000)操作手册

    报警主机正面示意图 报警主机内部结构图 控制器 模块总线 通讯总线 联动电源输出端子示意图 A1 B1 An Bn RS 485有极性通讯线端子 接火灾报警显示盘 GND 24V LD D02电源盘对外输出端子 保护地 此端子与机壳相连 接
  • NLP技术中的Tokenization

    作者 Gam Waiciu 单位 QTrade AI研发中心 研究方向 自然语言处理 前言 今天我们来聊一聊 NLP 技术中的 Tokenization 之所以想要聊这个话题 是因为 一方面在 NLP 技术中 Tokenization 是非
  • 网络知识:光纤收发器TX、RX介绍以及两者的区别

    当我们远距离传输时 通常会使用光纤来传输 因为光纤的传输距离很远 一般来说单模光纤的传输距离在10千米以上 而多模光纤的传输距离最高也能达到2千米 而在光纤网络中 我们常常会使用到光纤收发器 那么光纤收发器怎么连 我们一起来了解下 一 光纤
  • 自媒体月入过万的运营攻略,轻松上手

    很多自媒体新手羡慕大V月入过万 同是做自媒体运营 为什么自己不能实现营收过万呢 给大家分享一套月入过万的运营攻略 适合新手们去操作 收藏起来直接套用到运营哦 1 账号定位 清晰的定位是影响后期变现的关键因素 选一个后期容易变现的领域能帮自己
  • ajax net::err_connection_refused,javascript - How to handle net::ERR_CONNECTION_REFUSED in jquery aj...

    It appears that when jqXHR readyState i e the readyState field of the first parameter to the ajax fail method is 0 that
  • 调用织梦搜索功能

    织梦默认的搜索框
  • 使用C对TOML文件的解析

    使用C对TOML文件的解析 toml书写语法 解析toml文件 测试输出内容如下 TOML是前GitHub CEO Tom Preston Werner 于2013年创建的语言 其目标是成为一个小规模的易于使用的语义化配置文件格式 TOML
  • HJT212协议

    HJ T212是由国家环保行业制定的数据传输标准协议 目前广泛使用的是HJ T212 2005通信协议 该协议在2005年制定 并于2006年2月1日正式实施 HJ T212标准不规定数据采集传输仪与监控仪器仪表的通讯方式 可以采用RS23
  • Mali GPU OpenGL ES 应用性能优化--基本概念

    1 基本概念 1 1 Mali GPU家族 Mali GPU家族都包含以下通用的硬件 基于分块的延迟渲染 Mali GPU把framebuffer分成许多块 16 x 16像素 然后一块一块地进行渲染 基于分块的渲染是有效的 因为像素值使用
  • matlab中if elseif语句,Matlab if…elseif…elseif…else…end语句

    if语句后面可以有一个 或多个 可选elseif 和一个else语句 这对于测试各种条件非常有用 当使用if elseif else语句时 请记住几点 if可以有零个或一个else 它必须在elseif之后 if可以有零到多个elseif
  • (python编程)k-shell的实现

    一 k shell 算法 改错 他发的代码报错 def kshell graph importance dict ks 1 while graph nodes temp node degrees dict for i in graph de