资源简介
复杂ER网络上的经典SIR模型的实现,对经典的SIR模型进行数据验证。
代码片段和文件信息
/*
*在前一个理论改进实现的基础上,对于模拟部分传播做改进:对于每个节点的传播概率是当前传播概率乘上自己节点度的贝塔次方在感染节点邻居所有节点度贝塔次方占的比例
*所有模拟和理论都是用同一个图。SIR
*ER-随机网络.c (邻接表文件): 定义控制台应用程序的入口点。
*/
//0感染态;1易感态;2恢复态
#include
#include
#include “time.h“
#include
#include
#define NetMaxSize 5000
#define AverK 8//设置网络平均度为10
#define u0 0.1//节点自己恢复的概率
#define u1 0.1//基础网络恢复率
//#define ui 0.2
#define w 1.0//资源利用率
//#define theory_over 1e-9//理论终止t+1步与t步之差小于此值结束
#define p0 0.01//初始感染节点比例
#define ResProvide 1.0
#define Preference 0.0
//边表节点
typedef struct EdgeNode
{
int adjvex;//储存对应顶点的下标(邻接点编号)
//int weight;//用于储存权值
struct EdgeNode * next;//指向下一个边表节点
} EdgeNode;
//顶点表节点
typedef struct VertexNode
{
int verNum;//顶点编号
int node_K;//节点的度数
int nodeState;//用来表示节点的状态:感染态0,易感态1和恢复态2三个状态
struct EdgeNode * firstarc;//指向边表节点
} VertexNode;
//图节点
typedef struct Graph
{
VertexNode agjList[NetMaxSize];//顶点表数组
//int numVextexesnumEdges;//当前顶点数和边数
} Graph;
//创建图的邻接表结构
void GreateGraph(Graph * G)
{
double p;
p=(double)AverK/NetMaxSize;
EdgeNode * e;//动态存储的边节点
for(int i=0; i {
G->agjList[i].verNum=i;
G->agjList[i].node_K=0;
G->agjList[i].nodeState=1;//在传播开始之前除了随机挑选的感染态节点外,其它节点都是易感态
G->agjList[i].firstarc=0;
}
/*
1>利用头插法
2>因为无向图没有方向,所以创建边表节点的时候,要重复创建两次
并进行相反的操作
*/
for(int i=0; i {
for (int j=i+1; j {
double test1=0.0;
/*printf(“输入边(ViVj)的下标i和j的值:“);
scanf(“%d %d“&i&j);*/
test1=rand()/(double)(RAND_MAX);
if(test1 {
e=(EdgeNode *)malloc(sizeof(EdgeNode));//动态分配空间来储存边表节点:i连向j
e->adjvex=j;
e->next=NULL;
G->agjList[i].node_K++;
e->next=G->agjList[i].firstarc;
G->agjList[i].firstarc=e;
e=(EdgeNode *)malloc(sizeof(EdgeNode));//分配节点让节点j连向i
e->adjvex=i;
e->next=NULL;
G->agjList[j].node_K++;
e->next=G->agjList[j].firstarc;
G->agjList[j].firstarc=e;
}
}
}
/* for(int i=0; i {
int k=G->agjList[i].node_K;
if(k==0)
printf(“节点%d “i);
}*/
}
int calculateDegreeDistribution(Graph * G)
{
double networkDegree=0.0;
double statistic[NetMaxSize];
for (int i=0; i {
statistic[i]=0;
}
for(int i = 0; i < NetMaxSize; i++)//统计整个网络的总的度数
{
networkDegree+=G->agjList[i].node_K;
}
printf(“networkDegree is %f\n“networkDegree);
printf(“ = %f\n“networkDegree/(double)NetMaxSize);//输出网络平均度
for(int i = 0; i < NetMaxSize; i++)//这里从1开始是因为数据degree坐标是从1开始的
statist
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-12-17 16:53 ERSIRtheoryJD\
文件 202765 2018-09-13 16:25 ERSIRtheoryJD\ER Networks.txt
文件 1128 2018-09-13 20:36 ERSIRtheoryJD\ERSIRtheoryJD.cbp
文件 146 2018-09-14 10:44 ERSIRtheoryJD\ERSIRtheoryJD.depend
文件 360 2018-12-17 16:53 ERSIRtheoryJD\ERSIRtheoryJD.layout
目录 0 2018-09-13 21:19 ERSIRtheoryJD\bin\
目录 0 2018-11-29 08:36 ERSIRtheoryJD\bin\Debug\
文件 43756 2018-09-14 11:16 ERSIRtheoryJD\bin\Debug\ERSIRtheoryJD.exe
文件 20441 2018-12-17 14:52 ERSIRtheoryJD\main.c
目录 0 2018-09-13 21:19 ERSIRtheoryJD\obj\
目录 0 2018-11-29 08:36 ERSIRtheoryJD\obj\Debug\
文件 14591 2018-09-14 11:16 ERSIRtheoryJD\obj\Debug\main.o
- 上一篇:基于关联信息熵度量的特征选择代码
- 下一篇:第三方网站接入qq登录的及配置文件
相关资源
- Pilot_Contamination_Precoding-master
- PID_verilog
- Verilog HDL实现数码管动态扫描
- DEAP VERSION 2.1
- MsTimer2.zip
- 租房系统 使用ssh框架 利用Struts2框架
- 基于熵率的超像素分割代码
- 基于Verilog的七人表决器工程包含整个
- Improving the Transformer Translation Model wi
- webuploader所需js
- 简易FTP客户端/服务端系统
- FPGA Verilog -LPM_ROM控制器 完整工程
- 超声波测距模块的Verilog代码
- verilog实现pwm输出按键控制数码管显示
- 基于verilog的DDS设计
- LUTmanager
- 基于verilog使得led闪烁~
- flexitimer2库
- 基于Erlang的gen_tcp聊天室代码功能完整
- Corel.All.Products.Universal.Keygens.by.CORE.v
- designpattern.zip
- 4位七段数数码管显示
- 北航计组P1-Verilog简单部件与状态机
- Blender 基础教程 (中文语音)
- 五级流水线MIPS微处理器部分指令实现
- cisco packet tracer静态路由与动态路由配
-
jmeter+ant 持续集成build.xm
l文件 - cas client cas server
- AltiumDesigner官方STM32封装库(F0~F4 L1)
- Verilog设计电子表万年历
评论
共有 条评论