示例关系
输入:T时刻和T+1时刻n个人之间朋友关系快照(图表示)
输出:
1)给出反映出的两个当前不是朋友的人的“共同朋友个数”与“在下一快照中成为朋友的概率”之间的关系。
计算“共同朋友个数”(邻接矩阵的相乘)
这里会发现矩阵相乘结果除去对角线位置,其[a,b]=3表示a与b在当前快照不是朋友,他们的共同朋友个数为3。等于0的是当前已经是朋友
我们对共同朋友矩阵(A)进行处理便可以得到第三列对比图。并且通过与第二张快照的邻接矩阵(B)对比,可以发现新增的边是那些,条件:A[i,j]!=0&&B[i,j]==1 这样过滤条件可以知道那些是新增的边。
计算概率:先计算当前快照的共同朋友个数的情况,用一个vector记录,长度为顶点数。a[1]表示,共朋友数为1的对数,a[最后一个]表示共同朋友数为零的个数。然后以相同的方法再计算第二张快照的,再做除法即可。
2)T时刻和T+1时刻的每个人的聚集系数
节点A的聚集系数= A的任意两个朋友之间也是朋友的概率(即邻居间朋友对的个数除以总对数)
A的朋友数为N,邻居间朋友对个数为M,则聚集系数=2M/N(N-1)
先获得A的邻居节点,再遍历判断邻居节点之间是朋友
3)T时刻和T+1时刻的每条边的介数
介数计算的一种算法
ii.确定从A到其他每个节点的最短路径的条数以及路径,
iii.确定当从节点A沿最短路径向其他所有节点发送1个单位流量时,经过每条边的流量。
iv.对每一个节点,重复上述过程,累计,除以2,即得每条边的介数
实验总结:
1.整个实验以矩阵为操作对象,邻接矩阵还是很有作用的,也便于理解
2.R语言中有network数据结构,有IGraph包,计算聚集系数与介数都有已封装得函数。
实验代码:
CSDN的资源没办法免费分享了,有需要的可以私信我。