{ "cells": [ { "cell_type": "markdown", "id": "218c5394", "metadata": {}, "source": [ "# Laplacian Matrix powers\n", "\n", "For these experiments, I'll use this graph taken from wikipedia\n", "\n", "![graph image](https://en.wikipedia.org/wiki/Laplacian_matrix#/media/File:6n-graf.svg)" ] }, { "cell_type": "code", "execution_count": 3, "id": "c717d831", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normal L\n", "tensor([[ 2, -1, 0, 0, -1, 0],\n", " [-1, 3, -1, 0, -1, 0],\n", " [ 0, -1, 2, -1, 0, 0],\n", " [ 0, 0, -1, 3, -1, -1],\n", " [-1, -1, 0, -1, 3, 0],\n", " [ 0, 0, 0, -1, 0, 1]])\n", "\n", "\n", "L squared\n", "tensor([[ 6, -4, 1, 1, -4, 0],\n", " [-4, 12, -5, 2, -5, 0],\n", " [ 1, -5, 6, -5, 2, 1],\n", " [ 1, 2, -5, 12, -6, -4],\n", " [-4, -5, 2, -6, 12, 1],\n", " [ 0, 0, 1, -4, 1, 2]])\n", "\n", "\n", "L cubic\n", "tensor([[ 20, -15, 5, 6, -15, -1],\n", " [-15, 50, -24, 16, -25, -2],\n", " [ 5, -24, 22, -24, 15, 6],\n", " [ 6, 16, -24, 51, -33, -16],\n", " [-15, -25, 15, -33, 51, 7],\n", " [ -1, -2, 6, -16, 7, 6]])\n", "\n", "\n", "L forth\n", "tensor([[ 70, -55, 19, 29, -56, -7],\n", " [ -55, 214, -114, 99, -126, -18],\n", " [ 19, -114, 92, -115, 88, 30],\n", " [ 29, 99, -115, 226, -172, -67],\n", " [ -56, -126, 88, -172, 226, 40],\n", " [ -7, -18, 30, -67, 40, 22]])\n", "\n", "\n", "L fifth\n", "tensor([[ 251, -198, 64, 131, -212, -36],\n", " [-198, 937, -541, 555, -636, -117],\n", " [ 64, -541, 413, -555, 474, 145],\n", " [ 131, 555, -555, 1032, -870, -293],\n", " [-212, -636, 474, -870, 1032, 212],\n", " [ -36, -117, 145, -293, 212, 89]])\n", "\n", "\n", "L sixth\n", "tensor([[ 912, -697, 195, 577, -820, -167],\n", " [ -697, 4186, -2574, 2959, -3202, -672],\n", " [ 195, -2574, 1922, -2697, 2454, 700],\n", " [ 577, 2959, -2697, 4814, -4328, -1325],\n", " [ -820, -3202, 2454, -4328, 4814, 1082],\n", " [ -167, -672, 700, -1325, 1082, 382]])\n", "\n", "\n" ] } ], "source": [ "import torch\n", "\n", "L = torch.tensor([\n", " [2, -1, 0, 0, -1, 0],\n", " [-1, 3, -1, 0, -1, 0],\n", " [0, -1, 2, -1, 0, 0],\n", " [0, 0, -1, 3, -1, -1],\n", " [-1, -1, 0, -1, 3, 0],\n", " [0, 0, 0, -1, 0, 1]\n", "])\n", "L_2 = L@L\n", "L_3 = L_2@L\n", "L_4 = L_3@L\n", "L_5 = L_4@L\n", "L_6 = L_5@L\n", "print(\"Normal L\")\n", "print(L)\n", "print(\"\\n\")\n", "print(\"L squared\")\n", "print(L_2)\n", "print(\"\\n\")\n", "print(\"L cubic\")\n", "print(L_3)\n", "print(\"\\n\")\n", "print(\"L forth\")\n", "print(L_4)\n", "print(\"\\n\")\n", "print(\"L fifth\")\n", "print(L_5)\n", "print(\"\\n\")\n", "print(\"L sixth\")\n", "print(L_6)\n", "print(\"\\n\")\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "id": "1b01bf03", "metadata": {}, "source": [ "## More experiments\n", "\n", "Hee we'll connect each node is connected to the previous and next" ] }, { "cell_type": "code", "execution_count": 4, "id": "dd51c047", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normal L\n", "tensor([[ 1, -1, 0, 0, 0, 0],\n", " [-1, 1, -1, 0, 0, 0],\n", " [ 0, -1, 1, -1, 0, 0],\n", " [ 0, 0, -1, 1, -1, 0],\n", " [ 0, 0, 0, -1, 1, -1],\n", " [ 0, 0, 0, 0, -1, 1]])\n", "\n", "\n", "L squared\n", "tensor([[ 2, -2, 1, 0, 0, 0],\n", " [-2, 3, -2, 1, 0, 0],\n", " [ 1, -2, 3, -2, 1, 0],\n", " [ 0, 1, -2, 3, -2, 1],\n", " [ 0, 0, 1, -2, 3, -2],\n", " [ 0, 0, 0, 1, -2, 2]])\n", "\n", "\n", "L cubic\n", "tensor([[ 4, -5, 3, -1, 0, 0],\n", " [-5, 7, -6, 3, -1, 0],\n", " [ 3, -6, 7, -6, 3, -1],\n", " [-1, 3, -6, 7, -6, 3],\n", " [ 0, -1, 3, -6, 7, -5],\n", " [ 0, 0, -1, 3, -5, 4]])\n", "\n", "\n", "L forth\n", "tensor([[ 9, -12, 9, -4, 1, 0],\n", " [-12, 18, -16, 10, -4, 1],\n", " [ 9, -16, 19, -16, 10, -4],\n", " [ -4, 10, -16, 19, -16, 9],\n", " [ 1, -4, 10, -16, 18, -12],\n", " [ 0, 1, -4, 9, -12, 9]])\n", "\n", "\n", "L fifth\n", "tensor([[ 21, -30, 25, -14, 5, -1],\n", " [-30, 46, -44, 30, -15, 5],\n", " [ 25, -44, 51, -45, 30, -14],\n", " [-14, 30, -45, 51, -44, 25],\n", " [ 5, -15, 30, -44, 46, -30],\n", " [ -1, 5, -14, 25, -30, 21]])\n", "\n", "\n", "L sixth\n", "tensor([[ 51, -76, 69, -44, 20, -6],\n", " [ -76, 120, -120, 89, -50, 20],\n", " [ 69, -120, 140, -126, 89, -44],\n", " [ -44, 89, -126, 140, -120, 69],\n", " [ 20, -50, 89, -120, 120, -76],\n", " [ -6, 20, -44, 69, -76, 51]])\n", "\n", "\n" ] } ], "source": [ "L = torch.tensor([\n", " [1, -1, 0, 0, 0, 0],\n", " [-1, 1, -1, 0, 0, 0],\n", " [0, -1, 1, -1, 0, 0],\n", " [0, 0, -1, 1, -1, 0],\n", " [0, 0, 0, -1, 1, -1],\n", " [0, 0, 0, 0, -1, 1]\n", "])\n", "L_2 = L@L\n", "L_3 = L_2@L\n", "L_4 = L_3@L\n", "L_5 = L_4@L\n", "L_6 = L_5@L\n", "print(\"Normal L\")\n", "print(L)\n", "print(\"\\n\")\n", "print(\"L squared\")\n", "print(L_2)\n", "print(\"\\n\")\n", "print(\"L cubic\")\n", "print(L_3)\n", "print(\"\\n\")\n", "print(\"L forth\")\n", "print(L_4)\n", "print(\"\\n\")\n", "print(\"L fifth\")\n", "print(L_5)\n", "print(\"\\n\")\n", "print(\"L sixth\")\n", "print(L_6)\n", "print(\"\\n\")" ] } ], "metadata": { "kernelspec": { "display_name": "deep_learning", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 5 }