資源簡介
復雜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?????{
????????networkDegree+=G->agjList[i].node_K;
????}
????printf(“networkDegree?is?%f\n“networkDegree);
????printf(“?=?%f\n“networkDegree/(double)NetMaxSize);//輸出網絡平均度
????for(int?i?=?0;?i?????????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登錄的及配置文件
評論
共有 條評論