Lehrerbildungszentrum Informatik an der Universität Göttingen

Größe: px
Ab Seite anzeigen:

Download "Lehrerbildungszentrum Informatik an der Universität Göttingen"

Transkript

1 Lehrerbildungszentrum Informatik an der Universität Göttingen Lehrermaterial: Graphen zum Themenschwerpunkt 2, Zentralabitur Niedersachsen 2010 / 2011

2 1. Graphen als Modellierungswerkzeug Im ersten Beispiel beschäftigen wir uns mit der Frequenzplanung in Funknetzen 1. Abbildung 1 zeigt die Lage von Funkmasten in der Gemeinde Katlenburg-Lindau 2. Eine Sendestation überdeckt dabei ein bestimmtes geographisches Gebiet. Dabei kann es vorkommen, dass bestimmte Bereiche von mehreren Sendestationen überdeckt werden. Diese Situation ist in Abbildung 2 dargestellt. Abbildung 1: Funkmasten Abbildung 2: Ausbreitungsbereiche der Sendestationen Wenn nun mehrere Sendestationen dieselbe Frequenz benutzen, aber ihre Sendebereiche sich überdecken, kann es zu Störungen kommen. Um diese Störungen zu vermeiden, sollten alle Sender, die ein gemeinsames Gebiet erreichen, unterschiedliche Sendefrequenzen verwenden. Wir modellieren dies Problem zunächst einmal, in dem wir uns auf die wichtigsten Informationen beschränken. Statt Funkmasten verwenden wir Knoten, die wir mit A G beschriften (Abbildung 3). Überlappen sich zwei Sendebereiche, dann verbinden wir die zugehörigen Knoten mit einer Kante, wie in Abbildung 4 dargestellt. Abbildung 3: Funkmasten als Knoten Abbildung 4: Knoten und Kanten Da wir zur Lösung des Problems die genaue geographische Lage der Funkmasten nicht mehr benötigen, entsteht aus unseren Überlegungen folgender Modellgraph: 1 Die Idee stammt aus dem Buch Graphentheorie. Eine anwendungsorientierte Einführung von Peter Tittmann, Fachbuchverlag Leipzig im Carl Hanser Verlag, Die Karte ist echt, die Funkmasten (glücklicherweise) nicht.

3 Ein Graph besteht aus einer Menge von Knoten und einer Menge von Kanten. Kanten verbinden jeweils zwei Knoten miteinander. Um Störungen im Funknetz zu vermeiden, dürfen zwei Knoten, die über eine Kante miteinander verbunden sind, nicht in derselben Frequenz senden. Eine mögliche Lösung wäre, die Frequenz für einen Knoten festzulegen und dafür zu sorgen, dass alle Knoten, die mit diesem Knoten verbunden sind, auf einer anderen Frequenz senden. Dann betrachtet man die Nachbarknoten und sorgt dafür, dass ihre Nachbarn Abbildung 5: Modellgraph wiederum eine andere Frequenz nutzen. Nur muss man jetzt aufpassen, dass man die Überlegungen für den ersten Knoten damit nicht wieder verwirft. Das wird alles per Hand so unübersichtlich, dass man den Rechner zur Unterstützung braucht. Vielleicht fällt jedem jetzt schon ein passender Algorithmus zur Frequenzplanung ein, aber zunächst einmal muss geklärt werden, wie man diesen Graphen zur Verarbeitung mit dem Rechner darstellen kann. Grundsätzlich gibt es zwei Möglichkeiten. Man verwendet zur Darstellung eines Graphens entweder eine Adjazenzmatrix oder eine Adjazenzliste. 2. Darstellungen von Graphen 2.1 Adjanzenmatrix: Wir repräsentieren einen Graphen als zweidimensionale Reihung oder Matrix, deren Einträge angeben, ob eine Kante zwischen zwei Knoten existiert oder nicht: A B C D E F G A false true true false true false false B true false false true true false false C true false false false false false false D false true false false true true false E true true false true false false true F false false false true false false true G false false false false true true false Die Tabelle ist symmetrisch, was daran liegt, dass ein ungerichteter Graph zugrunde liegt. Wir kommen an späterer Stelle noch einmal darauf zurück. Weiterhin ist der Graph auch unbewertet, was sich ebenfalls in der Tabelle widerspiegelt, aber auch dazu später mehr. Kümmern wir uns zunächst um den entsprechenden Code, der diese Matrix implementiert. Unsere Knoten hatten die Bezeichnungen 'A' bis 'G'. Das kann in anderen Zusammenhängen anders sein, weshalb eine Klasse Knoten interessant ist, die hier für unsere Aufgabe angepasst wird und nur Daten vom Typ char berücksichtigt. Eine Anpassung für andere Zusammenhänge ist ersichtlich.

4 Bei der Erstellung eines neuen Knotens, wird die Bezeichnung übergeben. Neue Knoten kann man in anderen Klassen erstellen mit dem Befehl: Wir verwenden diese Klasse nun, um in der Klasse Graph eine Knotenliste zu erstellen, die die Knoten entsprechend der Reihenfolge in der sie eingefügt werden enthält 3. Bei der Erstellung eines neuen Graphen muss die Gesamtgröße (hier: 7) angegeben werden. Weiterhin wird die Adjazenzmatrix mit dem Wert false initialisiert. Das Attribut anzahl gibt den Index des ersten freien Platzes in der Knotenliste an, bzw. die Anzahl bereits eingefügter Knoten. Wird ein Knoten eingefügt, ist der Rückgabewert nur dann true, wenn das Einfügen erfolgreich war. Ein Knoten kann nur eingefügt werden, wenn die Anzahl der bereits vorhandenen Knoten kleiner ist als die maximale Anzahl. Eine Kante kann nur eingefügt werden, wenn die zugehörigen Knoten existieren. Es wird zunächst überprüft an welcher Stelle der Knotenliste diese Knoten sind, also welchen Index sie haben. Dann werden die entsprechenden Einträge der Adjazenzmatrix auf true gesetzt. Bei ungerichteten Graphen ist eine Kante von A nach B, gleichzeitig auch eine Kante von B nach A. Für ein Knoten wird in der Reihung knotenliste gesucht, an welcher Stelle (Index) der Knoten zu finden ist. Eine Kante wird entfernt, indem die entsprechenden Einträge in der Adjazenzmatrix wieder auf false gesetzt werden. 3 Die Implementierungsidee findet sich in ähnlicher Form auch im Lehrbuch Informatik 4. Rekursive Datenstrukturen. Softwaretechnik, Ernst Klett Verlag, Teile sind daraus entnommen.

5 Um unseren Beispielgraphen einzugeben, benötigen wir folgende Aufrufe: Jetzt sind wir in der Lage, einen Algorithmus zur Frequenzplanung in diesem Funknetz zu entwickeln und vor allem zu implementieren. Doch zuvor noch eine weitere Darstellung von Graphen zum Zweck einer Implementation. Die meisten Einträge in der Adjazenzmatrix sind false. Für Kanten, die gar nicht vorhanden sind, sollte kein Speicherplatz unnötig allokiert werden. Besser ist hier eine dynamische Datenstruktur, die dynamisch mit der Anzahl der Kanten wachsen oder schrumpfen kann. Als Beispiel einer dynamischen Datenstruktur ist aus anderen Zusammenhängen der Datentyp Liste sicher bekannt. Adjazenzlisten, als Repräsentanten von Graphen können diese Datenstruktur sinnvoll nutzen Adjazenzliste: Die Knoten des Graphen werden in einer Liste gespeichert. Zu jedem Knoten wird eine weitere Liste angelegt, in der die Nachbarn des Knoten gespeichert werden. Für unseren Graphen ergibt sich folgende Adjazenzlistendarstellung: Wobei grünlich unterlegt die Liste der Knoten des Graphen dargestellt ist und jeweils lila unterlegt die Listen der Nachbarn. Die unterschiedliche Länge der Nachbarnlisten visualisiert gut die Vorteile dynamischer Datenstrukturen. Für den Java- Code bedienen wir uns der Java- Klasse Vector, die eine Implementierung des ADT Liste darstellt. Zunächst müssen wir die Klasse Knoten um eine Liste mit Nachbarknoten erweitern: Die Nachbarliste besteht ebenfalls aus Knoten. Ansonsten bleibt die Klasse Knoten unverändert.

6 Die Knotenliste ist jetzt keine Reihung mehr, deren Größe anfangs festgelegt werden muss, sondern eine Liste. Die Signatur der Methoden knoteneinfügen, kanteeinfügen und kanteentfernen bleibt erhalten. Eine Kante von Knoten bis Knoten bedeutet, dass der Knoten bis als Nachbar in die Nachbarliste des Knotens von eingefügt werden muss und der Knoten von als Nachbar des Knotens bis. Gerichtete Graphen müssen an dieser Stelle später modifiziert werden. Die Methoden add und remove der Klasse Vector vereinfachen die Methodenstruktur in der Klasse Graph. Nachdem die Klasse Graph nun auf die ein oder andere Weise implementiert ist, können wir uns um die Algorithmen kümmern, die auf Graphen operieren. Algorithmen auf Graphen sind deshalb interessant, weil viele Problemstellungen mit Hilfe von Graphen modelliert werden können. Im ersten Beispiel ging es um die Frequenzplanung bei Sendestationen. Um Störungen zu verhindern, sollten benachbarte Sendestationen nicht in derselben Frequenz senden, sofern sich ihre Sendebereiche überlappen. Es bleibt jedem selbst überlassen, hier einen funktionierenden Algorithmus anzugeben. Allerdings müssen die Klasse Knoten und die Klasse Graph ein bisschen der Problemstellung angepasst werden. Hilfreich für jede Art von Lösungsalgorithmus sind zusätzliche Informationen an den Knoten, eine Markierung beispielsweise, die anzeigt ob ein Knoten schon bearbeitet wurde oder ein Attribut, welches den gewählten Frequenzbereich für einen Knoten aufnehmen kann. Diese Klassenerweiterungen der Klassen Knoten und Graph sind in allen Algorithmen für Graphen notwendig, ihre Umsetzung dürfte jedoch bekannt sein, sie ist zumindest in diesem Rahmen nicht Gegenstand der Betrachtung. 3. Ein bisschen Graphentheorie Ein sehr bekannter Graph ist zweifelsohne das Haus vom Nikolaus. Ein ganzes Buch widmet sich diesem Graphen 4. Abbildung 6: Das Haus vom Nikolaus 4 Manfred Nitzsche: Graphen für Einsteiger. Rund um das Haus vom Nikolaus, Vieweg & Sohn Verlag, 2005

7 Das linke der Häuser in Abbildung 6 zeigt einen Graphen, wie wir ihn aus dem ersten Kapitel kennen mit Knoten und Kanten. Verbindet man nun nacheinander die Knoten A,B,C,D,B,E,A,D,E, so kann man das Haus zeichnen ohne eine Kante zweimal zu zeichnen. Eine Folge von Kanten, die jeweils durch einen Knoten miteinander verbunden sind, nennt man Pfad. Oder formaler: Unter einem Pfad von Knoten a nach Knoten b der Länge n in einem Graphen versteht man eine Folge von n aufeinanderfolgenden Kanten. Ist der Pfad zusätzlich geschlossen, also Anfangs- und Endknoten identisch, spricht man von einem Zyklus. Im linken Graphen der Abbildung 6 finden sich die Zyklen A,B,E,A oder B, D, E, A, B und andere. Gibt es von jedem Knoten einen Pfad zu jedem anderen Knoten, wie das im linken Haus der Abbildung 6 der Fall ist, spricht man von einem zusammenhängenden Graphen, jeder Knoten ist von jedem anderen Knoten aus erreichbar. Das rechte Haus der Abbildung 6 stellt einen gerichteten Graphen dar. Es existiert eine Kante von A nach B aber keine Kante von B nach A. Hier muss bei einem Pfad zusätzlich die Richtung der Kanten berücksichtigt werden. Der Pfad A,D,C des linken Graphen ist kein Pfad im rechten Graphen. Der Pfad A,B,C,D,B,E,A,D,E ist allerdings auch hier vorhanden. Es ist leicht einzusehen, dass die Adjazenzmatrix eines gerichteten Graphen nicht mehr symmetrisch sein muss. Allerdings kann es natürlich Kanten von Knoten a nach Knoten b und von Knoten b nach Knoten a geben. Da die Adjazenzmatrix nicht mehr symmetrisch ist, muss der Code etwas abgewandelt werden und vor allem eine Vereinbarung getroffen werden, ob die Zeilen oder Spalten der Matrix den Startknoten der Kante angeben. Auch in gerichteten Graphen gibt es möglicherweise Zyklen. Bei gerichteten Graphen unterscheidet man zwischen stark zusammenhängenden Graphen, wenn es von jedem Knoten einen Weg zu jedem anderen Knoten gibt und schwach zusammenhängenden Graphen, wenn der Graph als ungerichteter Graph (bei Ignoranz der Richtung) zusammenhängend wäre. Der obige gerichtete Graph ist stark zusammenhängend Eulersche Graphen Eulersche Graphen sind Graphen, in denen man eine eulersche Tour finden kann, einen ganz besonderen Pfad, der die folgenden Eigenschaften erfüllt: der Pfad enthält keine Kante doppelt der Pfad enthält sämtliche Kanten des Graphen Anfangs- und Endknoten stimmen überein. Egal wie man das Haus vom Nikolaus auch zeichnet. Wir können die ersten beiden Anforderungen erfüllen, denn das sind auch die Voraussetzungen für das Haus vom Nikolaus. Aber so sehr wir uns bemühen, Punkt drei könnten wir nur erfüllen, wenn zwischen den Knoten A und E eine weitere Kante eingezeichnet wäre. Das Haus vom Nikolaus ist also (egal ob ungerichtet oder nicht) kein eulerscher Graph. Man kann sogar mathematisch beweisen, dass ein zusammenhängender Graph genau dann eulersch ist, wenn der Grad jedes Knotens gerade ist. (Der Grad eines Knotens ist dabei die Anzahl der Kanten, die von diesem Knoten ausgehen) Hamiltonsche Graphen Ein Hamiltonscher Graph enthält einen hamiltonschen Kreis. Dies ist ein geschlossener Pfad, der jeden Knoten des Graphen genau einmal enthält. Ein hamiltonscher Kreis geht also durch jeden Knoten, muss aber nicht jede Kante des Graphen enthalten. Im Haus vom Nikolaus finden wir schnell den Pfad A,B,C,D,E,A, der ein hamiltonscher Kreis ist und damit ist das Haus vom Nikolaus ein hamiltonscher Graph. Wichtig ist, dass zwar Anfangs- und Endknoten gleich sind und damit doppelt genannt werden, ansonsten aber jeder Knoten nur genau einmal vorkommen darf und

8 auch der Anfangs- und Endknoten zwischendurch kein weiteres Mal genannt werden darf. Hamiltonsche Kreise werden uns später wieder begegnen. Damit sei der Graphentheorie jetzt aber erst einmal genüge getan. 4. Gewichtete Graphen und Dijkstra Neben der Frequenzplanung in Funknetzen gibt es eine klassische Anwendung gewichteter Graphen bei der Suche nach kürzesten Verbindungen zwischen zwei Orten. Folgende Abbildungen stammen aus dem Buch Abenteuer Informatik von Jens Gallenbacher 5. Unter der Fragestellung: Wie funktioniert ein Routenplaner? wird folgende Straßenkarte mit Hilfe eines gewichteten Graphen modelliert: Zeichnung 1: Straßenkarte Zeichnung 2: Graph Die Ortschaften wurden dabei als Knoten dargestellt und mit ihrem Anfangsbuchstaben beschriftet. An den Kanten (Straßen) stehen nun Gewichte, die in diesem Fall die Entfernungen zwischen den Orten in km angeben. Es ist ersichtlich, dass die Adjazenzmatrix diese Gewichte in irgendeiner Form aufnehmen muss. Eine Möglichkeit ist die, eine zweidimensionale Reihung von int-werten zu verwenden. Ein Zelleneintrag ist dabei die Entfernung zwischen zwei Knoten oder 0, wenn keine Kante zwischen diesen Knoten existiert. Bei der Verwendung von Adjazenzlisten müssen in die Liste der Nachbarknoten noch Informationen über die Entfernung hinzugefügt werden. Dies kann man realisieren, indem man die Klasse Knoten modifiziert und das Aufnehmen von Entfernungen ermöglicht. Alternativ können die Gewichte an den Kanten natürlich auch Fahrtzeiten zwischen den Orten sein oder ähnliches. Jetzt möchte ein Reisender von Imstadt (I) nach Oppenheim (O) und zwar auf dem kürzesten Weg. Denkt man zunächst, dass die direkte Verbindung über Pappstadt (P) mit 146 km günstig ist, kann man nach gründlichem Hinsehen eine Route mit nur 123 km über Pappstadt (P), Krupsing (K) und Flughafen (F) erkennen. Ein Algorithmus, der ausgehend von einem Startknoten die kürzesten Wege zu allen anderen Knoten im Graphen berechnet, ist der Dijkstra-Algorithmus 6, der im Folgenden vorgestellt werden soll. Um ein Beispiel gründlicher zu bearbeiten mit einem bewerteten (gewichteten) und gerichteten Graphen, verwenden wir nicht die obige Karte, sondern folgendes Modell einer Straßenkarte mit 5 Jens Gallenbacher: Abenteuer Informatik, Spektrum Verlag, Benannt nach dem Erfinder Edsger Wybe Dijkstra ( )

9 vielen Einbahnstraßen ;-) und die entsprechende Adjazenzmatrix: A B C D E F A B 10 C D E Abbildung 7: gerichteter gewichteter Graph F Freie Felder (keine Kanten) werden später mit 0 initialisiert. Eine Kante von A nach B bedeutet einen Zelleintrag in die Zelle[B][A]. Dies kann natürlich auch genau anders herum realisiert werden. Wir wählen als Startknoten Knoten A und suchen den kürzesten Weg zum Knoten F. Außerdem wollen wir die kürzeste Entfernung von A zu F berechnen. Dabei werden wir uns Stück für Stück vorarbeiten, ausgehend vom Startknoten zunächst die Nachbarknoten betrachten, die wiederum ihre Nachbarn betrachten usw. Auf dem Weg müssen wir einige Dinge zwischenspeichern. Das tun wir, indem die Knoten noch weitere Informationen aufnehmen. Ein Knoten muss als bearbeitet markiert werden können, was wir dadurch realisieren, dass wir ihn anders farbig zeichnen. Außerdem muss er die Information über sein aktuelles Pfadgewicht (in rot) und seinen aktuellen Vorgängerknoten des bisherigen kürzesten Weges speichern können (in blau). Unter Pfadgewicht verstehen wir die Summe der Kantengewichte entlang eines Pfades. Aber das wird gleich alles noch verständlicher, keine Sorge. Außerdem brauchen wir eine Hilfsliste, die alle Knoten aufnimmt und stets automatisch nach der Größe der Pfadgewichte (aufsteigend) sortiert. Jetzt geht es los. Wir beginnen mit der Initialisierung des Graphen und der sortierten Hilfsliste: Knoten A B C D E F aktuelles Pfadgewicht 0 Vorgänger start null null null null null bearbeitet? nein nein nein nein nein nein Zunächst werden alle Referenzen auf die Vorgänger (außer beim Startknoten) auf null gesetzt und die Pfadgewichte auf. Wir suchen jetzt den ersten nicht bearbeiteten Knoten in der sortierten Liste. Nicht schwer, das ist Knoten A. Wir bearbeiten einen Knoten, indem wir für alle seine Nachfolgeknoten die Einträge in der Liste aktualisieren.

10 Es ergibt sich folgendes Bild: (Die Liste wird automatisch entsprechend der Pfadgewichte sortiert.) Knoten A B D F C E aktuelles Pfadgewicht Vorgänger start A A A null null bearbeitet? ja nein nein nein nein nein Der erste nicht bearbeitete Knoten der Hilfsliste ist jetzt Knoten B. Bearbeitet man Knoten B, werden die Einträge für die Nachbarknoten (hier: C und D) aktualisiert. Da wir aber kürzeste Wege suchen, aktualisieren wir Pfadgewicht und Vorgänger nur dann, wenn das Pfadgewicht dadurch echt kleiner wird. Diesmal ist das nicht der Fall, denn D hat ein aktuelles Pfadgewicht von 20 und ein Weg über B zu D würde ebenfalls 20 ergeben, also nicht echt kleiner sein. Es ergibt sich somit folgende Darstellung: Knoten A B D C F E aktuelles Pfadgewicht Vorgänger start A A B A null bearbeitet? ja ja nein nein nein nein Das aktuelle Pfadgewicht bei Knoten C entspricht 30, weil das Pfadgewicht von Knoten B = 10 ist und Knoten B der Vorgänger von C ist. Außerdem beträgt das Kantengewicht von Knoten B nach Knoten C = 20 und da = 30, ergibt sich für C ein Pfadgewicht von 30. Unser nächster Knoten in der Liste ist Knoten D. Wir erhalten: Knoten A B D C E F aktuelles Pfadgewicht Vorgänger start A A B D A bearbeitet? ja ja ja nein nein nein

11 Der Pfad nach C über Knoten D ist 90 km lang (20+70) und stellt keine Verbesserung dar, weshalb der Eintrag von C nicht aktualisiert wird. Doch bei der Bearbeitung von Knoten C passiert zum ersten Mal das, was man eine Relaxation nennt. Es findet tatsächlich eine Veränderung aktueller Pfadgewichte statt. Knoten A B D C E F aktuelles Pfadgewicht Vorgänger start A A B C C bearbeitet? ja ja ja ja nein nein Das aktuelle Pfadgewicht von Knoten E und Knoten F wird nach unten korrigiert und entsprechend werden ihre Vorgängerknoten verändert. Warum ist das nun so? Knoten E hatte ein aktuelles Pfadgewicht von 60 bei einem Weg über den Vorgängerknoten D. Knoten C hat ein aktuelles Pfadgewicht von 30. Das Kantengewicht zwischen Knoten C und Knoten E ist 10. Da 30+10=40 und außerdem 40 < 60 ist, verläuft der bislang kürzeste Weg über Knoten C und ist 40 km lang. Entsprechendes gilt für F. Ein Weg über Knoten C hat ein Pfadgewicht von 30+40=70 und ist damit echt kleiner als 100, die Länge bei einem Weg über A. Im nächsten Schritt finden wir erneut eine Relaxation bei Knoten F: Knoten A B D C E F aktuelles Pfadgewicht Vorgänger start A A B C E bearbeitet? ja ja ja ja ja nein Da Knoten F keine Nachfolgeknoten hat, sind wir mit der Bearbeitung am Ende. Der kürzeste Weg von Knoten A zu Knoten F ist 60 km lang. Den Wert können wir direkt aus der Liste entnehmen. Aber kann man auch rekonstruieren, wo der Weg entlang führt? Ja, man verfolgt einfach die Vorgängerknoten in der Liste zurück. Das Ziel war Knoten F. Für den kürzesten Weg muss der Vorgängerknoten E sein. Der Vorgänger von E ist nach der Liste C, dessen Vorgänger B und dessen Vorgänger A ist. Der Weg A,B,C,E,F stellt also die kürzeste Verbindung zwischen A und F dar. Bleibt nur noch eine letzte Aufgabe in diesem Kapitel: Die Implementation in Java.

12 Als Vorüberlegung fassen wir den Dijkstra-Algorithmus zunächst in einem Struktogramm zusammen: Um das zu realisieren, passen wir zunächst einmal die Klasse Knoten etwas an: Zusätzlich zu einem Namen müssen die Knoten Informationen über das aktuelle Pfadgewicht, ihren Vorgänger und ihren Bearbeitungsstatus aufnehmen können. Für die Hilfsliste werden die Attribute entsprechend dem Beispiel auf unendlich bzw. null gesetzt. Mit dieser Methode kann ein Startknoten ausgewählt werden. set- und get-methoden für das aktuelle Pfadgewicht. Außerdem set- und get-methoden für den Bearbeitungsstatus und den Vorgänger, der ja bei der Relaxation verändert werden muss.

13 Jetzt sehen wir uns ein Beispiel für eine Hilfsliste an, die Objekte der Klasse Knoten aufnehmen kann. Die Hilfsliste muss über eine Sortierfunktion verfügen, die die Knoten entsprechend ihres aktuellen Pfadgewichtes aufsteigend sortiert. Die Hilfsliste mit vorher festzulegender Größe nimmt Knoten der eben besprochenen Klasse auf. Mit der Methode add können Knoten der Liste hinzugefügt werden. Diese Methode sorgt dafür, dass die Liste sortiert wird, entsprechend den Pfadgewichten der einzelnen Knoten. Es wird ein einfacher SelectionSort-Algorithmus verwendet. Die Hilfsmethode swap vertauscht dabei zwei Elemente der Knotenliste. Für den Dijkstra-Algorithmus gibt diese Methode zurück, ob alle Knoten der Hilfsliste schon bearbeitet sind oder nicht. Diese Methode gibt den ersten unbearbeiteten Knoten der Hilfsliste zurück. Auch die Klasse Graph muss noch etwas verändert werden, bevor wir den Dijkstra-Algorithmus angeben können.

14 Wie bereits angekündigt, verwenden wir eine Adjazenzmatrix, wobei der erste Index die Zeile und der zweite die Spalte angibt. Zunächst wird die Adjazenzmatrix mit 0en initialisiert. Diese Methode bleibt unverändert Da die Matrix nun nicht mehr symmetrisch ist (gerichteter Graph), muss man auf die Vereinbarung achten, wie Zeilen und Spalten gefüllt werden müssen. Auch diese Methode bleibt unverändert Die Klasse Graph bekommt eine Methode, die die Nachfolger zu jedem Knoten zurückgeben kann. Dazu wird für einen Knoten in der Adjazenzmatrix nachgesehen, welche Einträge ungleich 0 sind. Hier müssen Nachbarn zu finden sein. Die zurückzugebende Reihung wird um ein Element erweitert, nämlich dem gefundenen Nachfolger. Außerdem kann das Kantengewicht zwischen zwei Knoten zurück gegeben werden.

15 Um hier ist er endlich: Der Dijkstra-Algorithmus in Java implementiert, gemäß des vorgegebenen Struktogramms:

Algorithmen und Datenstrukturen 2-1. Seminar -

Algorithmen und Datenstrukturen 2-1. Seminar - Algorithmen und Datenstrukturen 2-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Sommersemster 2010 Outline 1. Übungsserie: 3 Aufgaben, insgesamt 30 28 Punkte A1 Spannbäume (10 8

Mehr

3. Die Datenstruktur Graph

3. Die Datenstruktur Graph 3. Die Datenstruktur Graph 3.1 Einleitung: Das Königsberger Brückenproblem Das Königsberger Brückenproblem ist eine mathematische Fragestellung des frühen 18. Jahrhunderts, die anhand von sieben Brücken

Mehr

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

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

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

Mehr

Kürzeste Wege in einem gewichteten Graphen. Anwendungen

Kürzeste Wege in einem gewichteten Graphen. Anwendungen Kürzeste Wege in einem gewichteten Graphen Dazu werden die Gewichte als Weglängen interpretiert. Der kürzeste Weg zwischen zwei Knoten in einem zusammenhängenden Graphen ist derjenige, bei dem die Summe

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 16 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 45 Graphen TU Ilmenau Seite 2 / 45 Graphen 1 2 3 4 5 6 7 8

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Institut für Programmierung Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2016 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Schilda-Rallye Was steckt

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 20.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Schilda-Rallye Was steckt dahinter? Darstellung von Graphen

Mehr

Routing Algorithmen. Begriffe, Definitionen

Routing Algorithmen. Begriffe, Definitionen Begriffe, Definitionen Routing (aus der Informatik) Wegewahl oder Verkehrslenkung bezeichnet in der Telekommunikation das Festlegen von Wegen für Nachrichtenströme bei der Nachrichtenübermittlung über

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)

Mehr

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Vorlesung 7 und 8: Euler- und Hamilton-Graphen Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 17. April 2018 1/96 WIEDERHOLUNG Eulersche

Mehr

Konzepte der Informatik

Konzepte der Informatik Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Konzepte der Informatik Vorkurs Informatik zum WS 23/24 6.9. - 27.9.23 Dr. Werner Struckmann / Hendrik Freytag. April 2 Referent Kurztitel

Mehr

Algorithmen & Datenstrukturen 2 Praktikum 3

Algorithmen & Datenstrukturen 2 Praktikum 3 Algorithmen & Datenstrukturen 2 Praktikum 3 Thema: Graphalgorithmen Sommersemester 2016 Prof. Dr. Christoph Karg Hochschule Aalen Dieses Praktikum widmet sich dem Thema Graphalgorithmen. Ziel ist die Implementierung

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Übungsblatt 10 Abgabe: Montag, 08.07.2013, 14:00 Uhr Die Übungen sollen in Gruppen von zwei bis drei Personen bearbeitet werden. Schreiben Sie die Namen jedes

Mehr

Relationen und Graphentheorie

Relationen und Graphentheorie Seite Graphentheorie- Relationen und Graphentheorie Grundbegriffe. Relationen- und Graphentheorie gehören zu den wichtigsten Hilfsmitteln der Informatik, die aus der diskretenmathematik stammen. Ein Graph

Mehr

Wie wird ein Graph dargestellt?

Wie wird ein Graph dargestellt? Wie wird ein Graph dargestellt? Für einen Graphen G = (V, E), ob gerichtet oder ungerichtet, verwende eine Adjazenzliste A G : A G [i] zeigt auf eine Liste aller Nachbarn von Knoten i, wenn G ungerichtet

Mehr

Dabei handelt es sich um eine Tabelle, in der die Zeilen- und Spaltenüberschriften die Knotenbezeichner sind.

Dabei handelt es sich um eine Tabelle, in der die Zeilen- und Spaltenüberschriften die Knotenbezeichner sind. 3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen Für die Darstellung eines Graphen eignet sich die sogenannte Adjazenzmatrix. Dabei handelt es sich um eine Tabelle, in der die Zeilen- und Spaltenüberschriften

Mehr

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert:

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert: KAPITEL 3 Graphen Man kann als Ursprung der Graphentheorie ein Problem sehen, welches Euler 1736 von Studenten aus Königsberg gestellt bekam. Der Fluss Pregel wird von 7 Brücken überquert, und die Frage

Mehr

Aufgaben zur Klausurvorbereitung

Aufgaben zur Klausurvorbereitung Vorlesung Graphen und Optimierung Sommersemester 2013/14 Prof. S. Lange Aufgaben zur Klausurvorbereitung Hier finden Sie eine Reihe von Übungsaufgaben, die wir an den beiden Vorlesungsterminen am 29.01.2014

Mehr

Algorithmen und Datenstrukturen 13

Algorithmen und Datenstrukturen 13 19. Juli 2012 1 Besprechung Blatt 12 Fragen 2 Bäume AVL-Bäume 3 Graphen Allgemein Matrixdarstellung 4 Graphalgorithmen Dijkstra Prim Kruskal Fragen Fragen zu Blatt 12? AVL-Bäume AVL-Bäume ein AVL-Baum

Mehr

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

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Hausaufgabe 2 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008 Technische Universität München Fakultät für Informatik Lehrstuhl für Informatik 15 Computergraphik & Visualisierung Prof. Dr. Rüdiger Westermann Dr. Werner Meixner Wintersemester 2007/08 Lösungsblatt 9

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen Lerneinheit : Kürzeste Pfade in Graphen Prof. Dr. Christoph Karg Studiengang Informatik Hochschule Aalen Sommersemester 016.6.01 Einleitung Diese Lerneinheit beschäftigt

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

10 Kürzeste Pfade SSSP-Problem

10 Kürzeste Pfade SSSP-Problem In diesem Kapitel setzen wir uns mit der Berechnung von kürzesten Pfaden in einem Graphen auseinander. Definition 10.1 (Pfadgewichte). i) Das Gewicht eines Pfades p = (v 0, v 1,..., v k ) ist die Summe

Mehr

Konzepte der Informatik

Konzepte der Informatik Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Konzepte der Informatik Vorkurs Informatik zum WS 2012/2013 01.10. - 12.10.2012 Dr. Werner Struckmann / Tim Winkelmann Stark angelehnt

Mehr

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

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

Vorkurs Informatik SoSe 14 Algorithmen 2

Vorkurs Informatik SoSe 14 Algorithmen 2 Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Vorkurs Informatik SoSe 14 Algorithmen 2 2.4. - 1.4.214 Dr. Werner Struckmann / Markus Reschke Stark angelehnt an "Abenteuer Informatik"

Mehr

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

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale

Mehr

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7 1 Kürzeste Pfade Woche 6 7 Hier arbeiten wir mit gewichteten Graphen, d.h. Graphen, deren Kanten mit einer Zahl gewichtet werden. Wir bezeichnen die Gewichtsfunktion mit l : E R. Wir wollen einen kürzesten

Mehr

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1

Graphen Jiri Spale, Algorithmen und Datenstrukturen - Graphen 1 Graphen 27 Jiri Spale, Algorithmen und Datenstrukturen - Graphen Motivation Einsatz: Berechnung von Entfernungen Auffinden von Zyklen in Beziehungen Ermittlung von Verbindungen Zeitmanagement Konzept:

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Graphen (2) Spannbäume Kürzeste Wege Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 455 Wiederholung Traversierung eines Graphen via Tiefendurchlaufs

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 11 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 14. Mai

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Graphen 9/1 Begriffsdefinitionen Ein Graph besteht aus Knoten und Kanten. Ein Knoten(Ecke) ist ein benanntes Objekt. Eine Kante verbindet zwei Knoten. Kanten haben ein Gewicht

Mehr

Informatik Abitur Bayern 2017 / II - Lösung

Informatik Abitur Bayern 2017 / II - Lösung Informatik Abitur Bayern 2017 / II - Lösung Autoren: Wolf (1) Wagner (2) Scharnagl (3-5) 1a 5 1b Diese Methode vergleicht den Namen des Interpreten eines jeden Elements der Liste mit dem gegebenen Namen.

Mehr

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

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza) WS 2013/14 Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Esparza) Dr. Werner Meixner Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2013ws/ds/uebung/ 22. Januar 2014 ZÜ DS ZÜ XIII

Mehr

Algorithmen & Komplexität

Algorithmen & Komplexität Algorithmen & Komplexität Angelika Steger Institut für Theoretische Informatik steger@inf.ethz.ch Kürzeste Pfade Problem Gegeben Netzwerk: Graph G = (V, E), Gewichtsfunktion w: E N Zwei Knoten: s, t Kantenzug/Weg

Mehr

Problemlösen in grafischen Strukturen

Problemlösen in grafischen Strukturen Problemlösen in grafischen Strukturen Modul 31801 - Zusammenfassung Version vom 01.04.2019 Fernstudium Guide - Problemlösen in graphischen Strukturen - Seite 1 Impressum Herausgeber: FSGU AKADEMIE - Ein

Mehr

Teil 2: Graphenalgorithmen

Teil 2: Graphenalgorithmen Teil : Graphenalgorithmen Anwendungen Definitionen Datenstrukturen für Graphen Elementare Algorithmen Topologisches Sortieren Kürzeste Wege Minimal aufspannende Bäume Problemstellung Algorithmus von Prim

Mehr

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60 Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester

Mehr

Konzepte der Informatik

Konzepte der Informatik Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Konzepte der Informatik Vorkurs Informatik zum WS 2012/2013 01.10. - 12.10.2012 Dr. Werner Struckmann / Tim Winkelmann Stark angelehnt

Mehr

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

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012 Algorithmen und Datenstrukturen Tafelübung 14 Jens Wetzl 8. Februar 2012 Folien Keine Garantie für Vollständigkeit und/oder Richtigkeit Keine offizielle Informationsquelle LS2-Webseite Abrufbar unter:

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel1 aus "Abenteuer Informatik" von Jens

Mehr

Programmierung 2 Studiengang MI / WI

Programmierung 2 Studiengang MI / WI Programmierung 2 Studiengang MI / WI Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 Fachbereich Automatisierung

Mehr

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Graphen Definition: Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist. Begriffe: Gerichteter Graph: Alle Kanten haben eine Richtung vom Anfangsknoten

Mehr

10. Übungsblatt zu Algorithmen I im SS 2010

10. Übungsblatt zu Algorithmen I im SS 2010 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders G.V. Batz, C. Schulz, J. Speck 0. Übungsblatt zu Algorithmen I im SS 00 http//algo.iti.kit.edu/algorithmeni.php

Mehr

1 Kürzeste Pfade in Graphen

1 Kürzeste Pfade in Graphen Praktikum Algorithmen-Entwurf (Teil 3) 03.11.2011 1 1 Kürzeste Pfade in Graphen Es sei ein gerichteter Graph G = (V, E) mit V = n Knoten, E = m Kanten und Kantengewichten c : E R gegeben. Ein Pfad in G

Mehr

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden! Albert-Ludwigs-Universität Institut für Informatik Prof. Dr. F. Kuhn Informatik II: Algorithmen & Datenstrukturen Montag, 29. August, 2014, 14:00 17:00 Name:...........................................................

Mehr

Graphen. Definitionen

Graphen. Definitionen Graphen Graphen werden häufig als Modell für das Lösen eines Problems aus der Praxis verwendet, wie wir im Kapitel 1 gesehen haben. Der Schweizer Mathematiker Euler hat als erster Graphen verwendet, um

Mehr

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

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 1. Mai 01 Programmieren II 1. Übungsblatt Hinweis: Dieses Übungsblatt enthält die dritte Pflichtaufgabe.

Mehr

Isomorphie von Bäumen

Isomorphie von Bäumen Isomorphie von Bäumen Alexandra Weinberger 23. Dezember 2011 Inhaltsverzeichnis 1 Einige Grundlagen und Definitionen 2 1.1 Bäume................................. 3 1.2 Isomorphie..............................

Mehr

Graphentheorie. Kardinalitätsmatchings. Kardinalitätsmatchings. Kardinalitätsmatchings. Rainer Schrader. 11. Dezember 2007

Graphentheorie. Kardinalitätsmatchings. Kardinalitätsmatchings. Kardinalitätsmatchings. Rainer Schrader. 11. Dezember 2007 Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 11. Dezember 2007 1 / 47 2 / 47 wir wenden uns jetzt einem weiteren Optimierungsproblem zu Gliederung Matchings in bipartiten Graphen

Mehr

f h c 7 a 1 b 1 g 2 2 d

f h c 7 a 1 b 1 g 2 2 d ) Man bestimme mit Hilfe des Dijkstra-Algorithmus einen kürzesten Weg von a nach h: c 7 a b f 5 h 3 4 5 i e 6 g 2 2 d Beim Dijkstra-Algorithmus wird in jedem Schritt von den noch unmarkierten Knoten jener

Mehr

Algorithmen und Datenstrukturen SS09. Foliensatz 17. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen SS09. Foliensatz 17. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 17 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 69 TU Ilmenau Seite 2 / 69 Graphtraverse Wie bei Bäumen, ist

Mehr

15. Elementare Graphalgorithmen

15. Elementare Graphalgorithmen Graphen sind eine der wichtigste Modellierungskonzepte der Informatik Graphalgorithmen bilden die Grundlage vieler Algorithmen in der Praxis Zunächst kurze Wiederholung von Graphen. Dann Darstellungen

Mehr

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Graphen AG Softech FB Informatik TU Kaiserslautern Literaturhinweis: Kapitel 4.5 aus R. Sedgewick, K. Wayne: Einführung in die Programmierung

Mehr

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

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Kapitel 5: Graphen und Graphalgorithmen

Kapitel 5: Graphen und Graphalgorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 5: Graphen und Graphalgorithmen Skript zur Vorlesung Algorithmen und Datenstrukturen

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 4 für die Übung

Mehr

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45 Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45 Grundbegriffe der Informatik Einheit 12: Erste Algorithmen in Graphen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009

Mehr

Informatik B Sommersemester Musterlösung zur Klausur am

Informatik B Sommersemester Musterlösung zur Klausur am Informatik B Sommersemester 01 Musterlösung zur Klausur am 1.0.01 Leider wurde der Hinweis, dass alle Lösungen kurz (stichpunktartig), aber inhaltlich ausreichend zu kommentieren sind, nicht immer beachtet.

Mehr

Klausur Informatik B April Teil I: Informatik 3

Klausur Informatik B April Teil I: Informatik 3 Informatik 3 Seite 1 von 8 Klausur Informatik B April 1998 Teil I: Informatik 3 Informatik 3 Seite 2 von 8 Aufgabe 1: Fragekatalog (gesamt 5 ) Beantworten Sie folgende Fragen kurz in ein oder zwei Sätzen.

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 11: Graphen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2010/2011 1/59 Graphische Darstellung von Zusammenhängen schon

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Graphen Literaturhinweis: Kapitel 4.5 aus R. Sedgewick, K. Wayne: Einführung in die Programmierung

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 13 (8.6.2016) Graphenalgorithmen I Algorithmen und Komplexität Graphen Knotenmenge V, typischerweise n V Kantenmenge E, typischerweise

Mehr

ADS: Algorithmen und Datenstrukturen 2

ADS: Algorithmen und Datenstrukturen 2 ADS: Algorithmen und Datenstrukturen 2 Teil II Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 07.

Mehr

ADS 2: Algorithmen und Datenstrukturen

ADS 2: Algorithmen und Datenstrukturen ADS 2: Algorithmen und Datenstrukturen Teil 2 Prof. Peter F. Stadler & Sebastian Will Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität Leipzig 16. April

Mehr

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring Kürzeste Wege in Graphen Orte mit Straßenverbindungen Orte als Knoten eines Graphen Straßenverbindungen als Kanten eines Graphen Ungerichteter Graph G = (V,E) Kanten Knoten Knotenmenge V = {,,n} oder {,,n

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 10 Suche in Graphen Version vom 13. Dezember 2016 1 / 2 Vorlesung 2016 / 2017 2 /

Mehr

Graphen: Rundwege, Kodierung von Bäumen

Graphen: Rundwege, Kodierung von Bäumen TH Mittelhessen, Wintersemester 2013/2014 Lösungen zu Übungsblatt 11 Fachbereich MNI, Diskrete Mathematik 4./5./6. Februar 2014 Prof. Dr. Hans-Rudolf Metz Graphen: Rundwege, Kodierung von Bäumen Aufgabe

Mehr

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

Institut für Programmierung und Reaktive Systeme 28. Mai Programmieren II. 12. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 28. Mai 208 Programmieren II 2. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Vorkurs Informatik SoSe 15

Vorkurs Informatik SoSe 15 Algorithmen 2 Dr. Werner Struckmann / Stephan Mielke, Marvin Priedigkeit, 9.04.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Vorüberlegungen Ameisen-Prinzip Dijkstra-Algorithmus Schilda-Rallye

Mehr

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

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr) WS 2011/12 Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr) Dr. Werner Meixner Fakultät für Informatik TU München http://www14.in.tum.de/lehre/2011ws/ds/uebung/ 25. Januar 2012 ZÜ DS ZÜ XIII

Mehr

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44 Graphalgorithmen II Sebastian Ehrenfels 4.6.2013 Sebastian Ehrenfels Graphalgorithmen II 4.6.2013 1 / 44 Inhalt 1 Datenstrukturen Union-Find Fibonacci-Heap 2 Kürzeste wege Dijkstra Erweiterungen Bellman-Ford

Mehr

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke Graphen Graphentheorie Graphentheorie Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke 2 Was ist ein Graph? Ein Graph ist in der Graphentheorie eine abstrakte Struktur,

Mehr

Graphenalgorithmen I

Graphenalgorithmen I Graphenalgorithmen I Vortrag im Seminar Hallo Welt! für Fortgeschrittene 7. Juni 211 Graphenalgorithmen I 1/33 Motivation Problem Wie komme ich am schnellsten ins Kanapee? Problem Wie kommt ein Datenpaket

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Vorüberlegungen Ameisen-Prinzip Dijkstra-Algorithmus

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Graphen und Bäume Prof. Dr. Nikolaus Wulff Weitere Datentypen Als wichtige abstrakte Datentypen (ADT) kennen wir bis lang die Liste, den Stapel und die Warteschlange. Diese

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Teil 9 Graphen Version vom 13. Dezember 2016 1 / 1 Vorlesung Fortsetzung 13. Dezember

Mehr

Programmiertechnik II

Programmiertechnik II Graph-Algorithmen Anwendungsgebiete "Verbundene Dinge" oft Teilproblem/Abstraktion einer Aufgabenstellung Karten: Wie ist der kürzeste Weg von Sanssouci nach Kunnersdorf? Hypertext: Welche Seiten sind

Mehr

Bipartite Graphen. Beispiele

Bipartite Graphen. Beispiele Bipartite Graphen Ein Graph G = (V, E) heiÿt bipartit (oder paar), wenn die Knotenmenge in zwei disjunkte Teilmengen zerfällt (V = S T mit S T = ), sodass jede Kante einen Knoten aus S mit einem Knoten

Mehr

Wintersemester 2004/ Februar 2005

Wintersemester 2004/ Februar 2005 Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. 8.4 Digraphen mit negativen Kantengewichten 8.4.1 Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0. k 4 5 1 s 1 3 2 C k 0 k 3 1 1 1 k 1 k 2 v Sollte ein Pfad von s nach C und

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Bäume & Graphen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47 Graphalgorithmen Dominik Paulus.0.01 Dominik Paulus Graphalgorithmen.0.01 1 / 7 1 Spannbäume Kruskal Prim Edmonds/Chu-Liu Datenstrukturen Fibonacci-Heap Union/Find Kürzeste Pfade Dijkstra Bellman-Ford

Mehr

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung.

Graphentheorie. Eulersche Graphen. Eulersche Graphen. Eulersche Graphen. Rainer Schrader. 14. November Gliederung. Graphentheorie Rainer Schrader Zentrum für Angewandte Informatik Köln 14. November 2007 1 / 22 2 / 22 Gliederung eulersche und semi-eulersche Graphen Charakterisierung eulerscher Graphen Berechnung eines

Mehr

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V. Kapitel 4 Graphenalgorithmen 4.1 Definitionen Definition 4.1.1. Der Graph G = (V, E) ist über die beiden Mengen V und E definiert, wobei V die Menge der Knoten und E die Menge der Kanten in dem Graph ist.

Mehr

Informatik im Alltag: Wie funktionieren Navis?

Informatik im Alltag: Wie funktionieren Navis? Informatik im Alltag: Wie funktionieren Navis? Thema: Wegeprobleme (aus Algorithmen und Datenstrukturen) Dr. Guido Rößling TU Darmstadt Angelehnt an Material von Dr. Jens Gallenbacher Problemlösen für

Mehr

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

Diskrete Strukturen. Hausaufgabe 1 (5 Punkte) Wintersemester 2007/08 Lösungsblatt Januar 2008 Technische Universität München Fakultät für Informatik Lehrstuhl für Informatik 15 Computergraphik & Visualisierung Prof. Dr. Rüdiger Westermann Dr. Werner Meixner Wintersemester 2007/08 Lösungsblatt 8

Mehr

Seite 1 von 13 Name: Aufgabe 1: Suchalgorithmen (a) (4 Punkte ) Gegeben ist folgendes Streckennetz:

Seite 1 von 13 Name: Aufgabe 1: Suchalgorithmen (a) (4 Punkte ) Gegeben ist folgendes Streckennetz: Seite 1 von 13 Aufgabe 1: Suchalgorithmen (a) (4 ) Gegeben ist folgendes Streckennetz: (12 ) B D A F Z C E Zeigen Sie durch Handsimulation wie mit dem Breitensuch-Algorithmus ein Weg von nach gefunden

Mehr

Algorithmische Graphentheorie

Algorithmische Graphentheorie Algorithmische Graphentheorie Vorlesung 4: Suchstrategien Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 14. April 2017 HALBORDNUNG TOPOLOGISCHE ORDNUNG TOPOLOGISCHES

Mehr

Graphentheorie. Yichuan Shen. 10. Oktober 2013

Graphentheorie. Yichuan Shen. 10. Oktober 2013 Graphentheorie Yichuan Shen 0. Oktober 203 Was ist ein Graph? Ein Graph ist eine kombinatorische Struktur, die bei der Modellierung zahlreicher Probleme Verwendung findet. Er besteht ganz allgemein aus

Mehr

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h.

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h. aaacmxicdvdlsgmxfl1t3/vv69jntaiuyowubbdcwy1lbfuqwkomtwuyzgri7ltgwa9wa7/cr+lo3potpq2c9xegcdjnxu7j8wmpdlru2mktlc4tr6yu5dc3nre2czvfhlgjzrzolfs65vpdpyh4hqvk3oo1p6evedmpzid+c8i1esq6xjtmnzaoitexjkkvbozdl5yrytfofkpu+bhacu+q5dfxyu4updp+pkobwgv3xyne9hrlqh4hk9sytufg2mmorsekf8zfjobhlav0wnuwrjtkppnnez+sq6v0sf9p+yiku/x7rkzdy9lqt5mhxtvz05uif3q+ugfs38zdz1aedznlwqtwndwpjarvvfmrfpuvtiaioeeesvnqfiijkjkpj/se5gxlagllwti/enzhnwvos87bfr+qiv+txnhzc8velveqvwcgvdidazgcd06hbhdwcxvgemitpmpiexhgzqvznhvnoz87uzah5/0djy+sia==

Mehr