Random_walks/main.ipynb

307 lines
95 KiB
Plaintext
Raw Normal View History

2021-06-28 11:15:03 +02:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "3580fb47",
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"import numpy as np\n",
"import networkx as nx\n",
"import sklearn.preprocessing\n",
"from matplotlib.pylab import show, cm, axis\n",
"\n",
"def draw(G, A, cluster_map):\n",
"\n",
" graph = nx.Graph(G)\n",
" clust_map = {}\n",
" for k, vals in cluster_map.items():\n",
" for v in vals:\n",
" clust_map[v] = k\n",
"\n",
" colors = []\n",
" for i in range(len(G.nodes())):\n",
" colors.append(clust_map.get(i, 100))\n",
" \n",
" nx.draw_networkx(graph,node_color =colors,linewidths=7)\n",
" axis(\"off\")\n",
" show(block=False)\n",
"\n",
"def normalize(A):\n",
"# Normalize the columns of the given matrix\n",
" return sklearn.preprocessing.normalize(A, norm=\"l1\", axis=0)\n",
"\n",
"def inflate(A, inflate_factor):\n",
"# Apply cluster inflation to the given matrix by raising each element to the given power.\n",
" return normalize(np.power(A, inflate_factor))\n",
"\n",
"def expand(A, expand_factor):\n",
"# Apply cluster expansion to the given matrix by raising the matrix to the given power.\n",
" return np.linalg.matrix_power(A, expand_factor)\n",
"\n",
"def add_diag(A, mult_factor):\n",
"# Add self-loops to the matrix by setting the diagonal to 1\n",
" return A + mult_factor * np.identity(A.shape[0])\n",
"\n",
"def get_clusters(A):\n",
" clusters = []\n",
" for i, r in enumerate((A>0).tolist()): # Pętla po każdym node, jeśli nie jest listą samych \n",
" # False to dodajemy do tablicy klastrów\n",
" if r[i]:\n",
" clusters.append(A[i,:]>0)\n",
" clust_map ={}\n",
" for cn , c in enumerate(clusters): # Pętla po tablicy klastrów i zamiana wartości True na dany węzęł\n",
" for x in [ i for i, x in enumerate(c) if x ]:\n",
" clust_map[cn] = clust_map.get(cn, []) + [x]\n",
" return clust_map\n",
"\n",
"def stop(M, i):\n",
" if i%5==4:\n",
" m = np.max( M**2 - M) - np.min( M**2 - M)\n",
" if m==0:\n",
" print(\"Stop at iteration %s\" % i)\n",
" return True\n",
" return False\n",
"\n",
"\n",
"def mcl(M, max_loop = 10):\n",
" expand_factor = 2\n",
" inflate = 2\n",
" M = add_diag(M, 1)\n",
" M = normalize(M)\n",
" \n",
" for i in range(max_loop):\n",
" M = expand(M, expand_factor)\n",
" M = inflate(M, inflate_factor)\n",
" \n",
" if stop(M, i): break\n",
"\n",
" clusters = get_clusters(M)\n",
" return M, clusters\n",
"\n",
"def networkx_mcl(G, max_loop = 50):\n",
" A = nx.adjacency_matrix(G)\n",
" return mcl(np.array(A.todense()), expand_factor, inflate_factor, max_loop, mult_factor)\n",
"\n",
"\n",
"def calculate_and_draw(Graph): \n",
" M = nx.to_numpy_matrix(Graph)\n",
" print(\" number of nodes: %s\\n\" % M.shape[0])\n",
" \n",
" M, clusters = networkx_mcl(Graph)\n",
" [print(key, \": \", value) for key, value in clusters.items()]\n",
" \n",
" draw(Graph, M, clusters)\n",
"\n",
"\n",
"# https://networkx.org/documentation/stable/reference/generators.html"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "dying-impact",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" number of nodes: 16\n",
"\n",
"Stop at iteration 14\n",
"0 : [0, 1]\n",
"1 : [2, 3]\n",
"2 : [4, 5]\n",
"3 : [6, 7]\n",
"4 : [8, 9]\n",
"5 : [10, 12]\n",
"6 : [11, 13]\n",
"7 : [14, 15]\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G_bin = nx.binomial_tree(4) # Returns the Binomial Tree of order n.\n",
"calculate_and_draw(G_bin)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "wooden-harbor",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" number of nodes: 15\n",
"\n",
"0 : [0, 1, 3, 7, 8]\n",
"1 : [0, 1, 4, 9, 10]\n",
"2 : [0, 2, 5, 11, 12]\n",
"3 : [0, 2, 6, 13, 14]\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAuw0lEQVR4nO3deXyUxf3A8c88OUhIgHC63PcCIqgrxCoe1TYa7zPeWq1WXWxtY6vVaH/W2kZtrdG2Eu8TtTWitlaMxgvF1gYJWo/CKveR5T5DQo5nfn/McsVk99ndZ5NN8n2/Xnmhm5nvThS+zM4z8x2ltUYIIUTbsNp7AEII0ZVI0hVCiDYkSVcIIdqQJF0hhGhDknSFEKINpbb3AITobOygdyLwCjA2yq4auBe42fIEbNcHJpKCki1jQrjHDnqnAa8DveII8xJwkeUJNLgzKpFMJOkK4ZLQDPcj4ku4uz0BXGV5AvIHtJORNV0hXGAHvd2Al3En4QL8ELjSpVgiichMV3RIdtDbCzgbmAr0BzKAbcAq4B3g7bZcF7WD3muBUpfDrgWGWZ5AvctxRTuSpCs6FDvonQxMBy4BssI0XYpJgk9ansCGBI9JAZ8BkxIQ/nzLE3gxAXFFO5HlBdEh2EFvlh30PoVJbtcQPuECjAR+Dyyxg95Ef0yfRgsJ98EntpB74goyh3/DFT8N7nn9q0W7yD1xBX3HL6bv+MWccN4qvlq0q7XY0xMzZNFeZKYrkp4d9PYHZgNT4gjzB+CXiXgwZQe9pcC1zV9/+fUdWBa89f5OautsnnzAA8CWrU1s2WYzfEgqtg0zntzK489v5dN3h7f2FkMtT2CV2+MW7UP26YqkZge92UA54Isz1I1APXBb3IP6thbHdvYp2QDM/6yOVdV7l5dzeqWQ0ysFAK01KSnwzdKwu8N8mLVq0QlI0hXJ7nHiT7i73WoHvZ9ZnkCZS/F26xdLpz7jFrOjxsa24Y4b+4ZtGtuwRDKSpCuSlh30HgWc53LYEjvofdXlgwfpsXTatGg0NTttnnlxG8OGpIVr2i22YYlkJA/SRDL7cQJiDgbOcDnm1lg7ZnW3uOayXlx+fZB1Gxpdjy+SjyRdkZTsoNcDnNP89dZ2BOzrzvs2kjLwa97+YGdr4d3eEbAsns62DTtrNaurW026y+OJL5KLJF2RrC6hheWvgQekUvSzPlxxQc8WOy1eVs9Lr+1g4AEp4WIfZwe9I90ZJgBvtfRiY6Omrs6mqQmamqCuzqaxUVMxp4YFn9fR1KTZtr2Jn/96Pb17WUwY2+IqxSZgvotjFe1Mkq5IVtNaevHsU7I586Rs+vZu+bfuj29Zz1239SM9TUWKf2Sc49vXs0Bt8xd/d/8mskYu5p6/bOa5WdvJGrmY392/iS3bbC72B+ntXczY7yxn8bIGZj8/mIyMFn+mx+VEWuciD9JEsjog2g5lr22nWzfFyd+LdG4CgAHRD6llliew2Q56n6dZrYTbf9GX23/R8q6EgtN6OAmtgYfjHqBIKjLTFcmqezSNt++wue2ujdx/Z3+nXRxl5ig8ALhd6+FVyxNY7HJM0c4k6YpktSOaxnfcu5FLzu3BiKFht17ta3v0Q2qd5Ql8DhS7GHId8FMX44kkIUlXJKvqaBq/O3cnf35sC4MmL2HQ5CWsXNPIBddU8/u/bHIlvkO3A8+5EKcGOM3yBFa6EEskGVnTFclqDnBu8xcbGzWNjXq/HQGpqYqKF4fQ0Li3rMLhJ63k3l/346TjW1xF0Jhi466yPAHbDnovx5SY9McYZh1wquUJzHNtYCKpyExXJKvniGJHQN8+KXgGpO75SrGgd68UsrNa/C3+uuUJrE7EoC1PoBG4Drhs46amb40/DI25pmeKJNzOTaqMiaRlB72PY25QcNvJlifwRgLi7qGUmpSaQsXyqpGFngGpVwB5rTTdADwGPGJ5AksTOSaRHCTpiqRlB72HAlVuxqyttVdmZlojEn2rhFLqVWCO1roE9pywOxToi6mlsBVYASyQCyi7Fkm6IqnZQe8MYl8f3Y/WWp9y8Zqtb76388/AnVrrhCQ7pVQuMAsYq7WuS8R7iI5Lkq5IanbQm44pYP49F8JdnzLw61mYj/MHAJdprb+MYiwKOAY4FhgE9AB2AuuBfwNvWp5AvVKqAijTWj/iwphFJyNJVyS9UCHzMiA/xhAauMHyBO4HUEop4CrMvtq7gfu11k1h3j8H+AFmxj0uzPsEq/5b99a5V1Yfs3xVozdRM2nRsUnSFR2CHfSmAr8GbgIcn4DA3LhwreUJvN78G0qpUcDTmJNkl2utv/Ugyw56rwLuJYqr1W1bN1mWuhu43fIEWk3momuSpCs6FDvoHYiZpV6DqY3bmo+AGcAsyxNo9dZHpVQKUAj8ErgFeFxrre2g18Ik28I4hvsacIHlCbRaY1J0PZJ0RYcUmvkeD+RirsvJxOwIWA28Y3kCX0QTTyl1EPAMsAb4UVP12BuAX7gw1NnAGaH9u0JI0hViN6VUOvCrH17Y8/pH7zug5YK9sbnX8gRudDGe6MAk6QqxDzvo7d7QoNekpSnHa7hOwgITLE8g4GJM0UHJMWAh9neBywkXzJ+za12OKTooSbpChIT24V7ntP1fX93OxKOX0WPUN4z9zjI+/DhsqYUr7KA3qhrBonOSKmNC7HUw4HPSsGJODbf8dgMvPOwh99AMqtdG3BmWA5wNzIxviKKjk5muEHsd5bThHfdu4rYb+vCdwzKxLMXggakMHhhxDnN0fMMTnYEkXSH28jhp1NSk+eSzOjZsbMJ7xDKG+Zbyk6J11NZGrKHjKL7o3CTpCrGXo3vT1q5voqEBZv1zB3NeHUJVxTA+/WIXv7u/1VsqdsuOf4iio5OkK8ReNU4aZWaY692vuzKHgQek0q9vCj+7Ooc33o148Cyqe99E5yRJV4i9gk4a9c5JYcigVNQ+r5kaOhGtjWlUolORpCvEXnOdNrz8/J48+MQW1m1oZPOWJh54ZDOnfD/i6sSH8Q1PdAayZUyIvT7D3FQRcdvYbYV92LCpifHTlpPRTVFwejZFP+0drstWTGFz0c5yy4uGAmcBBwG9MZPPLcAi4LXK/OL/JfL95RiwEPuwg94rMUXO3Xa/5QnEU7FMxCG3vMjCFMKfDpxO+E/57wGlwKuV+cWu10SWpCvEPkKnxlYCfdwMi9ReaDe55UWjgGeBI6PsuhC4rDK/2NXbmWVNV4h9hGrf3uBy2BJJuO0jt7xoCvAx0SdcgPHAnNzyotPcHJMkXSGasTyBp4E/uhTuDeBml2KJKOSWFx0IVAD94wiTCczKLS9y444+QJKuEK25CXggzhj/BM6VAuZtL7e8KBvz3z/HhXBpwMu55UXDXIglSVeIlliegG15Aj/DXAu0PcrujcBdwFlyVU+7uQEY6WK8nsDv3AgkD9KEiMAOensDl2NuAx7bWrsNm5oa+vVJuQd4xPIEVrbR8EQzueVFacByYKDLoeuBoZX5xeviCSL7dIWIwPIENgMldtD7AHAM8F3MH+iemKPD62t22vOGHrLkkfoGHtdaS8JtX2fSQsJd+49P2PD259QuXU+f7x7IqJ+fCoDd0MSSe/5OzddB6tdtZdw9F9Fz8vCW4qYDV2I+xcRMkq4QDlmegA28H/raTw+gvkGdBJyLuUVYtJ8ftvRiWt8eDLpgGlvnL8Gu33+ZPXviEA44cyqLi19xEjuupCtrukK4pwwoaO9BCKa19GKfaePofaSX1J6Z+71upaXgOSuXHgcNBStiShyTW140IJ7BSdIVwj3vAaOUUiPaeyBdVW55USbmg0ciHRBPZ0m6QrhEa90AvIpZYhDtw1FN5DjFVRdZkq4Q7noRWWJoT21RszjaLYT7kaQrhLtkiaEdVeYX12EqhiWSo7rLrZGkK4SLtNaNwCvIEkN7+qClF3WTjV3fiLY12KF/bjL32tn1jXt2NOiGJvO9ls8w/K8yv3hDPIOTLWNCuK8Mc3pJto4BueVFqcAwzJFchZmJrqzML65PxPs1bq99OrVH5unNX1/zwkeseW5vnfqN737JoIuPYvAlR/P5jx6hft1
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G_balanced = nx.balanced_tree(2,3) # Returns the perfectly balanced r-ary tree of height h.\n",
"calculate_and_draw(G_balanced)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "perceived-principal",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" number of nodes: 31\n",
"\n",
"0 : [0, 1]\n",
"1 : [0, 2]\n",
"2 : [3, 7, 15, 16]\n",
"3 : [3, 8, 17, 18]\n",
"4 : [4, 9, 19, 20]\n",
"5 : [4, 10, 21, 22]\n",
"6 : [5, 11, 23, 24]\n",
"7 : [5, 12, 25, 26]\n",
"8 : [6, 13, 27, 28]\n",
"9 : [6, 14, 29, 30]\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G_balanced = nx.balanced_tree(2,4) # Returns the perfectly balanced r-ary tree of height h.\n",
"calculate_and_draw(G_balanced)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "excellent-bulletin",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" number of nodes: 10\n",
"\n",
"0 : [2, 5]\n",
"1 : [3, 6]\n",
"2 : [3, 7]\n",
"3 : [0, 1, 8]\n",
"4 : [4, 9]\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G_gn = nx.gn_graph(10) # (Directed) Returns the growing network (GN) digraph with n nodes.\n",
"calculate_and_draw(G_gn)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "acting-flight",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" number of nodes: 10\n",
"\n",
"Stop at iteration 14\n",
"0 : [0, 3, 4, 7]\n",
"1 : [2, 5, 6]\n",
"2 : [1, 8, 9]\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G_tree = nx.random_tree(10) # Returns a uniformly random tree on n nodes.\n",
"calculate_and_draw(G_tree)\n"
]
}
],
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}