commit b515846b771638f5943a8d055c96b3bb2f575e39
Author: miksa234 <milutin@popovic.xyz>
Date: Sun, 10 Oct 2021 16:54:00 +0200
first commit
Diffstat:
8 files changed, 750 insertions(+), 0 deletions(-)
diff --git a/assingments/exercise_1.pdf b/assingments/exercise_1.pdf
Binary files differ.
diff --git a/sesh1/src/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/sesh1/src/.ipynb_checkpoints/Untitled-checkpoint.ipynb
@@ -0,0 +1,6 @@
+{
+ "cells": [],
+ "metadata": {},
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/sesh1/src/.ipynb_checkpoints/sesh1-checkpoint.ipynb b/sesh1/src/.ipynb_checkpoints/sesh1-checkpoint.ipynb
@@ -0,0 +1,196 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "6925655d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import networkx as nx\n",
+ "from matplotlib import pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "4de0bdd2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# EX 1: \n",
+ "get_leaves = lambda G: [node for node, degree in G.degree() if degree==1]\n",
+ "# EX 2:\n",
+ "def max_degree(G):\n",
+ " m = max(G.degree(), key = lambda x: x[1])[1] \n",
+ " return [node for node, degree in G.degree() if degree == m]\n",
+ "# EX 3:\n",
+ "def mutual_friends(G, node0, node1):\n",
+ " return list(set(G.neighbors(node0)) & set(G.neighbors(node1)))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "c78774b9",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Nodes: ['a', 'b', 'c', 'd']\n",
+ "Edges: [('a', 'b'), ('a', 'c'), ('b', 'c'), ('c', 'd')]\n",
+ "['b', 'c']\n",
+ "3\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "G = nx.Graph()\n",
+ "G.add_node('a')\n",
+ "nodes_to_add = ['b', 'c', 'd']\n",
+ "G.add_nodes_from(nodes_to_add)\n",
+ "G.add_edge('a', 'b')\n",
+ "edges_to_add = [('a', 'c'), ('b', 'c'), ('c', 'd')]\n",
+ "G.add_edges_from(edges_to_add)\n",
+ "nx.draw(G,\n",
+ " with_labels=True,\n",
+ " node_color='blue',\n",
+ " node_size=1600,\n",
+ " font_color='white',\n",
+ " font_size=16,\n",
+ " )\n",
+ "print(\"Nodes: \",G.nodes())\n",
+ "print(\"Edges: \",G.edges())\n",
+ "\n",
+ "B = nx.Graph()\n",
+ "B.add_edges_from([\n",
+ " ('a', 'b'),\n",
+ " ('a', 'd'),\n",
+ " ('c', 'd'),\n",
+ " ])\n",
+ "\n",
+ "print(get_leaves(B))\n",
+ " \n",
+ "path = '../../network_course/data/'\n",
+ "SG = nx.read_adjlist(path + 'friends.adjlist')\n",
+ "print(SG.degree('Alice'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "89a1e2eb",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nx.draw(SG, node_size=20, node_color='lightblue', with_labels=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "d3dd63ca",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "get_leaves SG: ['Bob']\n",
+ "max_degree SG: ['Claire']\n",
+ "mutual_friends SG: ['Claire']\n"
+ ]
+ }
+ ],
+ "source": [
+ "print('get_leaves SG: ', get_leaves(SG))\n",
+ "print('max_degree SG: ', max_degree(SG))\n",
+ "print('mutual_friends SG: ', mutual_friends(SG, 'Alice', 'Frank'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e6ca4266",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "af0f7426",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c227ba0e",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2a60a054",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a8d47cb2",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/sesh1/src/friends.adjlist b/sesh1/src/friends.adjlist
@@ -0,0 +1,8 @@
+George Frank Dennis
+Dennis Claire Esther
+Claire Frank Alice Esther
+Bob Alice
+Frank Alice
+Alice
+Esther
+Shelly
diff --git a/sesh1/src/sesh1.ipynb b/sesh1/src/sesh1.ipynb
@@ -0,0 +1,196 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "6925655d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import networkx as nx\n",
+ "from matplotlib import pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "4de0bdd2",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# EX 1: \n",
+ "get_leaves = lambda G: [node for node, degree in G.degree() if degree==1]\n",
+ "# EX 2:\n",
+ "def max_degree(G):\n",
+ " m = max(G.degree(), key = lambda x: x[1])[1] \n",
+ " return [node for node, degree in G.degree() if degree == m]\n",
+ "# EX 3:\n",
+ "def mutual_friends(G, node0, node1):\n",
+ " return list(set(G.neighbors(node0)) & set(G.neighbors(node1)))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "c78774b9",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Nodes: ['a', 'b', 'c', 'd']\n",
+ "Edges: [('a', 'b'), ('a', 'c'), ('b', 'c'), ('c', 'd')]\n",
+ "['b', 'c']\n",
+ "3\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "G = nx.Graph()\n",
+ "G.add_node('a')\n",
+ "nodes_to_add = ['b', 'c', 'd']\n",
+ "G.add_nodes_from(nodes_to_add)\n",
+ "G.add_edge('a', 'b')\n",
+ "edges_to_add = [('a', 'c'), ('b', 'c'), ('c', 'd')]\n",
+ "G.add_edges_from(edges_to_add)\n",
+ "nx.draw(G,\n",
+ " with_labels=True,\n",
+ " node_color='blue',\n",
+ " node_size=1600,\n",
+ " font_color='white',\n",
+ " font_size=16,\n",
+ " )\n",
+ "print(\"Nodes: \",G.nodes())\n",
+ "print(\"Edges: \",G.edges())\n",
+ "\n",
+ "B = nx.Graph()\n",
+ "B.add_edges_from([\n",
+ " ('a', 'b'),\n",
+ " ('a', 'd'),\n",
+ " ('c', 'd'),\n",
+ " ])\n",
+ "\n",
+ "print(get_leaves(B))\n",
+ " \n",
+ "path = './'\n",
+ "SG = nx.read_adjlist(path + 'friends.adjlist')\n",
+ "print(SG.degree('Alice'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "89a1e2eb",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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YcIHVB+VuWjRIixYsAB2dnaws7PD+++/j/nz5yMoKAjz589Hs2bNEBAQADMzM4SEhODSpUsAgJCQEHz66ad488034e/lCfW9dMRs3IhXPWzhYtbkoWX17t0bEyZMQPfu3TWvCUBzysTjlkVERC+OMEd16trFixfh6+uLsrIyHsBCRKRDQs346trPP/+MsrIy5OTkYOrUqQgLC2P0iIh0jOF7gVasWAFbW1t4enpCoVBg2bJluh4SEZHwuKmTiIiEwhkfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEj4axevRqdO3eulefKZDJcuXKltoZGRHWA4aNG6+jRowgKCoJKpYKlpSU6deqEEydO6HpYRKRjeroeANGLkJ+fj759+2LZsmWIiIhAeXk54uPjYWBgoOuhEZGOccZHjVJycjIAYNCgQVAoFDAyMkKvXr3QqlUrzWMmT54MCwsLuLu7Y9euXZr78/LyMHLkSDg4OMDB0Qn/nDYNarX6scs7ceIE7OzstB63ZcsWtG7dupbXjIj+LoaPGqWXXnoJCoUCw4YNw65du5CTk6P19cTERHh5eeHu3buYMmUKRo4cCUmSAADDhw9HaRXw5a6jmL9lD7bs2IUFS7557PI6dOgAKysr/Prrr5r71qxZg8jIyNpfOSL6Wxg+apTMzMxw9OhRyGQyjBo1CjY2NggPD0dmZiYAwNXVFaNGjdLEMT09HZmZmcjMzMTOnTvxetR0KI2awMTCCn2GjcL6DRtRVvn4Wd+wYcOwdu1aAEB2djb27NmDwYMHv/B1JaJnw3181Gi1aNECq1evBgAkJSVhyJAh+OijjxAaGgp7e3vN45o0aQIAKCwsRHZ2NioqKjCic1tI//m6VFUFawdHFFU8PnxDhgxBixYtUFRUhE2bNuGVV16Bg4PDi1g1IvobGD4Sgre3N4YPH44VK1YgNDT0kY9zcXGBgYEBfkw4Byj+++OhkAHGSsVjl+Hk5ITAwEBs2bIFa9aswZgxY2pt/ERUe7ipkxqlpKQkLFy4ELdu3QIA3Lx5Exs2bEBAQMBjn+fg4IBevXphx5K5KCsqgBwS7ty8gfIrZ2Cg9/jwAUBkZCQWLFiAs2fP4o033qiVdSGi2sXwUaNkamqKxMREdOzYEcbGxggICICvry8WLlz4xOf++OOPMICE/wkPRqR/CyyfPBbq/JwnPg8A+vfvj5SUFPTv31+zCZWI6heZdP9QNiKqFZ6enlixYgVCQkJ0PRQiqgFnfES1KDY2FjKZDMHBwboeChE9Ag9uIaol3bp1w4ULF7BmzRrI5XxPSVRfcVMnEREJhW9LiYhIKAwfEREJheEjIiKhMHxERCQUho+IiITC8BERkVAYPiIiEgrDR0REQmH4iIhIKAwfEREJheEjIiKhMHxERCSU/w/VJdVPm+rzVAAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "<Figure size 432x288 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "nx.draw(SG, node_size=20, node_color='lightblue', with_labels=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "d3dd63ca",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "get_leaves SG: ['Bob']\n",
+ "max_degree SG: ['Claire']\n",
+ "mutual_friends SG: ['Claire']\n"
+ ]
+ }
+ ],
+ "source": [
+ "print('get_leaves SG: ', get_leaves(SG))\n",
+ "print('max_degree SG: ', max_degree(SG))\n",
+ "print('mutual_friends SG: ', mutual_friends(SG, 'Alice', 'Frank'))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e6ca4266",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "af0f7426",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c227ba0e",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "2a60a054",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "a8d47cb2",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "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.9.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/sesh1/tex/main.pdf b/sesh1/tex/main.pdf
Binary files differ.
diff --git a/sesh1/tex/main.tex b/sesh1/tex/main.tex
@@ -0,0 +1,328 @@
+\documentclass[a4paper]{article}
+
+
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{mathptmx}
+
+%\usepackage{ngerman} % Sprachanpassung Deutsch
+
+\usepackage{graphicx}
+\usepackage{geometry}
+\geometry{a4paper, top=15mm}
+
+\usepackage{minted}
+\usepackage{subcaption}
+\usepackage[shortlabels]{enumitem}
+\usepackage{amssymb}
+\usepackage{amsthm}
+\usepackage{mathtools}
+\usepackage{braket}
+\usepackage{bbm}
+\usepackage{graphicx}
+\usepackage{float}
+\usepackage{yhmath}
+\usepackage{tikz}
+\usetikzlibrary{patterns,decorations.pathmorphing,positioning}
+\usetikzlibrary{calc,decorations.markings}
+
+\usepackage[backend=biber, sorting=none]{biblatex}
+\addbibresource{uni.bib}
+
+\usepackage[framemethod=TikZ]{mdframed}
+
+\tikzstyle{titlered} =
+ [draw=black, thick, fill=white,%
+ text=black, rectangle,
+ right, minimum height=.7cm]
+
+
+\usepackage[colorlinks=true,naturalnames=true,plainpages=false,pdfpagelabels=true]{hyperref}
+\usepackage[parfill]{parskip}
+\usepackage{lipsum}
+
+
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,breakable}
+
+\pagestyle{myheadings}
+
+\markright{Popovic\hfill 1st Exercise \hfill}
+
+
+\title{University of Vienna\\ Faculty of Mathematics\\
+\vspace{1.25cm}Seminar: Introduction to complex network analysis \\ 1st
+Exercise
+}
+\author{Milutin Popovic}
+\date{11. October, 2021}
+
+\begin{document}
+\maketitle
+
+\textbf{Exercise 1:} \textit{Königsberg Problem}
+ \begin{enumerate}
+ \item Which of the shown graphs can be drawn without raising the
+ pencil from the paper and without drawing one line more than.u
+ once. Why?(2 pts)n.
+\begin{figure}[h!] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ]
+ \node[dot](l0) at (2,0) [] {$B$};
+ \node[dot](l1) at (2,-1) [] {$C$};
+ \node[dot](l2) at (1,0) [] {$A$};
+ \node[dot](l3) at (1,-1) [] {$D$};
+ \draw (l0) -- (l1) -- (l2) -- (l3) -- (l1);
+ \draw (l3) -- (l0);
+ \draw (l2) -- (l0);
+
+ \node[dot](r0) at (7,0) [] {$A$};
+ \node[dot](r1) at (8,-1) [] {$D$};
+ \node[dot](r2) at (8,0) [] {$C$};
+ \node[dot](r3) at (7,-1) [] {$E$};
+ \node[dot](r4) at (7.5,0.75) [] {$B$};
+ \draw (r3) -- (r0) -- (r4) -- (r2) -- (r0) -- (r1) -- (r3) -- (r2) --
+ (r1);
+ \end{tikzpicture}
+\end{figure}
+
+ \item Find two graphs with and two without having this property.(2 pts)
+
+ \end{enumerate}
+
+\textbf{Solution 1.1:} The left graph has only vertices with an odd degree,
+thus it cannot be draw without lifting the pencil. On the other hand the
+right graph has exactly two vertices with odd degree, vertex $E$ and vertex
+$D$ meaning it has an Eulerian path, e.g.
+$E$-$A$-$B$-$C$-$A$-$D$-$C$-$E$-$D$.
+\newline
+
+\textbf{Solution 1.2:}
+
+\begin{figure}[h!] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ]
+ \node[dot](l0) at (2,0) [] {};
+ \node[dot](l1) at (2,-1) [] {};
+ \node[dot](l2) at (1,0) [] {};
+ \node[dot](l3) at (1,-1) [] {};
+ \node[dot](l4) at (3,-1) [] {};
+ \draw (l0) -- (l1) -- (l2) -- (l3) -- (l1);
+ \draw (l2) -- (l0) -- (l4) -- (l1);
+
+ \node[dot](r0) at (7,0) [] {};
+ \node[dot](r1) at (7,-0.75) [] {};
+ \node[dot](r2) at (7,-1.5) [] {};
+ \node[dot](r3) at (9, -0.75) [] {};
+ \draw (r0) -- (r3) -- (r2);
+ \draw (r1) -- (r3);
+ \draw[bend right, -] (r0) to node [auto] {} (r1);
+ \draw[bend right, -] (r1) to node [auto] {} (r2);
+ \draw[bend left, -] (r0) to node [auto] {} (r1);
+ \draw[bend left, -] (r1) to node [auto] {} (r2);
+ \end{tikzpicture}
+ \caption{Two graphs, that cannot be drawn without raising the pencil
+ (right graph Königsberg bridges)}
+\end{figure}
+
+\begin{figure}[h!] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ]
+ \node[dot](l0) at (2,-1) [] {};
+ \node[dot](l1) at (1,-1) [] {};
+ \node[dot](l2) at (0.75,0) [] {};
+ \node[dot](l3) at (2.25,0) [] {};
+ \node[dot](l4) at (1.5,0.6) [] {};
+ \draw (l4) -- (l1) -- (l3) -- (l2) -- (l0) -- (l4);
+
+ \node[dot](r0) at (7,0) [] {};
+ \node[dot](r1) at (8,-1) [] {};
+ \node[dot](r2) at (8,0) [] {};
+ \node[dot](r3) at (7,-1) [] {};
+ \node[dot](r4) at (7.5,0.75) [] {};
+ \node[dot](r5) at (7.5,-1.75) [] {};
+ \draw (r3) -- (r0) -- (r4) -- (r2) -- (r0) -- (r1) -- (r3) -- (r2) --
+ (r1);
+ \draw (r5) -- (r1);
+ \draw (r5) -- (r3);
+\end{tikzpicture}
+ \caption {Two graphs, that can be drawn without raising the pencil}
+\end{figure}
+\textbf{Exercise 2:} \textit{Extended Königsberg Problem}
+\begin{enumerate}
+ \item A Baron living in the blue castle wants to start at his place and
+ end up in the yellow bar on the island in the middle by walking all
+ bridges once before.Where should he build the 8th bridge without
+ enabling the Baroness in the red castle doing the same starting from
+ her place?Find one path.(2 pts)
+ \item The Baroness, on discovering this deception, comes up with her own
+ plan to build a 9th bridge. It should enable her to walk from her
+ castle to the bar using all bridges once, but it should make it now
+ impossible for the blue Baron to do the same thing from his castle.
+ Where should the 9th bridge go? Find one path.(2 pts)
+ \item The mayor now decides to scupper their plans and builds a
+ 10th bridge allowing all citizens starting from either side ending up
+ in the bar by walking all the bridges. Where should it go?(1 pt)
+\end{enumerate}
+\textbf{Solution 2.1:}
+The following is a graph of the Königsberg bridges:
+\begin{figure}[H] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ]
+ \node[dot, fill=red](r0) at (7,0) [] {$A$};
+ \node[dot, fill=yellow](r1) at (7,-0.75) [] {$B$};
+ \node[dot, fill=blue](r2) at (7,-1.5) [] {$C$};
+ \node[dot](r3) at (9, -0.75) [] {$D$};
+
+ \draw[-, thick] (r0) to node [auto] {} (r3);
+ \draw[-, thick] (r3) to node [auto] {} (r2);
+ \draw[-,thick] (r1) to node [auto] {} (r3);
+ \draw[bend right, -, thick] (r0) to node [auto] {} (r1);
+ \draw[bend right, -, thick] (r1) to node [auto] {} (r2);
+ \draw[bend left, -, thick] (r0) to node [auto] {} (r1);
+ \draw[bend left, -, thick] (r1) to node [auto] {} (r2);
+ \end{tikzpicture}
+ \caption{Königsberg bridges in a Graph}
+\end{figure}
+According to the theorems of graph theory all of the vertices have odd
+degree, thus no Eulerian path exits. By adding another edge connecting
+vertices $A$ and $D$, we would be left with two vertices having odd degree,
+$B$ and $C$. By the theorems of graph theory there exists and Eulerian path.
+The path has to start at a vertex of odd degree and end at a vertex of odd
+degree, leaving us with the choice to start at $C$ and end up at $B$ which is
+exactly what the Baron wants. The path is the following
+$C$-$B$-$C$-$D$-$A$-$B$-$A$-$D$-$B$ with an according graph bellow.
+\begin{figure}[H] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ->-/.style={decoration={
+ markings, mark=at position .5 with {\arrow[scale=2]{>}}},postaction={decorate}}
+ ]
+ \node[dot, fill=red](a) at (7,0) [] {$A$};
+ \node[dot, fill=yellow](b) at (7,-1.5) [] {$B$};
+ \node[dot, fill=blue](c) at (7,-3) [] {$C$};
+ \node[dot](d) at (11, -1.5) [] {$D$};
+
+ \draw[->-, bend left, thick] (c) to node [auto] {1} (b);
+ \draw[->-, thick, bend left] (b) to node [auto] {2} (c);
+ \draw[->-,thick] (c) to node [auto] {3} (d);
+ \draw[->-, thick] (d) to node [auto] {4} (a);
+ \draw[->-,bend left, thick] (a) to node [auto] {5} (b);
+ \draw[->-,bend left, thick] (b) to node [auto] {6} (a);
+ \draw[->-,bend left, thick] (a) to node [auto] {7} (d);
+ \draw[->-, thick] (d) to node [auto] {8} (b);
+\end{tikzpicture}
+ \caption{Solution to Exercise 2.1}
+\end{figure}
+\textbf{Solution 2.2:} For the baroness in $A$ to walk all the bridges exactly
+once and end up at the bar in $B$, the vertices $A$ and $B$ need to have odd
+degree while $D$ and $C$ have to have even degree. This is easily done by
+connecting $A$ and $C$ with a bridge, with the path
+$A$-$B$-$A$-$D$-$A$-$C$-$B$-$C$-$D$-$B$. The following graph represents this.
+
+\begin{figure}[H] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ->-/.style={decoration={
+ markings, mark=at position .5 with {\arrow[scale=2]{>}}},postaction={decorate}}
+ ]
+ \node[dot, fill=red](a) at (7,0) [] {$A$};
+ \node[dot, fill=yellow](b) at (7,-1.5) [] {$B$};
+ \node[dot, fill=blue](c) at (7,-3) [] {$C$};
+ \node[dot](d) at (11, -1.5) [] {$D$};
+
+ \draw[->-, bend left, thick] (a) to node [auto] {1} (b);
+ \draw[->-, bend left, thick] (b) to node [auto] {2} (a);
+ \draw[->-, bend left, thick] (a) to node [auto] {3} (d);
+ \draw[->-, thick] (d) to node [auto] {4} (a);
+ \draw[->- ,bend right=90, thick] (a) to node [auto] {5} (c);
+ \draw[->-, bend left,thick] (c) to node [auto] {6} (b);
+ \draw[->-, bend left, thick] (b) to node [auto] {7} (c);
+ \draw[->-, thick] (c) to node [auto] {8} (d);
+ \draw[->-, thick] (d) to node [auto] {9} (b);
+
+ \end{tikzpicture}
+ \caption{Solution to Exercise 2.2}
+\end{figure}
+\textbf{Solution 2.3:} For everyone to start at the tavern $B$ and end up at
+$B$ all of the vertices have to have even degree, meaning we have to add a
+bridge such that every section of the city has an even number of bridges.
+Vertices $A$ and $B$ have and odd number of edges, if we add another edge
+between them the graph has an Eulerian path.
+
+\begin{figure}[H] \centering
+\begin{tikzpicture}[
+ dot/.style = {draw, circle, inner sep=0.06cm},
+ no/.style = {},
+ ->-/.style={decoration={
+ markings, mark=at position .5 with {\arrow[scale=2]{>}}},postaction={decorate}}
+ ]
+ \node[dot, fill=red](a) at (7,0) [] {$A$};
+ \node[dot, fill=yellow](b) at (7,-1.5) [] {$B$};
+ \node[dot, fill=blue](c) at (7,-3) [] {$C$};
+ \node[dot](d) at (11, -1.5) [] {$D$};
+
+ \draw[-, bend left, thick] (a) to node [auto] {} (b);
+ \draw[-, bend left, thick] (b) to node [auto] {} (a);
+ \draw[-, bend left, thick] (a) to node [auto] {} (d);
+ \draw[-, thick] (d) to node [auto] {} (a);
+ \draw[- ,bend right=90, thick] (a) to node [auto] {} (c);
+ \draw[-, bend left,thick] (c) to node [auto] {} (b);
+ \draw[-, bend left, thick] (b) to node [auto] {} (c);
+ \draw[-, thick] (c) to node [auto] {} (d);
+ \draw[-, thick] (d) to node [auto] {} (b);
+ \draw[-, ultra thick] (b) to node [auto] {} (a);
+
+ \end{tikzpicture}
+ \caption{Solution to Exercise 2.3}
+\end{figure}
+\textbf{Exercise 3:} Find examples in nature, society or from your daily
+experience for an undirected network, a directed network and a network with
+edge weights.(3 pts)
+\newline
+
+\textbf{Solution 3:} An example for an undirected network would be an social
+graph, meaning graphing who is friends with who like Facebook. The vertices
+would be people and the edges would be friend connections.
+\newline
+
+ An example for a directed network would be the World Wide Web, where the
+ vertices are the websites and edges are hyperlinks which are directed to a
+ website.
+ \newline
+
+ An example for a network with edge weights would be a graph representing a
+ coin flip graph ($p=\frac{1}{2}$) or a dice throw graph ($p=\frac{1}{6}$).
+
+\textbf{Exercise 4:} Walk through the notebook tutorial\_1 and solve the
+embedded exercises (3x4pts).
+\newline
+
+\textbf{Solution 4:}
+Code can be pulled from my git instance \cite{code}, a copy is also shown
+below.
+\begin{minted}{python}
+# EX 1:
+get_leaves = lambda G: [node for node, degree in G.degree() if degree==1]
+# EX 2:
+def max_degree(G):
+ m = max(G.degree(), key = lambda x: x[1])[1]
+ return [node for node, degree in G.degree() if degree == m]
+# EX 3:
+def mutual_friends(G, node0, node1):
+ return list(set(G.neighbors(node0)) & set(G.neighbors(node1)))
+\end{minted}
+
+\nocite{spazieren}
+\printbibliography
+\end{document}
diff --git a/sesh1/tex/uni.bib b/sesh1/tex/uni.bib
@@ -0,0 +1,16 @@
+@online{spazieren,
+ author = {Franz Embacher},
+ title = {Spaziergänge und Buslinien},
+ urldate = {2021-10-10},
+ url = {https://homepage.univie.ac.at/franz.embacher/Lehre/aussermathAnw/Spaziergaenge.html},
+}
+
+
+@online{code,
+ author = {Popovic Milutin},
+ title = {Git Instance, Introduction to complex network analysis},
+ urldate = {2021-10-10},
+ url = {git://popovic.xyz/network_ana.git},
+}
+
+