資源簡(jiǎn)介
c語言編寫的scale-free network生成程序,可以自己設(shè)定初始有幾個(gè)點(diǎn),幾條邊,適合網(wǎng)絡(luò)初學(xué)者
代碼片段和文件信息
#include?
#include?
#include?
//BA無標(biāo)度網(wǎng)絡(luò)
#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數(shù)組中元算關(guān)心的是節(jié)點(diǎn)的度,Node數(shù)組后面連接的只關(guān)心其與哪個(gè)節(jié)點(diǎn)相連(即每次不更新后面節(jié)點(diǎn)的度)
printf(“Please?input?m0?and?m?(m?<=?m0)!\n“);
scanf(“%d?%d“&m0?&m);
sum?=?0;
//網(wǎng)絡(luò)初始化,初始節(jié)點(diǎn)互相連通
for?(i?=?0;?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);
//優(yōu)先鏈接的增長(zhǎng)
double?random;
srand((unsigned)time(NULL));
for?(i?=?m0;?i? //新加入點(diǎn)的初始化(無論有無連邊,都要新加入一個(gè)點(diǎn))
Node[i]?=?(node*)malloc(sizeof(node));
Node[i]->name?=?i+1;
Node[i]->link?=?NULL;
Node[i]->degree?=?0;
Node[i]->probability?=?0;//先初始化為0,等到新加入的點(diǎn)全部算完,再一起重新計(jì)算概率
評(píng)論
共有 條評(píng)論