{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Network Analysis\n", "\n", "### Author: [Marco Tavora](http://www.marcotavora.me/)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Introduction\n", "\n", "From Wikipedia:\n", "\n", "> Network theory is the study of graphs as a representation of either symmetric relations or asymmetric relations between discrete objects. In computer science and network science, network theory is a part of graph theory: a network can be defined as a graph in which nodes and/or edges have attributes (e.g. names).\n", "\n", "> Network theory has applications in many disciplines including statistical physics, particle physics, computer science, electrical engineering, biology, economics, finance, operations research, climatology and sociology. Applications of network theory include logistical networks, the World Wide Web, Internet, gene regulatory networks, metabolic networks, social networks, epistemological networks, etc.; see List of network theory topics for more examples.\n", "\n", "With nodes and edges representations, systems of completely different nature but similar structure can be compared.\n", "\n", "\n", "### Eulerian Path\n", "\n", "An Eulerian path, is a path which crosses every edge *exactly* once. It exists if and only if:\n", "- Every vertex has even degree\n", "- Exactly two nodes have odd degree\n", "\n", "The degree of a vertex is the number of edges incident to the vertex (loops count twice).\n", "\n", "### Types of Networks\n", "\n", "- Undirected: connections extends in both directions.\n", "- Directed: connections may only flow in one direction.\n", "- Cyclic: contains at least one cycle (node can be connected to itself by traversing at least one edge).\n", "- Acyclic: one that contains no cycles\n", "- Multigraph: multiple links connecting the same pair of nodes.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Importing libraries\n", "\n", "Using the `networkx` library we can work with graphs." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import networkx as nx\n", "from IPython.core.interactiveshell import InteractiveShell\n", "InteractiveShell.ast_node_interactivity = \"all\" # see the value of multiple statements at once.\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the docs, `nx.Graph` is:\n", "> A base class for undirected graphs. A Graph stores nodes and edges with optional data, or attributes. Graphs hold undirected edges. Self loops are allowed but multiple (parallel) edges are not. Nodes can be arbitrary (hashable) Python objects with optional key/value attributes. By convention `None` is not used as a node. Edges are represented as links between nodes with optional key/value attributes.\n", "\n", "The weight is a numerical value, assigned as a label to a vertex or edge of a graph. From [here](http://networksciencebook.com/2#bridges),\n", "\n", "> In mobile call networks the weight can represent the total number of minutes two individuals talk with each other on the phone; on the power grid the weight is the amount of current flowing through a transmission line.\n", "\n", "We can build a network with `networkx` where all nodes are connected as follows. " ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['A', 'B'], ['A', 'C'], ['A', 'D'], ['B', 'C'], ['B', 'D'], ['C', 'D']]" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nodes = ['A','B','C','D']\n", "combs = [list((nodes[i],nodes[j])) for i in range(len(nodes)) for j in range(i+1, len(nodes))]\n", "combs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We choose for a simplicity random weights:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "weight is: 0.1\n", "weight AB is: 0.25\n", "weight AC is: 1.0\n", "weight AD is: 0.25\n", "weight BC is: 0.75\n", "weight BD is: 1.0\n", "weight CD is: 0.5\n" ] }, { "data": { "image/png": "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MA3oDNQB+iul6thZ9RutdSPra5Z12/LAGKAZEAqMUUrl/3GIhanOnz/P6NGjqVWrFikpKezatYv333+fChUqmF1avmREH0O6Zs2aUaxYMWJjYw3Zn7DPiBZDKJCktT6gtb4OLAS6ObntQ8AqrfU5rfXfwCogzICahLjF5cuXefvttwkKCuLEiRNs3ryZTz75hCpVqphdWr5mZIshvRNahuN2LSOC4R7gaIb3x6zLsuqllNqulPpOKZU+kauz2wpx265du8aUKVMIDAxk586drFu3jtmzZxMQEGB2aQWCkcEAMGDAAFasWMFff/1l2D5FZkYEg73HPrNeAPwRCNBaNwCigPTeI2e2tayoVLhSapNSatOZM2duu1hRcFy/fp3PPvuMoKAgYmNjWblyJV9//TU1atQwu7QCIzU1ldTUVAoXNm70nXLlytG1a1e++OILw/YpMjMiGI4BfhneVwWOZ1xBa31Wa51ifTsTCHZ22wz7mKG1DtFah1SsWNGAskV+lZqayrx586hVqxbff/89S5YsITIykgYNGphdWoGT3lowetiQ9NndpBPaNYwIhnggSClVTSlVFOgHLM24glIq40XcrsBu68+/AA8qpcpZO50ftC4TItfS0tL49ttvqVevHrNmzSIiIoJffvmF0NBQs0srsIzseM6oZcuWKKVYu3at4fsWBoyuqrW+qZR6BssJ3QeYo7XepZQaB2zSWi8FnlNKdQVuAueAwdZtzymlxmMJF4BxWutzea1JFCxaa5YtW8abb75J4cKFmTp1Kg8++KAMbucBjO5fSJexE7p169aG77+gU97YFAsJCdGbNm0yuwzhAaKjoxk9ejSXL19m/PjxdOvWTQLBgxw6dIi2bdty+PBhw/d99uxZ7rvvPg4cOED58uUN339+pJTarLUOcbSePPksvNLvv/9Ohw4dGDFiBM899xxbt26le/fuEgoexlUtBoA777yTRx55hAULFrhk/wWZBIPwKn/88QePPPII/fv354knniAhIYH+/fvLiKceypXBAP/M7uaNVz48mQSD8AoJCQn07t2bLl260LlzZ/bt28fQoUMNvQ1SGM9Vnc/p2rRpw40bN1i/fr3LjlEQSTAIj7Z//34GDhxIu3btaNasGUlJSTzzzDMu/RYqjGPUAHrZUUoxfPhwGY7bYBIMwiMdPXqUp556imbNmhEYGEhS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4QD+/v7Bhw8fzvlvlg+lpKSwfv1622WnXbt20aJFC9utsY0aNfL6zjEhcuPYsWM0a9aM2bNnExYW5tJj/f777wwZMoQ9e/Z47XNKHnUpSSlVGksovKu1tvukiFKqHTBSa+1wTr38fCkpN86fP09sbKwtKM6cOUOHDh1sl56qV69udolCuNy6devo2bMna9euJSgoyGXH0VpTr149Pv30U9q2beuy47iSuy4lLQUGWX8eBPxgp5CiwPfA/KyhYA0TlCV+uwM781hPgVK2bFm6devG//73P3bv3s3WrVt55JFH+O2332jZsiXVq1cnPDycRYsW8ddff5ldrhAu0bJlS8aNG0f37t1d+pyQUso2flJ+l9cWw53AIsAfOAL00VqfU0qFAP/WWg9TSg3AMknargybDtZab1VKrcYyRJHCcrvqv7XWlx0dV1oMjmmtSUhIIDo6mqioKGJjY6levbqtNdG6dWtK5PZhPyE82FNPPcXp06dZvHixyy6pnjt3jurVq7N//37uvPNOlxzDlWRIDJHJjRs3iI+Pt112+uOPP2jatKktKIKDgylcuGDM2yTyp5SUFDp06MBDDz3EW2+95bLjDBw4kODgYF544QWXHcNVJBhEji5fvsyaNWtsLYojR47Qtm1bW1DUrFnTazvYRMF14sQJQkNDmTZtGl27dnXJMdasWcO///1vdu3a5XX/RiQYRK6cOnWK1atXExUVxapVq0hLS8v0oF1+msVK5G8bNmygS5curFmzhtq1axu+f601tWvXZvbs2bRs2dLw/buSBIO4bVprkpKSbJedYmJiqFKlii0o2rZtS+nSpc0uU4hszZ07l4kTJ7JhwwbKli3reINc+vDDD9m2bRvz5s0zfN+uJMEgDJOamsqWLVtsQbFhwwYaNGhgC4pmzZpRtGhRs8sUIpNnn32WAwcOsHTpUnx8fAzd919//UVgYCAHDx70qtEIJBiEy1y7do1169bZgmLfvn20bt3a9qBd/fr1ve7aq8h/bty4YbsDb8KECYbvv3///rRo0YJnn33W8H27igSDcJuzZ88SExNj68i+ePGiLSQ6deqEv7+/2SWKAur06dM0bdqUDz74gN69exu675iYGJ5//nm2bdvmNV+EJBiEaQ4dOmQLiejoaMqWLWsLifbt23tV01t4v82bNxMWFsbq1aupX7++YfvVWlOjRg2+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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import random\n", "g = nx.Graph()\n", "\n", "w = 0.1\n", "\n", "print('weight is:',w)\n", " \n", "for comb in combs:\n", " g.add_edge(comb[0],comb[1],weight=w)\n", " w = 0.25*random.randint(1,4)\n", " print('weight {} is:'.format(comb[0]+comb[1]),w)\n", " \n", "nx.draw_networkx(g)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dropping one link:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "weight is: 0.1\n", "weight AB is: 1.0\n", "weight AC is: 1.0\n", "weight AD is: 1.0\n" ] }, { "data": { "image/png": "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6xURybhOnTpx7733ct1113HgwIGw46SVLuMoItIMd2fs2LGMHj2aG2+8Mew4LdJlHEVE0sDMuO+++5gzZw5///vfw46TNip/EZEWDBgwgKuvvpoZM+J9jrVtUvmLiCRh1qxZrF69mvXr14cdJS1U/iIiSejatSt33XUX06dP57PPPgs7TspU/iIiSZowYQKdOnXi0UcfDTtKylT+IiJJMjPmz5/PrFmz2LNnT9hxUqLyFxFphSFDhlBeXs4tt9wSdpSUqPxFRFrp9ttv54knnmDjxo1hRzlqKn8RkVY67rjjuPXWW5k+fXqbveiLyl9E5Ch85zvf4YMPPmDZsmVhRzkqKn8RkaNQWFjI/Pnzuemmm/joo4/CjtNqKn8RkaM0YsQIRowYwZw5c8KO0moqfxGRFMydO5cHH3yQN99sWxcoVPmLiKSgX79+VFRUcMMNN4QdpVVU/iIiKbrhhhv485//zMqVK8OOkjSVv4hIijp27Mh9993H9ddfz/79+8OOkxSVv4hIGowdO5YBAwbw05/+NOwoSVH5i4ikyb333svcuXN59913w47SIpW/iEianHLKKUyZMoXvf//7YUdpkcpfRCSNbr75ZtauXcu6devCjtIslb+ISBodc8wx3H333ZG/6IvKX0Qkza644gqKi4t5+OGHw46SkMpfRCTNzIz777+fW265hffeey/sOHGp/EVEMqC0tJRx48Yxa9assKPEpfIXEcmQ2267jaeffppXX3017ChHUPmLiGRI9+7dmT17diQv+qLyFxHJoGuuuYa6ujqWLl0adpTDqPxFRDKosLCQBx54gB/84Afs27cv7DiHtAs7gIhIrjv77LM5//zzueOOO7jzzjuhthYWLoQNG2DvXiguhtJSuPpq6NkzK5ksavNQDcrKyrympibsGCIiabFz504mDhzIM8OG0bXh078ff/z5gKIicIcxY2DmTBg27KjWY2Yvu3tZS+M07SMikgV9ly9nRV0dXZ57Lij9xsUPUF8fLFu+HEaOhAULMppH0z4iIpm2YAFUVND+k09aHusOdXVQURHcnzo1I5FS2vI3s+5mttrM3oh979bM2GPN7B0zeyCVdYqItCnV1UGR19UdtngpUAYcA/QFxgCHnQqu4RdAhqa/U532mQGscfdTgTWx+4nMBtamuD4RkbZlzpxgSqeRnwDfBW4GdgHbgWnA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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = nx.Graph()\n", "\n", "w = 0.1\n", "\n", "print('weight is:',w)\n", " \n", "for comb in combs[0:3]:\n", " g.add_edge(comb[0],comb[1],weight=w)\n", " w = 0.25*random.randint(1,4)\n", " print('weight {} is:'.format(comb[0]+comb[1]),w)\n", " \n", "nx.draw_networkx(g)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute the shortest paths and their lengths we use:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['B', 'A', 'D']" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": [ "2" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx.shortest_path(g,'B','D')\n", "nx.shortest_path_length(g,'B','D')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A complete graph is an undirected graph where every pair of vertices is connected by a unique edge." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "image/png": "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SBZt898N1FdKeQMJwADg+XuWWYvpDoo/Af2AKGtv78/Nvad7//3vf+U/qoPZtm0bTzzxxF9GEymlcHNzw83NLd/7+N6Z4TXnDuHEiRN/GfJ68eJFXF1dC+ysrlixoiX+XFGAMmXKsGDBAsaNG0e7du344Ycf8u2PsibFrlzZbfijgI2YhnrO11ofUUpNBPZordcC84CFSqmTwCVMOwibdOd079lnn+WZZ55h+fLl8h/RgURGRj7w+P6KFSvSoEGDfO8adWeG13uvpj58+PBfdhrlypUrsLNaZni1DKUUkydPxtPTk3bt2vH999/nO80cLWukAAAeKUlEQVS7tZArfB/QndO93377jfXr11vF6Z4oeY8//jhz5swx9K5PWmsuXbqU77Qb8fHx3LhxAy8vr3zPImSGV/NasWIFo0aNYvny5XTs2NGQDDK9gwVorRk3bhyrVq1i48aNNnO6Jx5McnIyDRo04OLFizbR3Hfjxg0SExPzvSYiOTn57gyv+c3PVLlyZaP/HJsRHR1N//79mTFjBs89l+/lTCVCpnewgDune15eXvj5+fH999/n2+YrbNuWLVto3769TRR+gAoVKlCvXj3q1auX5zKZmZl3Z3jNuXM4evToX3YUTk5OBTYzOfIMrzkFBASwefNmgoODSUpK4o033jA6Uq5s41Ns5V577TU8PDzo2rUry5Ytkzlf7JQ9zudTunTpu0U8L1pr/vzzz/vOHPbv38/69evvPn716lU8PT3zbWayxxlec+Pj40NsbCzdunUjMTGRyZMn379jTE42zTp88CCkpsLDD4OPDwwbVqRbyj4oafYxozune9OnT2fAAJvt0xZ5qFevHt999x3NmjUzOopVujPDa373iLgzw2tBZxG2NMNrflJSUujZsyd169Zl3rx5pv6V3btN9xvZsMG0UHr6/15w534jQUGm+420bl3kbUqbv0EOHjxIcHAwY8eO5c033zQ6jjCT33//nTZt2pCUlGQXRckot2/fJjk5ucDOaiDfPghrmuG1IDdu3GDAgAHcvHmTNYGBlH/vvULfaZDw8P/dobCQpPgb6PfffycwMJCePXvy4YcfSjuoHfjyyy/ZuHEjy5YtMzqK3cs5w2t+NxP6888/787wmteOwsvLyypuw5iZmcmyDh3ou3MnzllZhX9hhQpF3gFI8TfYndO9OnXqMH/+fBlO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lFKeQHIe60jM/h6nlIoGWgD3FX+t9RxgDoCvr68u1F8gHpiTkxOfffYZH3zwAW3btuWHH35wuEnNZIhnybh69Spz585l6tSpeHt78/777xMUFCRX4VqR4v5LrAWGZP88BFhz7wJKKRelVLnsn10BP+DXYm5XmIlSivfee493332XDh068PPPPxsdyaKks9e8kpKSGDduHN7e3vz00098++23REdH0717dyn8Vqa4/xofAl2UUieALtm/o5TyVUrNzV6mEbBHKXUA2AJ8qLWW4m9lXnzxRb744gt69OhBRESE0XEsIjU1lSNHjsgUAWZw7Ngxhg8fTuPGjbly5Qo///wzK1asoHXr1kZHE3ko1jh/rXUKcN9hk9Z6DzA8++cdgHTj24AePXqwbt06nnnmGSZPnsywYcOMjlSitm7dypNPPkm5cuWMjmKTtNbExsYSFhbGzp07efXVVzl+/LhcL2Ej5NI58RdPPvkkW7duvXtjmHfeecdux1xLk8+DuX37NmvWrCEsLIwLFy4wZswYli5dSoUKFYyOJopAir+4z2OPPUZsbCzBwcEkJCQwffp0nJycjI5ldpGRkcybN8/oGDYjLS2Nr776iilTplC1alVCQ0N55pln7PKz4QikB0bkysvLi61bt3L06FH69+9Penq60ZHM6vz588THx9OqVSujo1i9lJQU/vOf/+Dt7U1ERATz5s3jp59+om/fvlL4bZgUf5Gnhx9+mA0bNlCmTBm6devGn3/+aXQks9myZQsdOnSQ4pWP06dP89prr1G/fn3OnDnDli1bWLt2Lf7+/nbbFOhIpPiLfJUrV44lS5bQsmVL/P39iY+PNzqSWcj4/rzt2bOH5557jtatW1OpUiWOHDnCvHnzaNSokdHRhBlJ8RcFKlWqFFOmTGHIkCH4+fnx66+2P1JXOnv/SmtNREQEHTt2pE+fPjz55JOcPn2ayZMn4+npaXQ8UQKkw1cUilKKsWPH3r038KpVq/Dz8zM61gM5c+YM169fp3HjxkZHMdytW7dYunQp4eHhODk5ERoaSv/+/SlTpozR0UQJk+IvimTw4MG4u7sTEhLCnDlzeOYZ25un786N2h253To1NZU5c+Ywbdo0GjVqxJQpU+jcubNDvyeORoq/KLKuXbuyYcMGevbsSVJSEiNGjDA6UpE4cnt/fHw806ZNY/78+QQGBrJu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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "k_4 = nx.complete_graph(4)\n", "nx.draw_networkx(k_4)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "image/png": "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btx4b8GfysiDSgl/Kxm5kdIUKVKEDz74gI8++ohu3brx3nvvkZKSYmhNQjiDX3/9lb59+9KzZ0+eeeYZwsLCbDJKn4S/AzBD+Kd58sknCQ0NZePGjXTo0IHY2FijSxKiQPrrr794+eWXCQgIoGbNmkRGRjJkyBCbDZEp4e8AzBT+APfffz87duzA398fPz8/tm/fbnRJQhQYd+7c4cMPP8TX15fLly9z7NgxJk+ebPM77yX8TS45OZkLFy5QsWJFo0v5F1dXV9555x0WL17MU089xZtvvklycrLRZQnhsLTWrF+/ntq1a7Nx40a2bt3KokWLqFChgs2XlTYaWhkbd9tgLQl/K5w/f55SpUqZdvStJ554gvDwcHbv3k3r1q2JiYkxuiQhHE5YWBitWrVi0qRJzJ49my1btlC3bt18W150dDSVKlUy7A5+CX8rmK3JJzPly5fnhx9+4PHHHycgIIDvvvvO6JKEcAhRUVEMGjSITp060bdvXw4fPkz79u3zPZSNzhUJfysYvZGsVahQIV577TVWrVrFiBEjePnll7lz547RZQlhStevX+e1117j0Ucf5f777ycyMpJnn30WV1f73P5kdK5I+FvB6I2UW82bNyciIoITJ07QvHlzfstiGDkhnFFSUhILFy6kWrVq/P7770RERPDOO+/YfED6nBidKxL+VjB6I92L0qVLs2HDBnr27EnDhg359ttvjS5JCMN9//33PProoyxfvpyNGzeybNkyHnjgAUNqMTpXJPytYPRGulcuLi4EBQWxYcMGXnzxRZ577jlu3rxpdFlC2N3Ro0dp27YtY8eO5e2332bHjh0E5HPfOTmJiorK1y7icyLhbwVHDf80DRs2JCIigvPnz9O4cWN+/vlno0sSwi7Onz/PM888Q+vWrenYsSPHjh2ja9euphgjw+hckfC3gtEbyRaKFy/OmjVrGD58OI0bN2bFihVGlyREvomPj2fq1KnUrl2b4sWLExkZydixY011ubbRuSLhn4Pbt29z6dKlfLnJw96UUowePZqtW7cyZcoUhg8fTkJuRhUSwuRSUlJYunQpvr6+HD9+nJCQEGbMmEGJEiWMLu1frl27RlJSkqF1SfjnICYmhnLlytmsLw8zePTRRwkNDeXmzZs0aNCA48ePG12SEHkWHByMv78/CxYsYM2aNaxatYoqVaoYXVam0noJ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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "l_4 = nx.complete_graph(4)\n", "nx.draw_networkx(l_4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Isomorphic graphs can be twisted (i.e. without cutting or gluing) to look exactly like each other." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nx.is_isomorphic(k_4,l_4)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }