diff --git a/tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb b/tutorials/SOL1/ES1_Solutions_Tutorial3.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..1dd29fbd5148bf395486b88ea9fdc9241571dcbb --- /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 +}