Kapitel 6: Graphalgorithmen Gliederung



Ähnliche Dokumente
1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Kapitel 5: Dynamisches Programmieren Gliederung

1 topologisches Sortieren

Algorithmen und Datenstrukturen 2

Konzepte der Informatik

8 Diskrete Optimierung

Algorithmische Mathematik

Das Briefträgerproblem

Breiten- und Tiefensuche in Graphen

Algorithmentheorie Maximale Flüsse

Theoretische Grundlagen der Informatik

1 Mathematische Grundlagen

Algorithmen und Datenstrukturen

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

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

Die Komplexitätsklassen P und NP

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Erstellen von x-y-diagrammen in OpenOffice.calc

Algorithmen und Datenstrukturen. Große Übung vom Nils Schweer

Datenstrukturen & Algorithmen

Anmerkungen zur Übergangsprüfung

Lineare Gleichungssysteme

Primzahlen und RSA-Verschlüsselung

Mathematischer Vorbereitungskurs für Ökonomen

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Bedingungen. Bedingungen. Bedingungen

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Beispiele für Relationen

Datenbanken Microsoft Access 2010

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

WS 2008/09. Diskrete Strukturen

Wie findet das Navi den Weg?

Korrelation (II) Korrelation und Kausalität

Process4.biz Release Features Übersicht. Repository. Das Schützen von Diagrammen wurde optimiert (check-in, check-out)

Über Arrays und verkettete Listen Listen in Delphi

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

Grundlagen der Theoretischen Informatik, SoSe 2008

Dokumentation. estat Version 2.0

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Statistische Untersuchungen zu endlichen Funktionsgraphen

Datenexport aus JS - Software

Software-Engineering SS03. Zustandsautomat

Mathematik für Studierende der Biologie und des Lehramtes Chemie Wintersemester 2013/14. Auswahl vorausgesetzter Vorkenntnisse

Sortierverfahren für Felder (Listen)

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Wasserfall-Ansätze zur Bildsegmentierung

Felder, Rückblick Mehrdimensionale Felder. Programmieren in C

Leere Zeilen aus Excel-Dateien entfernen

Alles zu seiner Zeit Projektplanung heute

Professionelle Seminare im Bereich MS-Office

( ) als den Punkt mit der gleichen x-koordinate wie A und der

Programmieren I. Kapitel 7. Sortieren und Suchen

Fallbeispiel: Eintragen einer Behandlung

Die Verbindung von Linearer Programmierung und Graphentheorie

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Expander Graphen und Ihre Anwendungen

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Arbeiten mit UMLed und Delphi

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Algorithmen & Datenstrukturen 1. Klausur

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Informatik I WS 07/08 Tutorium 24

Algorithmen und Datenstrukturen 2

ALP I. Funktionale Programmierung

Im Original veränderbare Word-Dateien

Programmieren für Ingenieure Sommer Ein Rechner. Rechner sind überall. Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet.

Gleichungen und Ungleichungen

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Bedienung des Web-Portales der Sportbergbetriebe

Vorlesungsplan. Von Naïve Bayes zu Bayesischen Netzwerk- Klassifikatoren. Naïve Bayes. Bayesische Netzwerke

4. Relationen. Beschreibung einer binären Relation

Binäre Bäume Darstellung und Traversierung

Kapiteltests zum Leitprogramm Binäre Suchbäume

Info-Veranstaltung zur Erstellung von Zertifikaten

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Hauptprüfung Abiturprüfung 2015 (ohne CAS) Baden-Württemberg

Aufgaben zur Flächenberechnung mit der Integralrechung

Beispiel des Zusammenführens der APV- Tabellen Stammdaten und Verlaufsdaten mithilfe von Access

WinWerk. Prozess 6a Rabatt gemäss Vorjahresverbrauch. KMU Ratgeber AG. Inhaltsverzeichnis. Im Ifang Effretikon

6.2 Scan-Konvertierung (Scan Conversion)

2.5. VERBINDUNGSNETZWERKE GESTALTUNGSKRITERIEN DER NETZWERKE TOPOLOGIE ALS GRAPH. Vorlesung 5 TOPOLOGIE: DEFINITIONEN : Sei G = (V, E) ein Graph mit:

Softwareentwicklungspraktikum Sommersemester Grobentwurf

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Kombinatorische Optimierung

Ausgangslage, Rolle und Auftrag

Ich möchte meine Beitragsnachweise nach dem vereinfachten Schätzverfahren erstellen.

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

SUDOKU - Strategien zur Lösung

Die reellen Lösungen der kubischen Gleichung

Teil III: Routing - Inhalt I. Literatur. Geometric Routing. Voraussetzungen. Unit Disk Graph (UDG) Geometric Routing 29

Studie Autorisierungsverfahren Online-Banking n = 433, Befragungszeitraum: Februar bis März 2014

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Transkript:

Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen 9. Lineare Programmierung 6/1, olie 1 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Einordnung u Graphen werden verwendet, um eine Relation R zwischen den Objekten einer Objektmenge O zu repräsentieren, d.h. R O O = { (x,y) x,y O } bestehen aus einer Mengen V von Knoten (/* je Objekt in O gibt es einen Knoten in der Menge V */) einer Menge E von Kanten (/* wenn (x,y) R gilt, so gibt es eine Kante von x nach y */)... ein Graph G ist ein Paar (V,E), wobei V die Knotenmenge und E V V die Kantenmenge von G bezeichnet man unterscheidet gerichtete Graphen ungerichtete Graphen (/* sinnvoll, wenn R symmetrisch ist */) 6/1, olie 2 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Einordnung u Beispiel 1 O sei die Menge der herzustellenden Produkte es gilt (x,y) R gdw. das Produkt x muß fertig gestellt sein, bevor das Produkt y fertig gestellt werden kann... das ist garantiert keine symmetrische Relation V = { A,B,..., } E = { (A,B),(A,D),...,(,) } A B E D 6/1, olie 3 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Einordnung u Beispiel 2 O sei die Menge aller Städte es gilt (x,y) R gdw. es gibt eine Autobahnverbindung zwischen der Stadt x und der Stadt y... das ist offenbar eine symmetrische Relation SB V = { KL,SB,...,K } E = { {KL,SB},{KL,DA},...,{K,} } KL TR K DA 6/1, olie 4 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Repräsentation von Graphen u... prinzipielle Möglichkeiten Adjazenzmatrix zweidimensionale Tabelle t (/* als Indizes werden die Knoten verwendet */) in einer Zelle t[x][y] steht eine 1, falls es eine Kante von x nach y gibt; andernfalls eine 0 Adjazenzliste ein Array a (/* als Indizes werden die Knoten verwendet */) jede Zelle a[x] enthält einen Verweis auf eine einfach verkettete Liste, in welcher alle Knoten y vorkommen, für die gilt, daß es eine Kante von x nach y gibt... schauen uns die Möglichkeiten für ungerichtete Graphen an 6/1, olie 5 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Repräsentation von Graphen u Beispiel (/* Adjazenzmatrix */) A B E D A B D E A 0 1 0 1 0 0 B 0 0 1 0 0 0 0 0 0 0 0 0 D 0 0 0 0 1 1 E 0 0 1 0 0 0 0 0 1 0 0 0 6/1, olie 6 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Repräsentation von Graphen u Beispiel (/* Adjazenzliste */) A B E D A B D B D E E 6/1, olie 7 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

ahrplan u... diskutieren graphentheoretische Probleme, um das Zusammenspiel zwischen algorithmischen Ideen und den verwendeten Datenstrukturen zu diskutieren lernen weitere Anwendungen der Idee der dynamischen Programmierung kennen sehen wie Ideen, die auf den ersten Blick nicht sehr nahe liegend sind, trotzdem hilfreich sein können behandelte Problemstellungen topologisches Sortieren Bestimmung kürzester Wege lüsse in Netzwerken 6/1, olie 8 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Topologisches Sortieren u Grundbegriff es sei G = (V,E) ein gerichteter zyklenfreier Graph es sei V = n (/* d.h. G hat n Knoten */) es sei f(.) eine eineindeutige unktion von der Menge V in die Menge { 1,...,n }, so daß für alle x,y E gilt: wenn es in G eine Kante von x nach y gibt, so gilt f(x) < f(y) Eine unktion f(.) mit der obigen Eigenschaft nennt man topologische Sortierung der Knoten von G.... in der durch f(.) definierten Aufzählung der Knoten von G, (/* d.h. in der Aufzählung f -1 (1), f -1 (2),... */) kommen vor jedem Knoten y alle Knoten x vor, von denen es eine Kante zu y gibt 6/1, olie 9 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Beispiel 1 es sei V = { A,B,,D,E,,G } die Menge der herzustellenden Produkte es gelte (x,y) E gdw. das Produkt x muß fertig gestellt sein, bevor das Produkt y fertig gestellt werden kann B die unktionen f 1 (.) und f 2 (.) sind topologische Sortierungen der Knoten von G A D E f 1 (A) = 1, f 1 (B) = 2, f 1 (D) = 3, f 1 (E) = 4, f 1 () = 5, f 1 () = 6 f 2 (A) = 1, f 2 (D) = 2, f 2 (E) = 3, f 2 () = 4, f 2 (B) = 5, f 2 () = 6 6/1, olie 10 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Aufgabenstellung Eingabe: Ausgabe: ein gerichteter zyklenfreier Graph G = (V,E) eine topologische Sortierung f(.) der Knoten in G u zentraler Begriff: Ingrad eines Knoten es sei G = (V,E) ein gerichteter Graph Zu jedem Knoten x V bezeichne Ingrad(x) die Anzahl der Knoten y V, von denen es eine Kante zum Knoten x gibt (/* Ingrad(x) = { y (y,x) E } */). 6/1, olie 11 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u prinzipielle algorithmische Idee (1) bestimme für jedes x V den Ingrad von x (2) füge alle x mit Ingrad(x) = 0 ans Ende einer anfangs leeren Warteschlange Q an (3) setze i = 1 (4) solange die Warteschlange Q nicht leer ist a) entferne das erste Element x aus der Warteschlange Q b) setze f(x) = i und i = i + 1 c) für alle y mit (x,y) E setze Ingrad(y) = Ingrad(y) - 1, wobei y ans Ende der Warteschlange Q angefügt wird, falls Ingrad(y) = 0 gilt... die Ingrade der Knoten werden in einem Array gespeichert (/* als Indizes werden die Knoten verwendet *)... die benötigte Zeit hängt von der verwendeten Repräsentation des gegebenen Graphen G = (V,E) ab (/* Schritt (1) und (4) */) 6/1, olie 12 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Illustration A B D E 0 1 3 1 1 1 A B Q = [ A ] i = 1 D E A B D E 0 0 3 0 1 1 A B D E 0 0 2 0 1 1 f(a) = 1 Q = [ B,D ] i = 2 f(b) = 2 Q = [ D ] i = 3 6/1, olie 13 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Realisierung 1 (/* mit Hilfe einer Adjazenzmatrix */) A B D E A 0 1 0 1 0 0 B 0 0 1 0 0 0 0 0 0 0 0 0 D 0 0 0 0 1 1 E 0 0 1 0 0 0 0 0 1 0 0 0 ein Array b wird benutzt (/* als Indizes werden die Knoten verwendet */), um die aktuell zu berücksichtigenden Ingrade zu speichern A B D E 0 1 3 1 1 1 6/1, olie 14 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Algorithmische Idee (/* mit Hilfe einer Adjazenzmatrix */) (1) initialisiere das Array b (/* durch Aufsummieren aller Spalten */) (2) füge alle x mit b[x] = 0 ans Ende einer anfangs leeren Warteschlange Q an (/* durch Durchlaufen des Arrays b */) (3) setze i = 1 (4) solange die Warteschlange Q nicht leer ist a) entferne das erste Element x aus der Warteschlange Q b) setze f(x) = i und i = i + 1 c) für alle y mit (x,y) E setze b[y] = b[y] - 1 (/* y wird durch Analyse der Zeile für x bestimmt */), wobei y ans Ende der Warteschlange Q angefügt wird, falls b[y] = 0 gilt... geht offenbar in Zeit O(n 2 ) + O(n) + n*o(1) + n*o(n), wobei n die Anzahl der Knoten von G ist 6/1, olie 15 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Realisierung 2 (/* mit Hilfe einer Adjazenzliste */) A B D E B E D ein Array b wird benutzt (/* als Indizes werden die Knoten verwendet */), um die aktuell zu berücksichtigenden Ingrade zu speichern A B D E 0 1 3 1 1 1 6/1, olie 16 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Algorithmische Idee (/* mit Hilfe einer Adjazenzliste */) (1) initialisiere das Array b (/* durch Durchlaufen aller Listen */) (2) füge alle x mit b[x] = 0 ans Ende einer anfangs leeren Warteschlange Q ein (/* durch Durchlaufen des Arrays b */) (3) setze i = 1 (4) solange die Warteschlange Q nicht leer ist a) entferne das erste Element x aus der Warteschlange Q b) setze f(x) = i und i = i + 1 c) für alle y mit (x,y) E setze b[y] = b[y] - 1 (/* y wird durch Durchlaufen der Liste für x bestimmt */), wobei y an das Ende der Warteschlange Q angefügt wird, falls b[y] = 0 gilt... geht offenbar in Zeit O(m) + O(n) + n*o(1) + O(m), wobei n die Anzahl der Knoten von G und m die Anzahl der Kanten von G ist 6/1, olie 17 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen

Toplogisches Sortieren u Zusammenfassung wenn der gerichtete zyklenfreie Graph G mit Hilfe einer Adjazenzmatrix repräsentiert wird, so wird die Zeit O(n 2 ) benötigt, wobei n die Anzahl der Knoten von G bezeichnet wenn der gerichtete zyklenfreie Graph G mit Hilfe einer Adjazenzliste repräsentiert wird, so wird die Zeit O(n) + O(m) benötigt, wobei n die Anzahl der Knoten von G und m die Anzahl der Kanten von G bezeichnet... da ein gerichteter zyklenfreier Graph G mit n Knoten weniger als n 2 viele Kanten hat, ist es sinnvoller, G mit Hilfe einer Adjazenzliste zu repräsentieren 6/1, olie 18 2014 Prof. Steffen Lange - HDa/bI - Effiziente Algorithmen