From cf009ab61c440b1d87cbfd8b3f2b9610bb7f62e8 Mon Sep 17 00:00:00 2001
From: Samuel Koovely <samuel.koovely@math.uzh.ch>
Date: Fri, 16 Sep 2022 20:02:13 +0200
Subject: [PATCH] Solutions to tutorial3 ES1

---
 tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb | 158 +++++++++++++++++++
 1 file changed, 158 insertions(+)
 create mode 100644 tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb

diff --git a/tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb b/tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb
new file mode 100644
index 0000000..1dd29fb
--- /dev/null
+++ b/tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb
@@ -0,0 +1,158 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import networkx as nx\n",
+    "%matplotlib inline"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "G = nx.read_graphml('./datasets/openflights/openflights_usa.graphml.gz')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# EXERCISE 1\n",
+    "\n",
+    "Is there a direct flight between Indianapolis and Fairbanks, Alaska (FAI)? A direct flight is one with no intermediate stops."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Answer 1"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "'FAI' in list(G.neighbors('IND'))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "'FAI' does not belong to the neighbours of 'IND', so there is no direct flight between the two airports."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# EXERCISE 2\n",
+    "\n",
+    "If I wanted to fly from Indianapolis to Fairbanks, Alaska what would be an itinerary with the fewest number of flights?"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Answer 2"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "nx.has_path(G, 'IND', 'FAI')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "So we know that there is a path between the two airports"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "shortest_path_IND_FAI = nx.shortest_path(G, 'IND', 'FAI')\n",
+    "for i in shortest_path_IND_FAI:\n",
+    "    print(G.nodes[i])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "So the itinerary between Indianapolis and Fairbanks with the fewest number of flights passes through Boston and Seattle."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# EXERCISE 3\n",
+    "\n",
+    "Is it possible to travel from any airport in the US to any other airport in the US, possibly using connecting flights? In other words, does there exist a path in the network between every possible pair of airports?"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "components = list(nx.connected_components(G))\n",
+    "len(components)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "The graph contains multiple connected components, so it is not possible to fly from any airport in the US to any other airport in the US (possibly using connecting flights)."
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3.8.3 ('venv')",
+   "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.3"
+  },
+  "orig_nbformat": 4,
+  "vscode": {
+   "interpreter": {
+    "hash": "3699540f6baed5bd29a193b0c2d028af3f2c80498e3cac18f2b44cdd848387e2"
+   }
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
-- 
GitLab