From 964d26c6847b32716d2cdd2c19bd345a73b10d5c Mon Sep 17 00:00:00 2001 From: udlbook <110402648+udlbook@users.noreply.github.com> Date: Sun, 1 Oct 2023 14:19:01 +0100 Subject: [PATCH] Delete Notebooks/Chap13/13_4_Graph_Representation.ipynb --- .../Chap13/13_4_Graph_Representation.ipynb | 251 ------------------ 1 file changed, 251 deletions(-) delete mode 100644 Notebooks/Chap13/13_4_Graph_Representation.ipynb diff --git a/Notebooks/Chap13/13_4_Graph_Representation.ipynb b/Notebooks/Chap13/13_4_Graph_Representation.ipynb deleted file mode 100644 index 2f79a0a..0000000 --- a/Notebooks/Chap13/13_4_Graph_Representation.ipynb +++ /dev/null @@ -1,251 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [], - "authorship_tag": "ABX9TyMuzP1/oqTRTw4Xs/R4J/M3", - "include_colab_link": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, - { - "cell_type": "markdown", - "source": [ - "# **Notebook 13.1: Graph representation**\n", - "\n", - "This notebook investigates representing graphs with matrices as illustrated in figure 13.4 from the book.\n", - "\n", - "Work through the cells below, running each cell in turn. In various places you will see the words \"TO DO\". Follow the instructions at these places and make predictions about what is going to happen or write code to complete the functions.\n", - "\n", - "Contact me at udlbookmail@gmail.com if you find any mistakes or have any suggestions.\n", - "\n" - ], - "metadata": { - "id": "t9vk9Elugvmi" - } - }, - { - "cell_type": "code", - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import networkx as nx" - ], - "metadata": { - "id": "OLComQyvCIJ7" - }, - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "# Routine to draw graph structure\n", - "def draw_graph_structure(adjacency_matrix):\n", - "\n", - " G = nx.Graph()\n", - " n_node = adjacency_matrix.shape[0]\n", - " for i in range(n_node):\n", - " for j in range(i):\n", - " if adjacency_matrix[i,j]:\n", - " G.add_edge(i,j)\n", - "\n", - " nx.draw(G, nx.spring_layout(G, seed = 0), with_labels=True)\n", - " plt.show()" - ], - "metadata": { - "id": "O1QMxC7X4vh9" - }, - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "# Define a graph\n", - "# Note that the nodes are labelled from 0 rather than 1 as in the book\n", - "A = np.array([[0,1,0,1,0,0,0,0],\n", - " [1,0,1,1,1,0,0,0],\n", - " [0,1,0,0,1,0,0,0],\n", - " [1,1,0,0,1,0,0,0],\n", - " [0,1,1,1,0,1,0,1],\n", - " [0,0,0,0,1,0,1,1],\n", - " [0,0,0,0,0,1,0,0],\n", - " [0,0,0,0,1,1,0,0]]);\n", - "print(A)\n", - "draw_graph_structure(A)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 659 - }, - "id": "TIrihEw-7DRV", - "outputId": "30bc37ce-6305-4721-8c2e-fcf57ae14a2c" - }, - "execution_count": 3, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[[0 1 0 1 0 0 0 0]\n", - " [1 0 1 1 1 0 0 0]\n", - " [0 1 0 0 1 0 0 0]\n", - " [1 1 0 0 1 0 0 0]\n", - " [0 1 1 1 0 1 0 1]\n", - " [0 0 0 0 1 0 1 1]\n", - " [0 0 0 0 0 1 0 0]\n", - " [0 0 0 0 1 1 0 0]]\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABn+0lEQVR4nO3dd1hU16IF8DUFEFBQQcSGhiBcxV5iwxbsWC4pDrnRWBKNSoSYaGI00USNxmhibLHEgoWg2BUbFsRurIioICqCDQQEEaQMM+8PA89GnXJm5qzf973PPGbmnMU10cXeZ+8tUavVahARERERlZNU6ABEREREZNxYKImIiIhIIyyURERERKQRFkoiIiIi0ggLJRERERFphIWSiIiIiDTCQklEREREGmGhJCIiIiKNsFASERERkUZYKImIiIhIIyyURERERKQRFkoiIiIi0ggLJRERERFphIWSiIiIiDTCQklEREREGmGhJCIiIiKNsFASERERkUZYKImIiIhIIyyURERERKQRFkoiIiIi0ggLJRERERFphIWSiIiIiDTCQklEREREGmGhJCIiIiKNsFASERERkUZYKImIiIhIIyyURERERKQRFkoiIiIi0ggLJRERERFphIWSiIiIiDTCQklEREREGmGhJCIiIiKNsFASERERkUZYKImIiIhIIyyURERERKQRFkoiIiIi0ggLJRERERFpRC50AKFl5igRl5KJXKUK5nIp6tlZw9pC9P+zEBEREZWaKJvTjcQMBJ6JR1h0EuJTs6B+4TUJAKeqVujq5oCP2zihfvVKQsUkIiIiMgoStVqtLvltpiEhNQuTtkXiWGwyZFIJ8lVFf+sFr3d0scdM78aoU9VKj0mJiIiIjIdoCuWGs/GYujMKSpW62CL5KplUArlUgp/6u8OntZMOExIREREZJ1EUykVhNzA3NEbj64zv4YovutbXQiIiIiIi02Hyq7w3nI3XSpkEgLmhMdh4Nl4r1yIiIiIyFSY9QpmQmoVu88KRo1S99ppamYe0Y+uRGRUGVfZTmFWrh8qdBsPyrebFXtNCLsXBcZ35TCURERHRv0x6hHLStkgoi3heMnn3PDw5ux3WDbugSreRkEilSNr0I7ITooq9plKlxqRtkbqIS0RERGSUTLZQ3kjMwLHY5DcuwMm5H42sa0dRufMQVHl3OCo164XqH82E3MYB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Sn0PJzsrWFtwW2EiEg4LJRGRjnV1cyjVPpSZ144CqvwyTXfLpBJ0dXXQIB0RkeZYKImIdOzjNk6l2ocyM+oIpFaV33AMY9HyVWoMauukQToiIs1xjoSISMfqV6+Eji72OHkrpdhiWeOT38p0XZlUgvbOdjx2kYgExxFKIiI9mOndGPIyHr9YErlUgpnejbV6TSKi8mChJCLSgzpVrfBTf3etXnNaf3fUKeWCHyIiXWKhJCLSE5/WThjfw1Ur15rQww2K1nx2kogMg0StVpf1VDAiItLAhrPxmLozCkqVulSLdQrIpBLIpRJM6+/OMklEBoWFkohIAAmpWZi0LRLHYpMhk0qKLZYFr3d0scdM78ac5iYig8NCSUQkoBuJGQg8E4+wmCTEp2ThxT+QJXi+aXlXVwcMauvE1dxEZLBYKImIDERmjhJxKZnIVapgLpeinp01T8AhIqPAQklEREREGuEqbyIiIiLSCAslEREREWmEhZKIiIiINMJCSUREREQaYaEkIiIiIo2wUBIRERGRRlgoiYiIiEgjLJREREREpBEWSiIiIiLSCAslEREREWmEhZKIiIiINMJCSUREREQaYaEkIiIiIo2wUBIRERGRRlgoiYiIiEgjLJREREREpBEWSiIiIiLSCAslEREREWmEhZKIiIiINMJCSUREREQaYaEkIiIiIo2wUBIRERGRRlgoiYiIiEgjLJREREREpBEWSiIiIiLSCAslEREREWmEhZKIiIiINMJCSUREREQaYaEkIiIiIo2wUBIRERGRRlgoiYiIiEgjLJREREREpBEWSiIiIiLSCAslEREREWmEhZKIiIiINMJCSUREREQaYaEkIiIiIo38H5EFP4+WA2XRAAAAAElFTkSuQmCC\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "# TODO -- find algorithmically how many walks of length three are between nodes 3 and 7\n", - "# Replace this line\n", - "print(\"Number of walks between nodes three and seven = ???\")" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "PzvfUpkV4zCj", - "outputId": "158592f0-096d-4af8-a6c1-d41f83e168c7" - }, - "execution_count": 4, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Number of walks between nodes three and seven = ???\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "# TODO -- find algorithmically what the minimum path distance between nodes 0 and 6 is\n", - "# (i.e. what is the first walk length with non-zero count between 0 and 6)\n", - "# Replace this line\n", - "print(\"Minimum distance = ???\")\n", - "\n", - "\n", - "# What is the worst case complexity of your method?" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "MhhJr6CgCRb5", - "outputId": "59ae0d33-f7fa-4983-9082-12410dd29b32" - }, - "execution_count": 5, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Minimum distance = ???\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "# Now let's represent node 0 as a vector\n", - "x = np.array([[1],[0],[0],[0],[0],[0],[0],[0]]);\n", - "print(x)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "lCQjXlatABGZ", - "outputId": "ebd769fe-d2db-4c26-a399-3c5615067e0d" - }, - "execution_count": 6, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[[1]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]]\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "# TODO: Find algorithmically how many paths of length 3 are there between node 0 and every other node\n", - "# Replace this line\n", - "print(np.zeros_like(x))" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "nizLdZgLDzL4", - "outputId": "5ff3e3c2-7aa2-4aeb-dcb7-9667faa9963b" - }, - "execution_count": 7, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "[[0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]\n", - " [0]]\n" - ] - } - ] - } - ] -} \ No newline at end of file