【复杂网络】—— K核渗流

 1 前言

在复杂网络研究领域,K核分解是一种重要的网络结构分析方法。它通过剥离网络中的节点来揭示网络的层次结构,特别是在理解社交网络、生物网络、信息传播等方面有着广泛应用。网络KK核渗流是一种基于K核分解的动态网络分析过程,用于模拟网络在受到外部影响时的结构演化过程,例如疾病传播、信息扩散等现象。本博客将从概念入手,介绍​​​​​​​K核渗流的基本模型和理论,提供一个简单的实现代码,并列出相关的参考文献。

2 概念

K核分解:网络的​​​​​​​K核是通过递归移除度小于​​​​​​​K的节点后所得到的最大子图。​​​​​​​K值越大,​​​​​​​K核描述的网络核心部分越“紧凑”。

渗流理论:渗流理论研究的是在一个介质中,流体如何通过其间隙或孔隙渗透。在网络科学中,渗流理论被用来模拟例如信息、病毒等在网络中的传播过程。

3 模型

考虑一个无向图G=(V,E),其中V是节点集,E是边集。网络的K核渗流可以定义为一个动态过程,其中节点的激活或失活受到邻居节点状态的影响,以及网络全局属性的控制。

动态规则:给定阈值K,在每一时间步,节点i若至少有K个激活的邻居,则该节点保持激活状态;否则,该节点失活。

4 理论

4.1 定义

p

节点保留的概率

q

节点的度,以区分”k核渗流“中的k

m元子树在树形网络中,每个节点都具有至少m个无限大的子分支
R一条随机的边的一端不是k - 1 元子树的概率
M(k)一个节点属于k核巨分支的概率

4.2 公式

M(k)=p \sum_{q \geqslant k} P(q) \sum_{n=k}^q\left(\begin{array}{l}q \\ n\end{array}\right) R^{q-n}(1-R)^n \tag{1}

R=1-p+p \sum_{n=0}^{k-2}\left[\sum_{i=n}^{\infty} \frac{(i+1) P(i+1)}{z_1}\left(\begin{array}{l} i \\ n \end{array}\right) R^{i-n}(1-R)^n\right] \tag{2}

5 代码

在平均度\langle k\rangle = 10的随机网络中,k 核巨分支的大小随网络中删除节点比例Q的变化。

from scipy.optimize import fsolve, root
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import gamma, gammaincc

"""
k核渗流理论解的复现
"""
# 网络平均度
z1 = 10
# 计算k核巨分支的大小M(k)
M = lambda k, R, p: p * (1 - gammaincc(k, z1 * (1 - R)))


def getRe(k, p):
    # 一条随机边的一端不是k-1元子树的根的概率
    R = np.nan
    # 最小根
    t = 1

    # R的自洽方程
    def func(R, k, p):
        return 1 - p + p * (gammaincc(k - 1, z1 * (1 - R))) - R

    # 初始值
    initialGuesses = [val for val in np.linspace(0, 0.8, 10)]

    for initialGuess in initialGuesses:
        root, data, ier, msg = fsolve(func, initialGuess, args=(k, p), full_output=True)
        if ier == 1:
            # 取最小的根作为R的解
            if root < t:
                R = root
                t = root
    return M(k, R, p)


# 随机移除Q比例的节点
Q = np.linspace(0, 0.8, 100)
# 保留p比例的节点
p = 1 - Q

getRe = np.vectorize(getRe)

plt.figure
for i in range(3, 8):
    plt.plot(Q, getRe(i, p))

plt.legend(['k=3', 'k=4', 'k=5', 'k=6', 'k=7'])
plt.xlabel("p")
plt.ylabel("R")
plt.xlim([0, 0.8])
plt.tight_layout
# plt.savefig('./1.pdf')
plt.show()
exit()

模拟和理论结果吻合

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灵均127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值