数学模型 | 你小子朋友居然比我多??

大家有没有想过一个有点绕的问题:是自己的朋友多,还是自己朋友的朋友多?仔细一想,大部分人朋友里都有一两个甚至几个朋友超多的人,会不会因为这几个人拔高自己朋友的朋友数的平均值?(好绕啊),但是转念一想朋友里也总有几个不太合群只和自己好的人,那么,到底是我们的朋友多,还是我们朋友的朋友数的平均值多???

假设在一个区域内,有 NNN 个人, 第 iii 个人有 kik_iki 个朋友,想象一下这个 kik_iki 就是这个人和其他人的纽带数量,也就是朋友数量。

比如这张图来说,k1=0,k2=2,k3=3,k4=2,k5=3k_1 = 0, k_2 = 2, k_3 = 3,k_4 = 2, k_5 = 3k1=0,k2=2,k3=3,k4=2,k5=3,非常好理解,同时我们可以把两个人有没有关系用邻接矩阵表示,Aij=1A_{ij}=1Aij=1 表示两个人是朋友,Aij=0A_{ij} = 0Aij=0 表示俩人不熟,那么上面那张图就可以用一个这样的矩阵表示:

A=[0000000101010110010101110] A = \left[\begin{array}{cc} 0 & 0 & 0 & 0 & 0\\ 0 & 0 & 1 & 0 & 1\\ 0 & 1 & 0 & 1 & 1\\ 0 & 0 & 1 & 0 & 1\\ 0 & 1 & 1 & 1 & 0 \end{array}\right] A=0000000101010110010101110

那我问你,假设我是第 iii 个人,那么我的朋友平均有多少朋友??

Qi=1ki∑jAijkj Q_i = \frac{1}{k_i}\sum_j A_{ij} k_j Qi=ki1jAijkj

小手一挥一个公式跃然纸上,非常合理,我有 kik_iki 个朋友,我就要统计这 kik_iki 个人并求平均值,所以要除以 kik_iki , 同时和我没关系的 jjj ,其 Aij=0A_{ij}=0Aij=0, 只有有关系的才有 Aij=1A_{ij}=1Aij=1,所以我把有关系的人的 kjk_jkj 加起来,除以 kik_iki,不就是我的朋友的平均朋友数嘛。

我们知道,对于任意一个人,拥有的朋友个数的期望都是 E[k]E[k]E[k], 也常写做 $\left \langle k \right \rangle $, 那么这个 QQQ 它的期望是多少呢(就把所有 QiQ_iQi 取平均值)?

E(Q)=1N∑i1ki∑jAijkj=1N∑i1ki∑jE[Aij]kj \begin{aligned} E(Q) &= \frac{1}{N}\sum_i \frac{1}{k_i}\sum_j A_{ij} k_j\\ & = \frac{1}{N}\sum_i \frac{1}{k_i}\sum_j E[A_{ij}] k_j \end{aligned} E(Q)=N1iki1jAijkj=N1iki1jE[Aij]kj

这就转化为了一个严肃的问题, E[Aij]E[A_{ij}]E[Aij] 怎么估计?

想象一下除了 iii 的手外,有超多只手,多到 kik_iki 可以忽略不计,那么超多手是多少呢,大概有 ⟨k⟩N\left \langle k \right \rangle NkN 那么多(总人数乘以手数量的期望),我其中某一只手拉住 jjj 的任意一只手的概率就是 kj/(⟨k⟩N)k_j/(\left \langle k \right \rangle N)kj/(kN),而我每一只手都有可能拉住 jjj, 那么我们俩牵手成功的概率就是:

E[Aij]=kikj⟨k⟩N E[A_{ij}] = \frac{k_ik_j}{\left \langle k \right \rangle N} E[Aij]=kNkikj

带回到原来的式子:

E(Q)=1N∑i1ki∑jkikj⟨k⟩Nkj=1N⟨k⟩∑ikiki1N∑jkj2=1N⟨k⟩∑i⟨k2⟩=⟨k2⟩⟨k⟩ \begin{aligned} E(Q) &= \frac{1}{N}\sum_i \frac{1}{k_i}\sum_j \frac{k_ik_j}{\left \langle k \right \rangle N}k_j\\ &=\frac{1}{N\left \langle k \right \rangle}\sum_i \frac{k_i}{k_i}\frac{1}{N}\sum_j k_j^2\\ & = \frac{1}{N\left \langle k \right \rangle}\sum_i \left \langle k^2 \right \rangle\\ & = \frac{\left \langle k^2 \right \rangle}{\left \langle k \right \rangle} \end{aligned} E(Q)=N1iki1jkNkikjkj=Nk1ikikiN1jkj2=Nk1ik2=kk2

这个结果就相当有意思,我们只需要比较 E[k2]/E[k]E[k^2]/E[k]E[k2]/E[k]E[k]E[k]E[k] 谁大就行了,也就是看 E[k2]E[k^2]E[k2]E[k]2E[k]^2E[k]2 谁大, 非常优雅。

完全随机网络 (Erdős-Rényi model)

不同的网络其 ⟨k2⟩\left \langle k^2 \right \ranglek2⟨k⟩\left \langle k \right \ranglek 各不相同,我们先假设一个完全随机的网络,就是任意两个人有概率 ppp 成为好朋友(好耶),那么一个人有 kkk 个朋友的概率就是:

P(k)=(N−1k)pk(1−p)N−1−k P(k)=\binom{N-1}{k} p^k(1-p)^{N-1-k} P(k)=(kN1)pk(1p)N1k

当这个网络人非常非常多的时候我们有 N→∞N\to\inftyN, 假设 λ=pN\lambda = pNλ=pN

P(k)=(Nk)pk(1−p)N−k=N(N−1)⋯(N−k)k!pk(1−p)N−k≈Nkk!pk(1−λN)N=(pN)kk!(1−λN)N=λke−λk! \begin{aligned} P(k)&=\binom{N}{k} p^k(1-p)^{N-k}\\ & = \frac{N(N-1)\cdots(N-k)}{k!}p^k(1-p)^{N-k}\\ & \approx \frac{N^k}{k!}p^k(1-\frac{\lambda}{N})^{N}\\ & = \frac{(pN)^k}{k!}(1-\frac{\lambda}{N})^{N}\\ & = \frac{\lambda^k e^{-\lambda}}{k!} \end{aligned} P(k)=(kN)pk(1p)Nk=k!N(N1)(Nk)pk(1p)Nkk!Nkpk(1Nλ)N=k!(pN)k(1Nλ)N=k!λkeλ

这不就是一个泊松分布嘛!!

E[k]=λ=pN E[k] = \lambda = pN E[k]=λ=pN

(要是不放心直接用可以证明一下)

E[k]=∑k=1∞kP(k)=∑k=1∞kλke−λk!=λe−λ∑k=1∞λk−1(k−1)!=λe−λeλ=λ \begin{aligned} E[k] &= \sum_{k=1}^{\infty} kP(k) =\sum_{k=1}^{\infty} k\frac{\lambda^k e^{-\lambda}}{k!} \\ &=\lambda e^{-\lambda}\sum_{k=1}^{\infty}\frac{\lambda^{k-1}}{(k-1)!} = \lambda e^{-\lambda}e^{\lambda} = \lambda \end{aligned} E[k]=k=1kP(k)=k=1kk!λkeλ=λeλk=1(k1)!λk1=λeλeλ=λ

类似的流程可以发现

E[k2]=λ2+λ=(pN)2+pN E[k^2] = \lambda^2 + \lambda = (pN)^2 + pN E[k2]=λ2+λ=(pN)2+pN

所以对于完全随机网络:

⟨k2⟩⟨k⟩=λ2+λλ=λ+1>λ \frac{\left \langle k^2 \right \rangle}{\left \langle k \right \rangle} = \frac{\lambda^2 + \lambda}{\lambda}=\lambda+1>\lambda kk2=λλ2+λ=λ+1>λ

所以对于完全随机网络,期望上,朋友的朋友平均数比自己的朋友数要多,而且多的数量的期望为1, 非常的 amazing。

Barab´asi-Albert mode

但是网络怎么可能都是完全随机的捏,我们再来看看其他网络:

开始上难度了

假设我们一开始有一个小网络,有 N0N_0N0 个人,随着时间流逝不断有新人加入直到整个网络达到 NNN 个人,每个新人加入的时候会和其中 mmm 个人交朋友(m≤N0m \leq N_0mN0),且网络中的人被选中的几率和他本身朋友数量有关,朋友越多被选中概率越高,那么假设新来的人为 iii,他和网络中原本就在的人 jjj 交朋友的概率为:

P(i↔j)=kj∑lklP(i \leftrightarrow j)=\frac{k_j}{\sum_l k_l}P(ij)=lklkj

就是 jjj 的朋友数除以总得朋友数 (jjj 的度除以总度数)

该模型就有点类似于一些社交软件,刚注册给你推荐10个人关注那种,且越是大博主被推荐概率越高。

那么有 kkk 个朋友的人被推荐的概率也非常好算,就是把所有k个朋友的人的度加在一起,除以这个网络的总度数:由于 N0N_0N0 非常小,而每多一个人都会给网络带来 2m2m2m 的度,所以有下面的公式:

kpk∑kkpk=kpk2m\frac{k p_k}{\sum_k k p_k}=\frac{k p_k}{2 m}kkpkkpk=2mkpk

同时我们每个新人加入需要选 mmm 个人交朋友,就是选 mmm 次,就是再乘以 mmm:

mkpk2m=12kpk m \frac{k p_k}{2 m}=\frac{1}{2} k p_k m2mkpk=21kpk

所以每加入一个新人,从期望来看,会有大约 12kpk\frac{1}{2} k p_k21kpk 个度数为 kkk 的人被选中,度数增加1变成 k+1k+1k+1

(n+1)pk,n+1−npk,n={12(k−1)pk−1,n−12kpk,n for k>m,1−12mpm,n for k=m.(n+1) p_{k, n+1}-n p_{k, n}= \begin{cases}\frac{1}{2}(k-1) p_{k-1, n}-\frac{1}{2} k p_{k, n} & \text { for } k>m, \\ 1-\frac{1}{2} m p_{m, n} & \text { for } k=m .\end{cases}(n+1)pk,n+1npk,n={21(k1)pk1,n21kpk,n121mpm,n for k>m, for k=m.

所以我们每加入一个新人,度为 kkk 的人数变化(就是(n+1)pk,n+1−npk,n(n+1) p_{k, n+1}-n p_{k, n}(n+1)pk,n+1npk,n),是由一部分原本度数为 kkk 的人度数变成 k+1k+1k+1(就是这一项−12kpk,n-\frac{1}{2} k p_{k, n}21kpk,n)导致的减少,和一部分原本度数为 k−1k-1k1的人度数变成 kkk (就是这一项12(k−1)pk−1,n\frac{1}{2}(k-1) p_{k-1, n}21(k1)pk1,n)导致的增加,共同作用导致的结果

当然我们认为原来的网络每个人的度数都至少是 mmm,所以不存在度为 m−1m-1m1 的人,所以12(m−1)pm−1,n=0\frac{1}{2}(m-1) p_{m-1, n}=021(m1)pm1,n=0,而新加入的那个人正好度数为 mmm 所以度数为 mmm 的人增加了1,所以 k=mk=mk=m 的时候公式变为 1−12mpm,n1-\frac{1}{2} m p_{m, n}121mpm,n

当整个网络达到稳定状态的时候,度的分布不随新的人加入而变化,我们有:pk,n+1=pk,n=pkp_{k, n+1}=p_{k, n}=p_kpk,n+1=pk,n=pk

pk={12(k−1)pk−1−12kpk for k>m1−12mpm for k=m p_k= \begin{cases}\frac{1}{2}(k-1) p_{k-1}-\frac{1}{2} k p_k & \text { for } k>m \\ 1-\frac{1}{2} m p_m & \text { for } k=m\end{cases} pk={21(k1)pk121kpk121mpm for k>m for k=m

我们发现当 k=mk=mk=m 时:

pm=1−12mpm⟹pm=2m+2 p_m = 1-\frac{1}{2} m p_m \Longrightarrow p_m = \frac{2}{m+2} pm=121mpmpm=m+22

我们发现当 k>mk>mk>m 时:

pk=12(k−1)pk−1−12kpk⟹2pk=(k−1)pk−1−kpk⟹pk=k−1k+2pk−1 \begin{aligned} p_k &= \frac{1}{2}(k-1) p_{k-1}-\frac{1}{2} k p_k\\ &\Longrightarrow 2p_k = (k-1) p_{k-1}- k p_k\\ &\Longrightarrow p_k = \frac{k-1}{k+2}p_{k-1} \end{aligned} pk=21(k1)pk121kpk2pk=(k1)pk1kpkpk=k+2k1pk1

这不就是简简单单一个递推公式嘛,我们有:

pk=(k−1)(k−2)…m(k+2)(k+1)…(m+3)pm=2m(m+1)(k+2)(k+1)k p_k=\frac{(k-1)(k-2) \ldots m}{(k+2)(k+1) \ldots(m+3)} p_m=\frac{2 m(m+1)}{(k+2)(k+1) k} pk=(k+2)(k+1)(m+3)(k1)(k2)mpm=(k+2)(k+1)k2m(m+1)

这个公式太麻烦了,但我们能轻易看出来 pk∼k−3p_k \sim k^{-3}pkk3,不妨令:

pk=Ak−3 p_k = A k^{-3} pk=Ak3

我们所有概率加起来得是1所以当N→∞N\to\inftyN有:

1=A∫mNk−3dk=A[−12k−2]mN≈A2m2⇒A=2m2 1 = A\int_m^{N}k^{-3}dk = A\left[-\frac{1}{2} k^{-2}\right]_m^{N} \approx \frac{A}{2m^2}\Rightarrow A = 2m^2 1=AmNk3dk=A[21k2]mN2m2AA=2m2

所以有:

pk=2m2k−3 p_k = 2m^2 k^{-3} pk=2m2k3

可以看到和原本公式

pk=2m(m+1)(k+2)(k+1)k p_k =\frac{2 m(m+1)}{(k+2)(k+1) k} pk=(k+2)(k+1)k2m(m+1)

还是很像的,那么我们计算一下 E[k2],E[k]E[k^2],E[k]E[k2],E[k]

E[k]=∫mNkpkdx=2m2∫mNk−2dx=2m2[−k−1]mN≈2m \begin{aligned} E[k] &= \int_m^{N}kp_kdx=2m^2\int_m^{N}k^{-2}dx\\ &=2m^2\left[- k^{-1}\right]_m^{N}\approx 2m \end{aligned} E[k]=mNkpkdx=2m2mNk2dx=2m2[k1]mN2m

E[k2]=∫mNk2pkdx=2m2∫mNk−1dx=2m2[ln⁡k]mN=2m2ln⁡Nm \begin{aligned} E[k^2] &= \int_m^{N}k^2p_kdx=2m^2\int_m^{N}k^{-1}dx\\ &=2m^2\left[\ln k\right]_m^{N}= 2m^2\ln \frac{N}{m}\end{aligned} E[k2]=mNk2pkdx=2m2mNk1dx=2m2[lnk]mN=2m2lnmN

所以有:

⟨k2⟩⟨k⟩=2m2ln⁡Nm2m=mln⁡Nm≫2m \frac{\left \langle k^2 \right \rangle}{\left \langle k \right \rangle} =\frac{2m^2\ln \frac{N}{m}}{2m} = m\ln \frac{N}{m} \gg 2m kk2=2m2m2lnmN=mlnmN2m

所以说当社区足够大,一个人朋友的朋友数的平均数基本上会远远大于朋友数。

现实网络

我们新加入一个社区加10个人后面只会加新人的设定还是不太真实,实际上大部分网络都可以用下面公式表示:

pk=Ak−γfor 2<γ<3 p_k = A k^{-\gamma}\quad \text{for } 2<\gamma<3 pk=Akγfor 2<γ<3

我们再来看看另一个极端 pk=Ak−2p_k = A k^{-2}pk=Ak2。依旧有:

1=A∫mNk−2dk=A[−k−1]mN≈Am⇒A=m 1 = A\int_m^{N}k^{-2}dk = A\left[- k^{-1}\right]_m^{N} \approx \frac{A}{m}\Rightarrow A = m 1=AmNk2dk=A[k1]mNmAA=m

pk=mk−2p_k = m k^{-2}pk=mk2

因此:

E[k]=∫mNkpkdx=m∫mNk−1dx=m[ln⁡k]mN=mln⁡Nm \begin{aligned} E[k] &= \int_m^{N}kp_kdx=m\int_m^{N}k^{-1}dx\\ &=m\left[\ln k\right]_m^{N}=m\ln\frac{N}{m} \end{aligned} E[k]=mNkpkdx=mmNk1dx=m[lnk]mN=mlnmN

E[k2]=∫mNk2pkdx=m∫mN1dx=m[k]mN=m(N−m) \begin{aligned} E[k^2] &= \int_m^{N}k^2p_kdx=m\int_m^{N}1dx\\ &=m\left[k\right]_m^{N}=m(N-m) \end{aligned} E[k2]=mNk2pkdx=mmN1dx=m[k]mN=m(Nm)

所以有:

⟨k2⟩⟨k⟩=N−mln⁡N−ln⁡m>m(ln⁡N−ln⁡m),for N→∞ \frac{\left \langle k^2 \right \rangle}{\left \langle k \right \rangle} =\frac{N-m}{\ln N-\ln m}>m({\ln N-\ln m}),\quad \text{for } N\to \infty kk2=lnNlnmNm>m(lnNlnm),for N

依旧是社区足够大的时候,一个人朋友的朋友数的平均数基本上会大于朋友数。


我们可以看出大部分情况下,朋友的朋友数的平均数都是大于自己的朋友数的,一个非常有意思的问题和结论,顺便带到了一点随即网络和无尺度网络的知识,不知道大家喜欢看这种不,本文参考如下内容:

  • P. Erd˝os and A. R´enyi, “On random graphs I,” Publ. Math. Debrecen, vol. 6, pp. 290–297, 1959.
  • E. N. Gilbert, “Random graphs,” The Annals of Mathematical Statistics, vol. 30, no. 4, pp. 1141–1144, 1959.
  • A. L. Barab´asi and R. Albert, “Emergence of scaling in random networks,” Science, vol. 286, pp. 509–512, 1999.
  • D. J. D. S. Price, “Networks of scientific papers,” Science, pp. 510–515, 1965.
  • M. E. J. Newman, “The structure and function of complex networks,” SIAM Review, vol. 45, pp. 167–256, 2003.
  • M. E. Newman, “Power laws, pareto distributions and Zipf’s law,” Contemporary physics, vol. 46, no. 5, pp. 323–351, 2005.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

slandarer

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

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

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

打赏作者

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

抵扣说明:

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

余额充值