{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 6Ω of Separation\n", "\n", "This is the function on the server for downloading the required userdata:\n", "```\n", "@ApiMethod(name = \"kevinBacon\")\n", "public Notice kevinBacon() {\n", " ArrayList profiles = getAll(PROFILE); // Get all users from database\n", " String result = getTimestamp() + \":\";\t // Initialize result string with current date\n", " for (Profile p : profiles) // Append user's id and ids of all contacts (=following)\n", " result += p.getId().toString() + \".\" + p.getFollowing() + \";\";\n", " return new Notice(result + \";\"); // Notice is just a wrapper class for String\n", "}\n", "```\n", "The returned String looks like this:\n", "```\n", "timestamp:uid1.[uid11, uid12, uid13, ...];uid2.[uid21, uid22, uid23, ...];...;;\n", "```\n", "With `uidxy` being the user-id of the `y`-th person user `x` follows (contacts are also included in following, used synonymously from here on).\n", "\n", "These strings are then concatenated in a file called `\"data\"` which then looks like this:\n", "```\n", "timestamp1:...;;timestamp2:...;;...\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import random\n", "from pprint import pprint\n", "import networkx as nx\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from math import inf, nan\n", "import json\n", "import pickle" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First things first: We need to read the data into our python program." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true, "scrolled": true }, "outputs": [], "source": [ "data = open(\"data\").read()\n", "entries = [x for x in data.split(\";;\") if x != \"\"] # Divide data by date and remove empty entries\n", "entry = entries[-1] # The last entry, will be used here for demonstration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the entry is still just a string, it needs to be split up into an array containing all its data. To make some stuff a bit more digestable, we will also randomly pick 50 users to be used later for demonstrations." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true, "scrolled": true }, "outputs": [], "source": [ "def split_entry(entry):\n", " dt = entry.split(\":\")[0] # The entry's timestamp\n", " users = {} # Users' contacts {uid1: [uid11, uid12, uid13, ...], uid2: [uid21, uid22, ...], ...}\n", " \n", " # Split entry into single users and save their ids and their contacts' ids into `users`.\n", " for user in entry.split(\":\")[1].split(\";\"):\n", " users[user.split(\".\")[0]] = [x for x in user.split(\".\")[1][1:-1].split(\", \") if x != \"\"]\n", " \n", " return dt, users" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'5747976207073280': []}\n" ] } ], "source": [ "dt, users = split_entry(entry)\n", "uids = list(users.keys())\n", "users_test = random.sample([u for u in users if users[u]], 10) # Pick 10 random connected users for demonstration\n", "users_test_idx = [uids.index(u) for u in users_test] # Also save indices of `users_test`\n", "pprint(dict(random.sample(users.items(), 1))) # Print 1 random sample from `users`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To better understand the data, it is helpful to visualize the network. This is done here using a directed graph with the arrows pointing from a user to its contacts." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Network of ePotato users on 20171123153627:\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAJCCAYAAABTfy+dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl4jFf/x/H3TIjEEqnad7EljWqpfV+KUkVRHtQS8qN2\nHiFtLbWUWqIoWrXU0qpSpShVStUarSq1hKhEg9hri+yZ+/dHKg+tEjLJPUk+r+tyuWTuOfdnbJnv\nnHO+x2IYBiIiIiIiIuKYrGYHEBERERERkX+nok1ERERERMSBqWgTERERERFxYCraREREREREHJiK\nNhEREREREQemok1ERERERMSBqWgTERERERFxYCraREREREREHJiKNhEREREREQeWxawb582b1yhZ\nsqRZtxcRERERETHVL7/8ctUwjHyPus60oq1kyZIcOHDArNuLiIiIiIiYymKx/JGc67Q8UkRERERE\nxIGpaBMREREREXFgKtpEREREREQcmIo2ERERERERB6aiTURERERExIGpaBMREREREXFgKtpERERE\nREQcmIo2ERERERERB6aiTURERERExIGpaBMREREREXFgKtpEREREREQcmIo2ERERERERB6aiTURE\nRERExIGpaBMREREREXFgKtpEREREREQcmIo2ERERERERB6aiTURERERExIGpaBMREREREXFgKtpE\nREREREQcmIo2ERERERERB6aiTURERERExIGpaBMREREREXFgKtpEREREREQcmIo2ERERERERB6ai\nTURERERExIGpaBMREREREXFgKtpEREREREQcmIo2ERERERERB6aiTURERERExIGpaBMREREREXFg\nKtpEREREREQcmIo2ERERERERB6aiTURERERExIE9smizWCyfWCyWyxaL5ei/PG6xWCwfWCyW3y0W\ny28Wi6Wy/WOKiIiIiIhkTsmZaVsCvPSQx5sDZf/60Rv4KOWxREREREREBJJRtBmGsRP48yGXtAaW\nGYkCAXeLxVLIXgFFREREREQyM3vsaSsCnL3n1+f++to/WCyW3haL5YDFYjlw5coVO9xaREREREQk\nY7NH0WZ5wNeMB11oGMZ8wzCqGIZRJV++fHa4tYiIiIiISMaWxQ5jnAOK3fProkC4HcYVEZFM7tw5\nCAsDJycoUwaeftrsRCIiImnPHjNt64Fuf3WRrAHcNAzjgh3GFRGRTOqbb6BWLShbFlq0gGbNoGhR\n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\nWTPGjRtndgxJA3fPatNMW8rcuXOHJUuWANCnT59kPcfDw4N33nmHW7dusWzZMsLCwmjdujW1atXC\nYrHYPWOePHkIDAykQYMGXL58mS5dutj9HiIi6Ylm2kQk3XN1deXq1atmx5BUdnemTUVbynzxxRdE\nRkZStWpVnn322cd6rpubGwMGDOC9997j8uXLDB8+nM8//5y4uDi753RxcWHv3r0sXryY6dOn2318\nEZH0REWbiKR7nTp1YsaMGWbHkFR2d6ZNyyNTZs6cOcD/GpA8CScnJ1599VUCAgIoX748Y8aMYfr0\n6Vy7ds1eMYHEowm+//579u3bx4gRI+w6tohIeqKiTUTSvR49erBjxw6zY0gq00xbyv36668cOnSI\nHDly0KFDB7uM+cILL/Dee+/RqVMnPv74Y0aNGsWJEyfsMvZdq1ev5vbt2/To0cOu44qIpBcq2kQk\n3cuSJQtWq5XY2Fizo0gq0kxbyt1tQNKrVy9cXV3tOnbhwoV5++23GTlyJLt372b48OFs2bIFwzDs\nMv5HH31E8eLFadmyJTabzS5jioikFyraRCRDePHFF1m4cKHZMSQVaaYtZW7fvs3SpUuB5DcgeRKu\nrq74+voydepUAEaMGMHChQv5+eefWbVqFfHx8U889vjx42nRogUNGjRI0TgiIumNijYRyRAGDx7M\nl19+aXYMSUWaaUuZFStWEB0dTY0aNXjmmWdS/X4Wi4WmTZsybdo0ateuTY8ePejYsSMlSpRg2rRp\n3Lhx44nG7devH4MHD6ZGjRpERETYObWIiGNS0SYiGYK7uzsxMTFaNpWB3Z1pu379uslJ0id7NCB5\nUl5eXgwePJjSpUsTHh7OiBEjKFy4MAMGDODUqVOPPV67du2YOXMmtWrV4uLFi6mQWETEsahoE5EM\n47nnnuObb74xO4akkrszbU86Q5OZHThwgCNHjpArVy7at29vSobevXsTHBzMN998Q6NGjYiKimLu\n3LmUL1+eli1bsn379sfa/1anTh1WrFjBiy++yMmTJ1MxuYiI+VS0iUiG4efnl9RoQTKeuzNtWh75\n+O7+u/D19cXFxcW0HFarlZdffplt27bx22+/0bNnT7JmzcrGjRtp3LgxFStWZPHixURHRydrPG9v\nbzZv3sxrr73G7t27CQ0NTeVXICJiDou9ujo9ripVqhgHDhww5d4iknHVqlWLvXv3mh1DUkFUVBTZ\n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\nkpu6+6wkFyf50mpTMogbk7z9MM+/I8mu5e0DSb68gkxHFKVtXm9KcqC77+vuvyf5TpLdh6zZneTr\ny/vfT3JeVdUKMzKGdWelu3/W3U8uH96S5KQVZ2R+U95TkuTTWZT6p1YZjmFMmZP3J7m2ux9Lku5+\neMUZGcOUWekkxy/vn5DkwRXmYxDd/Yskjx5mye4k3+iFW5K8rKpesZp0RwalbV6vTPKngx4/sPy3\n51zT3c8keTzJiStJx0imzMrBLk3y4w1NxIjWnZOqOivJyd198yqDMZQp7yevS/K6qvpVVd1SVYf7\nDTpHrimzclWS91TVA0l+lOSDq4nGJvPffo/hENvnDrDFPdcRs0Mv5zllDUe+yXNQVe9Jspbk3A1N\nxIgOOydVtS2LbdZ7VhWIIU15P9mexTamt2Rx1P6XVXVGd/9tg7Mxlimz8u4kN3b356vqnCTfXM7K\nvzY+HpuI77P/J0fa5vVAkpMPenxSnr2t4D9rqmp7FlsPDnf4mSPTlFlJVb0tySeSXNjdT68oG+NY\nb05emuSMJD+vqj8kOTvJXhcj2XKmfvb8sLv/0d2/T3JPFiWOrWXKrFya5KYk6e5fJ9mRZOdK0rGZ\nTPoew/NT2uZ1W5JdVfWaqjo6ixN49x6yZm+SS5b3L0ry0/bH9baidWdlue3tq1kUNuefbE2HnZPu\nfry7d3b3Kd19ShbnPl7Y3fvnictMpnz2/CDJW5OkqnZmsV3yvpWmZARTZuX+JOclSVWdlkVpe2Sl\nKdkM9iZ57/Iqkmcneby7/zx3qM3E9sgZdfczVXV5kn1JjkpyQ3ffVVVXJ9nf3XuTXJ/FVoMDWRxh\nu3i+xMxl4qx8LslLknxvea2a+7v7wtlCs3IT54QtbuKc7EtyflXdneSfST7W3X+dLzVzmDgrH03y\ntaq6Iovtbnv8cnnrqapvZ7Gdeufy/MZPJXlRknT3V7I43/GdSQ4keTLJ++ZJunmV/1cAAADjsj0S\nAABgYEobAADAwJQ2AACAgSltAAAAA1PaAAAABqa0AQAADExpAwAAGJjSBgAAMLB/AxqVrNebrIbk\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def visualize_network(network, special=set(), labels=False, small=False):\n", " G = nx.DiGraph() # Directed Graph -> the thicker parts of lines are \"arrow heads\", {a: [b]} => (a -> b)\n", " \n", " for n in network.items():\n", " for c in n[1]:\n", " G.add_edge(n[0], c) # Because only edges are added to `G`, isolated nodes (=users) won't be shown\n", " \n", " node_colors = ['r' if x in special else 'b' for x in G.nodes()]\n", " \n", " plt.rc('figure', figsize=((6, 4) if small else (15, 10)))\n", " nx.draw_networkx(G, with_labels=labels, node_color=node_colors, node_size=150, width=0.5)\n", " plt.show()\n", "\n", "print(f\"Network of ePotato users on {dt}:\")\n", "visualize_network(users, set(users_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's it for data preprocessing, now for the fun part.\n", "\n", "## Separation\n", "\n", "The matix whose elements $s_{X\\rightarrow Y}$ are the degrees of separation from user $X$ to user $Y$ is called the separation matrix. It is organized in the following fashion:\n", "\n", "$$\n", "S = \n", "\\begin{bmatrix}\n", "s_{A\\rightarrow A} & s_{A\\rightarrow B} & s_{A\\rightarrow C} & \\dots & s_{A\\rightarrow N} \\\\\n", "s_{B\\rightarrow A} & s_{B\\rightarrow B} & s_{B\\rightarrow C} & \\dots & s_{B\\rightarrow N} \\\\\n", "s_{C\\rightarrow A} & s_{C\\rightarrow B} & s_{C\\rightarrow C} & \\dots & s_{C\\rightarrow N} \\\\\n", "\\vdots & \\vdots & \\vdots & \\ddots & \\vdots \\\\\n", "s_{N\\rightarrow A} & s_{N\\rightarrow B} & s_{N\\rightarrow C} & \\dots & s_{N\\rightarrow N}\n", "\\end{bmatrix}\n", "$$\n", "\n", "Note that this matrix will not be symmetrical when considering all contacts of a user (directed separation), because if $X$ follows $Y$, the separation is 1°, but if $Y$ does not follow $X$, the separation $s_{Y\\rightarrow X}$ is not 1°!\n", "\n", "Because of this, it also follows that the separation matrix for the must be symmetrical when only considering mutual friends ('$X$ follows $Y$' $\\Leftrightarrow$ '$Y$ follows $X$') because then $s_{X\\rightarrow Y} = s_{Y\\rightarrow X} = s_{X\\leftrightarrow Y}$ (undirected separation).\n", "\n", "The diagonal elements $s_{X\\leftrightarrow X}$ of both matrices are equal to zero.\n", "\n", "### Directed Separation\n", "\n", "The separation matrix `S` will first be initialized to contain `inf` as every element, symbolizing an infinite separation.\n", "\n", "For actually calculating the separations, we need to loop over all users (=nodes) of the network and take a look at their contacts (=`network[node]`) to build up that user's row in the matrix by setting up an array called `levels` with the first level being equal to the id of the current user (Separation = 0°)\n", "\n", "Then for the next levels:\n", "- Level 1 will contain the ids in `network[node]` (the contacts / outgoing connections) of the user, Separation = 1°\n", "- Level 2 will contain the contacts of the users in `level[1]`, Separation = 2°\n", "- Level 3 will contain the contacts of the users in `level[2]`, Separation = 3°\n", "- ...\n", "\n", "This will go on until no new users are in the last level's users' contacts. Finally, the current user's row in the separation matrix will be filled by assigning the number of the level the column's user is in to that column. This continues for every user until the the matrix is filled." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true, "scrolled": false }, "outputs": [], "source": [ "def separation(network):\n", " S = np.full((len(network), len(network)), inf) # Initialize S to infinite separations\n", " nodes = list(network.keys())\n", " \n", " # Loop over all nodes, each time building up that node's row in the matrix.\n", " for node in network:\n", " levels = [[node]] # Node X in levels[n] => Separation `node` -> user X: n°\n", " known = [node] # Every node only has to be sorted into levels once (the lowest possible level)\n", " \n", " # Fill up `levels` until there are no new nodes to sort\n", " for level in levels:\n", " for node_ in level:\n", " for node__ in network[node_]:\n", " if node__ not in known:\n", " if level is levels[-1]:\n", " levels.append([])\n", " known.append(node__)\n", " levels[-1].append(node__)\n", " \n", " # Write out level-numbers as columns in node's row in S\n", " for i in range(len(levels)):\n", " for node_ in levels[i]:\n", " S[nodes.index(node), nodes.index(node_)] = i\n", " \n", " return S" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Directed Separation Matrix (Extract):\n", "\n", "[[ 0. 2. 2. 2. 2. 2. 2. inf inf 2.]\n", " [ 1. 0. 2. 2. 2. 2. 2. inf inf 2.]\n", " [ 2. 2. 0. 2. 1. 2. 1. inf inf 2.]\n", " [ 3. 3. 2. 0. 1. 3. 2. inf inf 3.]\n", " [ 2. 2. 1. 1. 0. 2. 1. inf inf 2.]\n", " [ 3. 3. 3. 3. 3. 0. 3. inf inf 3.]\n", " [ 2. 2. 1. 2. 1. 2. 0. inf inf 2.]\n", " [ 2. 2. 2. 2. 2. 2. 2. 0. inf 2.]\n", " [ 1. 2. 2. 2. 2. 2. 2. inf 0. 2.]\n", " [ 2. 2. 2. 2. 2. 2. 2. inf inf 0.]]\n", "\n", "\n", "Representation:\n" ] }, { "data": { "image/png": "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\nAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def visualize_matrix(mat):\n", " plt.rc('figure', figsize=(15.0, 10.0))\n", " plt.imshow(mat, cmap=\"jet\")\n", " plt.colorbar()\n", " plt.show()\n", "\n", "S = separation(users)\n", "S_ = S[users_test_idx, :][:, users_test_idx]\n", "print(f\"Directed Separation Matrix (Extract):\\n\\n{S_}\\n\\n\\nRepresentation:\")\n", "visualize_matrix(S_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Undirected Separation\n", "\n", "To find the undirected seperation between two users, we must first remove all direction from the network. This is done using either one of two functions: `misdirect` or `loosen`. While `misdirect` removes all directed edges from the network, so that only \"mutual friends\" remain, `loosen` converts every edge into an undirected edge, so that the whole network is more closely connected." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def misdirect(network):\n", " # Remove all directed edges from network\n", " net = {k: [c for c in network[k] if c in network and k in network[c]] for k in network}\n", " return net" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Undirected (Misdirected) Separation Matrix (Extract):\n", "\n", "[[ 0. 2. 2. 3. 2. 3. 2. inf inf 2.]\n", " [ 2. 0. 2. 3. 2. 3. 2. inf inf 2.]\n", " [ 2. 2. 0. 2. 1. 3. 1. inf inf 2.]\n", " [ 3. 3. 2. 0. 1. 4. 2. inf inf 3.]\n", " [ 2. 2. 1. 1. 0. 3. 1. inf inf 2.]\n", " [ 3. 3. 3. 4. 3. 0. 3. inf inf 3.]\n", " [ 2. 2. 1. 2. 1. 3. 0. inf inf 2.]\n", " [ inf inf inf inf inf inf inf 0. inf inf]\n", " [ inf inf inf inf inf inf inf inf 0. inf]\n", " [ 2. 2. 2. 3. 2. 3. 2. inf inf 0.]]\n", "\n", "\n", "Representation:\n" ] }, { "data": { "image/png": "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\nakzvRbf9AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "S_tight = separation(misdirect(users))\n", "S_ = S_tight[users_test_idx, :][:, users_test_idx]\n", "print(f\"Undirected (Misdirected) Separation Matrix (Extract):\\n\\n{S_}\\n\\n\\nRepresentation:\")\n", "visualize_matrix(S_)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def loosen(network):\n", " net = network.copy()\n", " for n, cs in list(net.items()):\n", " for c in cs:\n", " net[c] = list(set(net.get(c, [])) | {n}) # Add node to all connected nodes\n", " return net" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Undirected (Loose) Separation Matrix (Extract):\n", "\n", "[[ 0. 1. 2. 2. 2. 2. 2. 2. 1. 2.]\n", " [ 1. 0. 2. 2. 2. 2. 2. 2. 2. 2.]\n", " [ 2. 2. 0. 2. 1. 2. 1. 2. 2. 2.]\n", " [ 2. 2. 2. 0. 1. 2. 2. 2. 2. 2.]\n", " [ 2. 2. 1. 1. 0. 2. 1. 2. 2. 2.]\n", " [ 2. 2. 2. 2. 2. 0. 2. 2. 2. 2.]\n", " [ 2. 2. 1. 2. 1. 2. 0. 2. 2. 2.]\n", " [ 2. 2. 2. 2. 2. 2. 2. 0. 2. 2.]\n", " [ 1. 2. 2. 2. 2. 2. 2. 2. 0. 2.]\n", " [ 2. 2. 2. 2. 2. 2. 2. 2. 2. 0.]]\n", "\n", "\n", "Representation:\n" ] }, { "data": { "image/png": "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\nMZ0AADCMpBMAYDLGdAIAwDCSTgCAyRjTCQAAw0g6AQAmY0wnAAAMo+kEAGA4t9cBACZjIhEAAAwj\n6QQAmIyJRAAAMIykEwBgUsZ0AgDAEJJOAIDJGNMJAADDSDoBACYj6QQAgGEknQAAk/FEIgAAGEbS\nCQAwGWM6AQBgGEknAMBkjOkEAIBhNJ0AAAzn9joAwGRMJAIAgGEknQAAkzGRCAAAhpF0AgBMxphO\nAAAYRtIJADAZYzoBAGAYTScAwGROj+mc4rW9qrqiqt5bVceq6mUbHP+sqvrtxfG3VdXjlo5ds9j/\n3qr6pu2upekEAFhBVXUgySuTfHOSL0/ynKr68nWnvTDJX3b3lyT5mSQ/sXjvlye5KslXJLkiyS8u\nPm9Tmk4AgMmcHtM5xWtblyY51t13dfcDSW5IcuW6c65M8uuLn29M8rSqqsX+G7r777r7fUmOLT5v\nU5pOAIDVdH6Su5e2jy/2bXhOd59M8qEkn7vD936SIbPX70nuuzb5PyM+ewPnJblvomvxmfN97T2+\ns73Hd7b3TPydXTvdpabzRXMXsDP33Jz8yHkTXeyhVXV0aftwdx9e2q4N3tPrtjc7Zyfv/SRDms7u\n/rwRn7uRqjra3Qenuh6fGd/X3uM723t8Z3uP72x1dPcVc9ew5HiSC5e2L0hyYpNzjlfVWUkemeT+\nHb73k7i9DgCwmm5NcnFVXVRVD8naxKAj6845kuT5i5+/Lckbu7sX+69azG6/KMnFSf7XVhezODwA\nwArq7pNV9eIkNyc5kOT67r69ql6R5Gh3H0nyq0n+XVUdy1rCedXivbdX1b9PckfWZi29qLtPbXW9\nWmtW966qunrd+AR2Md/X3uM723t8Z3uP74xVsOebTgAAdj9jOgEAGG7PNp3bPbaJ3aWqLqyqN1XV\nnVV1e1W9dO6a2JmqOlBVf1RV/2XuWthaVT2qqm6sqvcs/q59zdw1sbWq+r7Fv4nvrqrXVtVD564J\nRtmTTecOH9vE7nIyyQ9095cleUqSF/nO9oyXJrlz7iLYkZ9L8nvd/Q+SPCG+t12tqs5P8j1JDnb3\n47M2keOqeauCcfZk05mdPbaJXaS77+nuty9+/nDW/mO45ZMLmF9VXZDkW5L8yty1sLWq+vtJvi5r\nM03T3Q9091/NWxU7cFaSz16sf3hOtlnnEPayvdp0nvGjl9g9qupxSS5J8rZ5K2EHfjbJDyb5xNyF\nsK0vTvLBJL+2GA7xK1X1sLmLYnPd/edJfirJ+5Pck+RD3f2GeauCcfZq03nGj15id6iqhyf5nSTf\n291/PXfuW2w2AAABRUlEQVQ9bK6qnpXk3u6+be5a2JGzkjwpyS919yVJPpLEePddrKrOzdpduouS\nPCbJw6rqufNWBePs1abzjB+9xPyq6uysNZyv6e7XzV0P27osybOr6s+yNoTlG6rqN+ctiS0cT3K8\nu0/fQbgxa00ou9c3Jnlfd3+wuz+e5HVJvnbmmmCYvdp07uSxTewiVVVZG2t2Z3f/9Nz1sL3uvqa7\nL+jux2Xt79gbu1sKs0t19weS3F1VX7rY9bSsPSmE3ev9SZ5SVecs/o18Wkz+Yh/bk4/B3OyxTTOX\nxdYuS/K8JO+qqncs9v1Qd980Y02w37wkyWsW/zN+V5IXzFwPW+jut1XVjUnenrUVPv4oiacSsW95\nIhEAAMPt1dvrAADsIZpOAACG03QCADCcphMAgOE0nQAADKfpBABgOE0nAADDaToBABju/wKZmXaJ\nigIVQQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "S_loose = separation(loosen(users))\n", "S_ = S_loose[users_test_idx, :][:, users_test_idx]\n", "print(f\"Undirected (Loose) Separation Matrix (Extract):\\n\\n{S_}\\n\\n\\nRepresentation:\")\n", "visualize_matrix(S_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that I will sometimes refer to a \"misdirected\" network as a \"tightened\" network. This is because `misdirect` came first, then `loosen` and after that `tighten` is just a cooler name. But I'm still not going to change it. You do it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Resistance Distance\n", "\n", "The next step is to calculate the resistance between the users (=nodes). For this, every edge (=connection) in the network is assigned a resistance of 1 Ohm. To find out the resulting resistance between two individual users, the whole network has to be simplified to only one edge using the following techniques:\n", "- Simplification\n", " - Series Circuits (3 nodes $\\rightarrow$ 2 nodes)\n", " - Parallel Circuits (2 edges $\\rightarrow$ 1 edge)\n", "- Star-Mesh Transform ($n + 1$ nodes $\\rightarrow$ $n$ nodes, $n$ edges $\\rightarrow$ $\\binom{n}{2}$ edges)\n", "\n", "### Series Circuits\n", "\n", "![](https://upload.wikimedia.org/wikipedia/commons/c/ce/Two_Resistors_in_series.svg)\n", "\n", "The formula for calculating the resulting resistor of a series circuit of $n$ resistors is very simple:\n", "\n", "$$\n", "R = R_1 + R_2 + ... + R_n\n", "$$\n", "\n", "but because it is computationally simpler to just regard a series of two resistors at a time, we will only use the case where $n = 2$:\n", "\n", "$$\n", "R = R_1 + R_2\n", "$$\n", "\n", "### Parallel Circuits\n", "\n", "![](https://upload.wikimedia.org/wikipedia/commons/a/a6/Two_Resistors_in_Parallel.svg)\n", "\n", "The formula for calculating the resulting resistor of $n$ parallel resistors is also simple:\n", "\n", "$$\n", "\\frac{1}{R} = \\frac{1}{R_1} + \\frac{1}{R_2} + ... + \\frac{1}{R_n}\n", "$$\n", "\n", "again, because it is simpler, we will just use the case where $n$ = 2, so that\n", "\n", "$$\n", "R = \\frac{R_1 \\cdot R_2}{R_1 + R_2}\n", "$$\n", "\n", "Because it is not possible for parallel connections to exist between two nodes, parallel circuits will only play a role after simplifying a series of edges to one edge. In a network of three nodes A, B and C, where A is connected to B and C and B also is connected to C, there are no parallel edges. If we however simplify the connection A - B - C to A - C by eliminating the middle node B, we need to consider the initial edge A - C as well. This is then done using the above formula to calculate the resulting resistor.\n", "\n", "Because of this, both these forms of simplification are bundled in one function called `simplify`:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def simplify(network, resistors, a, b):\n", " net = network.copy()\n", " rs = resistors.copy()\n", " \n", " again = True\n", " while again:\n", " again = False # Will be set to True if simplification was found\n", " active = {a, b} # Active nodes: Those that are important for the resistance\n", " \n", " # Active nodes need to have incoming and outgoing connections.\n", " for ns in net.values():\n", " active |= {n for n in ns if n in net and net[n]}\n", " \n", " net_ = net.copy() # Backup to check for changes\n", " \n", " # Remove all non-active nodes from the network\n", " net = {k: [c for c in net[k] if c in active and c != a] for k in active if k != b}\n", " rs = {k: rs[k] for k in rs if set(k) <= active and k[0] != b and k[1] != a}\n", " \n", " # Network has changed -> repeat from the top\n", " if net != net_:\n", " again = True\n", " continue\n", " \n", " # Loop over nodes with only one outgoing connection -> check for incoming connections\n", " for n, cs in [(n, cs) for n, cs in net.items() if len(cs) == 1 and n != a]:\n", " # Incoming nodes that are different from the outgoing node\n", " incoming = [x[0] for x in net.items() if n in x[1] and x[0] != cs[0]]\n", "\n", " # No incoming connections found -> delete semi-isolated node and repeat from the top\n", " if not incoming and n != b:\n", " del net[n]\n", " again = True\n", " break\n", "\n", " # One incoming connection -> redundand node, can be simplified as series connection\n", " if len(incoming) == 1:\n", " i = incoming[0]; o = cs[0]\n", " R = rs[i, n] + rs[n, o] # Resulting resistor of series circuit\n", "\n", " # There is no existing edge -> Just simplify the series circuit, add new edge to network\n", " if (i, o) not in rs:\n", " rs[i, o] = R\n", " net[i].append(o)\n", "\n", " # There is an existing edge -> Simplify series and parallel circuits\n", " else:\n", " rs[i, o] = R * rs[i, o] / (R + rs[i, o])\n", "\n", " # Delete redundand node from network and repeat from the top\n", " del net[n]\n", " again = True\n", " break\n", " \n", " return net, rs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To supply the above function with a network of resistors, a function `build_resistors` will be defined, initializing every edge in a network to 1 Ohm:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def build_resistors(network):\n", " resistors = {}\n", " # Loop over edges, initialize every resistor to 1 Ohm\n", " for node in network.items():\n", " for node_ in node[1]:\n", " resistors[node[0], node_] = 1 # `resistors`: {(node1, node2): R}\n", " return resistors" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Star-Mesh Transform\n", "\n", "![](https://upload.wikimedia.org/wikipedia/commons/2/29/Star-mesh_transform.svg)\n", "\n", "Because only very simple networks can be simplified to a single edge using series and parallel circuits, we need to use another tool for simplifying the network, called Star-Mesh transform. It is a generalization of a technique called Y$\\Delta$-transform and allows us to eliminate one node from a \"star\" by adding $\\binom{n}{2} - n$ edges, $n$ being the number of edges in the initial star (so $n = 5$ in the picture). The value of these new resistors is given by the formula:\n", "\n", "$$\n", "R_{\\nu\\mu} = R_{\\nu 0} R_{\\mu 0} \\sum_{k=1}^{n} \\frac{1}{R_{k 0}}\n", "$$\n", "\n", "where $n$ is the number of edges of the star, 0 is the middle node of the star that is being eliminated and $R_{\\nu\\mu}$ is the resistor between nodes $\\nu$ and $\\mu$.\n", "\n", "Because this technique does not work for directed connections (or maybe it does, I just couldn't figure out how), we first need to misdirect or loosen the network using the functions defined above before commencing the transformation. Because the resistors are also stored in a directed manner, those need to be undirected as well. This latter task is done using the function `undirect`.\n", "\n", "As a result of this, true directed resistances can only be calculated if the network is so simple that star-mesh transform is no option. However, because `simplify` does compute directed resistances, we can calculate a semi-directed (from here on just \"directed\") resistance by first simplifying the directed network and the loosening it for star-mesh transformations." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def star_mesh_transform(network, resistors, a, b):\n", " net = network.copy()\n", " rs = resistors.copy()\n", " \n", " # `n0`: Middle node of star, `cs`: Edges of star\n", " n0, cs = next((n0, cs) for n0, cs in net.items() if n0 not in {a, b})\n", " Rs = {}\n", " \n", " # Calculate new resistors and reconnect network\n", " for n in list(cs):\n", " for m in [c for c in cs if c != n]:\n", " # Calculate R_nm with star-mesh formula\n", " R = rs[n, n0] * rs[m, n0] * sum([1 / R for R in [R for k, R in rs.items() if k[0] == n0]])\n", "\n", " # Add new edge (double-sided)\n", " net[n] = list(set(net.get(n, [])) | {m})\n", " net[m] = list(set(net.get(m, [])) | {n})\n", "\n", " # Condense resistors\n", " rs[n, m] = rs[m, n] = R * rs[n, m] / (R + rs[n, m]) if (n, m) in rs else R\n", "\n", " # Remove star-edges\n", " net[n].remove(n0)\n", " net[n0].remove(n)\n", "\n", " # Remove old resistors\n", " rs = undirect(rs, net)\n", " \n", " return net, rs" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def undirect(resistors, network):\n", " rs = {}\n", " # Add all resistors (double-sided) of which the edges are found in the network\n", " for k, R in [(k, R) for k, R in list(resistors.items()) if k[1] in network[k[0]]]:\n", " rs[k[0], k[1]] = rs[k[1], k[0]] = R\n", " return rs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that all important functions for calculating the resistance between two nodes in a network are defined, we can create a single function for the computation called `resistance`. This function will loop over the functions `simplify` and `star_mesh_transform` until the network cannot be simplified any more and, if the network was simplified to one edge, return the resulting resistor:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def resistance(network, a, b, resistors=None, iterations=False, visualize=False):\n", " # Check if a = b\n", " if a == b:\n", " return (0, 0) if iterations else 0\n", " \n", " net = network.copy()\n", " \n", " # If resistors are not predefined, initialize them all to 1 Ohm (directed)\n", " if not resistors:\n", " rs = build_resistors(network)\n", " else:\n", " rs = resistors.copy()\n", " \n", " net_ = net.copy() # Backup to check for changes\n", " i = 0 # Iterations counter\n", " \n", " while True:\n", " # Simplification\n", " net, rs = simplify(net, rs, a, b)\n", " \n", " if visualize:\n", " print(\"Simplification (Directed):\")\n", " visualize_network(net, {a, b}, small=True, labels=True)\n", " \n", " # No changes or single connection: finished\n", " if net == net_ or set(net.keys()) <= {a, b}:\n", " break\n", " \n", " net_ = net.copy() # Backup to check for changes\n", " \n", " # Star-Mesh Transform\n", " net = loosen(net)\n", " rs = undirect(rs, net)\n", " net, rs = star_mesh_transform(net, rs, a, b)\n", " \n", " i += 1\n", " \n", " if visualize:\n", " print(f\"Star-Mesh Transform (Loosened Network) #{i}:\")\n", " visualize_network(net, {a, b}, small=True, labels=True)\n", " \n", " R = nan # Initialize R to NaN for when it can not be computed using star-mesh transform and simplification\n", " if len(rs) == 1:\n", " R = list(rs.values())[0]\n", " elif len(rs) == 0:\n", " R = inf\n", " \n", " return (R, i) if iterations else R" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As an example, take a look at the following (small) network and its simplification to one edge:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Network to be analyzed:\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA20AAAJCCAYAAABTfy+dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlYVOXj/vH3ICC4ixuYkksuuJKJiCtuSJZZZuaSS2Vq\nuWS5Z2a5Z/LNLdNPZuGSaaZppqaouEuaqQm4G+4rbgjIMuf3h+VPTRMVOMPM/bourytnzplzTyXO\nPc9znsdiGAYiIiIiIiJim5zMDiAiIiIiIiL3p9ImIiIiIiJiw1TaREREREREbJhKm4iIiIiIiA1T\naRMREREREbFhKm0iIiIiIiI2TKVNRERERETEhqm0iYiIiIiI2DCVNhERERERERvmbNaFCxYsaJQo\nUcKsy4uIiIiIiJjq999/v2AYRqEHHWdaaStRogQ7duww6/IiIiIiIiKmslgsMWk5TtMjRURERERE\nbJhKm4iIiIiIiA1TaRMREREREbFhKm0iIiIiIiI2TKVNRERERETEhqm0iYiIiIiI2DCVNhERERER\nERum0iYiIiIiImLDVNpERERERERsmEqbiIiIiIiIDVNpExERERERsWEqbSIiIiIiIjZMpU1ERERE\nRMSGqbSJiIiIiIjYMJU2ERERERERG6bSJiIiIiIiYsNU2kRERERERGyYSpuIiIiIiIgNU2kTERER\nERGxYSptIiIiIiIiNkylTURERERExIaptImIiIiIiNgwlTYREREREREbptImIiIiIiJiw1TaRERE\nREREbJhKm4iIiIiIiA1TaRMREREREbFhKm0iIiIiIiI2TKVNRERERETEhqm0iYiIiIiI2DCVNhER\nERERERum0iYiIiIiImLDVNpERERERERsmEqbiIiIiIiIDVNpExERERERsWEqbSIiIiIiIjZMpU1E\nRERERMSGqbSJiIiIiIjYMGezA4iIiIhIJoiPh6goSEiAwoWhbFmwWMxOJSJpoJE2EREREXsWEwM9\netwsao0aQfPmUK3azdL21VeQnGx2QhF5AJU2EREREXu1ZQtUrgxffcWU69epfvUq2a9coXN8PBw6\nBH36QIMGcP262UlF5D+otImIiIjYo8OHITgYrl2D5GSKAh8Cb9x+THw8/P47tGplTkYRSROVNhER\nERF7NGLEzVL2t5bAi0CBu49LTIQNG2DHjkwMJyIPQ6VNRERExN5cvQrz50NqatqOT0yE//u/jM0k\n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\nfEBISIj2HxS7ooVIREREbFRSUhILFy7kjz/+oHr16rRs2RIXFxezY0kGaN26NT179qRevXpmR8ny\njh8/zueff85nn31GtmzZzI4j8p/SuhCJSpuIiIiNOXPmDKGhoVy5coVWrVpRrVo1syNJBkpJSSEg\nIIDt27ebHcVuREZGMn/+fD755BNtIi82TatHioiIZDEREREsXryYggUL8sYbb1CoUCGzI0kmGD9+\nPC+++KLZMexKxYoVadq0KZ9//jnvv/++2XFEHptG2kREREx048YNFixYwJ49e/D39+fFF1/E2Vnf\nqTqSGjVqsGXLFv13zwA///wzFy9epHPnzmZHEbknjbSJiIjYsFOnThEaGkpcXBytW7emQ4cOZkcS\nE2zevBlvb28VtgzSvHlzvv32W5YuXcoLL7xgdhyRR6afECIiIpnEMAy2bt3K0qVLKVy4MF27dqVA\ngQJmxxITDRs2jK+//trsGHatc+fOhISEsHnzZmrXrm12HJFHotImIiKSwRITE5k/fz579+4lICCA\nkSNHamRFuHz5MomJiTz55JNmR7F777//PsOGDSNfvnxUrFjR7DgiD033tImIiGSQEydOEBoaSkJC\nAq+++iqVK1c2O5LYkO7du9OwYUNat25tdhSHkJqaSv/+/XnvvfcoXry42XFEAC35LyIiYgrDMNi0\naRPLli3Dy8uLjh074uHhYXYssUF+fn5a5j+TJSYm0rdvX0aMGKE/l2ITtBCJiIhIJkpISOD7778n\nKiqKOnXqMHr0aG3sK/c1a9YsAgICzI7hcNzc3Bg9ejSDBw9m/Pjx5MiRw+xIImmikTYREZHHcOzY\nMWbNmsWNGzdo06aN7peRNKlVqxarVq0iV65cZkdxSKdPn2bs2LGEhITo/lIxlUbaREREMohhGGzY\nsIFffvmFYsWK0aNHD/Lnz292LMkiDh48SO7cuVXYTOTl5UWPHj0YOnQoo0ePxmKxmB1J5D9ppE1E\nRCSN4uPj+e6779i/fz/169fn2Wef1RRIeWgvvvgiH374IdWrP/DLdclg27dvJywsjMGDB5sdRRyU\nRtpERETSyV9//cXs2bNJTk6mXbt2dOnSxexIkkUlJSVx+vRpFTYb4efnR2xsLNOnT6dbt25mxxG5\nL5U2ERGRezAMg3Xr1rFy5Uq8vb3p3bs3efPmNTuWZHEjR46kXbt2ZseQ2zRt2pR58+bxww8/8Mor\nr5gdR+SeND1SRETkNtevX2fu3LkcPHiQBg0aEBwcjJOTk9mxxE74+fkRERGh/6ds0JQpU6hQoQIN\nGzY0O4o4EE2PFBERSYOTJ08ybdo0oqOjqVy5MlarlXbt2tG1a1ezo4mdWb16NWXLllVhs1E9e/Zk\n+PDh5M+fn6efftrsOCJ30EibiIg4HMMw2Lp1K5MmTWLhwoWkpqYCsHv3bqpUqWJyOrFXDRo0YO7c\nuRQtWtTsKHIfVquVQYMG0b17d0qVKmV2HHEAaR1p01c9IiLiMBITE/n222+pVq0atWvXZv78+RiG\nwcsvv8z69eupXLmy2RHFTp07dw6r1arCZuOcnJwYNWoUn3/+OefOnTM7jsgtmh4pIiJ278SJE3z5\n5Zd8+eWXXLp0CYD8+fPTvXt33n77bYoXL25yQrF3/fv3Z+DAgWbHkDRwcXFhzJgxDBgwgE8//ZTc\nuXObHUlEpU1EROyTYRhs2rSJiRMnsnjxYqxWKwBVq1alT58+tGnTBjc3N5NTiiOwWq1ERUXRrFkz\ns6NIGuXKlYtPPvmEDz74gJCQEFxdXc2OJA5O0yNFRMSuJCQk8PXXX1O1alXq1avHjz/+CMCrr77K\npk2b+OOPP+jcubMKm2Sa6dOn07hxY7NjyEMqVKgQ77//PkOGDLn1pY+IWbQQiYiI2IVjx44xdepU\npk+fzuXLlwHw8PDgnXfeoXv37jzxxBMmJxRHVbNmTcLDw/VFQRa1e/dufvrpJz766CMsFovZccTO\naMl/ERGxe4ZhsH79eiZNmsSSJUtufRterVo1+vTpQ+vWrcmePbvJKcWR7dmzh4IFC6qwZWFVq1bl\n0qVLTJkyhV69epkdRxyUSpuIiGQ58fHxzJ07lwkTJhAVFQVAtmzZaNu2Lb1798bf31/fiItNGDRo\nEJ999pnZMeQxBQYGEhsby9y5c2nfvr3ZccQB6Z42ERHJMv766y/69++Pl5cXXbt2JSoqioIFCzJs\n2DCOHz/Od999R82aNVXYxCbEx8dz6dIlKlasaHYUSQctW7YkPj6eFStWmB1FHJBG2kRExKYZhsHa\ntWuZNGkSy5YtuzUF0s/Pj3fffZdXXnlFK7uJTRo6dChvvvmm2TEkHb311luMHTsWDw8P/P39zY4j\nDkSlTUREbNL169eZPXs2EydOZN++fQA4OzvTrl07evXqRY0aNUxOKPLfNmzYoKmRdmjgwIEMGTKE\nfPnyUa5cObPjiINQaRMREZty5MgRvvjiC7766iuuXbsGQOHChenZsyddu3alSJEiJicUebAlS5ZQ\nuXJlnJx0J4q9sVgsDB8+nH79+jFgwACKFi1qdiRxAFryX0RETGcYBmFhYUycOJHly5fzz99NNWvW\n5N1336Vly5aaAilZSt26dVmyZAkeHh5mR5EMkpCQQL9+/Rg1ahT58uUzO45kUWld8l9f/4iIiGmu\nXbvGF198Qbly5QgKCuKXX37B2dmZTp06sWPHDrZu3UqbNm1U2CRLOXHiBC4uLipsds7d3Z0RI0Yw\nZMgQEhMTzY4jdk7TI0VEJNMdOnSIKVOm8PXXXxMXFweAp6cnPXv25K233qJw4cImJxR5dP369eOj\njz4yO4ZkAg8PDwYPHszgwYMZP3482bJlMzuS2CmNtImISKawWq2sXLmSZs2aUaZMGSZOnEhcXBy1\natVi/vz5HDt2jCFDhqiwSZZmtVo5fPgwgYGBZkeRTFKsWDG6du3KsGHDMOu2I7F/Km0iIpKhrl69\nyuTJkylTpgzPPvssK1aswNXVlddff52dO3eyefNmWrdujYuLi9lRRR5bSEgIzZs3NzuGZDIfHx+a\nNWtGSEiI2VHETml6pIiIZIj9+/czZcoUZs6cSXx8PABFixalV69edOnShYIFC5qcUCT9LVy4kM2b\nN5sdQ0xQq1YtYmNjmTlzJm+88YbZccTOaKRNRETSjdVq5ZdffqFp06aUL1+eKVOmEB8fT926dVm4\ncCExMTEMGjRIhU3s0tatWylWrBjOzvpO3FE9//zzODs7s2TJErOjiJ1RaRMRkVuSkuDMGbh0CR7m\n1owrV64wYcIEnnrqKZ5//nlWrVpF9uzZ6dKlC7t372bDhg28/PLL+jArdu2jjz5i/PjxZscQk3Xs\n2JEjR46wceNGs6OIHVFpExERIiLglVcgd24oWRI8PaFoUfjsM4iNvf950dHR9OjRAy8vL9577z2O\nHj1KsWLFGDduHKdOneKrr76iSpUqmfdGRExy9epV4uPjKVmypNlRxAb06dOHsLAw9u7da3YUsRPa\nXFtExIEZBvTrB9OmQWIiWK13Pp8jB7i5wZo14Ot787HU1FSWL1/OxIkTWbNmza1jAwMDeffdd2ne\nvLmWvRaH884771C3bl3atm1rdhSxEVarlf79+9O7d2+efPJJs+OIjdLm2iIi8kDDht0sbPHx/xS2\n1wAvIA9Qlvj4GcTGQmAg/PHHFUJCQihVqhQvvPACa9aswc3NjW7duvHnn3+ybt06XnzxRRU2cUjb\nt29XYZPWInOUAAAgAElEQVQ7ODk5MXr0aD777DMuXrxodhzJ4jTSJiLioM6ehSefhBs3bn80EngK\nyA7sAwKBX4CncXJaiNX6KgDe3t707t2bN954g/z582ducBEbM3fuXLZs2cIXX3xhdhSxQVevXmXw\n4MGMGzeOnDlzmh1HbIxG2kRE5D/9739gsdz9aEVuFjYAy9+/DgNOWK3NqVfvRZYsWcKRI0fo27ev\nCpsIMHXqVD799FOzY4iNypMnD0OHDmXw4MEkJyebHUeyKJU2EREH9f33N+9j+7d3gBxAeW5OlWwG\nQM6crvTqtZgXXnhBUyBF/nbw4EFy5sxJrly5zI4iNszT05PevXvz4YcfYtYsN8naVNpERBzU1av3\ne2YqcA3YCLTkn5G3GzdS+OmncNavX8+5c+f0wUMEGDBgAKNGjTI7hmQBTz31FK+88gpjxowxO4pk\nQbqnTUTEQVWoANHRDzqqO1AB6A1cBboAPwCQO3duKlWqROXKlalQoQI+Pj5UqFCBJ554Asu/512K\n2J2UlBRq165NRESE2VEkC1m9ejWHDx+me/fuZkcRG5DWe9q0y6mIiIN69VUYM8bKjRv/NekihZv3\ntIGzcw5eeaUIBw9WJzIykmvXrrF161a2bt16xxnu7u74+PjcKnP/FLoSJUpoWqXYlVGjRvHqq6+a\nHUOymCZNmhAbG8uCBQto3bq12XEki1BpExFxQIZhUKDAj9y48Tzg9vej54C1wPOAOxAGzAO+w2Kx\n8tJL2fjuu8m3zj916hTR0dFERUURHR3N3r17+fPPP7ly5Qo7d+5k586dd1zTxcWFMmXKULVq1TtG\n5p566ilcXFwy662LpJtly5ZplE0eyauvvsrUqVMJCwujcePGZseRLEClTUTEwVy8eJFu3brx448/\nAmPIlq0Pqalu3Fwp8ktuTom0Ak8CE4AWGMYVXF0/x2r9CCcnJywWC0888QRPPPHEvz5wnD9/nujo\n6FuFLjIykt27d3PhwgWioqKIioq643gnJydKlix5q8z9U+jKlSuHu7t7ZvwrEXloa9eu5amnnsLJ\nScsDyKN55513GDlyJB4eHlSrVs3sOGLjdE+biIgDWbFiBZ06deL8+fPkyJGDSZMms3Pn63z7rYWE\nBLj7rwR3d3BySiIhoS5W62+0adOGWbNmPdLI2JUrV9i3b9+tkbl/ytypU6fuuaiJxWKhaNGi+Pr6\nUrFixVsjc+XLlydPnjyP+q9AJF00bNiQOXPmULRoUbOjSBZmGAaDBg2ia9eulC5d2uw4YoK03tOm\n0iYi4gCuX79O3759mT59OgC1a9dm9uzZlCxZEoCNG2HcOFi1ClxcIDUVcuWCd9+Fbt3gzz/X8txz\nz5GYmEhQUBCLFy8mR44c6ZItPj6e/fv33zHVcteuXfz1119YrdZ7nlOoUCGqVq1KxYoV75hqWaBA\ngXTJJPJfLly4QMuWLdmwYYPZUcQOJCcn07dvX4YMGUKRIkXMjiOZTKVNREQA2LZtG+3atePo0aO4\nuLgwcuRI+vbte89FQeLj4cIFyJ4dChWC22d+7dixg8aNG3PlyhVq1KjBypUrM3Rz7aSkJA4dOnSr\nyEVFRbFnzx4OHDhASkrKPc/JmzcvVapUuVXm/il0Xl5eWtFS0s3rr7/OSy+9xAsvvGB2FLET169f\nZ8CAAYwdO5bcuXObHUcykUqbiIiDS0pKYvjw4YwZMwar1UqFChWYN28eVapUeeTX3LdvH4GBgZw9\ne5Zy5cqxbt06vLy80jH1g6WmpnL06NE7RuZ2797Nvn37SLz3buHkyJGDihUrUrly5VujchUqVMDb\n21v3JMlDsVqt1KhRA32GkfR24cIFPv74Y0JCQsiePbvZcSSTqLSJiDiwqKgo2rdvz65du7BYLPTr\n148RI0akyweB48eP06BBAw4fPswTTzzB+vXrbeJeDMMwOHHixB0jc3v37mXv3r1cu3btnue4urpS\nrlw5qlSpcsfIXOnSpXF21lpd8m/Tp0/n8OHDjBs3zuwoYodiYmKYNGkSn332mb5QchAqbSIiDshq\ntTJp0iQGDhxIUlISxYsXZ86cOdSrVy9dr3PhwgWaNGnCrl278PDwYO3atVStWjVdr5FeDMPg/Pnz\nt1au/Gd7gj179hAbG3vPc7Jly0apUqXw9fW9Y2SubNmy+gbcwdWsWZPw8HDc3NwefLDII9izZw+L\nFi1i2LBhmtbtAFTaREQczLFjx+jUqRPh4eHAzftuJkyYkGErLV67do0XXniB8PBwcuTIwcqVK6lb\nt26GXCujXLp06Y7tCaKioti1axdnzpy55/EWi4XixYv/axGU8uXLkytXrkxOL5lt7969DBw4kF9+\n+cXsKGLn1q9fz65du3j33XfNjiIZTKVNRMRBGIbB3Llzeeedd7h27RoeHh7MnDmTFi1aZPi1b9y4\nQdu2bVm8eDEuLi4sXryY5557LsOvm9Hi4uLYv3//v7YnOHbs2D23JwAoUqQIvr6+t0bl/il0GblY\ni2Su5557jk8//ZRKlSqZHUUcwOLFi4mLi6NDhw5mR5EMpNImIuIA7twoG5o3b86MGTMoXLhwpmVI\nTU2le/fuzJgxAycnJ7799lu7/ZBx48YNDhw48K/tCY4cOXLfFS09PDxurWh5+1TLwoULa+pTFpKY\nmEhgYCDbtm0zO4o4kBkzZuDl5WUXX4bJvaVrabNYLMHARCAbMMMwjLH3OKY18DFgALsNw2j3X6+p\n0iYi8nju3ih78uTJvP7666YUAcMwGDJkCGPGjAFgwoQJDjWtJyUlhSNHjvxre4J9+/aRlJR0z3Ny\n5cpFpUqVqFSp0h17zRUvXlxlzgYNGDCA0qVL061bN7OjiIMZN24c9erVo2bNmmZHkQyQbqXNYrFk\nAw4ATYATwHagrWEYUbcdUwZYADQ0DOOSxWIpbBjGuf96XZU2EZFH86CNss0UEhJCv379ABg6dCif\nfPKJQxcQq9XKsWPH7hiZ27NnD5GRkcTHx9/zHDc3N8qXL0+VKlVuFblKlSpRqlSpTE4vt/Pz8yMi\nIkIr+kmmMwyDDz/8kNdeew0fHx+z40g6S8/SFgB8bBhG079/PxjAMIwxtx0zDjhgGMaMtAZUaRMR\neXi3b5Tt7OzMqFGj7rtRtlm+/fZb3njjDQzDoFu3bnzxxRc2lc8WGIbBmTNn7lgAJTIykj179nD5\n8uV/HV+4cGFGjRpFUFAQ3t7eJiR2bEuXLmXx4sV88803ZkcRB5Wamkrfvn3p378/TzzxhNlxJB2l\nZ2lrBQQbhtHl7993APwNw+h52zE/cXM0rjY3p1B+bBjGyv96XZU2EZG0u9dG2d99953NLrO/ZMkS\nWrVqRUpKCq1bt2b27Nm4urqaHStLuHjx4h0jc5GRkRQpUoSnnnqK7du3c/Xq1VuLoRQrVoyaNWsS\nFBSkb+AzUL169Vi0aBEFCxY0O4o4sISEBPr168fIkSO1wJEdSc/S9grQ9K7SVsMwjF63HbMMSAZa\nA8WAjUAlwzAu3/VaXYGuAN7e3s/ExMQ81JsSEXFEGblRdkZav349zz77LAkJCTRq1IglS5aQM2dO\ns2PZDavVyq5duwgLC+O3337j3LmbdyUYhkGhQoWoUaMGjRo14plnntGUvsdw4sQJOnTowLp168yO\nIsKlS5f48MMPGT9+PO7u7mbHkXSQ2dMjpwHbDMP49u/frwEGGYax/X6vq5E2EZH/llkbZWekP/74\ng4YNG3L58mWeeeYZfv31VwoUKGB2LLu3f/9+Vq9ezdatWzl+/Pitx3Pnzs0zzzxDw4YNqVWrlkY/\n06Bt27a89dZbNGzY0OwoIgCcPHmS8ePHM378eE09twPpWdqcuTn1sRFwkpsLkbQzDCPytmOCubk4\nSSeLxVIQ+APwNQzj4v1eV6VNROT+Mnuj7Ix04MABAgMDOX36NGXKlGHdunW6J8MkJ06c4Ndff2Xr\n1q0cOnQIq9WKYRi4u7vj6+tLvXr1aNiwITly5DA7qk2wWq34+/uzfft9v4MWMcW+ffuYPXs2I0eO\ndOjFnuxBei/53wyYwM371WYahjHKYrEMB3YYhrHUcvP/lhAgGEgFRhmG8f1/vaZKm4jIv5m5UXZG\nOnnyJA0aNODgwYN4eXmxfv16ypQpY3Ys+VtsbCyrV69mw4YNREdH39pzzsXFhQoVKlC3bl0aN26M\nh4eHyUkz1//93/9x7do1hg0bZnYUkX/Ztm0bGzdupH///mZHkcegzbVFRLIYW9goOyPFxsYSFBTE\n77//Tr58+Vi7di1PP/202bHkP8TFxbF27Vo2btzI7t27SUxMxDAMnJycKFu2LLVq1aJp06YULVrU\n7KgZwt/fn82bN+Ps7Gx2FJF7Wr58OadPn+bNN980O4o8IpU2EZEsxJY2ys5IcXFxvPjii6xZswZ3\nd3dWrFhB/fr1zY4lDykpKYlNmzaxbt06du7cybVr12495+3tTa1atWjSpEmWHk3dvn07o0ePZvHi\nxWZHEflPs2fPJleuXLz00ktmR5FHoNImIpIF2PJG2RklKSmJDh06sGDBApydnfnxxx954YUXzI4l\n6cBqtbJ9+3bWrl3Lb7/9xsWLF29tT+Dp6UmNGjVo0qQJVapUsfkVLYOCgvjyyy8pXbq02VFEHmji\nxIn4+vrqS7AsSKVNRMTGZYWNsjNKamoqPXv2ZNq0aVgsFmbOnEnnzp3NjiUZxGq1Eh0dzerVq4mI\niODkyZO3nsubNy9+fn40bNiQmjVr2sRUxKtXrxIcHMyWLVvMjiKSJoZh8Mknn9CyZUuqVKlidhx5\nCCptIiI2KqttlJ1RDMNg2LBhjBgxAoCQkBDef/99k1NJZouJieHXX39ly5YtHD16FKvVCkDOnDl5\n+umnCQwMpH79+ri5uWVaph49elCrVi3at2+fadcUeVxWq5X+/fvTq1cvSpQoYXYcSSOVNhERG5RV\nN8rOSBMnTqRPnz4ADB48mFGjRtndvXzy8M6dO8eqVavYvHkz+/btIzU1FQBXV1cqV65MnTp1aNKk\nSYZsg+Hn56dl/iVLunHjBn379uXjjz+mYMGCZseRNFBpExGxIfawUXZGmjNnDp06dcJqtdKlSxem\nTZvmENNE5eFdvXqVNWvWsGHDBv78809u3LgBgLOzM+XKlaNOnToEBQU98qqr8+bNY+PGjUydOjU9\nY4tkmqtXrzJ48GDGjRtHzpw5zY4jD6DSJiJiI+xpo+yM9Msvv/DSSy+RnJxMy5Yt+e677xx6BFIe\nTmJiIuvXr2f9+vX88ccfXL9+HQCLxULJkiUJCAggKCjogYv81K5dmxUrVujPp2RpZ8+eZdSoUYSE\nhODi4mJ2HPkPKm0iIiaz142yM9LGjRsJDg4mPj6ewMBAli5dSu7cuc2OJVlYSkoKERERrFmzht9/\n/53Y2FjgZpkrWrQoNWvWpEmTJvj4+BATE0PXrl1ZvXq1yalFHt/hw4eZPn06n376qaac2zCVNhER\nE9n7RtkZaffu3TRs2JDY2Fh8fX1ZvXq17s2QdGe1WtmzZw9r1qxh27ZtnD17lqioKIoXL06JEiWo\nXr06jRs3xs/Pz+a3JxC5n507d7JixQqGDBlidhS5D5U2ERGTOMpG2Rnp8OHD1K9fn5MnT1K6dGnW\nrVtH8eLFzY4ldiwlJYXatWsTERHBwYMHWb16Ndu2bSMmJubWXnO5cuXimWeeoUGDBtSpUwdXV1eT\nU4s82Jo1a9i/fz/vvPOO2VHkHlTaREQy2d0bZdeqVYs5c+bY9UbZGen06dM0bNiQffv2UaRIEfbt\n20e+fPnMjiV2avjw4bi7u9O/f//7HnPq1ClWr17Npk2bOHjw4K3tCbJnz06VKlWoX78+DRs2JFeu\nXJkVWyRNFixYgNVqpU2bNmZHkbuotImIZCJH3ig7I126dIng4GBiYmKYPXs2TZo0MTuS2Ck/Pz8i\nIiIeaSpkbGwsYWFhbNq0icjISJKTk4GbK1r6+PhQr149mjRpgoeHR3rHFkmzadOmUbp0af0ctTFp\n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\nwC1APnBHjPHGjz3fBLgX6A98AJwaY/x73UaVJEkNQUUFnHvu3oWt1m3A+R95pKqqBT/5SeDxx2u+\nf//99/nTn/7Em2++SV5eHv3792f8+PG0bt06F9ElKSv2W9pCCPnAfwFDgXeBv4QQZsQYl+112HlA\naYzx0BDCacBNwKnZCCxJkg5sjz4K1dWZHVtdHSguruaKK24hP38jHTt2ZNiwYYwZM8bZNEkHjExm\n2gYCy2OMKwBCCA8Co4C9S9so4Nrdv54O3BZCCDHGWIdZJUlSA/CHP8DWrft65krgCqAXcAM1SyYh\nhGq6dBnPhRc2yVVEScqpTLZHOhhYvdf37+5+bJ/HxBgrgc1A+7oIKEmSGpb339/XozcBK4D3gHHA\nCcA7AFRWNmLrVgubpANXJqVtX2sLPj6DlskxhBDGhRAWhRAWbdiwIZN8kiSpgWnRYl+PfgNoBTQB\nzgYGAbMAKCiA5s1zlU6Sci+T0vYu0HWv77sAaz7pmBBCI6ANsOnjJ4oxTo0xDogxDtj7xpiSJEm1\nRo6EZvveEHIvgdp/Hw4BvvvdbKeSpORkUtr+AvQMIfQIITQGTgNmfOyYGdT8sxfAScDTfp5NkiR9\nHuedV3Nvtn/4ECgBdgCVwH3AfGAYAL16wde+luOQkpRD+y1tuz+jdiE1r5ZvAg/HGN8IIfw8hDBy\n92F3Au1DCMuBn1DzKWFJkqTPrH17uPDCvZc87gImAR2BDsCtwB+BXjRrBr/+dTI5JSlXQlITYgMG\nDIiLFi1K5NqSJCndqqtr7tU2fTps2/bPz+flQdOm8Pvfw+mn5z6fJNWFEMLiGOOA/R2XyfJISZKk\nnMrLq9n6/3/+BwYOrClobdrUfDVtCiefDC+8YGGT1DBkcp82SZKknAsBTjyx5mvVKli9umanyJ49\noW3bpNNJUu5Y2iRJUup161bzJUkNkcsjJUmSJCnFLG2SJEmSlGKWNkmSJElKMUubJEmSJKWYpU2S\nJEmSUszSJkmSJEkpZmmTJEmSpBSztEmSJElSilnaJEmSJCnFLG2SJEmSlGKWNkmSJElKMUubJEmS\nJKWYpU2SJEmSUszSJkmSJEkpZmmTJEmSpBSztEmSJElSilnaJEmSJCnFLG2SJEmSlGKWNkmSJElK\nMUubJEmSJKWYpU2SJEmSUszSJkmSJEkpZmmTJEmSpBSztEmSJElSilnaJEmSJCnFLG2SJEmSlGKW\nNkmSJElKMUubJEmSJKWYpU2SJEmSUszSJkmSJEkpZmmTJEmSpBSztEmSJElSilnaJEmSJCnFLG2S\nJEmSlGKWNkmSJElKMUubJEmSJKWYpU2SJEmSUszSJkmSJEkpZmmTJEmSpBQLMcZkLhzCBmBlIhev\nPzoAG5MOodRznCgTjhNlyrGiTDhOlAnHyf51jzF23N9BiZU27V8IYVGMcUDSOZRujhNlwnGiTDlW\nlAnHiTLhOKk7Lo+UJEmSpBSztEmSJElSilna0m1q0gFULzhOlAnHiTLlWFEmHCfKhOOkjviZNkmS\nJElKMWfaJEmSJCnFLG0JCyEUhRD+GkJYHkK4Yh/PNwkhPLT7+ZdCCF/OfUqlQQZj5SchhGUhhKUh\nhLkhhO5J5FSy9jdO9jrupBBCDCG4q1cDlMk4CSGcsvs15Y0Qwv25zqh0yODvnm4hhGdCCK/s/vvn\nuCRyKlkhhLtCCO+HEF7/hOdDCOE/d4+jpSGEo3Kdsb6ztCUohJAP/BcwHOgD/CCE0Odjh50HlMYY\nDwVuBm7KbUqlQYZj5RVgQIyxLzAd+EVuUyppGY4TQgitgB8DL+U2odIgk3ESQugJXAkMijF+Fbg4\n50GVuAxfUyYBD8cYjwROA27PbUqlxN1A0ac8PxzouftrHPDbHGQ6oFjakjUQWB5jXBFjrAAeBEZ9\n7JhRwD27fz0dGBJCCDnMqHTY71iJMT4TY9y++9sXgS45zqjkZfKaAnAdNaV+Ry7DKTUyGScXAP8V\nYywFiDG+n+OMSodMxkoEWu/+dRtgTQ7zKSVijPOBTZ9yyCjg3ljjReCgEELn3KQ7MFjaknUwsHqv\n79/d/dg+j4kxVgKbgfY5Sac0yWSs7O08YHZWEymN9jtOQghHAl1jjDNzGUypksnryWHAYSGE50MI\nL4YQPu1f0HXgymSsXAucEUJ4F5gFXJSbaKpnPuv7GH1Mo6QDNHD7mjH7+HaemRyjA1/G4yCEcAYw\nAPhOVhMpjT51nIQQ8qhZZn1OrgIplTJ5PWlEzTKmwdTM2i8IIRwRY/wwy9mULpmMlR8Ad8cYfxVC\n+CYwbfdYqc5+PNUjvp/9gpxpS9a7QNe9vu/CPy8r2HNMCKERNUsPPm36WQemTMYKIYRjgYnAyBjj\nzhxlU3rsb5y0Ao4A5oUQ/g4cDcxwM5IGJ9O/ex6PMe6KMf4N+Cs1JU4NSyZj5TzgYYAY45+BpkCH\nnKRTfZLR+xh9Mktbsv4C9Awh9AghNKbmA7wzPnbMDODs3b8+CXg6enO9hmi/Y4N+GM0AAAE5SURB\nVGX3srf/pqaw+fmThulTx0mMcXOMsUOM8csxxi9T89nHkTHGRcnEVUIy+bvnj8B3AUIIHahZLrki\npymVBpmMlVXAEIAQwuHUlLYNOU2p+mAGcNbuXSSPBjbHGNcmHao+cXlkgmKMlSGEC4ESIB+4K8b4\nRgjh58CiGOMM4E5qlhosp2aG7bTkEispGY6VXwItgf/dvVfNqhjjyMRCK+cyHCdq4DIcJyXA90MI\ny4Aq4NIY4wfJpVYSMhwr/w/4fQjhEmqWu53jPy43PCGEB6hZTt1h9+cbfwoUAMQYf0fN5x2PA5YD\n24GxySStv4J/riRJkiQpvVweKUmSJEkpZmmTJEmSpBSztEmSJElSilnaJEmSJCnFLG2SJEmSlGKW\nNkmSJElKMUubJEmSJKWYpU2SJEmSUuz/AyeEY2WhGzHMAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Simplification (Directed):\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xlc1NX+x/HXYRdBRVEEXCv3HXGpNM2U3C2z1LIsM9N+\n1q17K+ta7rbZdltuubTXrbRrpWapaWmbCop75oZsKqIoCCjbnN8fA1xAhAFm5jvL5/l4zCNm5sv3\n+/4Gfjhzvud7jtJaI4QQwrV4GB1ACCGE9UlxF0IIFyTFXQghXJAUdyGEcEFS3IUQwgVJcRdCCBck\nxV0IIVyQFHchhHBBUtyFEMIFeRl14ODgYN2iRQujDi+EEE5px44dZ7TWDSvbzrDi3qJFC2JiYow6\nvBBCOCWlVLwl20m3jBBCuCAp7kII4YKkuAshhAuS4i6EEC5IirsQQrggKe5CCOGCpLgLIYQLkuIu\nhBAuSIq7EEK4ICnuQgjhgqS4CyGEC5LiLoTBtIZffoHRo6F1a2jVCoYNg/XrwWQyOp1wVoZNHCaE\ngIQEGDzY/N/sbHOhBzhyBLZsgQYN4IcfoG1bY3MK5yMtdyEMcuIEREbCoUOQlQVaTwBCgTpAazIz\nl5GQAL17w+HDBocVTkeKuxAGmTQJ0tKgoKDolaeB40AGsAp4Bq13kJEBY8caFFI4LSnuQhggKQk2\nby5Z2AE6AL6FX6vCx1G0hr/+gr177Z1SODMp7kIY4D//+V//emkPAf5AW8xdNEMByMmBZcvsFk+4\nALmgKoSVaK3JyMggLS2Nc+fOkZaWVupR8rWtWyeSk3NLOXv5N/Am8AfwM0Ut+YICOHbMbqciXIAU\ndyHKyMvLK1WIKyrUqampnD59mvPnz5OZmYnJ4rGLfSt4zxPoA3wKvAM8AkBc3AGio7OIiIjA09Oz\nRucoXJ8Ud+H2TCYTJ06c4K677mL79u1cunSp2vvy8/Ojbt26NGjQgJCQEOrXr1/qERQURP369dmz\npw0vv1xAdnZFRTofOFr4dSb7979Dz55vUbduXW6++WaioqKIioqiadOm1c4rXJfS5Xf82VxkZKR2\ntwWyCwpg40bzsDalzGOX+/cHD7nyYRWXLl0iLi6O48ePk5iYyMmTJzl16hSnT5/m3LlzFbaq69at\nS2xsLImJiSilCAwMpF69ejRq1IiGDRuWKsxlC3XRo169evj4+FiUNTcXGjWC9PSiV04Dm4DhQC3g\nR2A08B9gFD4+Bdx55z/YuHEliYmJpfbVqlUrhgwZQlRUFP369SMgIKCq/+uEE1FK7dBaR1a6nRR3\n2ysogFdegUWLzBfG8vLMxd3LC2rXhn/+E6ZPN7/m7kwmE2lpacTFxREfH09SUhInTpzg9OnTpKam\nkpmZibrC/ygvLy/q169PSEgIISEhhIeH06xZM1q0aEHTpk0rLbxnzpzB29ubwMBAPOzwF/eFF2D+\nfPPNS5AKjAF2AyagOebumAfw94fJk+Ff/zL36x89epT169ezbt06Nm7cSFZWVvE+vby8uO6664pb\n9hEREXY5F2E/UtwdRH4+jBxpHvZm/kdc5DDQCRiDv/+nDB8On3/uOq343NxcEhMTiY+PJzExkaSk\nJE6dOkVqaipnzpwhPz+fot+9ssXa39+fhg0bEhISQuPGjWnSpAnNmzenZcuWBAcHu0yx0to81n3F\nCvNNTOXx9s4lKsqHb74xNwbKysvLY9u2baxfv54ffviBHTt2lPqEUq9eveJCP2jQIOnCcQFWLe5K\nqcHAvzBf6VmmtX6hzPv3AouA5MKX3tJaVzhwy12K+2OPwZIlZQs7QBRwEXML7VP8/eGJJ2DOHNtn\nKrpgWFBQQGhoaIXbZmRkcOzYMRISEkhKSiI5OZmUlBRSU1NJL+xTKK9IK6UICgqiUaNGNG7cmNDQ\nUJo2bVpcpP39/W13gk5Ea1i6FBYuNN/QpHXRI5+LF8/g4/MvTp16mqCgOhbt79y5c2zatIn169ez\ndu1akpKSSr3funXrUl04tWvXtsVpCRuyWnFXSnkCh4BBQBIQDYzXWh8osc29QKTWerqlAd2huGdk\nQOPGcPFi2Xe+AFYC7YEjmEdFQEAApKaCn1/l+9Zak52dfcWhdmWfp6SkcObMGdLT04svGIaGhtKp\nUydycnKK91mkqFD7+PgQHBxMSEgIoaGhhIWFFXd1hIWF4VVec1JUmdbw22/mm5VMJrj6anj22b78\n/vuvLFiwgJkzZ1Zjn5ojR46U6sLJLtHKCA0NJT4+Hm9vb2ueirAxaxb3a4E5WuubC58/DaC1fr7E\nNvcixf0yb78NM2aU/cidAUQCG4H3KFnca9Uq4P/+bz/duu0rt1CfOXOGlJQUzp07R0ZGBgWlb2+0\nmFKKgIAAevTowYoVK6hfv36NzlPYxsaNGxk4cCCBgYEkJycTGBhYo/3l5eWxdevW4mIfFBTEdddd\nR15eHqGhoURFRXHNNddc8ZqGcAyWFndLml3hQMnL80lAr3K2u00pdQPmVv5jWuvEcrZxK7/9Vl5f\n6rPA/cDlfZ8XL3ry8stbgIct2r+Pjw+BgYHFw+4aNGhQ6YiO+vXr2+2CoaiZAQMG0KtXL7Zt28bb\nb7/NU089VaP9eXt707dvX/r27cv8+fMxmUzFvwfJycn8+OOPfPTRRwB07dqVm266iaCgoBqfhzCG\nJcW9vD/jZZv7q4HPtdY5SqmpwEfAgMt2pNQUYApAs2bNqhjV+RT2dpSwC/MQt9grfk9Y2FX07Tv2\nioW56LWgoCBq1aplw/TCaEop5s+fT1RUFM8//zzTp0+36jDHkn/gw8PDmThxImAesbR7927ee+89\nzp8/T61atejXrx+9evWSLhwnYpVumTLbewJpWuu6Fe3XHbplnnwSXnvNPGLG7HVgJlD08ToTKADa\nATvx9YVZs8xDI4UAc795r169iI6O5sUXX+TJJ5+0e4bs7Gy2bNnC1q1byc/PJywsjEGDBkkXjkGs\n2efuhbmr5SbMo2GigTu11vtLbBOqtT5Z+PWtwAytde+K9usOxf3gQYiIKHlBNRtzn3uRlzFP8foO\n0BBfX/MNTjJaTZT0ww8/MGTIEOrVq0dSUpLhI1ySk5PZsGEDhw8fRilFt27dGDBggHTh2InV+ty1\n1vlKqenAOsxDId/XWu9XSs0DYrTWq4BHlFIjMd8vnQbcW6P0LqJtW+jcGaKji5ZL8y98FAkA/ICG\neHlBv35S2MXlbr75ZiIiIti5cyfvvvsu//jHPwzNEx4ezr333guYu3B27dpV3IXj7+9Pv3796Nmz\np3ThGExuYrKx48fNrff09Cuvh+npaV5OLTYWwsLsGk84ibVr1zJs2DCCgoJISkpy2PsEsrKy2LJl\nC9u2bSMvL4/w8HCioqK4+uqrpQvHSuQOVQdy9CgMHQrJyZCVZaJoGn0PD/D0zKVVK0/WrfOkSRNj\ncwrHpbUmIiKCXbt28eqrr/LYY48ZHckiSUlJbNiwgaNHj5bqwqlXr57R0ZyWFHcHozX8+itMmbIf\nD4/2gKJTJ7j77jPs2bOMp5+u2TA34frWrFnDiBEjaNCgAYmJiU43WqqoC2fjxo2kp6fj7+9P//79\n6dmzp9wMVwXWHOcurEAp6NsXxoz5gvnz55d4J5idO/M4c+YMwcHBhuUTjm/YsGF06tSJvXv3snTp\nUh555BGjI1WJh4cHERERREREAOYunM2bNzN//nzy8/Np0qRJcReOqDlpudtRTk4OL730Es8++2yp\n11NTU1m8eDHPPPOMQcmEs/j222+55ZZbaNiwIQkJCfhZMleFkyjbhRMREcGNN94oXThlSMvdAe3d\nu5fOnTtf9nrDhg3x8PDg1KlTNG7c2IBkwlmMHDmSDh06sH//fpYtW8b06RbP+OHwmjRpwn333QeY\nu3BiY2NZunQp6enp1K5du3gUjnThWEZa7nb0zjvvMGrUKMLKGRJz7tw53njjDWbPnm1AMuFMvv76\na0aPHk2jRo1ISEjA19fX6Eg2l5mZyebNm4mOji7VhXPVVVcZHc3upOXugE6cOFFuYQcICgrC39+f\npKQkmsiwGVGBUaNG0bZtWw4ePMj777/PtGnTjI5kcwEBAQwbNoxhw4YBkJiYyIYNG3j//fdRStG9\ne3duvPFG6tat8MZ4tyItdzuaNWsW8+bNu+L7GRkZLFq0qMwFVyEu99VXX3H77bcTEhJCfHy8W7Te\nr6SgoIDY2Fg2bdpEeno6AQEB9O/fnx49erhkF4603B1MVlZWpTee1KlThwYNGhAXF0fLli3tlEw4\no9GjR9OmTRv++usvPvzwQx588EGjIxnG09OTyMhIIiPN9a6oC2f+/PkUFBTQtGlToqKirPdvau9e\nWLbMfAOLjw/06QP33QcONv2CtNzt5NdffyUrK4ubb765wu2ysrJYuHAhzz33nJ2SCWe1fPlyxo4d\nS+PGjYmPj7d4cW53k5CQwIYNG4iLi8PDw6O4C6dOHctWtyp25AjccYd5RZWcHPPiyAD+/ubbz++9\nF954A2w87YK03B1MTEwMEyZMqHS72rVrEx4ezqFDh2jdurUdkglnNWbMGFq1asXhw4f5+OOPmTx5\nstGRHFKzZs24//77AXMXTtEcPRkZGdSuXZsbb7yRyMjIirtwDh2CXr0gI4O3TCY+BPYC44EPi1a3\n+vhj8x+A778vf8FbO5OWu51U1t9e0qVLl5gzZw4vvPBC5RsLt/b5559z5513Eh4eTlxcnEzWVUUX\nLlwoHoVTUFBAs2bNGDRoUOkuHK2hVSs4dgy0ZiXmCUTWYV4F+cOSO/T3h5kzbTpvt7TcnZifnx9X\nX301+/bto2PHjkbHEQ7sjjvu4Nlnn+Xo0aN88sknTJo0yehITiUwMJDhw4czfPhwAOLj49mwYQPH\njx9HKUVkZCQDvbyonZJiLvLA6MLvjcG8LF0p2dnw6qvm9TU9Pe11GuWStdbs4Pz581UeojVx4sTi\nJc+EuBJPT0/mzp0LwOzZs8n/38owohqaN2/O5MmTWbBgAXPmzCEsLIzkGTMwZWZavpPcXNiwwXYh\nLSTF3Q527NhB9+7dq/Q9Pj4+dOzYkZ07d9oolXAV48aNo2XLliQlJfHZZ58ZHcdleHp60qNHD1qb\nTFUrlPn55pE0BpPibgfVKe4Ad911l/xjFZWS1ruNVWceegdYgN74BG7gwoULBAYGVr5hGV5eXkRG\nRrJ161YbpBKuZPz48TRr1oz4+Hg+//xzo+O4lq5dq1asPT3Ny7AZTIq7gxs7dizLly83OoZwcF5e\nXqVa7wVFY7BFzf3tb1Bi7vx84BLmpe0LCr8u9VmpTh3zmpkGk+JuY6dPn6ZRo0bV/n4PDw/69OnD\n5s2brZhKuKIJEybQpEkT4uLi+PLLL42O4zp69DAPhSwcu74AqAW8AHxa+PWCom39/c3DIKVbxvVF\nR0fTo0ePGu3j1ltv5euvv8aoexKEcyjZep81a5a03q1FKfjuOwgOBm9v5gC6zGMOQO3acOut8NBD\nhkUtSYq7je3atYsuXbrUaB9KKaKiotjgAMOrhGO7++67CQsL4+jRo6xYscLoOK4jLAx27YKbb8bk\n40N+yZvFAgKgbl1zi/2TT6p3AdYG5CYmG7t06ZJV1rocMmQIf//73xk0aJCsIi+uyNvbmzlz5vDk\nk0+69UyRNhESAqtX8+ZTT/FgnTp4nThh7ouPjDS32B1sbh8p7jaktbZaIVZKMXz48OJFkoW4ksmT\nJ9OjRw/++c9/cuuttxodx+WcBPxsOL2AtUi3jA0lJibStGlTq+1vwIABbNq0CZPJZLV9CtejlKJr\n165kZ2eTkJBgdByXcuzYMadZ/UmKuw1Z42JqSUopRo8ezcqVK622T+G6Xn75ZbdYpcmeVq1axciR\nI42OYRGLirtSarBS6i+l1BGl1FMVbDdGKaWVUpXOWOYO9u/fT4cOHay6z759+/L777/LSAhRqcjI\nSC5cuEBS0mXTW4lqSklJcZpF7Cst7kopT+BtYAjQHhivlGpfznaBwCPANmuHdFb5+fk2mYJ13Lhx\nfPHFF1bfr3A9r7zyirTereT06dM0bNjQ6BgWs6Tl3hM4orU+prXOBb4ARpWz3XzgJcw3bLk9W/aL\n9+zZk9jYWJlDRFSqR48enD9/nhMnThgdxemtXr3aqQYzWFLcw4HEEs+TCl8rppTqBjTVWq+xYjan\nduTIEa655hqb7f/uu+/mk08+sdn+het46aWXpPVuBYcPH6ZVq1ZGx7CYJcW9vLF8xbdKKqU8gNeA\nf1S6I6WmKKVilFIxqamplqd0QjExMVa9mFpWly5dOHDgADk5OTY7hnAN1157LWfPnuXUqVNGR3Fa\nFy5cICAgwOgYVWJJcU8CSo7nawKU/IwXCHQEflZKHQd6A6vKu6iqtV6itY7UWkc6U99Vdfz111+0\nadPGpseYNGkSH374oU2PIVzDCy+8IK33Gli3bh1DhgwxOkaVWFLco4FWSqmWSikfYBywquhNrXW6\n1jpYa91Ca90C2AqM1Fq7zwKp5TCZTHjYePKgdu3aERcXx8WLF216HOH8+vTpQ2pqKqdPnzY6ilPa\nsWMHERERRseokkqrj9Y6H5iOeT3YP4HlWuv9Sql5SinnGPBpZ/n5+Xjaaf3EyZMn895779nlWMK5\nPffcc9J6r4bc3Fy8vb2dbtoPi5qWWuu1WuvWWuurtdYLC1+bpbVeVc62/d291f7nn3/Svv1lo0Vt\n4pprruHkyZNkVmWNR+GWbrjhBk6ePMmZM2eMjuJUfv75Z/r37290jCqTO1RtwNp3plZmypQpLFmy\nxG7HE85rwYIF0nqvoi1btnDDDTcYHaPKpLjbQFxcHC1atLDb8Zo3b8758+dJT0+32zGFcxowYADJ\nycmkpaUZHcUpmEwmTCYTXl7ON8eiFHcbsXf/3NSpU1m8eLFdjymc09y5c3nIQRaUcHTR0dH07NnT\n6BjVIsXdynJycgyZRzssLIxLly5Ji0xUatCgQRw/fpzz588bHcXhrV+/nqioKKNjVIsUdyvbs2cP\nnTt3NuTYU6dO5d133zXk2MK5zJ49W/reLZCdnY2/v7/RMapFiruVRUdHExlpzKSYjRo1QmstY5lF\npYYMGUJcXBwZGRlGR3FYBw8epG3btkbHqDYp7lZ28uRJwsLCDDv+tGnTpPUuLPLMM89I33sFVq9e\nzfDhw42OUW1S3K3M6Bsd6tevj5+fH8nJyYbmEI5v+PDhHD58WFrvV5CWlkaDBg2MjlFtUtytKCsr\nyyH65x588EEZOSMs8s9//pPp06cbHcPhJCcnG/oJ3BqkuFtRbGws3bp1MzoGdevWJSgoiPj4eKOj\nCAc3atQoDh48KHc4l/Htt98yalR5y1Y4DynuVhQTE2PYxdSy5K5VYakZM2bw8MMPGx3DoSQmJtKs\nWTOjY9SIFHcrcqQ+utq1axMaGsqRI0eMjiIc3G233ca+ffvIzs42OopDOHfuHPXq1TM6Ro1Jcbci\nrXXlG9nR5MmTWbZsmdExhBN44oknpO+90Nq1axk2bJjRMWpMiruVOOJfez8/P1q2bMmBAweMjiIc\n3B133MGePXuk9Q7s27ePDh06GB2jxqS4W8mOHTscpr+9pPvuu09WaxIW+cc//sGjjz5qdAxDXbx4\nET8/P8OHNFuDFHcr2blzp0Ou1OLj40O7du3YtWuX0VGEgxs/fjw7d+7k0qVLRkcxzI8//sjAgQON\njmEVUtyt5MKFCwQGBhodo1x33303n376qdExhBN49NFHeeyxx4yOYZitW7fSu3dvo2NYhRR3N+Dl\n5UVERATbt283OopwcBMmTCA6Oprc3Fyjo9hdQUEBSim7LZFpa1LcrSAlJYWQkBCjY1Ro7NixfPHF\nF0bHEE7g4YcfdsvW+2+//cb1119vdAyrkeJuBfZeVq86PD09ue666/jll1+MjiIc3MSJE9m2bZvb\ntd43btzIgAEDjI5hNVLcrWD37t106dLF6BiVGj16NCtXrnS48fjC8UydOpXHH3/c6Bh2o7UmNzfX\nkIV2bEWKuxXk5OTg5+dndIxKeXh4cNNNN7Fx40ajowgHN3nyZH777Tfy8/ONjmIXe/bscYoGWlVI\nca8hZ2sFDxs2jO+++87pcgv7mzJlCk888YTRMexi7dq1DBkyxOgYViXFvYYSEhKcaoIhpRRDhw5l\n7dq1RkcRDu7BBx9ky5YtbtF6z8jIoG7dukbHsCop7jXkSDNBWmrgwIH8+OOP0noXlbr//vt5+umn\njY5hU3FxcbRo0cLoGFZnUXFXSg1WSv2llDqilHqqnPenKqX2KqV2KaV+VUq1t35Ux7R//36nm4dC\nKcWtt97K119/bXQU4eAeeughNm7c6NKt91WrVjn93O3lqbS4K6U8gbeBIUB7YHw5xfs/WutOWuuu\nwEvAq1ZP6qDy8/Px9vY2OkaV3XDDDfz6668UFBQYHUU4uIkTJzJz5kyjY9jMqVOnaNy4sdExrM6S\nlntP4IjW+pjWOhf4Aij1Z05rXXIRxtqAW3zeN5lMRkeokbFjx7J8+XKjYwgH97e//Y0NGzY4/e97\neVJTU2nYsKHRMWzCkuIeDiSWeJ5U+FopSqn/U0odxdxyf8Q68RzbkSNHaNWqldExqq1Xr17ExMS4\n9EduYR0TJkzg2WefNTqG1a1evZoRI0YYHcMmLCnu5c19eVnLXGv9ttb6amAG8Ey5O1JqilIqRikV\nk5qaWrWkDsgZ7kytzIQJE/jss8+MjiEc3KOPPsr333/vcq33w4cPO3UDrSKWFPckoGmJ502AExVs\n/wVwS3lvaK2XaK0jtdaRrvBR6NChQ7Ru3droGDXSrVs39u3b53a3mouq8fDwYNy4ccyZM8foKFaT\nmZlJ7dq1jY5hM5YU92iglVKqpVLKBxgHrCq5gVKq5J++YcBh60V0XCaTCQ8P5x9Neu+99/LRRx8Z\nHUM4uMcff5w1a9a4TOv9hx9+YPDgwUbHsJlKK5PWOh+YDqwD/gSWa633K6XmKaVGFm42XSm1Xym1\nC/g7MNFmiR1Efn6+y0wN2qFDB44ePerWizSIynl4eHD77bezYMECo6NYxY4dO+jevbvRMWzGoman\n1nqt1rq11vpqrfXCwtdmaa1XFX79N611B611V631jVrr/bYM7QgOHDjgdOPbKzJp0iTee+89o2MI\nBzdjxgy++eYbp2+95+Xl4e3t7RLL6V2J8/cpGMQVLqaW1Lp1a5KTk8nKyjI6inBgHh4e3HLLLTz/\n/PNGR6mRn3/+mf79+xsdw6akuFfT8ePHad68udExrGrKlCksXbrU6BjCwT3zzDP897//derW+5Yt\nW+jbt6/RMWxKins1KaVc7iNdixYtOHv2LBkZGZVvLNyWh4cHI0eO5KWXXjI6SrWYTCYKCgqc8s7y\nqpDiXg05OTn4+PgYHcMmpk6dyuLFi42OIRzcrFmzWL58uVO23mNiYlyqS/VKpLhXg7OsvFQd4eHh\nZGdnc+7cOaOjCAfm4eHBsGHDeO2114yOUmXr1q0jKirK6Bg2J8W9Gpxxmt+qmDp1Ku+++67RMYSD\nmzt3rlPe3Zydne3SNy8VkeJeDadOnSI0NNToGDYTEhJCQUEBrjBFhLAdDw8Pbr75Zl5//XWjo1js\n4MGDtGnTxugYdiHFXZRr2rRp0noXlVq4cCGffPKJ0TEstmbNGpedKKwsKe5V5OrzURRp0KABPj4+\nnDx50ugowoEVLbr+1ltvGR3FImfPnqVBgwZGx7ALKe5VFBsbS7du3YyOYRcPPvigtN5FpZ577jk+\n+OADo2NUKjk5mbCwMKNj2I0U9ypy9YupJdWrV486deqQkJBgdBThwLy8vOjXrx/vvPOO0VEqtGrV\nKkaOHFn5hi5CinsVpaWlUb9+faNj2M2DDz4o495FpV566SWWLVtmdIwKJSQkuNxd5RWR4i4qFBAQ\nQEhICEePHjU6inBgXl5e9OnThyVLlhgdpVznz5+nbt26RsewKynuVXDu3DmCgoKMjmF3DzzwgMO3\nyoTxFi1a5LDFfe3atQwbNszoGHYlxb0K3Km/vaRatWrRvHlzDh48aHQU4cB8fHzo1auXQ15c3bt3\nLx07djQ6hl1Jca+CnTt3EhERYXQMQ9x33328//77RscQDu61117j7bffNjpGKZcuXcLPz8/lJvqr\njBT3KsjMzCQgIMDoGIbw9fWlTZs27Nmzx+gowoH5+PjQs2dPh1q28ccff2TgwIFGx7A7Ke5V4G5/\n+cu65557nOpuRGGMV199lTfffNPoGMX++OMPevfubXQMu5PibqFTp04REhJidAxDeXt706VLF2Ji\nYoyOIhyYn58fERERDjGpWEFBAYDLrHdcFVLcLeRqy+pV1/jx4/n888+NjiEc3BtvvOEQ0wH//vvv\nXH/99UbHMIQUdwvt3r2bzp07Gx3DcJ6envTq1YvffvvN6CjCgfn5+dG1a1e+/PJLQ3Ns3LiRAQMG\nGJrBKFLcLZSbm4ufn5/RMRzCmDFj+Oqrr4yOIRzcG2+8wcsvv2zY8bXW5OTkuO2/WynuFtBaGx3B\noXh4eHDjjTeyadMmo6MIB+bv70/Hjh0Nawjs3bvXrT9tS3G3gLvNSWGJESNGsHr1avnDJyr05ptv\nGraQ9nfffcfQoUMNObYjkOJugejoaLe8M7UiSikGDx7MDz/8YHQU4cACAgJo164dy5cvJzs7267H\nzsjIcLv5ZEqyqLgrpQYrpf5SSh1RSj1Vzvt/V0odUErtUUptVEq5VDN3//79dOjQwegYDicqKor1\n69dL611UaPjw4dx9990sWrTIbseMi4ujRYsWdjueI6q0uCulPIG3gSFAe2C8Uqp9mc1igUitdWfg\nK8CYz2E2kp+fj5eXl9ExHI5SilGjRvHtt98aHUU4sEaNGpGbm8uiRYtIT0+3yzHdbe728ljScu8J\nHNFaH9Na5wJfAKNKbqC1/klrXfSZayvQxLoxjWMymdz+ztSK9O/fn82bN2MymYyOIhxUv3796NOn\nD1lZWXa7c9XVF7G3hCXFPRxILPE8qfC1K7kf+L4moRzJ4cOHad26tdExHNodd9zBihUrjI4hHNi8\nefMAePGuUbmPAAAZSklEQVTFF8nIyLDpsVJTUwkODrbpMZyBJcW9vGZruZ2sSqkJQCRQbueaUmqK\nUipGKRWTmppqeUoDyZ2plbv22mvZvn07+fn5RkcRDqp///707t2bzMxMmy+mvWbNGkaMGGHTYzgD\nS4p7EtC0xPMmwImyGymlBgIzgZFa65zydqS1XqK1jtRaRzZs2LA6ee3u0KFDtGrVyugYDu/OO++U\naQnEFSmlmD9/PgAvvPACFy5csNmxDh06JJ+2say4RwOtlFItlVI+wDhgVckNlFLdgMWYC/tp68c0\njtYaDw8ZMVqZ7t27s3v3bvLy8oyOIhzUTTfdRM+ePblw4QL//ve/bXKMzMxMateubZN9O5tKq5bW\nOh+YDqwD/gSWa633K6XmKaWKLkcvAgKAFUqpXUqpVVfYnVORUTJVM3HiRIeax1s4lpKt9+eff57M\nzEyr7j8xMZERI0YQGBho1f06K4uapFrrtVrr1lrrq7XWCwtfm6W1XlX49UCtdYjWumvhwyXGIMn4\n9qrp1KkThw8f5tKlS0ZHEQ5q0KBBREZGkp6ezjvvvGPVfX/77bf8/PPPbN682ar7dVbS31ABuZha\ndZMmTXLINTSFY1BKFY+cee6558jKyrLavr/++msAbr31Vqvt05lJca9AfHw8zZo1MzqGU2nTpg0J\nCQl2v9VcOI/BgwfTrVs3zp8/z+LFi62yz7S0NH7++Wc8PDwYNmyYVfbp7KS4V0ApJTcwVcMDDzzA\n0qVLjY4hHFTJvveFCxdapSHw3XffYTKZ6N+/P/Xr16/x/lyBFPcruHTpEj4+PkbHcEpXXXUVZ86c\nselwN+Hchg4dSteuXUlLS2PJkiU13t/KlSsB6ZIpSYr7FezZs4cuXboYHcNpTZkyxWofuYXrKdn3\nvmDBAi5evFjtfWVnZ/P99+ab4keNGlXJ1u5DivsVyMXUmmnatCmZmZmcP3/e6CjCQQ0fPpyOHTty\n9uzZGnXjbdiwgZycHCIiImjatGnl3+AmpLhfQUpKCo0bNzY6hlObOnUq7777rtExhIMq2fe+YMGC\nag+h/eabbwAYPXq01bK5AinuVyBzlNdc48aNycvL48yZM0ZHEQ5q1KhRtG/fntTUVN57770qf39+\nfn5xcZf+9tKkuJcjMzOTgIAAo2O4hGnTpknrXVxRydb7vHnzyMkpd1qqK/r11185f/48V111Fe3a\ntbNFRKclxb0cO3fuJCIiwugYLiE4OBgvLy9OnTpldBThoG655RbatGnD6dOnef/996v0vUWt9jFj\nxsiw5TKkuJcjJiZG1ky1Iul7FxXx8PAobr3PnTuX3Nxci75Pa81XX30FmP9AiNKkuJfj3LlzBAUF\nGR3DZdSrV4/U1FRGjBhRoyFvwnXddttttG7dmpSUFD788EOLvmfXrl0kJyfTsGFDevXqZduATkiK\nu7A5rTW//vora9askbHvolweHh7F497nzJljUeu9aC6Z0aNHy7Tc5ZD/I2WkpaXJ7ctWppRiwYIF\ngHnImzUnixKuY8yYMVxzzTWcPHmSjz/+uNLt//vf/wLSJXMlUtzLkP522xg+fDiRkZGcPXvW5sus\nCefk6enJ3LlzAXPrvaKFX44ePcqBAwcICAhgwIAB9oroVKS4lxEbG0u3bt2MjuFylFIsXLgQMC/U\nYOtFkoVzGjt2LC1btiQ5OZlPP/30itsVjZIZPny4zAF1BVLcy8jKypIx7jYyaNAgrr/+etLT03n9\n9deNjiMckKenZ3Hf++zZs6+46LpMFFY5Ke7Cbkq23hctWkRaWprBiYQjGjduHM2bNycxMZHPPvvs\nsvdTUlL4448/8Pb2ZvDgwQYkdA5S3Es4efKkzCdjY/369eOmm24iMzOTl19+2eg4wgF5eXlV2Hpf\nvXo1WmsGDhxInTp1jIjoFKS4F8rLy+P333+Xi6l2UDRy5vXXX+f06dMGpxGO6M4776Rp06bEx8fz\n+eefl3pPumQsI8W90E8//cQdd9zB22+/bXQUl9e7d2+GDh3KxYsXefHFF42OIxyQl5dX8ciZZ555\nhTffNPF//wdTpuSybl0LoA4jR440NKOjk+JeKDo6GpPJRL169YyO4haKbjd/6623OHHihMFphCO6\n9dYJ1Kq1nISEP3j8cRP//jcsXeqDyfQSSqUwa1YI1Zwl2C1IcS8UHR0NIAt02ElERASjR48mNzeX\n5557zug4wsFkZcENN3iTl3cr4EFu7oNAcyAQ6IvWP/HJJ3DDDUiBvwIp7oW2bt0KSHG3p3nz5qGU\nYvHixcTHxxsdRziQ+++Hw4chP98LyAeaApuBdGA+cAcXLx5n3z545BEjkzouKe7AiRMnSElJISAg\ngFatWhkdx2106NCB8ePHk5+fX9xNI8Tp0/DttyVb5LWBOUALzCVrONAS2MHFi/DJJ5CebkRSx2ZR\ncVdKDVZK/aWUOqKUeqqc929QSu1USuUrpcZYP6ZtxcTEABAZGSkTENnZ7Nmz8fDw4IMPPuDIkSNG\nxxEO4IMPKtsiBTgEdADAwwMquJnVbVVayZRSnsDbwBCgPTBeKdW+zGYJwL3Af6wd0B6K+tt79uxp\ncBL307p1a+655x5MJlPx2Gbh3mJjK+pHzwPuAiYCbQHIzoa9e+2TzZlY0kztCRzRWh/TWucCXwCj\nSm6gtT6utd4DmGyQ0ebkYqqxZs+ejZeXF59++ikHDhwwOo6ws4KCAv78808+++wzHn/8cTZt+ukK\nW5qAuwEfoPTkcyanrDy25WXBNuFAYonnSUC1ZsZXSk0BpgA0a9asOruwOq0127ZtA5AbmAzSokUL\nJk+ezLvvvsvs2bNZsWKF0ZGEjeTk5LBv3z5iY2OJjY0lOjqa3bt3l5m/3R+4FvAr8ZoG7sfcJbMW\n8C5+p1YtaF+2L0FYVNzLW5hQV+dgWuslwBKAyMjIau3D2o4fP8758+cJCgqiefPmRsdxWzNnzuT9\n99/nq6++Yvfu3XTp0sXoSKKGLly4wK5du4oL+fbt2zl48CCmcprZjRs3pmfPnkRERNCs2XVMnepL\n6fU6pgF/Aj8CtUp9r8kEEybY8ESclCXFPQnzOKQiTQCXueukqEumV69essCugZo0acK0adP417/+\nxbPPPsuqVauMjiSqIDU1tbiI79y5k23btpGQkIDWpdtwSilatmxJ79696datW/GjQYMGpbZbuRLW\nr6ewwMcDiwFfoOTcT4vx9b2L0aMhONi25+eMLCnu0UArpVRLIBkYB9xp01R2VDRSRi6mGu+pp55i\n8eLFrF69mujoaLkG4oC01iQmJrJz587iQr59+/Zy5wjy9PSkXbt2xS3ybt260blzZ4um1P74Y+je\nHZKTITe3OeV1Fvj6QsuWICs3XoHWutIHMBTz2KOjwMzC1+YBIwu/7oG5hZ8FnAX2V7bP7t27a0fQ\nr18/DehVq1YZHUVorWfMmKEBHRUVZXQUUUZOTo5+6qmnNOZKW+rh6+ure/furadPn67fe+89vXPn\nTp2Tk1Oj46WlaT10qNa+vuYHmB9+fubno0drnZ5upZNzIkCMtqBuK62N6fqOjIzURa1mo5hMJurU\nqUNWVpZM9+sgzp49S/PmzcnKyuKXX36hT58+RkdySxkZGaxatYoNGzYQFxcHmFvi4eHhrF69msjI\nSCIjI4u7Va655ho8PT1tkiUxEd5773/DHbt2Nd/BGhZmk8M5PKXUDq11paM/3Lq4//nnn7Rv357Q\n0FCZvMqBzJ49m3nz5tG3b182b94s10Js7MSJE6xcuZKffvqJ1NRUAHx9fenRowcjRoygV69exTf3\nFdUL+ZkYx9Libkmfu8sq+uPSu3dvg5OIkh577DFef/11fvnlFzZt2sRNN91kdCSX8eeff/LNN9/w\nyy+/kJmZCUBgYCB9+vRhwYIFtGvXrsLvl6LuPNy6uBeNlJHx7Y6lXr16zJgxg5kzZzJz5kwGDBgg\nRaWKTCYTf/zxB2vWrCE6Orp4HHmjRo0YMGAAy5YtI8xd+zXchFsX96Kbl2RUhuN55JFHePnll9m2\nbRvff/89Q4cONTqSw8rNzeXHH3/ku+++Y//+/ZhMJpRStGjRgqioKJ5++mlZjs4NuW2fe15eHoGB\ngeTk5JCWlkZQUJBhWUT5XnnlFR5//HG6du3Kzp07pfWO+ULn6tWr2bBhA8eOHQPAw8ODDh06MGTI\nEKKiovDx8TE4pbAluaBaiV27dtGtWzdatmxZ/I9EOJbs7GxatmzJ6dOnWblypdutmXnixAm++eYb\nNm3aVDyO3MfHh+7duzNy5EiuvfZamcXUDckF1UqUvDNVOCZ/f39mzZrF9OnTeeaZZxg1apTLFrO/\n/vqLr7/+ml9++YULFy4AEBAQwPXXX8/cuXPp0KGDwQmFs3H74i797Y5t8uTJPPfccxw4cIDly5cz\nbtw4oyPViMlkYtu2bcV34ebk5AAQHBzMgAEDWLx4MU2aNDE4pXAFblvct2/fDkhxd3S+vr7MnTuX\nBx54gGeeeYYxY8bg5eUcv7b5+fls2LCBtWvXsnfv3uILnc2bN2fgwIE8+eSTsiC7sBm37HO/dOkS\nAQEBaK1JT0+3aK4LYZy8vDxatWpFfHw8H3zwAffee6/RkS6TmZnJ6tWrWb9+PUePHgXMFzrbt2/P\n4MGDGTx4sFzoFFYhfe4V2LVrFwUFBbRt21YKuxPw9vZm/vz53HPPPcyatQAfnwns2eNFbi5cdRWM\nG2fbWQGzsrLYvXt3qalro6KiiI+PJyUlBfjfhc7777+f6667zmWvDQjn4ZbFXe5MdT7jxt3Jo4+e\nJTHxPiZNMlHYVU2tWvDEEzBiBLz7LtSvX7PjpKWlFc92GBsby7Zt24iLi7ts6tqmTZvy4osv0rFj\nx5odUAgbccviLhdTnYvJBHfd5UlW1nTAi5yc/sBWwIuLFwHC+fbbv9i+HWJiLGvFa61JTk6+bA7y\nU6dOXbath4cHbdu2LTV1bdeuXQkMDLTqeQphTW5Z3Ldu3QpIcXcWr74K330HOTklf13fAiYXP8vN\nhZMnYfRo2LKl9PebTCaOHj162Rzk6enplx3Lx8eHLl26FM94GBERQYcOHfDz87tsWyEcmdsV9wsX\nLnD48GG8vLzo3Lmz0XFEJQoK4MUXzSvcVyY3F2JiNCtX/kVGxtbiNTp37drFRXMTv5TatWtfNnVt\nmzZtbDZ1rRD25HbFfefOnWit6dSpE76+vkbHEZVYt47i/vXSngaeAtoAC4H+AFy8mM9tt/2Mec3N\n/wkODi7uVinqWmnevLlMaSBcltsVd7kz1bkcOACXLpV99UWgPeADfAGMAHYBVwPeeHv35pZbbi+1\nRmdISIhdcwthNLct7tLf7li01ly4cIGTJ0+WevzwQ0cKCm4CSnaVlPzDPBH4HFgLPAxA585dWb58\nud2yC+GI3K64F11MlTnc7cNkMnH27NnLinbRbfclhxjWqVOH0NBQQkND6datG0OHDqVp0zps364o\nnG7lChRFCyh7eEAl600I4RbcqrifPXuWhIQEfH19ad++vdFxnFpeXh4pKSmlCnZKSgoFBQXF2yil\nUErRoEGD4qLdunVrGjduTK1atSw6zsiRZV85D2wD+mH+9f0S2AK8DoCfH0yfXuPTE8LpuVVxL7p5\nKSIiwmnmJ7G37OzsUgX71KlTnD179rLtvLy8CAkJITQ0lPDwcCIjI2nUqJHV/7/6+sJDD8Ebb1A4\npj0PeAY4iLmrpi3wDdAGDw9o0QJ69rRqBCGckntUuLNn4dAhUlasoDnudzG1aA6dsl0jFy5cuGy0\nSK1atWjcuDGhoaG0bduWG2+8kfr16xt6O/28ebB5M+zeDRcvNgSiL9vGwwPq1YPVq0EGwAjh6sV9\nxw5YuBDWrgU/P27LyuJ2IPvbb6FPH/MdL05cCUwmE6mpqZe1tHNzc0v1ZSulqFu3bnHXSI8ePQgN\nDXWaOyx9fOCnn2DKFFixwvxa0QgaT0/z++3bw1dfmVvuQghXnhXyo49g2jRzFdCaL4C5QALQGPjQ\nz4++Y8fC+++bm30OJDc3l1OnTpUq2qmpqZhMplLbeXh4EBwcXFy0Q0NDady4sUuP3z99GpYtg61b\nzTcttWplLvqdOhmdTAj7cO9l9jZsgFGjijpp2YD5RvUvgZ7AycLNwv39zVffXnzRKoctryhPmjSp\nuNhmZmYWt66L3j937txl+/H29i7uGikq2I0aNZI7J4UQ1i3uSqnBwL8wX8FaprV+ocz7vsDHQHfg\nLDBWa328on3atLh36gT79hU/vQ64v/BxGT8/OHECKlggu6goly3MRY+kpCROnjzJ+fPnL/vev/3t\nb8ULMtSuXbtU0Q4NDSUoKEjukhRCWMxq87krpTyBt4FBQBIQrZRapbU+UGKz+4FzWutrlFLjMN9C\nOLZ60WsoNhZKLHhdAMQAI4FrgEvALcAioFbh+0dnzGBb376lCvaJEydITk7m1KlTZFsysQng6elJ\ncHAwYWFhhIeHExoayuOPPy7Lpgkh7M6SC6o9gSNa62MASqkvgFFAyeI+CphT+PVXwFtKKaWN6PP5\n+WfIzy9+moJ58NxXwC+AN+awCzDPSOJ56RInli7lnqVLr7hLX19fGjVqRJMmTQgLC7usj7vo6+Dg\nYOk6EUI4BEuKeziQWOJ5EqXv/y61jdY6XymVDjQAzpTcSCk1BZgC0KxZs2pGrkRWVqniXnSrzMNA\naOHXf+d/xR2gcUAA40eMKFW0Sz7q1q0rXSdCCKdiSXEvr6qVbZFbsg1a6yXAEjD3uVtw7KoLDjb3\noxd2pQQBTa4QsEjbG27gP//5j03iCCGEESwZA5gENC3xvAlw4krbKKW8gLpAmjUCVtmoUeZJwEu4\nD3gTOA2cw3yj+vCiNwMDYdIkeyYUQgibs6S4RwOtlFItlVI+wDhgVZltVmGeng9gDLDJkP52gNBQ\nGDiw1Nj1Z4EeQGugHdANmFn0ppdXeROYCCGEU6u0uGut84HpwDrgT2C51nq/UmqeUqqoKr4HNFBK\nHcHcpf2UrQJb5K23oE6d4rtPvYF/Y55y6hTwBuAH5tWVP/oIvL2NSiqEEDbhmjcxgXmVhwEDzBdY\nMzNLv1c0I+FHH8Htt9sugxBCWJml49wd6757a2rfHo4fh3feMd/U5OdnbqGHh8Ozz0J8vBR2IYTL\ncu2Jw/z8YMIE80MIIdyI67bchRDCjUlxF0IIFyTFXQghXJAUdyGEcEFS3IUQwgVJcRdCCBckxV0I\nIVyQFHchhHBBUtyFEMIFSXEXQggXJMVdCCFckBR3IYRwQYZN+auUSgXi7XzYYMqs6+pCXPncwLXP\nT87NeRlxfs211g0r28iw4m4EpVSMJfMgOyNXPjdw7fOTc3Nejnx+0i0jhBAuSIq7EEK4IHcr7kuM\nDmBDrnxu4NrnJ+fmvBz2/Nyqz10IIdyFu7XchRDCLbhkcVdKDVZK/aWUOqKUeqqc932VUl8Wvr9N\nKdXC/imrx4Jz+7tS6oBSao9SaqNSqrkROaursvMrsd0YpZRWSjnkSIXyWHJuSqk7Cn9++5VS/7F3\nxuqy4PeymVLqJ6VUbOHv5lAjclaHUup9pdRppdS+K7yvlFJvFJ77HqVUhL0zlktr7VIPwBM4ClwF\n+AC7gfZltnkIeLfw63HAl0bntuK53Qj4F349zVnOzdLzK9wuENgCbAUijc5txZ9dKyAWCCp83sjo\n3FY8tyXAtMKv2wPHjc5dhfO7AYgA9l3h/aHA94ACegPbjM6stXbJlntP4IjW+pjWOhf4AhhVZptR\nwEeFX38F3KSUUnbMWF2VnpvW+ietdXbh061AEztnrAlLfnYA84GXgEv2DFdDlpzbA8DbWutzAFrr\n03bOWF2WnJsG6hR+XRc4Ycd8NaK13gKkVbDJKOBjbbYVqKeUCrVPuitzxeIeDiSWeJ5U+Fq522it\n84F0oIFd0tWMJedW0v2YWxTOotLzU0p1A5pqrdfYM5gVWPKzaw20Vkr9ppTaqpQabLd0NWPJuc0B\nJiilkoC1wMP2iWYXVf13aRdeRgewgfJa4GWHBFmyjSOyOLdSagIQCfSzaSLrqvD8lFIewGvAvfYK\nZEWW/Oy8MHfN9Mf8iesXpVRHrfV5G2erKUvObTzwodb6FaXUtcAnhedmsn08m3PIeuKKLfckoGmJ\n5024/CNg8TZKKS/MHxMr+tjlKCw5N5RSA4GZwEitdY6dsllDZecXCHQEflZKHcfcv7nKSS6qWvp7\n+a3WOk9rHQf8hbnYOzpLzu1+YDmA1voPwA/zvCyuwKJ/l/bmisU9GmillGqplPLBfMF0VZltVgET\nC78eA2zShVdGHFyl51bYbbEYc2F3lj7bIhWen9Y6XWsdrLVuobVugfmawkitdYwxcavEkt/LbzBf\nEEcpFYy5m+aYXVNWjyXnlgDcBKCUaoe5uKfaNaXtrALuKRw10xtI11qfNDqU4Vd0bfHAfPX6EOYr\n+DMLX5uHuRCA+RdrBXAE2A5cZXRmK57bj0AKsKvwscrozNY8vzLb/oyTjJax8GengFeBA8BeYJzR\nma14bu2B3zCPpNkFRBmduQrn9jlwEsjD3Eq/H5gKTC3xc3u78Nz3OsrvpNyhKoQQLsgVu2WEEMLt\nSXEXQggXJMVdCCFckBR3IYRwQVLchRDCBUlxF0IIFyTFXQghXJAUdyGEcEH/D+thecxUKij6AAAA\nAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Star-Mesh Transform (Loosened Network) #1:\n" ] }, { "data": { "image/png": "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\nQVGULVvWtQds1AgaNoSffsrpBTMUOA3UBgKAx4HBAEFBMHy4rWnGMJX9zXLNDZS6Axihtb4/6/lA\nAK31VRMcK6UWABvsuaEaERGhd+3aVZjMTpeamkq5cuVISUlh//793HzzzaYjCQdKTYXg4LyK+w6g\nHuAPrMDWB2I3UAM4B9wFFOz+i1Iqp9kgu+kgr2aDvJoF2rVrJ58a3cXp09CkiW2agWsNUgoKgs6d\nYfp0pxZ3pdRPWuuI/Laz51f4TqCWUqo68DfQAfDq1seNGzeSkpJCgwYNpLB7kRMnTrBt2za2bfua\nzMyZXN0TOHdrY2dgObAR6IG/fyB9+vSmatXUArXd+vn5ySc/b1C+vO1GTc+esGaNrV39wgXbn0FB\ntu5Uw4fDyy+7xVU72FHctdYZSqnuwCZsXSHnaa33KqVGYZvjYL1SqgnwEbZ7DQ8rpUZqres7NbkT\n5W6SEZ7r+PHjbNu2jejoaL744gtOnDiR690XgfyuihXZLZAlS/ozcmRnd+gEIUwpUwYWL7YNUlqz\nBv76C0qUgNtug/vvBzebniTfZhlncddmmaSkJMqXL096ejrHjx+nSpUqpiMJOx09evSyYh57xUx9\ngYGBtGrVirvvvpv09EcYO7YGycnZV1mJ2JplWmK75lmJ7fbQzwQE1KFfPxg50pVnI0TeHNksU6ys\nW7eO9PR0mjVrJoXdjWmtOXLkyGXFPC4u7rJtgoKCaN26Na1ataJly5Y0atQo52ZiWpqtK+SRI5CR\nAbZhKUOAP7B9QL0ZWAfUISgIZHoZ4WmkuF9h6dKlADz99NOGk4jctNYcOnTosmJ+6tSpy7YJDg7O\nKeatWrWiYcOG+Fxj5JG/P2zbZuuxFhcHqakVsN1e+h8/P9uN16++sk1NIIQnkeKeS3x8PFu2bMFi\nschaqYZprfnzzz+Jjo5m27ZtbN68mdOnT1+2zQ033ECbNm1yivktt9xSoH7PlSrZJvGbOtX2SE+3\nNZtqbetJ89xz0L8/3HSTo89OCOeT4p7L6tWrsVqtREVFUb58edNxihWtNX/88QfR0dF89dVXbNmy\nhbNnz162TalSpS4r5vXr1y/yIJZSpWwL6QwaZOvGnJBgu1pv3FjmkxGeTYp7LosWLQJsiygL18nM\nzCQsLIy///77stdLly7NPffck1PM69at67QRib6+EOn1465FcSLFPcvx48fZsWMH/v7+tGvXznQc\n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\nsun7uTEAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Simplification (Directed):\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Star-Mesh Transform (Loosened Network) #2:\n" ] }, { "data": { "image/png": "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\nX55//nkaN25M/fr1yZ8/v3VBlUfS4p6OHT16lPr16xMTE5Puiuh3333HsGHDGDp0KPXq1bM6Toaw\nd+/etDP6q5/IZYyhSpUqNG3alEaNGlG8eHELUypPocU9nZs6dSqLFy9m1qxZVkf5j9jYWFq2bIkx\nhunTp+swwx04duwYCxcuZN68eaxYsYLk5OS0bY8//jjNmjUjJCSEChUqOO2Zuypz0eKeAYSGhhIS\nEsLLL79sdZQbWrJkCX379qVfv360bNnS6jgZzvnz51m6dCnz589nwYIFxMXFpW174IEH0gp9cHAw\nPj4+FiZVGYkW9wwgKSmJgIAAli5dSqFChayOc0NJSUm0adOGM2fOMHPmTHLnzm11pAwpISGB1atX\nExkZyezZszl9+nTatvvuu4+QkBBCQkKoW7cu2bNntzCpSu+0uGcQO3fupEOHDmzcuNHqKLe0du1a\nunXrRufOnenatavVcTI0u91OTExMWqHft29f2jZvb29q165NkyZNaNCgAQ888MCd7fy332DUKIiJ\ngeRkePRReP11qFkTdBjII2hxz0CGDRvGoUOH0pYHSK/sdjtdunRh7969zJgxI93+tZHR/PHHH0RF\nRTFnzhw2bdp0zbZKlSqlDd+VLFny5js5fRoaN4Zff4WEBLh6FdDs2eH++2HxYihb1kW9UO6id6hm\nMLVr15Yff/zR6hgO2b59uwQEBMjgwYOtjuJxjh8/LpMmTZJ69eqJt7d32t2xgJQsWVLeeecd2bhx\n47UPJPnnH5FixUR8fERARoMEgPiCtAUREDFGJEcOkV27rOuccgr0DtWMJTY2lsqVK7N27Vpy5sx5\n+w+kA3369CE6Oppp06ZRokQJq+N4nAsXLvDDDz8wf/58oqKiuHTpUtq2/Pnzp53R14qIwGv27JQz\ndmAeKQ9q+AGIA7658iFjUoZpfv9dh2gyMB2WyYCio6MZMGAAK1eutDqKw/bv38/LL79M1apVGT58\nuNVxPFZiYiLR0dFpD2M5efIkkPI0+v8Dst3gM++R8hi1b65+8777YPly0BVBMyxHi7suJpKOBAcH\n89RTTzFw4ECrozisRIkS/PLLL+TNm5fAwEC2bdtmdSSP5OPjQ61atRg9ejTHjx8nJiaG9957j9cL\nFiT59h//n9hYmDDBVTFVOqJn7unQM888w+jRo/H397c6yh05fvw4YWFhPPbYY0yYMEEXInOH/v2R\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Simplification (Directed):\n" ] }, { "data": { "image/png": "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\nintu/WL5Oq1VKTUIGATIFXAcXFa75Mcff0x0dDSvvfaaU7cOJiUlkXWM59FHHzU4jTklJyezadMm\ndu3ahbe3N88++ywvvviiU39unJklxT0WyH62RxXgbH7eTGs9D5gHGQdU8/Mawn6UUrz99tts3bqV\nwMBAxo8f77Ttkvv37yc1NZU6derIQTsrSktLIzIykq1bt+Lu7k7nzp0JCQlxuXVcHJElxT0KqKuU\nqgmcAXyAvjZNJRyKGdols05eat++vcFJnJ/Wmt27d7Nx40bS0tJo164d77//vinXcXFmef40tNap\nSqlhwCYyWiE/11r/rpQKJuNyTxFKqRbAGjIuDP6cUup9rfX/Z9Pkwq6yVpcMCQmhZcuWTtcuuWPH\nDgAee+wxg5M4J601v/32GxERESQmJtK6dWvGjh0r67g4MFkVUty3ZcuWcerUKQICApyiXVJrTZky\nZbh27Rp//vkndR3kMmjO4OjRo6xZs4a4uDgefvhhWcfFAciqkMJmfHx8OHToEO+88w7jx4+nbNmy\nRke6pxMnTnDt2jVKlixJnTp1jI7j8E6fPs3KlSu5ePEiDz30EL6+vpRy8AtTiH+T4i7ypWHDhk7T\nLpk13/7kk09K58ZdXLhwgZUrV/L3339TrVo1+vfvT/ny5Y2OJQpAirvIt+ztkgcPHuT11193yOIp\ni4Xl7tq1a6xevZq//vqLBx98kOeff15alE1E5tyFVfz4449s3LiRoKAgh2uXrF+/PkeOHGHHjh0u\nX+CvX7/ON998w2+//Ubp0qXp1asX9erVMzqWuA+WzrlLcRdWc+bMGSZNmoS/vz9Vq1Z1iPVb/vnn\nHx544AHc3d1JSEjAy8vL6Eh2l5SUxHfffcfPP/9M0aJFee6552jcuLFD/pUl8iYHVIXdVa5cmbCw\nMIKCgli+fDmDBg0iICDA0CLy888/o7WmSZMmLlXYU1NT2bp1K5GRkRQqVIiuXbsyadIkKeguRIq7\nsKrChQvTvHlzJk+ezH//+1927drFokWLKFmypCF5subb27Zta8j721N6ejo7d+5k8+bNaK156qmn\nmDBhglO0qwrrk+IurK53795ERETQr18/1q1bR9OmTVm7di2NGjWyexazXwxba83+/ftZv349SUlJ\nPP7444wbN47ChQsbHU0YTObchc0cP36cXr16ER0djZeXF/Pnz6dfv352e//U1FSKFStGUlIS58+f\n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\nevK7AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Star-Mesh Transform (Loosened Network) #3:\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Simplification (Directed):\n" ] }, { "data": { "image/png": "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\n+JDKXUTEh/4/DQaSmc70NRoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "R = 1.500000Ω (3 iterations) <- Directed Resistance 1 -> 6\n", "R = 1.000000Ω (2 iterations) <- Directed Resistance 6 -> 1\n", "R = 4.000000Ω (0 iterations) <- Misdirected Resistance\n", "R = 0.743750Ω (4 iterations) <- Loose Resistance\n" ] } ], "source": [ "net = {1: [2, 3], 2: [3, 1, 5, 7], 3: [4, 2], 4: [3, 1, 5, 6], 5: [2, 6], 6: [2, 4], 7: [3]}\n", "a = 1; b = 6\n", "\n", "print(\"Network to be analyzed:\")\n", "visualize_network(net, {a, b}, labels=True)\n", "\n", "print(\"R = %8.6fΩ (%d iterations) <- Directed Resistance 1 -> 6\" % resistance(net, a, b, iterations=True, visualize=True))\n", "print(\"R = %8.6fΩ (%d iterations) <- Directed Resistance 6 -> 1\" % resistance(net, b, a, iterations=True))\n", "print(\"R = %8.6fΩ (%d iterations) <- Misdirected Resistance\" % resistance(misdirect(net), a, b, iterations=True))\n", "print(\"R = %8.6fΩ (%d iterations) <- Loose Resistance\" % resistance(loosen(net), a, b, iterations=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Resistance Distance Matrix\n", "\n", "Now we can create a resistance distance matrix $R$, similar to the separation matrix $S$:\n", "\n", "$$\n", "R = \n", "\\begin{bmatrix}\n", "R_{A\\rightarrow A} & R_{A\\rightarrow B} & R_{A\\rightarrow C} & \\dots & R_{A\\rightarrow N} \\\\\n", "R_{B\\rightarrow A} & R_{B\\rightarrow B} & R_{B\\rightarrow C} & \\dots & R_{B\\rightarrow N} \\\\\n", "R_{C\\rightarrow A} & R_{C\\rightarrow B} & R_{C\\rightarrow C} & \\dots & R_{C\\rightarrow N} \\\\\n", "\\vdots & \\vdots & \\vdots & \\ddots & \\vdots \\\\\n", "R_{N\\rightarrow A} & R_{N\\rightarrow B} & R_{N\\rightarrow C} & \\dots & R_{N\\rightarrow N}\n", "\\end{bmatrix}\n", "$$\n", "\n", "with the following function:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def resistance_distance(network):\n", " R = np.empty((len(network), len(network))) # No intialization necessary, `resistance` always returns a value\n", " nodes = list(network.keys())\n", " \n", " for a in network:\n", " for b in network:\n", " R[nodes.index(a), nodes.index(b)] = resistance(network, a, b)\n", " \n", " return R" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resistance Distance Matrix (Directed, Extract):\n", "\n", "[[ 0. 0.66666667 0.84444444 0.91111111 0.8 1.13333333\n", " 0.84444444 inf inf 1.46666667]\n", " [ 0.4 0. 0.77777778 0.84444444 0.73333333 1.06666667\n", " 0.77777778 inf inf 1.4 ]\n", " [ 0.77777778 0.84444444 0. 0.6 0.37777778 1.04444444\n", " 0.4 inf inf 1.37777778]\n", " [ 1.8 1.86666667 1.4 0. 1. 2.06666667\n", " 1.4 inf inf 2.4 ]\n", " [ 0.8 0.86666667 0.4 0.44444444 0. 1.06666667\n", " 0.4 inf inf 1.4 ]\n", " [ 2.4 2.46666667 2.37777778 2.44444444 2.33333333 0.\n", " 2.37777778 inf inf 3. ]\n", " [ 0.77777778 0.84444444 0.4 0.6 0.37777778 1.04444444\n", " 0. inf inf 1.37777778]\n", " [ 0.8 0.86666667 0.96111111 1.02777778 0.91666667 1.25\n", " 0.96111111 0. inf 1.58333333]\n", " [ 0.375 0.6 0.75277778 0.81944444 0.70833333 1.04166667\n", " 0.75277778 inf 0. 1.375 ]\n", " [ 1. 1.06666667 0.97777778 1.04444444 0.93333333 1.26666667\n", " 0.97777778 inf inf 0. ]]\n", "\n", "\n", "Representation:\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAApcAAAJCCAYAAACVn+wNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHkBJREFUeJzt3X2sbXdZJ/DvY194xxLKBGgLraFRkUSRG+RlYghgAljp\nH8NkykRGGE3VES0Go+AfcCWTyZgYRg0IuQMICgOawpgO6YhOgCiZsXJbKtBemdwg0itVWpAWykt7\nyzN/nNPJ4XLvOWvTvdbaZ53PJ9np2Xuv89vPze7L0+/vZVV3BwAA1uG75i4AAIDl0FwCALA2mksA\nANZGcwkAwNpoLgEAWBvNJQAAa6O5BAA4gKrqgVX111X1N1V1U1X9xmmueUBV/VFVHa+q66rq4r3G\n1VwCABxM30jy7O7+wSQ/lOR5VfW0U6756ST/3N1PSPJfkvzmXoNqLgEADqDe8pXtp+dsP069u87l\nSd6x/fPVSZ5TVbXbuGevtcptVQ/u5Lwxhp7XIx87dwXjedjcBYxklL/DN8Q35i5gHGf/i7vnLmEU\nJ79w7twljOYpj5y7AlZ1IrfOXcLa3fGZL+Vrt9+1a9OzCZ5Q1V+d6LNuTW5K8vUdLx3p7iM7r6mq\ns5Jcn+QJSd7Y3dedMswFSW5Jku4+WVV3JHlkktvP9Lkj/af3vCRXjjP0nH7i8NwVjOdZcxcwkvPn\nLmBEx+cuYByPuOqzc5cwitve8bi5SxjN0Z+auwJW9Sv5j3OXsHbvPPSmuUsY5KtJfnaizzqcfL27\nD+12TXffm+SHquq8JP+9qp7U3Z/cccnpGvZd7x1uWhwA4IDr7i8l+XCS553y1okkFyVJVZ2d5LuT\nfHG3sTSXAAATqWxNG0/x2LOWqkdtJ5apqgcleW6Svz3lsmuS3Dc/8aIkH+zuXZPLJa9IAwDgzB6T\n5B3b6y6/K8kfd/f7q+p1SY529zVJ3prkD6vqeLYSyyv2GlRzCQAwkcrWluxN0N0fT/Lk07z+mh0/\nfz3Jv15lXNPiAACsjeQSAGAi9625XDLJJQAAa7P05hkAYGNs0prLsUguAQBYG8klAMBErLkEAIAV\nLL15BgDYGNZcAgDACjSXAACsjWlxAICJ2NADAAArWHrzDACwMWzoAQCAFUguAQAmYs0lAACsYOnN\nMwDAxrDmEgAAVjCouayq51XVp6rqeFW9auyiAACW6L7kcorHXPZsLqvqrCRvTPL8JE9M8uKqeuLY\nhQEAsP8MWXP51CTHu/vTSVJV70lyeZKbxywMAGCJlr7hZci0+AVJbtnx/MT2a9+iqq6sqqNVdTT5\n6rrqAwBgHxnSPNdpXutve6H7SJIjSVL12G97HwDgoLNbfMuJJBfteH5hks+NUw4AAPvZkOTyo0ku\nrapLkvxDkiuS/NtRqwIAWKCDcIeePf983X2yql6e5ANJzkrytu6+afTKAADYdwY1z919bZJrR64F\nAIB9bunJLADAxrChBwAAViC5BACYyEHY0CO5BABgbZbePAMAbAxrLgEAYAWSSwCAiVhzCQAAK1h6\n8wwAsDGsuQQAgBVILgEAJmLNJQAArGDpzTMAwMaw5hIAAFYguQQAmIjkEgAAVqC5BABgbUyLAwBM\naOnNl+QSAIC1WXrzDACwMSrJOVN1Xycn+pxTSC4BAFibcXrnemzygMOjDD2rtx+eu4LxfN/huStg\nVf84dwHj+NIXzpu7hHEs9Ptif7o9j5y7hLU7uU8mY6uSsyWXAAAwzP5o8wEAFqAqOeesuasYl+QS\nAIC1kVwCAExk0jWXM5FcAgCwNgvvnQEANsek51zORHIJAMDaLLx3BgDYIJXEbnEAABhGcgkAMJXK\n4rsvySUAAGujuQQAYG0WHswCAGwQ0+IAADDcwntnAIANs/DuS3IJAMDaLLx3BgDYIA5RBwCA4SSX\nAABTsVscAACGW3jvDACwQSSXAAAw3MJ7ZwCADWO3OAAADCO5BACYijWXAAAw3MJ7ZwCADSK5BACA\n4TSXAACszcKDWQCADeMoIgAAGEZyCQAwFRt6AABgOM0lAMBU7ksup3jsVUrVRVX1oao6VlU3VdVV\np7nmWVV1R1XduP14zV7jLjyYBQDgDE4meWV331BVD0tyfVX9eXfffMp1f9ndlw0dVHMJADCVDVpz\n2d23Jrl1++cvV9WxJBckObW5XIlpcQCAZTq/qo7ueFx5pgur6uIkT05y3WnefnpV/U1V/c+q+oG9\nPnRDemcAgANiunMub+/uQ3tdVFUPTfLeJK/o7jtPefuGJI/v7q9U1QuS/EmSS3cbT3IJAHBAVdU5\n2Wos39Xd7zv1/e6+s7u/sv3ztUnOqarzdxtTcgkAMJUNWnNZVZXkrUmOdffrz3DNo5P8U3d3VT01\nW8HkF3Ybd0P+eAAATOyZSV6S5BNVdeP2a7+e5HFJ0t1vTvKiJD9fVSeTfC3JFd3duw2quQQAmMoG\nJZfd/ZFsVbTbNW9I8oZVxrXmEgCAtdmQ3hkA4ACoTLlbfBaSSwAA1kZyCQAwlQ1aczkWySUAAGuj\nuQQAYG0WHswCAGyYhXdfkksAANZm4b0zAMAGcRQRAAAMJ7kEAJiKo4gAAGC4cXrnxyb5xVFGntej\nD89dwXheenjuCsZx2eG5KxjP++cuYBz3vPzcuUsYx+G5CxjRr81dAKu6Ow+Yu4S169TcJQwjuQQA\ngOEW3jsDAGyYhXdfkksAANZm4b0zAMAGcc4lAAAMJ7kEAJiK3eIAADDcwntnAIANIrkEAIDhNJcA\nAKzNwoNZAIAN4ygiAAAYRnIJADAVG3oAAGC4hffOAAAbRHIJAADDLbx3BgDYIJJLAAAYbuG9MwDA\nhnHOJQAADCO5BACYijWXAAAw3MJ7ZwCADSK5TKrqoqr6UFUdq6qbquqqKQoDAGD/GdI7n0zyyu6+\noaoeluT6qvrz7r555NoAAJbnoO8W7+5bu/uG7Z+/nORYkgvGLgwAgP1npQ09VXVxkicnue40711Z\nVUer6mjuum091QEAsK8MXlJaVQ9N8t4kr+juO099v7uPJDmSJHXhoV5bhQAAS2FDz5aqOidbjeW7\nuvt945YEAMB+tWfvXFWV5K1JjnX368cvCQBgoSSXSZJnJnlJkmdX1Y3bjxeMXBcAAPvQnr1zd38k\nW302AAD3R8VRRAAAMNTCZ/0BADaINZcAADDcwntnAIANs/DuS3IJAMDaLLx3BgDYINZcAgDAcAvv\nnQEANohzLgEAYDjJJQDAVKy5BACA4TSXAACszcKDWQCADbPw7ktyCQDA2iy8dwYA2CCOIgIAgOEk\nlwAAU3EUEQAADLfw3hkAYINILgEAYLiF984AABtm4bvFR2kuv//RN+Wdv/bEMYae1SNz+9wljOa1\nP/Ubc5cwinfU4blLGM8nD89dwSj6tgfNXcIoXvq135u7hBH9/NwFsKL/9nM/PXcJa3fo7+eugPtI\nLgEApmLNJQAADLfw3hkAYINILgEAYLiF984AABtEcgkAAMNpLgEAWJuFB7MAABtm4YeoSy4BAFgb\nySUAwFRs6AEAgOEW3jsDAGwQySUAAAy38N4ZAGDD2C0OAMDSVNVFVfWhqjpWVTdV1VWnuaaq6ner\n6nhVfbyqfnivcSWXAABT2aw1lyeTvLK7b6iqhyW5vqr+vLtv3nHN85Ncuv34kSRv2v7rGUkuAQAO\noO6+tbtv2P75y0mOJbnglMsuT/IHveWvkpxXVY/ZbdzN6Z0BAJZu2uTy/Ko6uuP5ke4+croLq+ri\nJE9Oct0pb12Q5JYdz09sv3brmT5UcwkAsEy3d/ehvS6qqocmeW+SV3T3nae+fZpf6d3G01wCAExl\ns9ZcpqrOyVZj+a7uft9pLjmR5KIdzy9M8rndxrTmEgDgAKqqSvLWJMe6+/VnuOyaJP9ue9f405Lc\n0d1nnBJPNqp3BgBYvt6ccy6fmeQlST5RVTduv/brSR6XJN395iTXJnlBkuNJvprkZXsNqrkEADiA\nuvsjOf2ayp3XdJJfWGVc0+IAAKyN5BIAYCJdyb0L774klwAArM3Ce2cAgA0iuQQAgOEW3jsDAGyO\nruTkWVNle9+c6HO+leQSAIC1kVwCAEykq3Lv2VO1X3dP9DnfSnIJAMDaSC4BACZ071mbc//HMUgu\nAQBYG8klAMBEOpV7I7kEAIBBJJcAABPpVE5KLgEAYBjJJQDAhO5dePsluQQAYG00lwAArM2yc1kA\ngA3iKCIAAFiB5BIAYCKSSwAAWIHkEgBgQpJLAAAYSHIJADARt38EAIAVSC4BACaytVt82e2X5BIA\ngLVZdusMALBh7BYHAICBRkkuj33+B/KU3zk6xtDzOn/uAkb0M3MXMJIlf2dPOjx3BaM49/Y75i5h\nFPc86OFzlzCat39t7gpY1Uvf/Htzl7B2nzn6n+cuYRB36AEAgBVYcwkAMJFOnHMJAABDaS4BAFgb\n0+IAAJNxiDoAAAy27NYZAGCDOIoIAABWILkEAJiQ5BIAAAaSXAIATMSaSwAAWIHkEgBgIp1y+0cA\nABhKcgkAMCF36AEAgIGW3ToDAGwQu8UBAGAFkksAgIlILgEAYAWaSwAA1sa0OADAhByiDgAAA0ku\nAQAmsrWhZ9nt1+DksqrOqqqPVdX7xywIAID9a5XW+aokx5I8fKRaAAAWzVFE26rqwiQ/nuQt45YD\nAMB+NjS5/O0kv5rkYWe6oKquTHJlkuQRj7vfhQEALNGBTy6r6rIkn+/u63e7rruPdPeh7j6Uhz5q\nbQUCALB/DEkun5nkhVX1giQPTPLwqnpnd//kuKUBACxLp5xz2d2v7u4Lu/viJFck+aDGEgCA01n2\nQUsAABvkIJxzudKfrrs/nOTDo1QCAMC+t+zWGQBgwxz43eIAADCU5BIAYCLu0AMAACvQXAIAsDam\nxQEAJmJaHAAAViC5BACY0IG//SMAAAwluQQAmMhBuP2j5BIAgLVZdusMALBB7BYHAIAVSC4BACYk\nuQQAgIEklwAAE+mUcy4BAGAoySUAwESccwkAwCJV1duq6vNV9ckzvP+sqrqjqm7cfrxmyLjLbp0B\nADbMBu0Wf3uSNyT5g12u+cvuvmyVQSWXAAAHUHf/RZIvrnvcUZLLp3zt+hw9VmMMPa/Pz13AiH52\n7gJGsuTv7JK5CxhHnT93BePoq35j7hJG1HMXwIourv8wdwlrd+7cBQw08R16zq+qozueH+nuIyuO\n8fSq+pskn0vyK919016/YFocAGCZbu/uQ/fj929I8vju/kpVvSDJnyS5dK9fMi0OAMC36e47u/sr\n2z9fm+Scqr3nlySXAAAT2qANPbuqqkcn+afu7qp6arZCyS/s9XuaSwCAA6iq3p3kWdlam3kiyWuT\nnJMk3f3mJC9K8vNVdTLJ15Jc0d17LrLWXAIATGSTbv/Y3S/e4/03ZOuoopVYcwkAwNpILgEAJuL2\njwAAsIJlt84AABtmv+wW/05JLgEAWBvJJQDARCa+/eMsJJcAAKyN5BIAYCKbdM7lWCSXAACsjeQS\nAGBCzrkEAICBlt06AwBsELvFAQBgBZpLAADWxrQ4AMBETIsDAMAKJJcAABOSXAIAwECSSwCAibj9\nIwAArEByCQAwka3d4stuvySXAACszbJbZwCADWO3OAAADCS5BACYiDv0AADACiSXAAATcc4lAACs\nQHIJADAh51wCAMBAmksAANZm2bksAMAGcRQRAACsQHIJADARySUAAKxAcgkAMCGHqAMAwECSSwCA\niWytuVx2+yW5BABgbZbdOgMAbBC7xQEAYAWSSwCACUkuAQBgIMklAMBErLkEAIAVSC4BACbScYce\nAAAYTHMJAMDajDItfv0DnpK65OgYQ8/r6XMXMKKfm7uAkTx37gJG9J/mLmAkJ74+dwWjqAvnrmA8\n/dtzV8Cq/m+/de4S1u4bh143dwkDuf0jAAAMtuzWGQBggziKCAAAViC5BACYkOQSAAAGklwCAEyk\nUw5RBwCAoSSXAAATaedcAgDAcMtunQEANozd4gAAMJDkEgBgIu7QAwAAK5BcAgBMpFO595uSSwAA\nGERzCQDA2pgWBwCYSicnT5oWBwCAQSSXAAAT6a7ce3LZ7ZfkEgCAtVl26wwAsEG2kktrLgEAYBDJ\nJQDAVDqSSwAAGGpQcllV5yV5S5InJekk/767/8+YhQEALE135eQ9y04uh06L/06SP+3uF1XVuUke\nPGJNAADsU3s2l1X18CQ/muSlSdLddye5e9yyAACWqPLNe5e95WXImsvvSXJbkt+vqo9V1Vuq6iGn\nXlRVV1bV0ao6mrtuW3uhAABsviHN5dlJfjjJm7r7yUnuSvKqUy/q7iPdfai7D+Uhj1pzmQAAC9BJ\nTp41zWMmQ5rLE0lOdPd128+vzlazCQAA32LPSf/u/sequqWqvre7P5XkOUluHr80AICF6Zo1VZzC\n0BWlv5jkXds7xT+d5GXjlQQAwH41qLns7huTHBq5FgAA9jl36AEAmEonOVnTPPZQVW+rqs9X1SfP\n8H5V1e9W1fGq+nhVDdpzo7kEADiY3p7kebu8//wkl24/rkzypiGDLvsUTwCATXNy7gK2dPdfVNXF\nu1xyeZI/6O5O8ldVdV5VPaa7b91tXMklAMAynX/fDW62H1eu+PsXJLllx/MT26/tSnIJADCVzpTJ\n5e3dfX82ZJ9u4Wbv9UuSSwAATudEkot2PL8wyef2+iXJJQDAVKZNLu+va5K8vKrek+RHktyx13rL\nRHMJAHAgVdW7kzwrW2szTyR5bZJzkqS735zk2iQvSHI8yVcz8CY6mksAgKl0knvmLmJLd794j/c7\nyS+sOq41lwAArI3kEgBgKp3k3rmLGJfkEgCAtZFcAgBMaf/sFv+OSC4BAFgbySUAwFT21zmX3xHJ\nJQAAa6O5BABgbUyLAwBMxbQ4AAAMJ7kEAJiK5BIAAIYbJ7n8riQPHGXkeS055/3w3AWM5Pyeu4Lx\nvLzmrmAUT73gurlLGMVf/9XhuUsYTdXhuUsYRffhuUsYzTPyv+cuYe0+krvmLmEYySUAAAy35CwO\nAGDzSC4BAGAYySUAwFQ6yT1zFzEuySUAAGsjuQQAmEonuXfuIsYluQQAYG0klwAAU3HOJQAADCe5\nBACYiuQSAACG01wCALA2psUBAKZiWhwAAIaTXAIATElyCQAAw0guAQCmYs0lAAAMJ7kEAJiK5BIA\nAIaTXAIATKWT3DN3EeOSXAIAsDaSSwCAqXSSe+cuYlySSwAA1kZyCQAwJbvFAQBgGMklAMBUnHMJ\nAADDaS4BAFgb0+IAAFMxLQ4AAMNJLgEApuL2jwAAMJzkEgBgKm7/CAAAw0kuAQCmZLc4AAAMI7kE\nAJiKcy4BAGA4ySUAwFSccwkAAMNJLgEApuKcSwAAGE5yCQAwFbvFAQBgOM0lAABrY1ocAGBKpsUB\nAGAYySUAwFQcog4AAMNJLgEApuIQdQAAGE5yCQAwlQNwiPo4zeUtSV4xysjzumzuAkZ0aO4CRnJ+\nzV3BeI7PXcA4/vr7njF3CeP407kLGE/34blLGEXV4blLGM2Le3n/nN2V/zV3CWyTXAIATOUAJJfW\nXAIAsDaSSwCAqTjnEgAAhpNcAgBMyTmXAAAwjOQSAGAqdosDAMBwkksAgKlILgEAYDjNJQAAa2Na\nHABgKg5RBwCA4SSXAABT6ThEHQCAZaqq51XVp6rqeFW96jTvv7SqbquqG7cfP7PXmJJLAIApbchR\nRFV1VpI3JvmxJCeSfLSqrunum0+59I+6++VDx5VcAgAcTE9Ncry7P93ddyd5T5LL7++gmksAgKnc\nd4j6FI/k/Ko6uuNx5SnVXJDklh3PT2y/dqp/VVUfr6qrq+qivf6IpsUBAJbp9u4+tMv7dZrX+pTn\n/yPJu7v7G1X1c0nekeTZu32o5hIAYCqbdc7liSQ7k8gLk3xu5wXd/YUdT/9rkt/ca1DT4gAAB9NH\nk1xaVZdU1blJrkhyzc4LquoxO56+MMmxvQaVXAIATGWDzrns7pNV9fIkH0hyVpK3dfdNVfW6JEe7\n+5okv1RVL8zWKs4vJnnpXuNqLgEADqjuvjbJtae89podP786yatXGXNQc1lVv5zkZ7LVb38iycu6\n++urfBAAwIF3327xBdtzzWVVXZDkl5Ic6u4nZSs2vWLswgAA2H+GToufneRBVXVPkgfnlJ1EAAAM\ndNCTy+7+hyS/leSzSW5Nckd3/9mp11XVlfcd0pnctv5KAQDYeEOmxR+RrVsBXZLksUkeUlU/eep1\n3X2kuw9tHdb5qPVXCgDAxhsyLf7cJH/X3bclSVW9L8kzkrxzzMIAABZnsw5RH8WQQ9Q/m+RpVfXg\nqqokz8mAAzQBADh49kwuu/u6qro6yQ3ZWoL6sSRHxi4MAGBxNugQ9bEM2i3e3a9N8tqRawEAYJ9z\nhx4AgKk4RB0AAIaTXAIATEVyCQAAw0kuAQCm4pxLAAAYTnIJADClhZ9zKbkEAGBtJJcAAFPquQsY\nl+QSAIC10VwCALA2mksAANZGcwkAwNpoLgEAWBvNJQAAa6O5BABgbTSXAACsjUPUAQAm00numbuI\nUUkuAQBYG8klAMBkOsnJuYsYleQSAIC1GSe5fGKSPx5l5Fmd8+g75y5hNPd85uFzlzCOR3997grG\n87cPnLuCUfzLx3947hJG8ZHLfmzuElhR9+G5SxhN1eG5SxjB3XMXMJA1lwAAMJg1lwAAk7HmEgAA\nBpNcAgBMxppLAAAYTHIJADAZySUAAAymuQQAYG1MiwMATMpRRAAAMIjkEgBgMjb0AADAYJJLAIDJ\nuP0jAAAMJrkEAJiMNZcAADCY5BIAYDLWXAIAwGCSSwCAyVhzCQAAg0kuAQAmY80lAAAMJrkEAJiM\nNZcAADCY5hIAgLUxLQ4AMBkbegAAYDDJJQDAZGzoAQCAwSSXAACTsuYSAAAGkVwCAEzGmksAABhM\ncgkAMBnJJQAADCa5BACYjDv0AADAYJJLAIDJWHMJAACDSS4BACZjzSUAAAymuQQAYG1MiwMATMaG\nHgAAGExyCQAwGRt6AABgMMklAMBkrLkEAIDBJJcAAJOx5hIAAAaTXAIATMaaSwAAFqqqnldVn6qq\n41X1qtO8/4Cq+qPt96+rqov3GlNyCQAwmc1Zc1lVZyV5Y5IfS3IiyUer6pruvnnHZT+d5J+7+wlV\ndUWS30zyb3YbV3IJAHAwPTXJ8e7+dHffneQ9SS4/5ZrLk7xj++erkzynqmq3QcdJLm++/vY8qf5+\nlLG/3flJbp/ig5a9QmIyk31frM2k39lHpvqgZZv0O9v1vzIM5d+N99/j5y5gmFs/kBw+f6IPe2BV\nHd3x/Eh3H9nx/IIkt+x4fiLJj5wyxv+/prtPVtUdSR6ZXf5+HaW57O5HjTHu6VTV0e4+NNXncf/4\nvvYf39n+4zvbf3xnB0d3P2/uGnY43f8b9ndwzbcwLQ4AcDCdSHLRjucXJvncma6pqrOTfHeSL+42\nqOYSAOBg+miSS6vqkqo6N8kVSa455ZprkvzU9s8vSvLB7t41uVzCbvEje1/CBvF97T++s/3Hd7b/\n+M6Y3PYaypcn+UCSs5K8rbtvqqrXJTna3dckeWuSP6yq49lKLK/Ya9zao/kEAIDBTIsDALA2mksA\nANZm3zaXe92uiM1SVRdV1Yeq6lhV3VRVV81dE8NU1VlV9bGqev/ctbC7qjqvqq6uqr/d/mft6XPX\nxO6q6pe3/534yap6d1U9cO6a4P7al83ljtsVPT/JE5O8uKqeOG9V7OFkkld29/cneVqSX/Cd7RtX\nJTk2dxEM8jtJ/rS7vy/JD8b3ttGq6oIkv5TkUHc/KVsbKvbcLAGbbl82lxl2uyI2SHff2t03bP/8\n5Wz9R++CeatiL1V1YZIfT/KWuWthd1X18CQ/mq2dnenuu7v7S/NWxQBnJ3nQ9vmBD863nzEI+85+\nbS5Pd7sijco+UVUXJ3lykuvmrYQBfjvJryb55tyFsKfvSXJbkt/fXsbwlqp6yNxFcWbd/Q9JfivJ\nZ5PcmuSO7v6zeauC+2+/Npcr34qIzVBVD03y3iSv6O47566HM6uqy5J8vruvn7sWBjk7yQ8neVN3\nPznJXUmsR99gVfWIbM26XZLksUkeUlU/OW9VcP/t1+ZyyO2K2DBVdU62Gst3dff75q6HPT0zyQur\n6jPZWnry7Kp657wlsYsTSU50930zAldnq9lkcz03yd91923dfU+S9yV5xsw1wf22X5vLIbcrYoNU\nVWVrLdix7n793PWwt+5+dXdf2N0XZ+ufsQ92t1RlQ3X3Pya5paq+d/ul5yS5ecaS2Ntnkzytqh68\n/e/I58QmLBZgX97+8Uy3K5q5LHb3zCQvSfKJqrpx+7Vf7+5rZ6wJluYXk7xr+3+6P53kZTPXwy66\n+7qqujrJDdk6UeNjcRtIFsDtHwEAWJv9Oi0OAMAG0lwCALA2mksAANZGcwkAwNpoLgEAWBvNJQAA\na6O5BABgbf4fNVk/fwbmt7YAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "R = resistance_distance(users)\n", "R_ = R[users_test_idx, :][:, users_test_idx]\n", "print(f\"Resistance Distance Matrix (Directed, Extract):\\n\\n{R_}\\n\\n\\nRepresentation:\")\n", "visualize_matrix(R_)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resistance Distance Matrix (Misdirected, Extract):\n", "\n", "[[ 0. 0.66666667 0.86666667 1.86666667 0.86666667 2.46666667\n", " 0.86666667 inf inf 1.46666667]\n", " [ 0.66666667 0. 0.86666667 1.86666667 0.86666667 2.46666667\n", " 0.86666667 inf inf 1.46666667]\n", " [ 0.86666667 0.86666667 0. 1.4 0.4 2.4 0.4\n", " inf inf 1.4 ]\n", " [ 1.86666667 1.86666667 1.4 0. 1. 3.4 1.4\n", " inf inf 2.4 ]\n", " [ 0.86666667 0.86666667 0.4 1. 0. 2.4 0.4\n", " inf inf 1.4 ]\n", " [ 2.46666667 2.46666667 2.4 3.4 2.4 0. 2.4\n", " inf inf 3. ]\n", " [ 0.86666667 0.86666667 0.4 1.4 0.4 2.4 0.\n", " inf inf 1.4 ]\n", " [ inf inf inf inf inf inf\n", " inf 0. inf inf]\n", " [ inf inf inf inf inf inf\n", " inf inf 0. inf]\n", " [ 1.46666667 1.46666667 1.4 2.4 1.4 3. 1.4\n", " inf inf 0. ]]\n", "\n", "\n", "Representation:\n" ] }, { "data": { "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "R_tight = resistance_distance(misdirect(users))\n", "R_ = R_tight[users_test_idx, :][:, users_test_idx]\n", "print(f\"Resistance Distance Matrix (Misdirected, Extract):\\n\\n{R_}\\n\\n\\nRepresentation:\")\n", "visualize_matrix(R_)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Resistance Distance Matrix (Loose, Extract):\n", "\n", "[[ 0. 0.375 0.69920635 0.76587302 0.6547619 0.98809524\n", " 0.69920635 0.75 0.375 0.92142857]\n", " [ 0.375 0. 0.74087302 0.80753968 0.69642857 1.0297619\n", " 0.74087302 0.79166667 0.5 0.96309524]\n", " [ 0.69920635 0.74087302 0. 0.6 0.37777778 1.04444444\n", " 0.4 0.94920635 0.74087302 0.97777778]\n", " [ 0.76587302 0.80753968 0.6 0. 0.44444444 1.11111111\n", " 0.6 1.01587302 0.80753968 1.04444444]\n", " [ 0.6547619 0.69642857 0.37777778 0.44444444 0. 1.\n", " 0.37777778 0.9047619 0.69642857 0.93333333]\n", " [ 0.98809524 1.0297619 1.04444444 1.11111111 1. 0.\n", " 1.04444444 1.23809524 1.0297619 1.26666667]\n", " [ 0.69920635 0.74087302 0.4 0.6 0.37777778 1.04444444\n", " 0. 0.94920635 0.74087302 0.97777778]\n", " [ 0.75 0.79166667 0.94920635 1.01587302 0.9047619 1.23809524\n", " 0.94920635 0. 0.79166667 1.17142857]\n", " [ 0.375 0.5 0.74087302 0.80753968 0.69642857 1.0297619\n", " 0.74087302 0.79166667 0. 0.96309524]\n", " [ 0.92142857 0.96309524 0.97777778 1.04444444 0.93333333 1.26666667\n", " 0.97777778 1.17142857 0.96309524 0. ]]\n", "\n", "\n", "Representation:\n" ] }, { "data": { "image/png": "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\nAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "R_loose = resistance_distance(loosen(users))\n", "R_ = R_loose[users_test_idx, :][:, users_test_idx]\n", "print(f\"Resistance Distance Matrix (Loose, Extract):\\n\\n{R_}\\n\\n\\nRepresentation:\")\n", "visualize_matrix(R_)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Whole Network Analysis\n", "\n", "There's still some information concerning the whole network that is waiting to be extracted from the data. The two thigs we are going to analyse are:\n", "- The size and number of single subnets (that are unconnecterd)\n", "- The average distances between users.\n", "\n", "For the former, we are using a function called `propagate`. This function will begin at a node and spread out from there, walking along the arrows and \"collecting\" all nodes it reaches into one subnet. The function is called several times (from a function called `subnets`) until there are no new subnets. \n", "\n", "Because the point here is mainly to find big clusters, we will first loosen the network so that every user who is connected to the network will be part of it. If we don't do this, every user who is not \"accessible\" from the cluster, but does him-/herself access the cluster, would be its on \"subnet\" including the whole cluster, if that makes sense." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def propagate(network, a):\n", " net = {a: network[a]} # The subnet to be built up\n", " history = set() # Nodes already seen\n", " cache = set(network[a]) # Nodes to be crawled\n", " \n", " while cache:\n", " for node in cache.copy():\n", " net[node] = list(set(net.get(node, []) + network[node])) # Add node to subnet\n", " cache |= {n for n in net[node] if n not in history} # Add all newly accessible nodes to cache\n", " \n", " # We're done with this node\n", " history.add(node)\n", " cache.remove(node)\n", " \n", " return net" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def subnets(network):\n", " nets = [] # The subnets to be found\n", " nodes = set() # Already processed nodes\n", " \n", " for node in network:\n", " if node not in nodes:\n", " subnet = propagate(network, node)\n", " nets.append(subnet) # Add the subnet reachable from `node`\n", " nodes.update(subnet.keys()) # A node can only be in one subnet -> ignore all nodes in `subnet`\n", " \n", " return nets" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "There are 9 subnets in the network, 8 of which are isolated (population: 1 user). \n", "The biggest subnet has 24 members, making up 75.0% of the whole network. \n", "The average separation S of this largest cluster and its average resistance distance R are:\n", "S = 2.0217391304347827\n", "R = 1.1016908212560383Ω.\n", "\n" ] } ], "source": [ "nets = subnets(loosen(users))\n", "largest = 0, 0\n", "connected = 0\n", "isolated = 0\n", "\n", "for i, net in enumerate(nets):\n", " if len(net) > largest[1]:\n", " largest = i, len(net)\n", " if len(net) == 1:\n", " isolated += 1\n", "\n", "cluster = nets[largest[0]]\n", "percent = largest[1] / len(users) * 100\n", "\n", "S_ = separation(cluster)\n", "s = S_.sum() / (S_.size - len(S_)) # Average separation, remove 0° separations from calculation\n", " \n", "R_ = resistance_distance(cluster)\n", "r = R_.sum() / (R_.size - len(R_)) # Average resistance, remove 0° separations from calculation\n", "\n", "print(f\"\"\"\n", "There are {len(nets)} subnets in the network, {isolated} of which are isolated (population: 1 user). \n", "The biggest subnet has {largest[1]} members, making up {percent}% of the whole network. \n", "The average separation S of this largest cluster and its average resistance distance R are:\n", "S = {s}\n", "R = {r}Ω.\n", "\"\"\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Export Data\n", "\n", "To use all this data on the website, we need to export everything computed here as a `pickle` file." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "users = json.load(open('users.json')) # Conversion Table: {username: user-id} (Created with API-method `kevinBacon`)\n", "\n", "with open(\"kevinBacon.pickle\", 'wb') as f:\n", " pickle.dump({\n", " 'dt': dt,\n", " 'users': users,\n", " 'uids': uids,\n", " 'S': S.tolist(),\n", " 'S_loose': S_loose.tolist(),\n", " 'S_tight': S_tight.tolist(),\n", " 'R': R.tolist(),\n", " 'R_loose': R_loose.tolist(),\n", " 'R_tight': R_tight.tolist(),\n", " 's': float(s),\n", " 'r': float(r),\n", " 'subnets': len(nets),\n", " 'isolated': isolated,\n", " 'largest': largest[1],\n", " 'percent': percent,\n", " }, f, protocol=2)" ] } ], "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.2" } }, "nbformat": 4, "nbformat_minor": 1 }