Python Tutorial - BIOTEC

Werbung
TU Dresden, Fakultät Informatik
Intelligente Systeme, WS2016/2017
Python Intro - Übung 1
Übung 1 - Flughafennetzwerk und Umgang mit Python
Die erste Übung ist eine Einführung in Netzwerke und die Skiptsprache Python. Benötigte Dateien und Skripte finden Sie online auf unserer Biotec Webseite, weiterhin gibt es
für Python-Anfänger hier einige nützliche Hinweise. Laden Sie die zwei Dateien airports.dat.txt und routes.dat.txt herunter, welche Daten zu Flüghäfen bzw. deren Verbinungen enthalten. Außerdem wird ein Python-Script bereitgestellt (search main.py),
welches die beiden Dateien einliest und in den Inhalt in den folgenden Variablen speichert:
• code2city enthält eine Abbildung von Flughafenkürzel zu den jeweiligen Städtenamen,
• code2xy enthält eine Abbildung von Flughafenkürzeln zu ihren Koordinaten,
• code2country enthält eine Abbildung von Flughafenkürzeln zu ihren Ländern,
• conn enthält eine Abbildung von Flugafenkürzeln zu einer Menge von Flughäfen,
zu denen es eine Verbindung gibt.
Falls Sie noch nie mit Python programmiert haben, nutzen Sie die Zeit um sich mit der
Syntax und den Datenstrukturen vertraut zu machen.
Verwenden Sie im Anschluss die vier Abbildungen um die Daten, die sie enthalten,
zu analysieren. Erzeugen Sie mit diesen Daten die folgenden Ausgaben:
• alle Flughäfen sortiert nach der Anzahl ihrer Verbindungen,
• alle Flughäfen sortiert nach der Summe der Distanzen ihrer Verbindungen,
• alle Flughäfen, die genau eine Verbindung haben,
• alle Länder sortiert nach der Anzahl ihrer Flughäfen,
• alle Länder sortiert nach der Summe der Distanzen von Verbindungen innerhalb
des Landes,
• alle Paare von Flughäfen mit maximaler Anzahl gemeinsamer Verbindungen,
• alle Paare von Ländern mit maximaler Anzahl von Verbindungen zwischen diesen
Ländern.
Übung 2 - Flugroutensuche
In den folgenden Wochen werden Sie einige Algorithmen für die Suche in Graphen kennenlernen. Im zweiten Python-Skript (search functions.py) finden Sie Implementationen
zweier solcher Algorithmen, die Breitensuche (BFS) und die gierige Suche.
• Nutzen Sie die beiden Suchalgorithmen um vorgeschlagene Flugrouten von Dresden
zu einigen anderen Flughäfen zu berechnen.
1
TU Dresden, Fakultät Informatik
Intelligente Systeme, WS2016/2017
Python Intro - Übung 1
• Untersuchen Sie, ob die beiden Algorithen die gleichen Routen vorschlagen oder
nicht.
• Gibt es Paare von Flughäfen, bei denen die Breitensuche bessere Vorschläge als
die gierige Suche findet? Nennen Sie einige Beispiele.
• Finden Sie ebenfalls Beispiele, in denen die gierige Suche bessere Routen findet.
Übung 3 - Vergleich von Breitensuche und gieriger Suche
Die zweite Aufgabe behandelte zwei Suchfunktionen: die Breitensuche (BFS) und die
gierige Suche. Diese zwei Algorithmen benutzen zwei verschiedene Ansätze um Routen
zwischen zwei gegebenen Flughäfen zu finden. Werfen Sie einen Blick auf ihre Implementierung und identifizieren Sie die wichtigsten Variablen in den jeweiligen Funktionen.
Veranschaulichen Sie, wie sich diese Variablen während der Suche verhalten.
• Vergleichen Sie die beiden Algorithmen im Bezug zu ihrem Speicherverhalten und
ihrem Zeitaufwand. Welcher der Algorithmen ist schneller bzw. benötigt weniger
Speicher? (Tipp: Verwenden Sie die Python-Module timeit bzw. time zur Zeitmessung und die Funktion getsizeof des Moduls sys zur Berechnung des Speicherplatzbedarfs von Variablen.)
• Wiederholen Sie diese Analyse für verschiedene, zufällig generierte, Routen und
errechnen Sie den Durchschnitt dieser Ergebnisse. (Tipp: Benutzen Sie das Modul
random um zufällige Flughäfen zu bestimmen.)
2
Herunterladen