Solution
Sandeep Kumar answered on
Jun 19 2021
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import networkx as nx\n",
"import numpy as np\n",
"import random, math\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.linear_model import LinearRegression"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def ER_network(N, p):\n",
" G = nx.Graph()\n",
" G.add_nodes_from(range(N))\n",
" for i in range(0, N):\n",
" for j in range(i+1, N):\n",
" if random.random() < p or p == 1:\n",
" G.add_edge(i,j)\n",
" return G"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Watts-Strogatz(WS) model"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def WS_model(N, k, p):\n",
" G = nx.Graph()\n",
" G.add_nodes_from(range(N))\n",
" for i in range(1, k/2+1):\n",
" G.add_edges_from(zip(range(N), range(N)[i:]+range(N)[:i]))\n",
"\n",
" # rewiring\n",
" for i in range(1, k/2+1):\n",
" for x,y in zip(range(N), range(N)[i:]+range(N)[:i]):\n",
" if random.random() < p or p == 1:\n",
" y_ = random.choice(range(N))\n",
" # avoid self-loops and multi-links\n",
" if y_ != y and not G.has_edge(x, y_):\n",
" G.remove_edge(x, y)\n",
" G.add_edge(x, y_)\n",
"\n",
" return G"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"BA preferential attachment model"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def BA_model(N, m0, m):\n",
" G = nx.empty_graph(m0)\n",
" for i in range(m0): # generate a small connected net\n",
" for j in range(m0):\n",
" if j>i: G.add_edge(i,j)\n",
"\n",
" for h in range(m0,N): # add new nodes\n",
" G.add_node(h)\n",
" k = nx.degree(G)\n",
" ks = []\n",
" for i in k: ks.append(k[i])\n",
" ...