⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 generating-network.c

📁 这是复杂网络研究中研究小世界性质的c程序2。
💻 C
字号:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define N 1001
main()
{ FILE *fp1,*fp2,*fp3,*fp4,*fp5,*fp6;
  int i,j,k,p,q,z,z1,l=0,m,n;
  static int d[N],deg1[N],deg2[N];
  float x,prob[N][N],sum,sum1;
  static float genmatrix[N][N],deg[N],degcorr[N],clu[N],clu1[N];
  fp1=fopen("prob-matrix.txt","r");
//  fp2=fopen("avedia.txt","w");
  fp3=fopen("1000avedeg10.txt","w");
  fp4=fopen("1000avedegcorr10.txt","w");
  fp5=fopen("1000aveclu10.txt","w");
//  fp6=fopen("aveclucorr.txt","w");
  for(i=1;i<N;i++)
    {for(j=1;j<N;j++)fscanf(fp1,"%f",&prob[i][j]);}

L3:for(i=1;i<N;i++)for(j=1;j<N;j++)genmatrix[i][j]=0;
   for(i=1;i<N;i++)
    {for(j=i+1;j<N;j++)
      { x=(float)(rand())/RAND_MAX;
       if(x<prob[i][j])genmatrix[i][j]=genmatrix[j][i]=1;
      }
    }
    l++;
 for(i=1;i<N;i++){deg1[i]=0;deg2[i]=0;clu1[i]=0;}
//calculate degree
   for(i=1;i<N;i++)
     {for(j=1;j<N;j++)
       {deg[i]=deg[i]+genmatrix[i][j];deg1[i]=deg1[i]+genmatrix[i][j];
       }
     }
//calculate degree correlations
   for(i=1;i<N;i++)
     {sum=0;
      for(j=1;j<N;j++)
       {if(genmatrix[i][j]==1)sum=sum+deg1[j];
       }
       if(sum==0) continue;
       else degcorr[i]=degcorr[i]+sum/deg1[i];
     }

//calculate the clustering
    for(i=1;i<N;i++)
     {k=0; sum=0;
       for(j=1;j<N;j++)
         {if(genmatrix[i][j]==1){k++;deg2[k]=j;}
         }
       if(k==0||k==1)continue;
       for(m=1;m<=k;m++)
        {for(n=m+1;n<=k;n++)
          {if(genmatrix[deg2[m]][deg2[n]]==1)sum++;
          }
        }
        clu1[i]=2*sum/k/(k-1);
        clu[i]=clu[i]+clu1[i];

     }
     printf("%d\n",l);


if(l!=5000)goto L3;

for(i=1;i<N;i++)
     { deg[i]=(float)deg[i]/l;degcorr[i]=degcorr[i]/l;
        clu[i]=clu[i]/l;
        fprintf(fp3,"%f\n",deg[i]);
        fprintf(fp4,"%f\n",degcorr[i]);
        fprintf(fp5,"%f\n",clu[i]);

     }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -