• 大小: 3KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签: scale  free  

资源简介

c语言编写的scale-free network生成程序,可以自己设定初始有几个点,几条边,适合网络初学者

资源截图

代码片段和文件信息

#include 
#include 
#include 

//BA无标度网络

#define N 20000

typedef struct node
{
int name;
node* link;
int degree;
double probability;
};

int main(){
FILE* fp;
int ijkhx;
int m0m;
int D;//the sum of all the node degree
double count prosum;
fp = fopen(“BA-out.txt““w+“);
node *no *no1;
node *Node[N];//Node数组中元算关心的是节点的度,Node数组后面连接的只关心其与哪个节点相连(即每次不更新后面节点的度)

printf(“Please input m0 and m (m <= m0)!\n“);
scanf(“%d %d“&m0 &m);

sum = 0;

//网络初始化,初始节点互相连通
for (i = 0; i < m0; i++){
Node[i]=(node*)malloc(sizeof(node));
Node[i]->name = i+1; Node[i]->degree = m0-1; Node[i]->probability = (double)1/m0; Node[i]->link = NULL;
no = (node*)malloc(sizeof(node));
no = Node[i];
for (j = 1; j <= m0; j++)
if (j != i+1){
no1 = (node*)malloc(sizeof(node));
no1->name = j; no1->link = NULL; no1->degree = 0; no1->probability = 0;
no->link = no1;
no = no->link;
}
sum = sum + Node[i]->probability;
}
D = m0 * (m0 - 1);

//优先链接的增长
double random;
srand((unsigned)time(NULL));
for (i = m0; i < N; i++){
//新加入点的初始化(无论有无连边,都要新加入一个点)
Node[i] = (node*)malloc(sizeof(node));
Node[i]->name = i+1;
Node[i]->link = NULL;
Node[i]->degree = 0;
Node[i]->probability = 0;//先初始化为0,等到新加入的点全部算完,再一起重新计算概率

评论

共有 条评论