资源简介
复杂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登录的及配置文件
相关资源
- Remote Desktop Organizer v1.4.7 支持win10
- 电信中兴光猫超密获取工具使用方法
- Rational Rose Common破解文件
- res10_300x300_ssd_iter_140000.caffemodel与dep
- 双木三林_XMOS driver V4.6
-
AN_BLE-SDKDH-C1_Teli
nk BLE SDK DeveloperHan - HAP_Advanced_PDF_Password_Recovery 5.05
- The direction of synaptic plasticity mediated
- Apolipoprotein E4 Impairs in vivo Hippocampal
- Histamine excites rat lateral vestibular nucle
- Diltiazem augmented pentobarbital-induced LORR
- USB.Over.Network.Server 注册机
- LenovoTinkPad; Marker 5.01
- Fabrication and all-optical poling characteris
- Quartus II 15.0中仿真Altera三速以太网I
- Quartus II 15.0中仿真Altera三速以太网I
- 抓包工具 sniffer
- CAD中插入带坐标的正射影像——Inse
- Uninstall_Cortana_WINCLIENT.CN.rar
- VisualStudioUninstaller vs卸载工具
- ManageEngine_OpManager_12.3安装手册+管理员
- Servlet API中文文档
- vSphere6.06.56.7通用版注册机
- PowerBuilder*图书馆管理系统*需求分析
- B/S 网上订餐系统
- 十以内加减法练习 powerbuilder源码
- pb 实现仿BS界面 dw菜单 powerbuild
- 基于MIPS指令集的32位CPU设计与Verilog语
- Verilog FPGA UART串口控制器
- Packet Tracer 5.2.1
评论
共有 条评论