Vorlesung PRG-1, WS 06/07 6. Übung

Ähnliche Dokumente
Datenstrukturen und Algorithmen (SS 2013)

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V9/11

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen (SS 2013)

Tutoraufgabe 1 (Starke Zusammenhangskomponenten):

3. Die Datenstruktur Graph

Vorlesung Datenstrukturen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. C5.1 Einführung. C5.2 Grundlagen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Prof. Dr. Detlef Krömker Carsten Heep. Institut für Informatik. Johann Wolfgang Goethe-Universität

Digraphen, DAGs und Wurzelbäume

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Vorlesung Datenstrukturen

Datenstrukturen. einfach verkettete Liste

Diskrete Mathematik für Informatiker

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008

Modul: Programmierung B-PRG Grundlagen der Programmierung 1 Teil 1 V10

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele.

15. Elementare Graphalgorithmen

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie

1 Der Baum. Informatik I: Einführung in die Programmierung 11. Bäume. Bäume in der Informatik. Bäume in der Informatik - Definition.

Folien aus der Vorlesung Optimierung I SS2013

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Informatik II, SS 2014

Prüfung Algorithmen und Datenstrukturen I

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Graphen: Rundwege, Kodierung von Bäumen

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Klausur. 18. Juli 2008, 10:15-12:15 Uhr. Name:... Matrikelnummer:... Anzahl beschriebener Blätter (ohne Aufgabenblatt):... D(p) : Y = p x X + p y

Institut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt

Kürzeste Wege in einem gewichteten Graphen. Anwendungen

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Programmierkurs Python II

Algorithmen und Datenstrukturen 1 VL Übungstest WS Jänner 2009

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

WS 2003/2004, Zwischenklausur

Tutoraufgabe 1 (Implementierung eines ADTs):

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Klausur Algorithmen und Datenstrukturen

Polygontriangulierung

12. AuD Tafelübung T-C3

Klausur Informatik B April Teil I: Informatik 3

Lernmodul 7 Algorithmus von Dijkstra

Informationssysteme SS 2013 Lösungsvorschläge zu Übungsblatt 2. Übungsblatt 2. Für die Übungen in der Woche vom 29. April bis 03.

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Algorithmen und Datenstrukturen 2

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2017/18. Pro f. Dr. Sán do r Fe k e te

Informatik II, SS 2014

Übungsblatt 7. Thema: Sortieren, Objektorientierung

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Aufgaben zur Klausurvorbereitung

Institut für Programmierung und Reaktive Systeme 12. Juni Programmieren II. 12. Übungsblatt

Einheit 11 - Graphen

Klausur Algorithmen und Datenstrukturen

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Algorithmen und Datenstrukturen Klausur WS 2006/07 Software-Engineering und Technische Informatik Bachelor

ContainerDatenstrukturen. Große Übung 4

Graphenalgorithmen I

Algorithmen & Datenstrukturen 2 Praktikum 3

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK

Klausur zu Informatik II

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

10. Übungsblatt zu Algorithmen I im SS 2010

Relationen und DAGs, starker Zusammenhang

Bäume als spezielle Graphen

Informatik II, SS 2016

Clausthal C G C C G C. Informatik II Bäume. G. Zachmann Clausthal University, Germany Beispiele. Stammbaum.

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr)

Programmierkurs Python II

Konzepte der Informatik

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Bäume als spezielle Graphen

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

2. Klausur zur Vorlesung Informatik 1 im Wintersemester 2014/2015 am 30. März Bearbeitungszeit: 90 Minuten Gesamtpunktezahl: 90 Punkte

Algorithmen und Datenstrukturen 2-1. Seminar -

Übung Algorithmen und Datenstrukturen

Teil 2: Graphenalgorithmen

Übung Datenstrukturen. Bäume

Informatik B Sommersemester Musterlösung zur Klausur am

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Klausur zur Vorlesung Algorithmen und Datenstrukturen

Transkript:

Fachbereich Informatik & Mathematik (12) Professur Graphische Datenverarbeitung Prof. Dr. Detlef Krömker Jörg Demmer Ashraf Abu Baker Robert-Mayer-Str. 10 60325 Frankfurt am Main Tel.: +49 (0)69 798-24610 Fax: +49 (0)69 798-24603 E-Mail: jdemmer@gdv.cs.uni-frankfurt.de baker@gdv.cs.uni-frankfurt.de Ausgabe: 22.11.2006 Abgabe: 01.12.2006 Vorlesung PRG-1, WS 06/07 6. Übung Zur Beachtung: Ab diesem Übungsblatt müssen Lösungen zu Programmieraufgaben getippt und per E-Mail beim Tutor abgegeben werden. Handgeschriebener Quellcode wird nicht mehr akzeptiert! Aufgabe 6.1: Binäre Suchbäume (2 Punkte) Ein binärer Suchbaum ist ein binärer Baum, bei dem Knoten mit kleineren Schlüsselwerten immer links und Knoten mit größeren Werten immer rechts eines Vorgängerknotens eingefügt werden. Beispielsweise ist der folgende Baum ein binärer Suchbaum: 5 3 7 2 4 6 Zeichnen Sie den binären Suchbaum, der entsteht, wenn die folgenden Eingabefolgen eingegeben werden: (a) 15, 6, 10, 25, 12, 3, 18, 1, 4, 30, 20, 16, 32, 8 (0,5 Punkte) (b) 1, 3, 4, 6, 8, 10, 12, 15, 16, 18, 20, 25, 30, 32 (0,5 Punkte) (c) Wenn ein Baum aufgebaut ist wie Baum (a) und n Knoten hat, wie lange müssen Sie im schlimmsten Fall suchen, um in diesem Baum einen Knoten zu finden oder zu wissen, dass er nicht existiert? Wie ist es beim Baum (b)? (1 Punkt)

Aufgabe 6.2: Graphen (3 Punkte) Gegeben sei der folgende Graph: a 1 b 3 4 c e d 7 8 f 2 g h 5 6 Stellen Sie diesen Graphen dar: (a) in einer Adjazenzmatrix (1 Punkt) (b) in einer Inzidenzmatrix (1 Punkt) (c) in einer Adjazenzliste (1 Punkt)

Aufgabe 6.3: Lerngruppenaufgabe: UML (5 Punkte) Tipp: UML wird im Reading Nr. 5 zur Vorlesung behandelt: http://www.gdv.informatik.unifrankfurt.de/lehre/ws2006/prg-1/readings/guenther-wahl-uml-kompakt.pdf (a) Erläutern Sie kurz in eigenen Worten die Begriffe Aggregation, Assoziation und Komposition. Nennen Sie für jeden Begriff ein Beispiel, wie die entsprechende Beziehung zur Anwendung kommen kann. (1 Punkt) (b) Sie sollen für eine Einzelhandelskette ein Warenwirtschaftssystem programmieren, in dem Dinge wie Einkauf, Verkauf, Lagerhaltung, Logistik und Buchhaltung enthalten sind. Überlegen Sie sich Anwendungsfälle für ein solches System und stellen Sie sie in einem Use-Case-Diagramm in UML dar. (2 Punkte) (c) Erstellen Sie ein Klassendiagramm in UML aus dem folgenden Python-Code (2 Punkte): class aba: def init (self, a, b): self. a = a self.b = b def geta(self): return self. a def calc(self): return self. a + self.b class bcb(aba): def init (self, a, b): aba. init (self, a, b) def donothing(self, x): print "Really did nothing with " + str(x) class xyz: def init (self, x): # Prüft, ob x eine Instanz der Klasse bcb ist if isinstance(x, bcb): self. x = x else: self. x = None self.z = self.zzz() def donothingwithbcb(self, x): self. x.donothing(x) class zzz: def init (self): pass def helloword(self): print "Hello, world!"

Aufgabe 6.4: Bonusaufgabe: Bellman-Ford-Algorithmus (3 Punkte) In vielen Anwendungsbereichen (z.b. Logistik) ergibt sich die Notwendigkeit, in einem kantengewichteten Graphen kürzeste Wege von einem Knoten A zu einem Knoten B ermitteln zu können. Beispielsweise könnte man ein Wegenetz in einem solchen Graphen repräsentieren: K0 Hamburg 290 420 490 K3 Berlin K1 Köln 190 K2 Frankfurt 540 200 390 K4 Stuttgart 220 K5 München Kürzester Weg von Hamburg nach München? Wenn der Graph keine Zyklen mit negativer Länge enthält 1 und die Knoten mit zunehmender Tiefe fortlaufend nummeriert sind, kann zur Lösung dieses Problems der (vereinfachte) Algorithmus von Bellman-Ford verwendet werden. Der Algorithmus findet den kürzesten Weg, indem iterativ ein Baum mit dem Startknoten als Wurzel konstruiert wird, in dem die Weglängen zu den einzelnen Knoten gespeichert sind. Jedem Knoten n des Baumes wird dabei die bislang zurückgelegte Weglänge I(n) zugeordnet und eine Markierung, ob der Knoten gestrichen ist oder nicht. Vorgehensweise: 1) Der Startknoten sei i 0. Setze I(i 0) = 0. Dann ist B der Baum, der nur aus dem Knoten i 0 besteht, und die bislang zurückgelegte Wegstrecke ist natürlich 0. 1 Wäre z.b. der Fall, wenn der Graph eine Kante Frankfurt-Hamburg mit Wert -1000 enthielte. Dann könnte man eine Rundreise Hamburg-Köln-Frankfurt-Hamburg machen und dabei eine negative Zahl von Kilometern zurücklegen. In dem Fall funktioniert der hier vorgestellte Algorithmus nicht.

2) Wenn die Blätter von B keine unmittelbaren Nachfolger im Graphen mehr besitzen oder nur noch Nachfolger, die in B bereits gestrichen worden sind, beende die Verarbeitung. Sonst fahre fort mit Schritt 3. 3) Von einem Blatt i mit kleinster Tiefe (bei fortlaufender Nummerierung: Mit kleinster Knotennummer), das nicht ausschließlich gestrichene unmittelbare Nachfolger in B besitzt, betrachte in beliebiger Reihenfolge alle unmittelbaren Nachfolger j im Graphen. o Wenn j noch nicht in B enthalten ist, füge j in B als unmittelbaren Nachfolger von i hinzu und setze für die Wegstrecke I(j) = I(i) + c ij (das Gewicht, mit dem die Kante zwischen i und j versehen ist). o Wenn j schon in B enthalten ist und es gilt I(i) + c ij < I(j), dann markiere den vorhandenen Knoten j und sämtliche Nachfolger als gestrichen. Füge j als Nachfolger von i in den Baum ein und setze I(j) = I(i) + c ij. o Wenn j schon in B enthalten ist und es gilt I(i) + c ij > I(j), füge ihn als gestrichenen Nachfolger in den Baum ein. o Wenn j schon in B enthalten ist und es gilt I(i) + c ij = I(j), dann füge in B j als Nachfolger von i hinzu, sofern j nicht schon auf dem Weg von 0 i nach i vorhanden ist, und setze I(j) = I(i) + c ij ; sonst füge j als gestrichenen Nachfolger ein. 4) Gehe zu Schritt 2, wenn alle unmittelbaren Nachfolger von i bearbeitet worden sind. (a) Wenden Sie das Verfahren an, um den kürzesten Weg von K0 nach K5 zu finden, und zeichnen Sie den konstruierten Wegebaum. (1 Punkt) (b) Implementieren Sie den Algorithmus in Python, und speichern Sie den Graphen und den zu konstruierenden Baum in einer geeigneten Datenstruktur. (2 Punkte) Hinweis: Die maximal erreichbare Punktzahl für dieses Übungsblatt beträgt 10 Punkte. Die Bonusaufgabe ist eine Möglichkeit, Punktverluste aus den anderen Aufgaben auszugleichen.