首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab中的优先依附、复杂网络

Matlab中的优先依附、复杂网络
EN

Stack Overflow用户
提问于 2017-05-03 09:13:06
回答 1查看 505关注 0票数 2

大家好!

我现在正在MATLAB中开发一个优先附件模型,我有一些困难要理解以下几点:

假设我在开始时有4个节点,像这样连接:

代码语言:javascript
复制
time = 0  
1 <-----> 2  
3 <-----> 4 

在下一个时间步骤中,我将添加一个节点和4个连接,然后添加另一个节点和4个连接。

连接到节点i的概率公式是:

代码语言:javascript
复制
P_link(i) = degree(i) / sum of all degrees at time-1

这将导致第一步中每个节点i= 1至4的概率为1/ 4,然后,如果节点5连接到1、2、3和4,则在接下来的时间步骤中添加节点6时,我将有一个“度和”= 12。

这就意味着连接概率是: 1/6,1/6,1/6和1/3。

我怎样才能在MATLAB中设置这个呢?我的问题是,我通常把这些东西写在纸上,以便更好地理解,如果有随机化,我只是在纸上“模拟”它,并将它与一个简单的MATLAB程序进行比较。

我现在要做的是:我取一个随机数,比如说0.3045。

若要将其添加到节点,则必须在

代码语言:javascript
复制
node1: [0.0000, 1/6],  
node2: [1/6, 1/3],  
node3: [1/3, 1/2],  
node4: [1/2, 2/3],  
node5: [2/3, 1.0000].  
---> CONNECT to node2

因此,作为第一步,我有一个如何做它的想法,但现在我有两个不同的问题,我认为,密切相关:

  1. 我怎样才能在MATLAB中实现这一点,距离法是个好主意吗?
  2. 假设每个节点只能连接一次,那么在为其余节点添加第一个连接之后,概率如何变化?(这可能是我不得不承认的一个更数学的问题.)

很抱歉,这个问题看上去很混乱,但是我希望有人能给我一些关于这个问题的实施的提示。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-03 11:13:39

我会做以下的..。

有邻接矩阵

代码语言:javascript
复制
>> A = [0 1 0 0; 1 0 0 0; 0 0 0 1; 0 0 1 0]

和度矩阵

代码语言:javascript
复制
>> D = sum(A)

在每次迭代中,任意顶点i的度为D(i),总度为

代码语言:javascript
复制
>> d = sum(D)

请注意,您希望在第一次迭代之前获得d,然后在迭代循环的末尾再获得一次,以便它保持与time-1值的关系,在这种情况下,您可能希望通过执行以下操作来使P正常化

代码语言:javascript
复制
>> P = P ./ max(P)

采摘任何顶点的概率。然后计算您的距离方法(简化)

代码语言:javascript
复制
>> P = cumsum(D ./ d)
ans = [0.2500, 0.5000, 0.7500, 1.0000]

在随机标量数r的范围内,选择随机选择的顶点的索引i

代码语言:javascript
复制
>> i = find([-1 P]<r, 1, 'last')

要将索引j的新顶点推送到A,将其连接到旧顶点i,只需简单地

代码语言:javascript
复制
>> A(i, j) = 1
>> A(j, i) = 1

现在,您只需将所有内容都包含在循环播放中,您的问题就解决了;]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43755797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档