742 lines
137 KiB
Plaintext
742 lines
137 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "e4dd8d87",
|
|
"metadata": {
|
|
"toc": true
|
|
},
|
|
"source": [
|
|
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
|
|
"<div class=\"toc\"><ul class=\"toc-item\"><li><ul class=\"toc-item\"><li><span><a href=\"#Instructions-and-Collaboration-Policy\" data-toc-modified-id=\"Instructions-and-Collaboration-Policy-0.1\"><span class=\"toc-item-num\">0.1 </span>Instructions and Collaboration Policy</a></span></li></ul></li><li><span><a href=\"#Preliminaries\" data-toc-modified-id=\"Preliminaries-1\"><span class=\"toc-item-num\">1 </span>Preliminaries</a></span><ul class=\"toc-item\"><li><span><a href=\"#Task-1.1:-Give-you-name,-ID,-and-list-of-collaborators\" data-toc-modified-id=\"Task-1.1:-Give-you-name,-ID,-and-list-of-collaborators-1.1\"><span class=\"toc-item-num\">1.1 </span>Task 1.1: Give you name, ID, and list of collaborators</a></span></li><li><span><a href=\"#Task-1.2:-Load-any-Python-modules,-and-choose-your-own-colour-for-nodes\" data-toc-modified-id=\"Task-1.2:-Load-any-Python-modules,-and-choose-your-own-colour-for-nodes-1.2\"><span class=\"toc-item-num\">1.2 </span>Task 1.2: Load any Python modules, and choose your own colour for nodes</a></span></li></ul></li><li><span><a href=\"#Centrality-Measures\" data-toc-modified-id=\"Centrality-Measures-2\"><span class=\"toc-item-num\">2 </span>Centrality Measures</a></span><ul class=\"toc-item\"><li><span><a href=\"#TASK-2.1:-Define-$G_1$-in-networkx-and-draw-it.\" data-toc-modified-id=\"TASK-2.1:-Define-$G_1$-in-networkx-and-draw-it.-2.1\"><span class=\"toc-item-num\">2.1 </span>TASK 2.1: Define $G_1$ in <code>networkx</code> and draw it.</a></span></li><li><span><a href=\"#TASK-2.2:-Compute-Centralities\" data-toc-modified-id=\"TASK-2.2:-Compute-Centralities-2.2\"><span class=\"toc-item-num\">2.2 </span>TASK 2.2: Compute Centralities</a></span></li><li><span><a href=\"#TASK-2.3:-Draw-the-graph-with-node-size-proportional-to-eigenvector-centrality\" data-toc-modified-id=\"TASK-2.3:-Draw-the-graph-with-node-size-proportional-to-eigenvector-centrality-2.3\"><span class=\"toc-item-num\">2.3 </span>TASK 2.3: Draw the graph with node size proportional to eigenvector centrality</a></span></li><li><span><a href=\"#TASK-2.4:-Make-your-own-example\" data-toc-modified-id=\"TASK-2.4:-Make-your-own-example-2.4\"><span class=\"toc-item-num\">2.4 </span>TASK 2.4: Make your own example</a></span></li></ul></li><li><span><a href=\"#Random-Networks\" data-toc-modified-id=\"Random-Networks-3\"><span class=\"toc-item-num\">3 </span>Random Networks</a></span><ul class=\"toc-item\"><li><span><a href=\"#TASK-3.1:-Count-Triangles\" data-toc-modified-id=\"TASK-3.1:-Count-Triangles-3.1\"><span class=\"toc-item-num\">3.1 </span>TASK 3.1: Count Triangles</a></span></li><li><span><a href=\"#TASK-3.2:-Comparing-$G_{ER}(n,m)$-with-graphs-from-social-science\" data-toc-modified-id=\"TASK-3.2:-Comparing-$G_{ER}(n,m)$-with-graphs-from-social-science-3.2\"><span class=\"toc-item-num\">3.2 </span>TASK 3.2: Comparing $G_{ER}(n,m)$ with graphs from social science</a></span></li></ul></li><li><span><a href=\"#Extras\" data-toc-modified-id=\"Extras-4\"><span class=\"toc-item-num\">4 </span>Extras</a></span></li></ul></div>"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "19989cc4",
|
|
"metadata": {},
|
|
"source": [
|
|
"# CS4423 Assignment 2: Part 2\n",
|
|
"\n",
|
|
"This is a template for your solution to the `networkx` questions on Assignment 2 (Part 2). \n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "4fc2a5c6",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Instructions and Collaboration Policy\n",
|
|
"\n",
|
|
"This is a homework assignment. You are welcome to collaborate with\n",
|
|
"class-mates if you wish. Please note:\n",
|
|
"* You may collaborate with at most two other people;\n",
|
|
"* Each of you must submit your own copy of your work;\n",
|
|
"* In Cell `[1]`, choose your own node colour in `opts`. It should not be the same as given here (`#ABCDEF`), or the same as your collaborators. For more, see https://matplotlib.org/stable/users/explain/colors/colors.html\n",
|
|
"* If the question asks you to construct an example, then that example should be unique to you (and your collaborators). If copied from anybody else, all involved will score zero.\n",
|
|
"* The file(s) you submit must contain a statement on the collaboration: who you collaborated with, and on what part of the assignment.\n",
|
|
"* *The use of any AI tools, such as ChatGPT or DeepSeek is prohibited, and will be subject to disciplinary procedures.* \n",
|
|
"* Upload your file, in either **PDF or HTML** formats, to https://universityofgalway.instructure.com/courses/31889/assignments To convert your notebook to `pdf` the easiest method maybe to first export as 'html', then open that in a browser, and then print to pdf.\n",
|
|
"* Your file must include your name and ID number."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "bc5829ef",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Preliminaries"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "eb8aa930",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Task 1.1: Give you name, ID, and list of collaborators\n",
|
|
"\n",
|
|
"**Your name goes here:** Andrew Hayes\n",
|
|
"\n",
|
|
"**Your ID number goes here:** 21321503\n",
|
|
"\n",
|
|
"*Place your collaboration statement here:*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "50688c85",
|
|
"metadata": {},
|
|
"source": [
|
|
"### Task 1.2: Load any Python modules, and choose your own colour for nodes"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"id": "b96b6a50",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import networkx as nx\n",
|
|
"### Change the next line so nodes appear in your favourite colour.\n",
|
|
"opts = { \"with_labels\": True, \"node_color\": '#654321' } # show labels; IMPORTANT: Choose your own colour here"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "145b812c",
|
|
"metadata": {},
|
|
"source": [
|
|
"Other ones that Niall used when preparing solutions. Add any you need:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "d548d182",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import random\n",
|
|
"import pandas as pd\n",
|
|
"import math\n",
|
|
"import statistics"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "488bfec3",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Centrality Measures\n",
|
|
"\n",
|
|
"Before you do this set of tasks, it may be helpful to review the example at the end of [Week 7 Part 2](https://www.niallmadden.ie/2425-CS4423/W07/CS4423-W07-Part-2.html)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "6d7af8b8",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Adjacency Lists**.\\\n",
|
|
"One way of representing a graph is an as <b>adjacency list</b>. It has one row per node. That row starts with the node label, followed by a colon, followed by a list of its neighbours. For an undirected graph, one does not list an edge twice. \n",
|
|
"\n",
|
|
"Consider the following list, for a graph, $G_1$, on the nodes $\\{1, 2, 3, \\dots, 10\\}$:\n",
|
|
"<code>\n",
|
|
"1: 2 3 4 6 7\n",
|
|
"2: 3\n",
|
|
"3: 4\n",
|
|
"4: 5 8\n",
|
|
"5: 6\n",
|
|
"6: 7\n",
|
|
"7: \n",
|
|
"8: 9 10\n",
|
|
"9:\n",
|
|
"10:\n",
|
|
"</code>\n",
|
|
"\n",
|
|
"So, in the adjacency list for $G_1$, no neighbours of Node 7 are listed, because the associated edges are already accounted for in the neighbour lists on Nodes 1 and 7.\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "5920d2d6",
|
|
"metadata": {},
|
|
"source": [
|
|
"### TASK 2.1: Define $G_1$ in `networkx` and draw it.\n",
|
|
"\n",
|
|
"Let $G_1$ be the network prescribed by the adjacency list above. Define it as a `networkx` network, and draw it."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "0cddf432",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"G1 = nx.Graph()\n",
|
|
"\n",
|
|
"edges = [\n",
|
|
" (1, 2), (1, 3), (1, 4), (1, 6), (1, 7),\n",
|
|
" (2, 3),\n",
|
|
" (3, 4),\n",
|
|
" (4, 5), (4, 8),\n",
|
|
" (5, 6),\n",
|
|
" (6, 7),\n",
|
|
" (8, 9), (8, 10)\n",
|
|
"]\n",
|
|
"\n",
|
|
"G1.add_edges_from(edges)\n",
|
|
"nx.draw(G1, **opts)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "7f8a8400",
|
|
"metadata": {},
|
|
"source": [
|
|
"### TASK 2.2: Compute Centralities\n",
|
|
"\n",
|
|
"Compute the Degree, Eigenvector, Closeness, and Betweenness Centralities of the nodes in this graph. Display all four in a table (using a pandas `DataFrame`) sorted by the eigenvector centrality. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"id": "a6d6c25a",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"degree_centrality = nx.degree_centrality(G1)\n",
|
|
"eigenvector_centrality = nx.eigenvector_centrality(G1)\n",
|
|
"betweenness_centrality = nx.betweenness_centrality(G1)\n",
|
|
"closeness_centrality = nx.closeness_centrality(G1)\n",
|
|
"\n",
|
|
"centrality_df = pd.DataFrame({\n",
|
|
" \"Degree\": degree_centrality,\n",
|
|
" \"Eigenvector\": eigenvector_centrality,\n",
|
|
" \"Closeness\": closeness_centrality,\n",
|
|
" \"Betweenness\": betweenness_centrality\n",
|
|
"})\n",
|
|
"\n",
|
|
"centrality_df_sorted = centrality_df.sort_values(by=\"Eigenvector\", ascending=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 15,
|
|
"id": "652dfa5d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>Degree</th>\n",
|
|
" <th>Eigenvector</th>\n",
|
|
" <th>Closeness</th>\n",
|
|
" <th>Betweenness</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>0.555556</td>\n",
|
|
" <td>0.544133</td>\n",
|
|
" <td>0.600000</td>\n",
|
|
" <td>0.351852</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>0.444444</td>\n",
|
|
" <td>0.424131</td>\n",
|
|
" <td>0.642857</td>\n",
|
|
" <td>0.560185</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>0.333333</td>\n",
|
|
" <td>0.398195</td>\n",
|
|
" <td>0.529412</td>\n",
|
|
" <td>0.064815</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>0.333333</td>\n",
|
|
" <td>0.333310</td>\n",
|
|
" <td>0.450000</td>\n",
|
|
" <td>0.050926</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>0.222222</td>\n",
|
|
" <td>0.296646</td>\n",
|
|
" <td>0.409091</td>\n",
|
|
" <td>0.000000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>0.222222</td>\n",
|
|
" <td>0.276219</td>\n",
|
|
" <td>0.428571</td>\n",
|
|
" <td>0.000000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>0.222222</td>\n",
|
|
" <td>0.238443</td>\n",
|
|
" <td>0.473684</td>\n",
|
|
" <td>0.055556</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>0.333333</td>\n",
|
|
" <td>0.166524</td>\n",
|
|
" <td>0.500000</td>\n",
|
|
" <td>0.416667</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>0.111111</td>\n",
|
|
" <td>0.052423</td>\n",
|
|
" <td>0.346154</td>\n",
|
|
" <td>0.000000</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>0.111111</td>\n",
|
|
" <td>0.052423</td>\n",
|
|
" <td>0.346154</td>\n",
|
|
" <td>0.000000</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" Degree Eigenvector Closeness Betweenness\n",
|
|
"1 0.555556 0.544133 0.600000 0.351852\n",
|
|
"4 0.444444 0.424131 0.642857 0.560185\n",
|
|
"3 0.333333 0.398195 0.529412 0.064815\n",
|
|
"6 0.333333 0.333310 0.450000 0.050926\n",
|
|
"2 0.222222 0.296646 0.409091 0.000000\n",
|
|
"7 0.222222 0.276219 0.428571 0.000000\n",
|
|
"5 0.222222 0.238443 0.473684 0.055556\n",
|
|
"8 0.333333 0.166524 0.500000 0.416667\n",
|
|
"9 0.111111 0.052423 0.346154 0.000000\n",
|
|
"10 0.111111 0.052423 0.346154 0.000000"
|
|
]
|
|
},
|
|
"execution_count": 15,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"centrality_df_sorted"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "dda1a182",
|
|
"metadata": {},
|
|
"source": [
|
|
"### TASK 2.3: Draw the graph with node size proportional to eigenvector centrality"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 18,
|
|
"id": "51619b7d",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"node_sizes = [10000 * eigenvector_centrality[node] for node in G1.nodes()] # multiplying by 10000 because the nodes aren't visible otherwise\n",
|
|
"nx.draw(G1, **opts, node_size=node_sizes)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f76aacf2",
|
|
"metadata": {},
|
|
"source": [
|
|
"### TASK 2.4: Make your own example\n",
|
|
"\n",
|
|
"If TASK 2.3 went as intended, you should find that, for $G_1$, Node **4** had both the greatest closeness and betweenness centrality. Make up an example of a graph, $G_2$, which the node with the greatest closeness centrality is different from the one with the greatest betweenness centrality. Define and draw the graph in `networkx`, and compute the centralities to verify your result.\n",
|
|
"\n",
|
|
"*WARNING* You have to construct this example yourself. Do not try to use the same graph as anyone other than a listed collaborator."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 32,
|
|
"id": "e09a9ffe",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"G2 = nx.Graph()\n",
|
|
"\n",
|
|
"edges = [\n",
|
|
" # define two separate star graphs, wherein the highest betweenness will be the central node \n",
|
|
" (0,1), (0,2), (0,3), (0,5),\n",
|
|
" (7,8), (7,9), (7,10), (7,11),\n",
|
|
"\n",
|
|
" # create a bridge node between the two star graphs, thus having the highest betweenness\n",
|
|
" (12,7), (12,0)\n",
|
|
"]\n",
|
|
"\n",
|
|
"G2.add_edges_from(edges)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "f46bca53",
|
|
"metadata": {},
|
|
"source": [
|
|
"Don't remove the following cell. It will plot your network, `G2`, and identify the nodes with greatest betweenness and closeness centralities."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 33,
|
|
"id": "a76e5712",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Node 0 has the greatest betweenness, and Node 12 has the max closeness\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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MJYtW4asrCxkZmZi+PDh2L59u9Lx/MKKFSvQ3NyM8ePHKx2FVMQTp+K07USh1WpdvpYkSapfjU6kdiyU5PUMBgPGjBmDgwcP4v3338eRI0dw+eWX47rrrsN3333HkQc3sdvtmDNnDu6++24ukKIO5BqhPJPS0lLs2LED0dHRyMjIkOWaajoaksgbsVCSz9DpdLj33nuxf/9+fPbZZ6iursbVV1+NK664Aps2bWKxlNnq1atRWFiIZ555RukopDJOp9Nt17bb7Xj++edhs9nw9NNPyzJCCYAbnBO5iIWSfI5Go8Gtt96KrKwsfPHFFxBFEX/6059w0UUXYd26dfzBIQNJkjBr1izcdNNNGDBggNJxSGXc9cubKIp48cUXsXv3btx666245ZZbZL02EXUdCyX5LEEQ8Oc//xm//PILtm7dirCwMIwaNQoDBw7EqlWrTrvZO52fb775Br/99huPWSSPkSQJL7/8Mr744gsMHz4cL774oqzX95Z9eYnUioWSfJ4gCLjmmmuwbds2/Pzzz0hNTcU999yDvn374q233oLNZlM6oteZNWsWhgwZgquvvlrpKKRCGo28P1raRibXrVuHm2++Ga+88ors92ChJHINCyX5lcsvvxxffvkldu/ejYEDB2LMmDFIT0/HwoUL3b6QwFfs2bMHX3/9NSZOnMgfwnRaer1etmuJooiXXnoJ69evx0033YTp06fL9tzkieTMTOSPuLE5+bUDBw5g+vTp+OijjxAbG4sJEyZg7NixCA4OVjqaat177734+eefkZ+f3751C5HVasWBAweQlZUFrVaLIUOGuFz82kYmP//8c9xwww2YMWOG277n+vTpw+9nIhewUBIBOHToEF577TW8++67CA0NxVNPPYXHHnsM4eHhSkdTlWPHjqFnz56YPXs2nnjiCaXjkEKam5uxd+9eZGVlISsrC9nZ2di/fz/sdjs0Gg3uvvtuTJo0yeX7LFq0CIsXL0ZgYCDuueee0xa+a665Bn369HHpPjqdzuVrEPk7FkqiExw/fhyzZs3C8uXLERAQgMceewxPPvkkYmJilI6mCk899RTeffddHD9+nKO4fqKurg579uzpUB7z8vIgiiL0ej0uuOACDBkypP1t4MCB0Ov1OHjwoMv3njx5MjZs2HDWz5k6dSpGjhzp0n1CQkKQmprq0jWI/B0LJdFplJaW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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"### Do not delete this cell. It has an overly-elaborate way of showing the difference in centralities.\n",
|
|
"CC = nx.closeness_centrality(G2)\n",
|
|
"BC = nx.betweenness_centrality(G2)\n",
|
|
"\n",
|
|
"max_betweenness = max(BC, key=BC.get)\n",
|
|
"max_closeness = max(CC, key=CC.get)\n",
|
|
"print(f\"Node {max_betweenness} has the greatest betweenness, and Node {max_closeness} has the max closeness\")\n",
|
|
"# Node colors: highlight key nodes\n",
|
|
"node_colors = []\n",
|
|
"for node in G2.nodes():\n",
|
|
" if node == max_betweenness:\n",
|
|
" node_colors.append(\"pink\") # Highest betweenness\n",
|
|
" elif node == max_closeness:\n",
|
|
" node_colors.append(\"skyblue\") # Highest closeness\n",
|
|
" else:\n",
|
|
" node_colors.append(\"lightgray\")\n",
|
|
"\n",
|
|
"nx.draw(G2, with_labels=True, node_color=node_colors, edge_color=\"black\", node_size=1000, font_size=14)\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "57dfc616",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Random Networks\n",
|
|
"\n",
|
|
"We'll learn in class that one way in which ER models don't reflect some real-world networks in that they tend to have fewer triangles (3-cycles) than real-world graphs. Here a _triangle_ in $G$ means a subgraph that is isomorphic to $C_3$. So, for example, $C_3$ has 1 triangle, and the [Wheel Graph, $W_n$](https://en.wikipedia.org/wiki/Wheel_graph) has $n-1$.\n",
|
|
"\n",
|
|
"One way to count all the triangles in a graph is as folllows:\n",
|
|
"1. Compute the adjacency matrix, $A$, of $G$\n",
|
|
"2. Compute $B=A^3$. Note that $b_{ij}$ is twice the number of paths of length 3 from $i$ to $j$. And, in particular, $b_{ii}$ is the number of 3-cycles involving Node $i$. Note: $b_{ii}$ double counts the number of triangles involving $i$ because, if $i \\to j \\to k \\to i$ is a 3-cycle, so too is $i \\to k \\to j \\to i$. \n",
|
|
"3. Compute the _trace_ of $B$ (i.e., the sum the diagonal entries in $B$), and divide by 6 to calculate the number of 3-cycles. \n",
|
|
"\n",
|
|
"Asides:\n",
|
|
"* It is not a homework question, but work out why you should divide the trace of $B$ by 6.\n",
|
|
"* Well done: you've just come up with a proof that the trace of the cube of any $0-1$ matrix is divisible by 6.\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "ec032666",
|
|
"metadata": {},
|
|
"source": [
|
|
"### TASK 3.1: Count Triangles\n",
|
|
"\n",
|
|
"Write a function (**with some sensible name of your own choosing**) that takes as its input a graph, and returns the total number of triangles in $G$. \n",
|
|
"Tip: `np.trace()` returns the trace of a 2D numpy array."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 51,
|
|
"id": "971ba5cf",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def num_triangles(G):\n",
|
|
" A = nx.adjacency_matrix(G).todense()\n",
|
|
" B = np.linalg.matrix_power(A, 3)\n",
|
|
" trace = np.trace(B)\n",
|
|
" return int(trace / 6)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "b7c1f565",
|
|
"metadata": {},
|
|
"source": [
|
|
"Verify that your function works by checking that, e.g., the graph returned by `nx.wheel_graph(5)` has 4 triangles."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 45,
|
|
"id": "582a7740",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"4"
|
|
]
|
|
},
|
|
"execution_count": 45,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"num_triangles(nx.wheel_graph(5))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "944614ef",
|
|
"metadata": {},
|
|
"source": [
|
|
"### TASK 3.2: Comparing $G_{ER}(n,m)$ with graphs from social science\n",
|
|
"\n",
|
|
"`networkx` comes with some generators from graphs that are much-studied in the network science.\n",
|
|
"In [Week7: Part 2](https://www.niallmadden.ie/2425-CS4423/W07/CS4423-W07-Part-2.html#Example:-15th-century-Florentine-marriages) we considered the _Florentine Families_ graph, which is generate by `nx.florentine_families_graph()`. There are others such as \n",
|
|
"* The [Karate Club Graph](https://en.wikipedia.org/wiki/Zachary%27s_karate_club) which is generated using `nx.karate_club_graph()`\n",
|
|
"* The (Les Miserables network)[https://networkx.org/documentation/stable/reference/generated/networkx.generators.social.les_miserables_graph.html] generated by `nx.les_miserables_graph()`\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "16fcc76c",
|
|
"metadata": {},
|
|
"source": [
|
|
"For each of the three networks mentioned above:\n",
|
|
"* Generate the graph, and output the number of order and size of the network, and the number of triangles it has.\n",
|
|
"* Use `nx.gnm_random_graph()` to make a graph drawn from $G_{ER}(n,m)$ that has the same size and order. Output how many triangles it has. "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 64,
|
|
"id": "459dae88",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Florentine order: 15\n",
|
|
"Florentine size: 20\n",
|
|
"Florentine number of triangles: 3\n",
|
|
"GER number of triangles: 2\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"florentine = nx.florentine_families_graph()\n",
|
|
"order = florentine.number_of_nodes()\n",
|
|
"size = florentine.number_of_edges()\n",
|
|
"triangles = num_triangles(florentine)\n",
|
|
"\n",
|
|
"print(\"Florentine order: \" + str(order))\n",
|
|
"print(\"Florentine size: \" + str(size))\n",
|
|
"print(\"Florentine number of triangles: \" + str(triangles))\n",
|
|
"\n",
|
|
"ger = nx.gnm_random_graph(order, size)\n",
|
|
"print(\"GER number of triangles: \" + str(num_triangles(ger)))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 79,
|
|
"id": "c84c4df4",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Karate Club order: 34\n",
|
|
"Karate Club size: 78\n",
|
|
"Karate Club number of triangles: 1821\n",
|
|
"GER number of triangles: 13\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"karate = nx.karate_club_graph()\n",
|
|
"order = karate.number_of_nodes()\n",
|
|
"size = karate.number_of_edges()\n",
|
|
"triangles = num_triangles(karate)\n",
|
|
"\n",
|
|
"print(\"Karate Club order: \" + str(order))\n",
|
|
"print(\"Karate Club size: \" + str(size))\n",
|
|
"print(\"Karate Club number of triangles: \" + str(triangles))\n",
|
|
"\n",
|
|
"ger = nx.gnm_random_graph(order, size)\n",
|
|
"print(\"GER number of triangles: \" + str(num_triangles(ger)))\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 83,
|
|
"id": "6fcedf05",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Les Miserables order: 77\n",
|
|
"Les Miserables size: 254\n",
|
|
"Les Miserables number of triangles: 55513\n",
|
|
"GER number of triangles: 60\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"mis = nx.les_miserables_graph()\n",
|
|
"order = mis.number_of_nodes()\n",
|
|
"size = mis.number_of_edges()\n",
|
|
"triangles = num_triangles(mis)\n",
|
|
"\n",
|
|
"print(\"Les Miserables order: \" + str(order))\n",
|
|
"print(\"Les Miserables size: \" + str(size))\n",
|
|
"print(\"Les Miserables number of triangles: \" + str(triangles))\n",
|
|
"\n",
|
|
"ger = nx.gnm_random_graph(order, size)\n",
|
|
"print(\"GER number of triangles: \" + str(num_triangles(ger)))\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2e1d165d",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Extras \n",
|
|
"\n",
|
|
"The following isn't part of the assignment, but you might find it interesting:\n",
|
|
"1. Use `np.linspace(0,1,100)` to create an array of probabilities. \n",
|
|
"2. For $n=100$ make a $G_{ER}(n,p)$ graph with the values of $p$ drawn from above, and count the number of triangles. Call this $T(G)$.\n",
|
|
"3. I conjecture that $T(G)/m(G) \\approx C p^2$, for some constant $C$ that depends on $n$. Try to produce a plot that supports (or refutes) this conjecture, and try to estimate $C$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "ce7cad10",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.13.2"
|
|
},
|
|
"toc": {
|
|
"base_numbering": 1,
|
|
"nav_menu": {},
|
|
"number_sections": true,
|
|
"sideBar": true,
|
|
"skip_h1_title": true,
|
|
"title_cell": "Table of Contents",
|
|
"title_sidebar": "Contents",
|
|
"toc_cell": true,
|
|
"toc_position": {},
|
|
"toc_section_display": true,
|
|
"toc_window_display": false
|
|
},
|
|
"varInspector": {
|
|
"cols": {
|
|
"lenName": 16,
|
|
"lenType": 16,
|
|
"lenVar": 40
|
|
},
|
|
"kernels_config": {
|
|
"python": {
|
|
"delete_cmd_postfix": "",
|
|
"delete_cmd_prefix": "del ",
|
|
"library": "var_list.py",
|
|
"varRefreshCmd": "print(var_dic_list())"
|
|
},
|
|
"r": {
|
|
"delete_cmd_postfix": ") ",
|
|
"delete_cmd_prefix": "rm(",
|
|
"library": "var_list.r",
|
|
"varRefreshCmd": "cat(var_dic_list()) "
|
|
}
|
|
},
|
|
"types_to_exclude": [
|
|
"module",
|
|
"function",
|
|
"builtin_function_or_method",
|
|
"instance",
|
|
"_Feature"
|
|
],
|
|
"window_display": false
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|