• Keine Ergebnisse gefunden

Was ist ein Graph?

N/A
N/A
Protected

Academic year: 2022

Aktie "Was ist ein Graph?"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Vorlesung: Algorithmische Diskrete Mathematik

Raymond Hemmecke

Vertretungsprofessor für Algorithmische Diskrete Mathematik

SS 2009 | TU Darmstadt | Raymond Hemmecke | 1

Inhalt der Vorlesung

I Komplexitätstheorie

I Datenstrukturen und Kodierungsschemata

I asymptotische Notation, untere und obere Schranken

I KlassenP,N P,N P-vollständig I Algorithmen auf Graphen

I DFS-Algorithmus (aufspannende Bäume)

I Greedy-Algorithmus (minimale aufspannende Bäume)

I Dijkstra, Moore-Bellman, Yen-Variante (kürzeste Wege in Graphen)

I Ford-Fulkerson (maximale Flüsse in Netzwerken, Matching in bipartiten Graphen)

I Sortieren in Arrays

I Mergesort, Quicksort, Heapsort

I Divide-and-Conquer

I untere Komplexitätsschranken für das Sortieren

SS 2009 | TU Darmstadt | Raymond Hemmecke | 2

Grundlegende Begrie der Graphentheorie

SS 2009 | TU Darmstadt | Raymond Hemmecke | 3

Was ist ein Graph?

Graph

I Ein ungerichter Graph ist ein PaarG= (V,E)disjunkter Mengen, wobei die Elemente vonEungeordnete Paare von Elementen ausVsind.

I Die Elemente ausVheiÿen Knoten, die Elemente ausE Kanten.

Digraph

I Ein gerichter Graph ist ein PaarG= (V,A)disjunkter Mengen, wobei die Elemente vonAgeordnete Paare von Elementen ausVsind.

I Die Elemente ausAheiÿen Bögen oder gerichtete Kanten.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 4

Nachbarschaftsbeziehungen

Inzidenz, Grad/Valenz

I Ein Knotenvheiÿt mit einer Kanteeinzident, wennv∈egilt.

I Der Grad/die Valenz eines Knotenvist die Anzahl der mitvinzidenten Kanten.

Adjazenz, vollständiger Graph

I Zwei Knotenxundyheiÿen adjazent oder benachbart inG, wennxy∈E(G)ist.

I Sind je zwei Knoten vonGbenachbart, so heiÿtGvollständig.

K

4

v

e

y x

SS 2009 | TU Darmstadt | Raymond Hemmecke | 5

Bipartite Graphen

Denition

I Ein Graph heiÿt bipartit, wenn sichV disjunkt in zwei TeileV1undV2zerteilen lässt, so dass jede Kante inEeinen Endknoten inV1und einen Endknoten inV2

besitzt.

K

3,3

Fakt→Beweis als Übungsaufgabe

I Ein Graph ist genau dann bipartit, wenn er nur Kreise gerader Länge enthält.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 6

Was sind Kreise?

Pfad, Weg, Kreis

I Ein Pfad ist ein nichtleerer GraphP= (V,E)der Form V={x0,x1, ... ,xk},E={x0x1,x1x2, ... ,xk−1xk}.

I Ein Weg ist ein Pfad, in dem allexipaarweise verschieden sind.

I Ein Kreis ist ein nichtleerer GraphP= (V,E)der Form

V={x0,x1, ... ,xk},E={x0x1,x1x2, ... ,xk−1xk,xkx0}, wobei diexipaarweise verschieden sind.

Pfad Weg Kreis

x1

x1

x2

x0

x5 x3

x1,x4 x0 x0

x2

x2

SS 2009 | TU Darmstadt | Raymond Hemmecke | 7

Zusammenhangskomponenten, Bäume und Wälder

Zusammenhängende Graphen

I Ein GraphGheiÿt zusammenhängend, falls es zu jedem Paarv,w∈Veinen Weg vonvnachwinGgibt.

I Die zusammenhängenden Teile vonGheiÿen Zusammenhangskomponenten.

Bäume und Wälder

I Ein Baum ist ein zusammenhängender Graph, der keinen Kreis besitzt.

I Ein Wald ist ein Graph, der keinen Kreis besitzt.

Baum Wald, 2 Komponenten

SS 2009 | TU Darmstadt | Raymond Hemmecke | 8

(2)

Komplementärgraph

Komplementärgraph

I Der zuGkomplementäre GraphG¯ist der GraphG¯= (V, ¯E), mitij∈E¯⇔ij6∈E.

Graph Komplement

Fakt→Beweis als Übungsaufgabe

I Mindestens einer der GraphenGoderG¯ ist zusammenhängend.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 9

Untergraphen, aufspannende Untergraphen

Untergraph, aufspannende Untergraphen

I G0= (V0,E0)heiÿt Untergraph vonG= (V,E), fallsV0⊆V undE0⊆Egilt.

I G0⊆Gheiÿt aufspannender Untergraph vonG, fallsV0=V gilt.

Graph mit Untergraph aufspannender Baum

Finden eines aufspannenden Waldes→DFS-Algorithmus

I Für gegebenesG= (V,E)nde man einen aufspannenden Wald.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 10

Probleme auf Graphen (1)

Finden eines Kreises/Hamiltonischen Kreises

I Entscheide für einen gegebenen GraphenG= (V,E), ob er einen Kreis enthält.

Falls ja, gib einen solchen an.

I Entscheide für einen gegebenen GraphenG= (V,E), ob er einen hamiltonischen Kreis enthält. Falls ja, gib einen solchen an. (Ein hamiltonischer Kreis ist ein Kreis, der jeden Knoten genau einmal durchläuft.)

Finden eines aufspannenden Waldes→DFS-Algorithmus

I Für gegebenesG= (V,E)nde man einen aufspannenden Wald.

Maximales Matching

I Finde für gegebenen GraphenG= (V,E)die maximale Anzahl von Kanten ausE, so dass je zwei Kanten nicht inzident sind.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 11

Probleme auf Graphen (2)

Maximale stabile Mengen/Cliquen

I Finde für gegebenen GraphenG= (V,E)die maximale Anzahl von Knoten ausV, so dass je zwei Knoten nicht benachbart sind.→stabile Menge

I Finde für gegebenen GraphenG= (V,E)die maximale Anzahl von Knoten ausV, so dass je zwei Knoten benachbart sind.→Clique

Kürzeste Wege

I Für gegebenesG= (V,E)und gegebenen Kantengewichtencijnde man einen kürzesten Weg zwischen zwei gegebenen Knotenvundw.

Färbungsproblem

I Finde für gegebenen GraphenG= (V,E)die minimale Anzahlkvon Farben, so dass sich die Knoten vonGso mitkFarben färben lassen, dass benachbarte Knoten unterschiedlich gefärbt sind.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 12

Asymptotische Notation

SS 2009 | TU Darmstadt | Raymond Hemmecke | 13

Asymptotische Notation

Obere Schranken:O-Notation I Seig:N→R. Dann bezeichnet

O(g) :={f :N→R:∃c>0,n0∈Nmit|f(n)| ≤c|g(n)| ∀n≥n0} die Menge aller Funktionenf :N→R, für die zwei positive Konstantenc∈Rund n0∈Nexistieren, so dass für allen≥n0gilt|f(n)| ≤c|g(n)|.

Bemerkungen

I Die asymptotische Notation vernachlässigt Konstanten und Terme niedrigerer Ordnung (wie z.B. die Termeaknkmitk<mim Polynom).

Satz

I Für ein Polynomf(n) =amnm+ ... +a1n+a0vom Grademgiltf∈O(nm).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 14

Vergleich

Die nachfolgende Tabelle zeigt, wie sechs typischen Funktionen anwachsen, wobei die Konstante gleich1gesetzt wurde. Wie man feststellt, zeigen die Zeiten vom TypO(n) undO(nlogn)ein wesentlich schwächeres Wachstum also die anderen.

logn n nlogn n2 n3 2n

0 1 0 1 1 2

1 2 2 4 8 4

2 4 8 16 64 16

3 8 24 64 512 256

4 16 64 256 4096 65536

5 32 160 1024 32768 4294967296

SS 2009 | TU Darmstadt | Raymond Hemmecke | 15

Untere Schranken

Ω- undΘ-Notation

I Seienf,g:N→R. Dann istf∈Ω(g), wenn zwei positive Konstantenc∈Rund n0∈Nexistieren, so dass für allen≥n0gilt:

|f(n)| ≥c|g(n)|.

I f ∈Θ(g), wenn es positive Konstantenc1,c2∈Rundn0∈Ngibt, so dass für alle n≥n0giltc1|g(n)| ≤ |f(n)| ≤c2|g(n)|.

I Fallsf∈Θ(g), dann istgsowohl eine obere als auch eine untere Schranke fürf. Beispiel: Sequentielle Suche

I Seif(n)die Anzahl von Vergleichen bei der sequentiellen Suche nach einem bestimmten Wert in einem unsortierten Array mitnKomponenten. Dann ist f ∈O(n), da man ja mitnVergleichen auskommt.

I Andererseits muss man auch jede Komponente überprüfen, denn ihr Wert könnte ja der gesuchte Wert sein. Alsof∈Ω(n)und damitf∈Θ(n).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 16

(3)

Ein weiteres Beispiel

Matrixmultiplikation

I Bei der Matrixmultiplikation vonn×nMatrizen ergibt sich die Berechnung eines EintragscijvonC=A·Bgemäÿcij=Pn

k=1aik·bkj. Sie erfordert alson Multiplikationen undn−1Additionen.

I Insgesamt sind für ganzCalson2Einträgecijzu berechnen, und somit n2(n+n−1) = 2n3−n2=O(n3)arithmetische Operationen insgesamt auszuführen.

I Da jeder Algorithmus für die Matrixmultiplikationn2Einträge berechnen muss, folgt andererseits, dass jeder Algorithmus zur Matrixmultiplikation von zwein×n MatrizenΩ(n2)Operationen benötigt.

I Es klat zwischenΩ(n2)undO(n3)also noch eine Komplexitätslücke. Die schnellsten bekannten Algorithmen zur Matrixmultiplikation kommen mitO(n2,376) Operationen aus.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 17

Komplexitätstheorie

SS 2009 | TU Darmstadt | Raymond Hemmecke | 18

Was ist ein Problem?

Denition

I Ein Problem ist eine allgemeine Fragestellung, bei der mehrere Parameter oen gelassen sind und für die eine Lösung oder Antwort gesucht wird.

I Ein Problem ist dadurch deniert, dass alle seine Parameter beschrieben werden und dass genau angegeben wird, welche Eigenschaften eine Antwort (Lösung) haben soll.

I Sind alle Parameter eines Problems mit expliziten Daten belegt, dann sprechen wir von einem Problembeispiel (Instanz).

Beispiel

I Finde einen kürzesten Hamiltonischen Kreis.

I Oene Parameter: Anzahl Städte, Entfernungen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 19

Algorithmen

Was ist ein Algorithmus?

I Ein Algorithmus ist eine Anleitung zur schrittweisen Lösung eines Problems. Wir sagen, ein Algorithmus A löst ein ProblemΠ, falls A für alle Problembeispiele I∈Π, eine Lösung in einer endlichen Anzahl an Schritten ndet.

I Ein Schritt ist eine elementare Operation: Addieren, Subtrahieren, Vergleichen, Multiplikation, Division.

I Die Laufzeit eines Algorithmus ist die Anzahl der Schritte, die notwendig sind zur Lösung des Problembeispiels.

Forschungsschwerpunkte zu Algorithmen I Entwurf von Algorithmen

I Berechenbarkeit: Was kann durch einen Algorithmus berechnet werden?

I Komplexität von Algorithmen I Korrektheit von Algorithmen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 20

Komplexität von Algorithmen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 21

Was ist Ezienz?

Was ist Ezienz?

I Komplexitätstheorie

I Speicher- und Laufzeitkomplexität

Trivial

I Laufzeit eines Algorithmus hängt ab von der Gröÿe der Eingabedaten I Laufzeitanalyse erfordert eine Beschreibung, wie Problembeispiele dargestellt

werden (Kodierungsschema) I Notwendigkeit exakter Denitionen

I geeignetes Rechnermodell→Turing-Maschine

SS 2009 | TU Darmstadt | Raymond Hemmecke | 22

Kodierungsschema

Ganze Zahlen

I Ganze Zahlen werden binär dargestellt, d.h. wir schreiben n=±

k

X

i=0

xi·2i, mitxi∈ {0, 1}undk=blog2(|n|)c.

I D.h. die Kodierungslängehnieiner ganzen Zahlnist gegeben durch die Formel hni=dlog2(|n|+ 1)e+ 1 =blog2(|n|)c+ 2,

wobei+1wegen des Vorzeichens+oder−. Rationale Zahlen

I Seir∈Q. Dann existierenp∈Zundq∈Z, teilerfremd, mitr=pq. hri=hpi+hqi

SS 2009 | TU Darmstadt | Raymond Hemmecke | 23

Kodierungsschema (2)

Vektoren

I Fürx= (x1, ... ,xn)|∈Qnist hxi=

n

X

i=1

hxii.

Matrizen

I FürA∈Qm×nist

hAi=

m

X

i=1 n

X

j=1

haiji.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 24

(4)

Rechnermodell

Nach Festlegung der Kodierungsvorschrift muss ein Rechnermodell entworfen werden, auf dem unsere Speicher- und Laufzeitberechnungen durchgeführt werden.

In der Komplexitätstheorie: Turing-Maschine (ein ganz normaler Computer) Unendliches Band, auf dem Lese-/Schreiboperationen durchgeführt werden

Programm

Prozessor lesen/schreiben

stellt Operationen zur Verfügung:

+, −, *, /, vergleichen, löschen, schreiben, lesen

1 2 4

0

−1 3

SS 2009 | TU Darmstadt | Raymond Hemmecke | 25

Ablauf eines Algorithmus auf der Turing- Maschine

AlgorithmusAsoll ProblembeispielIdes ProblemsΠlösen. Alle Problembeispiele liegen in kodierter Form vor.

Inputlänge

I Die Anzahl der Speicherplätze, die nötig sind, umIvollständig anzugeben, heiÿt Inputlänge,hIi.

Der Algorithmus liest die Daten und beginnt dann, Operationen auszuführen, d.h. Zahlen zu berechnen, zu speichern, zu löschen.

Speicherbedarf

I Die Anzahl der Speicherplätze, die während der Ausführung des Algorithmus mindestens einmal benutzt werden, nennen wir Speicherbedarf vonAzur Lösung vonI.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 26

Laufzeit

Informell

I Die Laufzeit vonAzur Lösung vonIist die Anzahl elementarer Operationen. Dazu zählen+,−,∗,/, Vergleich, Löschen, Schreiben, Lesen von rationalen Zahlen.

Dies ist jedoch zu unpräzise!

I Zur Darstellung der entsprechenden Zahlen werden mehrere Bits benötigt.

→ Für jede Operation müssen wir mehrere Bits zählen.

Korrekte Denition

I Die Laufzeit vonAzur Lösung vonIist deniert durch die Anzahl elementarer Operationen, dieAausgeführt hat, umIzu lösen, multipliziert mit der gröÿten Kodierungslänge der während der Berechnung aufgetretenen ganzen oder rationalen Zahl.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 27

Laufzeitfunktion, Speicherplatzfunktion (worst- case)

Laufzeitfunktion, polynomielle Laufzeit

I SeiAein Algorithmus zur Lösung eines ProblemsΠ. Die FunktionfA:N→N, fA(n) = max{Laufzeit von A zur Lösung vonI:I∈Π,hIi ≤n}

heiÿt Laufzeitfunktion vonA.

I Der AlgorithmusAhat eine polynomiale Laufzeit (kurz:Aist ein polynomialer Algorithmus), wenn es ein Polynomp:N→Ngibt mitfA(n)≤p(n)für allen∈N.

Speicherplatzfunktion, polynomieller Speicherbedarf

I Die SpeicherplatzfunktionsA:N→NvonAist deniert durch

sA(n) = max{Speicherbedarf vonAzur Lösung vonI:I∈Π,hIi ≤n}.

I Der AlgorithmusAhat polynomialen Speicherbedarf, falls es ein Polynom q:N→Ngibt mitsA(n)≤q(n)für allen∈N.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 28

Weitere Bemerkungen

Bemerkungen

I Nehmen wir an, wir ermitteln die Rechenzeitf(n)für einen bestimmten Algorithmus. Die Variablenkann z.B. die Anzahl der Ein- und Ausgabewerte sein, ihre Summe, oder auch die Gröÿe eines dieser Werte. Daf(n)maschinenabhängig ist, genügt eine a priori Analyse nicht. Jedoch kann man mit Hilfe einer a priori Analyse eingbestimmen, so dassf ∈O(g).

I Wenn wir sagen, dass ein Algorithmus eine RechenzeitO(g)hat, dann meinen wir damit folgendes: Wenn der Algorithmus auf unterschiedlichen Computern mit den gleichen Datensätzen läuft, und diese Gröÿenhaben, dann werden die

resultierenden Laufzeiten immer kleiner sein als eine Konstante mal|g(n)|. Bei der Suche nach der Gröÿenordnung vonf werden wir darum bemüht sein, das kleinste gzu nden, so dassf∈O(g)gilt.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 29

Die Klassen P , N P , N P -vollständig

SS 2009 | TU Darmstadt | Raymond Hemmecke | 30

Die Klasse P

Was ist ein Entscheidungsproblem?

I Problem, das nur zwei mögliche Antworten besitzt, ja oder nein.

I Beispiele: Istneine Primzahl? oder EnthältGeinen Kreis?

Die KlasseP: informelle Denition

I Klasse der Entscheidungsprobleme, für die ein polynomialer Lösungsalgorithmus existiert

Die KlasseP: formale Denition

I Gegeben ein KodierungsschemaEund ein RechnermodellM.

I Πsei ein Entscheidungsproblem, wobei jede Instanz ausΠdurch Kodierungsschema Ekodierbar sei.

I Πgehört zur KlasseP(bzgl.EundM), wenn es einen aufMimplementierbaren Algorithmus zur Lösung aller Problembeispiele ausΠgibt, dessen Laufzeitfunktion aufMpolynomial ist.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 31

Die Klasse N P

Motivation

I EnthältGeinen Kreis?→einfach→ P

I EnthältGeinen hamiltonischen Kreis?→schwieriger→ N P Die KlasseN P: informelle Denition

I EntscheidungsproblemΠgehört zur KlasseN P, wenn es folgende Eigenschaft hat:

I Ist die Antwort ja fürI∈Π, dann kann Korrektheit dieser Aussage mit Hilfe eines geeigneten Zusatzobjekts in polynomialer Laufzeit überprüft werden.

Beispiel: EnthältGeinen hamiltonischen Kreis?

I Geeignetes Zusatzobjekt wäre ein hamiltonischer Kreis.

I Es muss nun lediglich geprüft werden, ob der angegebene Kreis tatsächlich ein hamiltonischer Kreis vonGist.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 32

(5)

Die Klasse N P (2)

Formale Denition

I EntscheidungsproblemΠgehört zuN P, wenn es die folgende Eigenschaften hat:

(a) Für jedes ProblembeispielI∈Π, für das die Antwort ja lautet, gibt es mindestens ein ObjektQ, mit dessen Hilfe die Korrektheit der ja-Antwort überprüft werden kann.

(b) Es gibt einen Algorithmus, der ProblembeispieleI∈Πund ZusatzobjekteQ als Input akzeptiert und der in einer Laufzeit, die polynomial inhIiist, überprüft, obQein Objekt ist, aufgrund dessen Existenz eine ja-Antwort für Igegeben werden muss.

Bemerkungen

I Es wird keine Aussage über die Berechenbarkeit eines geeignetenQgemacht.Q kann auch geraten werden.

I Da der ÜberprüfungsalgorithmusQlesen muss, musshQipolynomial inhIisein!

I Es wird keine Aussage zu möglicher nein-Antwort gemacht.→coNP

SS 2009 | TU Darmstadt | Raymond Hemmecke | 33

Charakterisierung besonders schwieriger Pro- bleme in N P

Polynomiale Transformation von Problemen

I Gegeben seien zwei EntscheidungsproblemeΠundΠ0.

I Eine polynomiale Transformation vonΠinΠ0ist ein polynomialer Algorithmus, der, gegeben ein (kodiertes) ProblembeispielI∈Π, ein (kodiertes) Problembeispiel I0∈Π0produziert, so dass folgendes gilt:

I Die Antwort aufIist genau dann ja, wenn die Antwort aufI0ja ist.

Die KlasseN P-vollständig

I Ein EntscheidungsproblemΠheiÿtN P-vollständig, fallsΠ∈ N Pund falls jedes andere Problem ausN Ppolynomial inΠtransformiert werden kann.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 34

Bemerkung und Fragen

Bemerkung

I Falls einN P-vollständiges EntscheidungsproblemΠin polynomialer Zeit gelöst werden kann, so gilt das auch für jedes andere Problem ausN P:

Π N P −vollständig undΠ∈ P ⇒ P=N P.

I Diese Eigenschaft zeigt, dass (bzgl. polynomialer Lösbarkeit) kein Problem inN P schwieriger ist als einN P-vollständiges.

ExistierenN P-vollständige Probleme? Ja.

I 3-SAT: (x1∨¯x2∨x3)∧(...)∧... =TRUE

Oene Fragen

P = N P ∩ coN P N P = coN P

P 6= N P

SS 2009 | TU Darmstadt | Raymond Hemmecke | 35

Komplexität von Optimierungsproblemen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 36

Die Klasse N P -schwer

Transformation in Entscheidungsproblem

I SeiOein Maximierungsproblem (Minimierungsproblem). Man legt zusätzlich zur InstanzInoch eine SchrankeBfest und stellt die Frage:

I Gibt es fürIeine Lösung, deren Wert nicht kleiner (gröÿer) alsBist?

I Damit ist ein Optimierungsproblem polynomial in ein Entscheidungsproblem transformierbar.

Die KlasseN P-schwer: formale Denition

I Ein OptimierungsproblemOheiÿtN P-schwer, falls es einN P-vollständiges EntscheidungsproblemΠgibt, so dassΠin polynomialer Zeit gelöst werden kann, wennOin polynomialer Zeit gelöst werden kann.

Beispiele

I Rucksackproblem, Maschinenbelegung, stabile Menge maximaler Kardinalität, Clique maximaler Kardinalität, minimale Knotenüberdeckung

SS 2009 | TU Darmstadt | Raymond Hemmecke | 37

Beispiel

Traveling Salesman Problem

I Input: InstanzIist charakterisiert durch eine Distanzmatrixcij∈Z∀i,j∈V,

|V|=n.

I Problem: Finde einen bzgl.cminimalen Hamiltonischen Kreis inKn. I TSP-Entscheidungsproblem:

I Input wie beim TSP,B∈Z.

I Problem: Existiert eine TSP-Tour der Länge≤B? Lemma

I Polynomialer Algorithmus zur Lösung des TSP-Entscheidungsproblems würde polynomialen Algorithmus zur Lösung des TSP implizieren.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 38

Lösung: Binäre Suche

Beweis

I Länge eines hamiltonischen Kreises inKnist ein ganzzahliger Wert im Intervall [ns,nt], wobeis= min{cij:i,j∈V,i6=j}undt= max{cij:i,j∈V,i6=j}. I Rufe TSP-Entscheidungsproblem mitB=bn(s+t)2 cauf, passe obere Schrankent

oder untere Schrankensje nach Ergebnis an und iteriere.

I Insgesamt reichen demnachlog(nt−ns)Iterationen aus.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 39

Datenstrukturen zur Kodierung von Graphen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 40

(6)

Kanten- und Bogenlisten

Denition

I IstG= (V,E)ein Graph mitn=|V|Knoten undm=|E|Kanten, so sieht die Kantenliste wie folgt aus:

n,m,a1,e1,a2,e2, ... ,am,em, wobeiai,eidie beiden Endknoten der Kanteisind.

I Die Reihenfolge des Auührens der Endknoten vonibzw. den Kanten ist beliebig.

I Bei Schleifen wird der Endknoten zweimal aufgelistet.

I Bei der Bogenliste eines Digraphen verfahren wir genauso, müssen jedoch darauf achten, dass ein Bogen immer zunächst durch seinen Anfangs- und dann durch seinen Endknoten repräsentiert wird.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 41

Beispiel

3 4

1 2

Kantenliste

I Dieser Graph hat die folgende Kantenliste:

4, 6, 1, 2, 2, 3, 4, 3, 3, 2, 2, 2, 1, 3.

I Man beachte, dass hier die Reihenfolge der Knoten beliebig ist, da es sich um ungerichtete Kanten handelt.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 42

Gewichte

Denition

I Haben die Kanten oder Bögen Gewichte, so repräsentiert man eine Kante (einen Bogen) entweder durch Anfangsknoten, Endknoten, Gewicht oder macht eine Kanten- bzw. Bogenliste wie oben und hängt an diese noch eine Liste mit denm Gewichten der Kanten1, 2, ... ,man.

I Der Speicheraufwand einer Kanten- bzw. Bogenliste beträgt2(m+ 1) Speicherzellen, eine Liste mit Gewichten erfordert3m+ 2Zellen.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 43

Beispiel

4 3

1 2

7 5 21

11 10

14 Kantenliste mit Gewichten

I Dieser gewichtete Graph ist in den beiden folgenden Kantenlisten mit Gewichten gespeichert:

I 4,6,1,2,10,1,2,11,2,4,7,4,3,14,3,1,21,1,4,5

I 4,6,1,2,1,2,2,4,3,4,1,4,1,3,11,10,7,14,5,21

SS 2009 | TU Darmstadt | Raymond Hemmecke | 44

Adjazenzmatrix eines ungerichteten Graphen

Denition

I SeiG= (V,E)ein ungerichteter Graph mitV={1, ... ,n}, so ist die symmetrische MatrixA∈Rn×nmit

I aij=aji=Anzahl der Kanten, dieimitj,i6=j, verbinden,

I aii= 2∗(Anzahl der Schleifen, dieienthalten),i= 1, ... ,n, die Adjazenzmatrix vonG.

I Wegen der Symmetrie genügt es, die obere Dreiecksmatrix vonAzu speichern.

I HatGKantengewichte und istGeinfach, so setzt man

I aij=Gewicht der Kante, wennij∈E,

I aij= 0,−∞, +∞, anderenfalls.

I Der Speicheraufwand für Adjazenzmatrizen beträgtn2Zellen (bzw.n(n−1)2 für obere Dreiecksmatrix).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 45

Beispiel

3 4

1 2

Adjazenzmatrix

I Die Adjazenzmatrix dieses Graphen ist:

0 1 1 0

1 2 2 0

1 2 0 1

0 0 1 0

SS 2009 | TU Darmstadt | Raymond Hemmecke | 46

Adjazenzmatrix eines gerichteten Graphen

Denition

I Die Adjazenzmatrix eines DigraphenD= (V,A)mitV={1, ... ,n}ohne Schleifen ist deniert durch

I aii= 0,i= 1, ... ,n,

I aij=Anzahl der Bögen inAmit Anfangsknoteniund Endknotenj. I Bogengewichte einfacher Digraphen werden wie im ungerichteten Fall behandelt.

I Der Speicheraufwand für Adjazenzmatrizen beträgtn2Zellen (bzw.n(n−1)2 für obere Dreiecksmatrix).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 47

Adjazenzlisten

Denition

I Speichert man für einen GraphenG= (V,E)die Anzahl von Knoten und für jeden Knoten seinen Grad und die Namen der Nachbarknoten, so nennt sich eine solche Datenstruktur Adjazenzliste vonG.

3 4

1 2

Adjazenzliste

Knotennummer Grad Nachbarknoten

4 1 2 2, 3

2 4 1, 3, 3, 2

3 4 1, 2, 2, 4

4 1 3

I Die Adjazenzliste dieses Graphen ist:

4, 1, 2, 2, 3, 2, 4, 1, 3, 3, 2, 3, 4, 1, 2, 2, 4, 4, 1, 3.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 48

(7)

Bemerkungen

Adjazenzlisten für Digraphen

I Bei Digraphen geht man analog vor: nur speichert man lediglich die Nachfolger eines Knotens (jeder Bogen kommt also nur einmal vor).

I Die Speicherung der Adjazenzliste eines Graphen erfordert2n+ 1 + 2m Speicherplätze, ihre Speicherung bei einem Digraphen erfordert2n+ 1 +m Speicherplätze.

Vor- und Nachteil von Adjazenzlisten I kompakt, gut für dünn besetzte Graphen, I aber schlecht: Suchen, ob KanteijinGenthalten ist.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 49

Finden von aufspannenden Wäldern

SS 2009 | TU Darmstadt | Raymond Hemmecke | 50

Depth-First Search Algorithmus

Input/Output

I Input: Einfacher GraphG= (V,E)in Form einer Adjazenzliste, d.h. für jeden Knotenvist eine NachbarlisteN(v)gegeben.

I Output: KantenmengeT(=aufspannender Wald) und KantenmengeB(mit B∪T=EundB∩T=∅)

SS 2009 | TU Darmstadt | Raymond Hemmecke | 51

Depth-First Search Algorithmus (2)

Idee und Ziel des DFS-Algorithmus I Berechnet für einen GraphenG:

I die Anzahl der Komponenten,

I entscheidet, obGKreis enthält und

I ndet für jede Komponente einen aufspannenden Baum.

I Tiefensuche: so schnell wie möglich einen Knoten verlassen

I rekursives Hinzufügen von Kanten zum WaldToder zu kreisschlieÿenden KantenB I DFS-Algorithmus teilt die Kanten des Graphen in zwei Teilmengen:

I Kantexyheiÿt Vorwärtskante, wenn wir im Verfahren von einem markierten Knotenxentlangxyzum Knotenygehen undymarkieren.

→Kante des aufspannenden Waldes

I Anderfalls heiÿtxyRückwärtskante.

→Kante würde Kreis schlieÿen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 52

DFS-Algorithmus im Detail

Algorithmus

I Alle Knoten seien unmarkiert.

I SetzeT:=∅,B:=∅. I Für allev∈Vführe aus

I Istvunmarkiert, dann CALL SEARCH(v).

I (Bemerkung: Es existieren genau soviele Zusammenhangskomponenten inG wie hier SEARCH(v)aufgerufen wird.)

I GibTundBaus.

Funktion SEARCH(v) I Markierev.

I Für alle Knotenw∈N(v)führe aus:

I Istwmarkiert undvw6∈T, setzeB:=B∪ {vw}.

I Istwunmarkiert, setzeT:=T∪ {vw}und CALL SEARCH(w).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 53

Eigenschaften des DFS-Algorithmus

Laufzeit

I Laufzeit des Verfahrens:O(|V|+|E|), d.h. polynomiell Korrektheit

I Die Menge aller Vorwärtskanten ist ein Wald vonG, der in jeder Komponente einen aufspannenden Baum bildet.

→Beweis als Übungsaufgabe I Genthält einen Kreis⇔B6=∅. Datenstruktur

I DFS-Algorithmus ist konzipiert für die Datenstruktur einer Adjazenzliste!

SS 2009 | TU Darmstadt | Raymond Hemmecke | 54

Beispiel für DFS-Algorithmus

5 2

4 1 3

6 Adjazenzliste (in Tabellenform)

Dieser Graph hat die folgende Adjazenzliste:

Knotennummer Grad Nachbarknoten

6 1 1 5

2 2 4, 5

3 1 6

4 2 2, 5

5 3 1, 2, 4

6 1 3

SS 2009 | TU Darmstadt | Raymond Hemmecke | 55

Beispiel für DFS-Algorithmus (2)

I 1→5→2→4 T={15, 52, 24}

I 4→2(24∈T)

I 4→5 B={45}

I Knoten4erledigt, zurück zu Knoten2 I 2→5(52∈T)

I Knoten2erledigt, zurück zu Knoten5 I 5→1(15∈T)

I Knoten5erledigt, zurück zu Knoten1, Knoten1erledigt, Komponente erledigt

I 3→6 T={15, 52, 24, 36}

I Knoten6erledigt, zurück zu Knoten3, Knoten3erledigt, Komponente erledigt

5 2

4 1 3

6 T

T

T T

B

SS 2009 | TU Darmstadt | Raymond Hemmecke | 56

(8)

Finden von gewichts-maximalen Wäldern

SS 2009 | TU Darmstadt | Raymond Hemmecke | 57

GreedyMax Algorithmus

Input/Output

I Input: GraphG= (V,E)mit Kantengewichtence, für allee∈E. I Output: Ein WaldW⊆Emit maximalen Gewichtc(W). Algorithmus

1. (Sortieren)

c(e1)≥c(e2)≥...≥c(eK)>0≥c(eK+1)≥...≥c(e|E|).

2. (Initialisierung) SetzeW:=∅.

3. Füri= 1, ... ,Kführe durch:

FallsW∪ {ei}keinen Kreis enthält, setzeW:=W∪ {ei}. 4. (Ausgabe)

GibWaus.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 58

Finden von kürzesten Wegen in Graphen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 59

Problem

Problemformulierung

I Gegeben sei ein DigraphD= (V,A)mit Bogengewichtenc(a)für allea∈A. Weiterhin seiens,t∈V gegeben.

I Gesucht ist eins-t-Weg minimalen Gesamtgewichts (=Summe der Kantengewichte).

Schwierigkeiten I negative Gewichte

I Hamiltonische-Wege Problem (jeder Knoten genau einmal besucht) Unterscheidung der Algorithmen

I nur nichtnegative Gewichte I auch negative Gewichte möglich

SS 2009 | TU Darmstadt | Raymond Hemmecke | 60

Ein Startknoten, nichtnegative Gewichte

Idee

I Dekomposition eine kürzesten(s,w)-Weges in einen kürzesten(s,u)-Weg plus kürzesten(u,w)-Weg.

s

u u

+

w s

u w

SS 2009 | TU Darmstadt | Raymond Hemmecke | 61

Dijkstra-Algorithmus

Input/Output

I Input: DigraphD= (V,A), Gewichtec(a)≥0für allea∈A, ein Knotens∈V (und ein Knotent∈V\ {s}).

I Output: Kürzeste gerichtete Wege vonsnachvfür allev∈Vund ihre Länge (bzw. einfach nur ein kürzester(s,t)-Weg).

Datenstrukturen

DIST(v) = Länge des kürzesten(s,v)-Weges VOR(v) = Vorgänger vonvim kürzesten(s,v)-Weg Initialisierung

DIST(s) = 0

DIST(v) = +∞für allev∈V\ {s}

VOR(v) = sfür allev∈V

SS 2009 | TU Darmstadt | Raymond Hemmecke | 62

Dijkstra-Algorithmus im Detail

Algorithmus

1. Alle Knoten seien unmarkiert.

2. Seiuunmarkierter Knoten mit DIST(u) = min{DIST(v) :vunmarkiert}. Markiere u. (Fallsu=t, breche ab.)

3. Für alle unmarkierten Knotenvmituv∈Aführe aus:

Falls DIST(v) > DIST(u) +c(uv)setze:

DIST(v) := DIST(u) +c(uv)und VOR(v) :=u. 4. Sind noch nicht alle Knoten markiert, gehe zu 2.

I Für alle markierten Knotenvist DIST(v)die Länge eines kürzesten(s,v)-Weges.

I Istvmarkiert und DIST(v)<+∞, so ist VOR(v)der Vorgänger vonvin einem kürzesten(s,v)-Weg. Durch Rückwärtsgehen bisskann ein kürzester(s,v)-Weg bestimmt werden.

I Brechen wir das Verfahren nicht in Schritt 2 ab und gilt am Ende DIST(v) = +∞, so heiÿt das, dass es inDkeinen(s,v)-Weg gibt.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 63

Beispiel für Dijkstra-Algorithmus

7 4

3 6

5

4 6

8

5 5

s

b

c d

t

a

DIST(s)DIST(a)DIST(b)DIST(c)DIST(d)DIST(t)Unmarkiert

Start 0 ∞ ∞ ∞ ∞ ∞ {s,a,b,c,d,t}

Mark. s 0 5s ∞s 7s ∞s ∞s {a,b,c,d,t}

Mark. a 0 5 11a 7 9a ∞ {b,c,d,t}

Mark. c 0 5 10c 7 9 ∞ {b,d,t}

Mark. d 0 5 10 7 9 17d {b,t}

Mark. b 0 5 10 7 9 15b {t}

(Mark. t) ∅

Demnach ists→c→b→tein kürzester Weg vonsnachtund hat die Länge15.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 64

(9)

Korrektheit des Dijkstra-Algorithmus

Satz

Der Dijkstra-Algorithmus arbeitet korrekt.

Beweis

I Über Induktion nach der Anzahlkder markierten Knoten zeigen wir:

(a) Istvmarkiert, so enthält DIST(v)die Länge eines kürzesten(s,v)-Weges.

(b) Istvunmarkiert, so enthält DIST(v)die Länge eines kürzesten(s,v)-Weges, wobei nur markierte Knoten als innere Knoten zugelassen sind.

I k= 1: Dann ist nursmarkiert und die Behauptung gilt sicherlich.

I Sei die Behauptung also richtig fürk≥1markierte Knoten.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 65

Induktionsschritt für (a)

Induktionsschritt für (a), Teil 1

I Das Verfahren habe in Schritt 2 einen(k+ 1)-sten Knotenumarkiert.

I Nach Ind.-voraussetzung Teil (b) ist DIST(u)die Länge eines kürzesten (s,u)-Weges, der als innere Knoten nur die erstenkmarkierte Knoten benutzen darf.

I Wir zeigen, dass DIST(u)die Länge eines kürzesten(s,u)-Weges ist.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 66

Induktionsschritt für (a)

Induktionsschritt für (a), Teil 2

I Wir zeigen, dass DIST(u)die Länge eines kürzesten(s,u)-Weges ist.

I Angenommen, es existiere ein kürzerer WegPvonsnachu.

I Dann muÿ er einen Bogen von einem markierten Knoten zu einem unmarkierten Knoten enthalten.

I Seivwder erste derartige Bogen auf dem WegP.

I Der TeilwegP¯vonPvonsnachwbenutzt nur markierte Knoten als innere Knoten.

I Deshalb gilt DIST(w)≤c( ¯P)nach Ind.-voraussetzung Teil (b).

I Weiterhin gilt

I c( ¯P)≤c(P)(nichtnegative Kantengewichte) und

I c(P)<DIST(u)(Annahme überP).

I Zusammen ergibt sich: DIST(w)<DIST(u).

I Aber dies widerspricht DIST(u)≤DIST(w)entsprechend der Wahl vonuin Schritt 2.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 67

Induktionsschritt für (b)

Induktionsschritt für (b)

I Es bleibt zu zeigen: Für die derzeit unmarkierten Knotenvist DIST(v)die Länge eines kürzesten(s,v)-Weges, der nur markierte Knoten als innere Knoten hat.

I Der vorletzte Knoten auf einem kürzesten(s,v)-Weg ist entwederuoder ein anderer (voru) markierter Knoten.

I Man beachte jetzt, dass in Schritt 3 die Länge eines(s,v)-Weges über markierte Knoten verschieden vonuverglichen wird mit der Länge eines(s,v)-Weges über markierte Knoten, der als vorletzten Knoten den Knotenuenthält.

I Damit folgt die Behauptung.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 68

Bemerkungen

Kürzeste-Wege-Baum

I In der Datenstruktur VOR merken wir uns zu jedem Knotenvseinen Vorgänger in einem kürzesten(s,v)-Weg.

I Einen kürzesten(s,v)-Weg erhält man dann gemäÿ:

v VOR(v) VOR(VOR(v)) ... VOR(...VOR(v) ...) =s I Oensichtlich ist durch VOR( ) eine Arboreszenz deniert.

Satz

I SeiD= (V,A)ein Digraph mit nichtnegativen Bogengewichten unds∈V. I Es gibt eine ArboreszenzBmit Wurzels, so dass für jeden Knotenv∈V, für den

es einen(s,v)-Weg inDgibt, der (eindeutig bestimmte) gerichtete Weg inBvons nachvein kürzester(s,v)-Weg ist.

Anzahl Operationen des Dijkstra-Algorithmus:O(|V|2)

SS 2009 | TU Darmstadt | Raymond Hemmecke | 69

Ein Startknoten, beliebige Gewichte

Problem

I Problem, einen kürzesten Weg in einem Digraphen mit beliebigen Bogengewichten zu bestimmen, ist äquivalent zum Problem, einen längsten Weg in einem Digraphen mit beliebigen Gewichten zu nden.

I Wäre dies in polynomialer Zeit lösbar, so könnte man auch dasN P-vollständige Problem in polynomialer Zeit lösen, zu entscheiden, ob ein Digraph einen gerichteten hamiltonischen Weg hat.

Vergröÿerung der Problemklasse

I Dijkstra-Algorithmus funktioniert nur für nichtnegative Gewichte.

I Betrachte jetzt azyklische Digraphen mit beliebigen Kantengewichten.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 70

Moore-Bellman-Algorithmus für azyklische Digraphen

Satz, Beweis→Übungsaufgabe

I SeiD= (V,A)ein azyklischer Digraph.

I Dann können die Knoten inVso numeriert werden, dass(u,v)∈A⇒u<v. Input/Output

I Input: Azyklischer DigraphD= (V,A), Gewichtec(a)für allea∈A(auch negative Gewichte sind zugelassen), ein Knotens∈V.

O.B.d.A. nehmen wir an, dassV={1, 2, ... ,n}gilt und alle Bögen die Form(u,v) mitu<vhaben.

I Output: Kürzeste gerichtete Wege vonsnachvfür allev∈Vund ihre Länge Datenstrukturen

DIST(v) = Länge des kürzesten(s,v)-Weges VOR(v) = Vorgänger vonvim kürzesten(s,v)-Weg

SS 2009 | TU Darmstadt | Raymond Hemmecke | 71

Moore-Bellman-Algorithmus im Detail

Algorithmus

DIST(s) = 0

DIST(v) = +∞für allev∈V\ {s}

VOR(v) = sfür allev∈V FORv=s+ 1TOnDO

FORv=sTOv−1DO

Falls(u,v)∈Aund DIST(u) +c(uv)<DIST(v) setze DIST(v) :=DIST(u) +c(uv)und VOR(v) :=u.

I Gilt am Ende DIST(v) = +∞, so heiÿt das, dass es inDkeinen(s,v)-Weg gibt.

I Für alle Knotenvmit DIST(v)<+∞ist DIST(v)die Länge eines kürzesten (s,v)-Weges.

I Ist DIST(v)<+∞, so ist VOR(v)Vorgänger vonvin einem kürzesten(s,v)-Weg.

Durch Rückwärtsgehen bisskann ein kürzester(s,v)-Weg bestimmt werden.

Anzahl Operationen des Moore-Bellman-Algorithmus:O(|V|2)

SS 2009 | TU Darmstadt | Raymond Hemmecke | 72

(10)

Korrektheit des Moore-Bellman-Algorithmus

Satz

Der Moore-Bellman-Algorithmus funktioniert für beliebige azyklische Digraphen mit belie- bigen Gewichten.

Beweis

I Nach Voraussetzung haben alle Bögen inDdie Form(u,v)mitu<v.

I Deshalb enthält jeder(s,v)-Weg mitv>sals innere Knoten nur solche Knotenu mits<u<v.

I Durch Induktion nachv=s, ... ,nzeigen wir, dass DIST(v)die Länge eines kürzesten(s,v)-Weges ist.

I v=so.k.

I Sei die Behauptung richtig für alle Knotens, ... ,v.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 73

Induktionsschritt

Induktionsschritt

I Betrachte den Knotenv+ 1.

I Ein kürzesters,v+ 1-Weg besteht entweder nur aus dem Bogen(s,v+ 1)(falls vorhanden) oder aber er führt zu einem Knotens+ 1≤u≤vund benutzt anschlieÿend die Kanteu,v+ 1.

I Das Minimum all dieser Wege wird jedoch in der innersten Schleife berechnet.

s

u u

v+ 1

+

s

u

v+ 1

SS 2009 | TU Darmstadt | Raymond Hemmecke | 74

Yen-Variante

Bemerkungen

I Variante des Moore-Bellman-Algorithmus, welche für beliebige Gewichte und beliebige Digraphen funktioniert, sofern es keinen gerichteten negativen Kreis gibt.

I LaufzeitO(|V|3)

I Wichtig: Mit dem Verfahren kann man tatsächlich testen, obDeinen negativen gerichteten Kreis enthält! Ein solcher wird in polynomialer Zeit gefunden.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 75

Finden maximaler Flüsse in Netzwerken

SS 2009 | TU Darmstadt | Raymond Hemmecke | 76

Maximaluss-Problem

Senke Quelle

künstlicher Bogen

q s

Problemformulierung

I Gegeben sei ein DigraphD= (V,A)mit Bogenkapazitätendafür allea∈A. Weiterhin mögen ein Knotenq∈Vohne eingehende Bögen (Quelle) und ein Knotens∈Vohne abgehende Bögen (Senke) existieren.

Letztendlich setzen wirA¯=A∪ {sq}und wählendsq≥P

a∈Adabeliebig.

I Ein Vektorx= (xa:a∈A)¯ heiÿt Fluÿ aufD, falls für jeden Knotenv∈V gilt X

wv∈¯A

xwv= X

vwA¯

xvw (Flusserhaltung).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 77

Maximaluss-Problem (2)

Senke Quelle

künstlicher Bogen

q s

Problemformulierung (2)

I Der Wert des Flusses ist gleichxsq.

I Problemstellung: Man nde einen Flussx≥0überDmaximalen Wertes, der auch die Kapazitäten auf den Bögen respektiert, alsoxa≤d(a)für allea∈A¯erfüllt.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 78

Max-Flow-Min-Cut Theorem

Denition

SeiS⊆Vmitq∈Sunds∈V\S. Dann heiÿtSSchnitt mit Kapzität

cap(S) = X

vw∈A,v∈S,w∈V\S

dvw.

Minimaler Schnitt

I Kapazität eines jeden Schnittes liefert obere Schranke für maximalen Fluss.

I Finde Schnitt minimaler Kapazität.

Max-Flow-Min-Cut Theorem

I Es existiert ein gültiger Fluss¯x≤dund ein SchnittS⊆Vmit¯xsq= cap(S). I Beide sind Optimallösungen der jeweiligen Probleme.

→ Dualitätstheorie in linearer Optimierung

SS 2009 | TU Darmstadt | Raymond Hemmecke | 79

Formulierung als lineares Optimierungsproblem

Wiederholung

Für einen DigraphenD= (V,A)ist die Knoten-Kanten-Inzidenzmatrix deniert durch:

I Mij= 1, falls BogenjKnoteniverlässt, I Mij=−1, falls Bogenjin Knoteniendet, I Mij= 0, sonst.

Lemma →Max-Flow Problem als lineares Optimierungsproblem x≥0ist ein Fluss, genau dann wennMx= 0. →min{xsq:Mx= 0, 0≤x≤d}

Beweis →Betrachte Knoteni

(eingehende Bögen) X

vi∈A¯

xvi=X

iw∈¯A

xiw(ausgehende Bögen) 0 =X

iw∈A¯

1·xiw+X

vi∈¯A

(−1)·xvi+ X

vw∈¯A,v,w6=i

0·xvw=Mi.x

SS 2009 | TU Darmstadt | Raymond Hemmecke | 80

(11)

Lösung des Max-Flow Problems

Idee des Ford-Fulkerson Algorithmus

Verbessere Fluss sukszessive durch augmentierende Pfade.

Denition

I SeiD= (V,A)ein Digraph mitq,s∈Vundqs∈¯A,dein Kapazitätsvektor undx ein gültiger Fluss fürd.

I Ein (nicht notwendigerweise gerichteter) Pfadq=v0e1v1e2v2...ekvkheiÿt ungesättigt (bzgl.xundd), falls

I ei∈A,

I xei<deifür alle Vorwärtsbögen,

I xej>0für alle Rückwärtsbögen,

I Fallsv0=qundvk=s, so heiÿt dieser Pfad ein augmentierender Pfad.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 81

Ford-Fulkerson Algorithmus

Konstruktion eines besseren Flusses aus augmentierendem Pfad I Sei= mini{dei−xei,xei}.

I Besserer Fluss alsx:

xe=





xe+ fallse=sq,

xe+ fallseVorwärtsbogen im Pfad ist, xe− fallseRückwärtsbogen im Pfad ist, xe fallssonst.

Ford-Fulkerson Algorithmus I Initialisierex= 0.

I Solange ein augmentierender Pfad existiert, verbesserex.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 82

Wie ndet man augmentierenden Pfad?

HilfsgraphD0= (V0,A0) I V0=V

I vw∈A0mit Kapazitätdvw−xvw, fallsdvw−xvw>0 I wv∈A0mit Kapazitätxvw, fallsxvw>0

Bemerkung

I Für jeden Bogen inDsind im HilfsgraphenD0ein bzw. zwei Bögen jenachdem, ob dvw−xvw>0undxvw>0gilt.

I Jeder augmentierende Pfad inD(bzgl.xundd) entspricht einem gerichteten q-s-Weg inD0.

I Ob ein gerichteterq-s-Weg inD0existiert, kann mit dem DFS-Algorithmus entschieden werden.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 83

Sortieren von Arrays

I InsertionSort (schon behandelt) I MergeSort

I QuickSort I HeapSort

SS 2009 | TU Darmstadt | Raymond Hemmecke | 84

Daten

Datentyp struct Item {

int key;

// data components };

Beispiel

I Immatrikulationsnummer

I Name des Studenten, Kontaktdaten des Studenten, Prüfungsergebnisse Schlüsselwahl →Wahl ganzer Zahlen als Schlüssel ist willkürlich

I Man benötigt Menge mit Ordnungsrelation, es gilt alsoa<b,a=bodera>bfür allea,b.

I z.B. Name des Studenten (lexikographische Ordnung wie im Duden)

SS 2009 | TU Darmstadt | Raymond Hemmecke | 85

MergeSort

Idee

I Mergesort teilt das zu sortierende Array in zwei gleichgroÿe Teilarrays,

I sortiert diese (durch rekursive Anwendung von Mergesort auf die beiden Teile) und I fügt die sortierten Teile zusammen.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 86

MergeSort (2)

Zusammenfügen zweier sortierter Arrays: Algorithmus MERGE

I Seien dazuv1undv2bereits sortierte Arrays der Längembzw.nmit Komponenten vom Typ Item.

I Diese sollen in das Arrayvder Längem+nverschmolzen werden.

I Dazu durchlaufen wirv1undv2von links nach rechts mit zwei Indexzeigerniundj: 1. Initialisierung:i= 0,j= 0,k= 0;

2. Wiederhole Schritt3bisi=moderj=n.

3. Fallsv1[i].key<v2[i].key, so kopierev1[i]an Positionkvonvund erhöheiund kum1.

Anderenfalls kopierev2[i]an Positionkvonvund erhöheiundkum1. 4. Isti=mundj<n, so übertrage die restlichen Komponenten vonv2nachv. 5. Istj=nundi<m, so übertrage die restlichen Komponenten vonv1nachv.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 87

MergeSort (3)

Korrektheit von MERGE

Bei jedem Wiedereintritt in die Schleife3gilt die Invariante v[0].key ≤ ... ≤ v[k−1].key

v[k−1].key ≤ v1[i].key ≤ ... ≤ v1[m−1].key v[k−1].key ≤ v2[j].key ≤ ... ≤ v2[n−1].key Hieraus folgt sofort, dassvam Ende aufsteigend sortiert ist.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 88

(12)

MergeSort (4)

Beispiel

Betrachten wir die Arraysv1= [12, 24, 53, 63]undv2= [18, 25, 44, 72]. Die dazugehörige Folge der Werte voni,j,k,undv bei jedem Wiedereintritt in die Schleife3ist in der nachfolgenden Tabelle angegeben. Am Ende der Schleife isti = 4und Schritt4 des Algorithmus wird ausgeführt, d.h. der Rest vonv2, also die72, wird nachvübertragen.

i j k v[0] v[1] v[2] v[3] v[4] v[5] v[6] v[7]

1 0 1 12 − − − − − − −

1 1 2 12 18 − − − − − −

2 1 3 12 18 24 − − − − −

2 2 4 12 18 24 35 − − − −

2 3 5 12 18 24 35 44 − − −

3 3 6 12 18 24 35 44 53 − −

4 3 7 12 18 24 35 44 53 63 −

SS 2009 | TU Darmstadt | Raymond Hemmecke | 89

MergeSort (5)

Denition

I SeiC(m,n)die maximale Anzahl von Schlüsselvergleichen und I A(m,n)die maximale Anzahl von Zuweisungen von Komponenten beim

Zusammenfügen.

Komplexität des Zusammenfügens

I Vergleiche treten nur in der Schleife3auf, und zwar genau einer pro Durchlauf.

I Da die Schleife maximaln+m−1mal durchlaufen wird, gilt C(m,n)≤m+n−1.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 90

MergeSort (6)

Algorithmus MERGESORT

void MergeSort(Item v[], int rst, int last) { int middle;

if (rst<last) {

middle = (rst+last)/2; teilevin2gleiche Teile

MergeSort(v,rst,middle); sortiere ersten Teil

MergeSort(v,middle+1,last); sortiere zweiten Teil

Merge(v,rst,middle,last); füge beide sortierte Teile zusammen }

}

Sortieren eines Arrays

Der Aufruf MergeSort(a, 0,n−1)sortiert das Arrayader Längenim gesamten Bereich von0bisn−1.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 91

MergeSort (7)

Korrektheit von MERGESORT

Die Korrektheit von MergeSort ergibt sich sofort durch vollständige Induktion nach der Anzahln=last−rst+1der zu sortierenden Komponenten.

I Istn= 1, also last=rst (Induktionsanfang), so wird im Rumpf von MergeSort nichts gemacht und das Arrayvist nach Abarbeitung von MergeSort trivialerweise im Bereich rst..last sortiert.

I Istn>1, so sind rst..middle und middle+1..last Bereiche mit weniger alsn Elementen, die also nach Induktionsvoraussetzung durch die Aufrufe

MergeSort(v,rst,middle) und MergeSort(v,middle+1,last) korrekt sortiert werden.

I Die Korrektheit von Merge ergibt dann die Korrektheit von MergeSort.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 92

MergeSort (8)

Füra= [63, 24, 12, 53, 72, 18, 44, 35]ergibt der Aufruf MergeSort(a,0,7) den in der folgenden Tabelle dargestellten Ablauf. Dabei beschreiben die Einrücktiefe die Aufrufhierarchie (Rekursionsbaum), und die Kästen die bereits sortieren Teile des Arrays.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 93

Worst-Case Analyse von MergeSort

Rekursionsgleichung

I Wir ermitteln den worst-case AufwandC(n)für Anzahl der Vergleiche undA(n)für Anzahl der Zuweisungen von Mergesort beim Sortieren einesn-Arrays.

I Aus dem rekursiven Aufbau des Algorithmus ergeben sich folgende Rekursionsgleichungen fürC(n):

C(2) = 1

C(2n) = 2·C(n) +C(n,n) fürn>1.

= 2·C(n) + 2n−1 (∗)

I Das Sortieren eines2-elementigen Arrays erfordert einen Vergleich.

I Das Sortieren eines Arrays der Länge2nerfordert den Aufwand für das Sortieren von2Arrays der Längen(rekursive Aufrufe von MergeSort für die beiden Teile), also2·C(n), plus den AufwandC(n,n)für das Zusammenfügen (Aufruf von Merge).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 94

Worst-Case Analyse von MergeSort (2)

Lemma

Fürn= 2qhat die Rekursionsgleichung (*) die Lösung C(2q) = (q−1)2q+ 1.

Beweis durch Induktion nachq

I Istq= 1, so istC(21) = 1und(q−1)2q+ 1 = 1(Induktionsanfang).

I Also sei die Behauptung richtig für2rmit1≤r≤q. I Wir schlieÿen jetzt aufq+ 1:

C(2q+1) = 2·C(2q) + 2·2q−1 Rekursionsgleichung

= 2·[(q−1)2q+ 1] + 2·2q−1 Induktionsvoraussetzung

= (q−1)2q+1+ 2 + 2q+1−1

= q·2q+1+ 1

SS 2009 | TU Darmstadt | Raymond Hemmecke | 95

Worst-Case Analyse von MergeSort (3)

Worst-Case Analyse der Zuweisungen

I Bezüglich der AnzahlA(n)der Zuweisungen von Arraykomponenten ergibt sich analog:

A(2n) = 2·A(n) +Zuweisungen in Merge I In Merge werden zunächst die Teile vonvnachv1undv2kopiert.

I Dies erfordert2nZuweisungen.

I Für das Mergen sind dann wiederA(n,n) = 2nZuweisungen erforderlich.

I Also ergibt sich die Rekursionsgleichung A(2) = 4

A(2n) = 2·A(n) + 4n fürn>1.

I Der gleiche Lösungsansatz liefert fürn= 2q: A(n) = (q+ 1)2q.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 96

(13)

Worst-Case Analyse von MergeSort (4)

Satz

Mergesort sortiert ein Array mitnKomponenten mitO(nlogn)Vergleichen undO(nlogn) Zuweisungen.

Beweis

Sei2q−1<n≤2q. Dann gilt:

C(n) ≤ C(2q) = (q−1)2q+ 1

< log2n·2q+ 1

< (log2n)·2n+ 1

= 2nlog2n+ 1∈O(nlogn) A(n) ≤ A(2q) = (q+ 1)2q

< (log2n+ 2)2q

< (log2n+ 2)·2n

= 2nlog2n+ 4n∈O(nlogn)

SS 2009 | TU Darmstadt | Raymond Hemmecke | 97

Beschleunigung durch Aufteilung:

Divide-and-Conquer

SS 2009 | TU Darmstadt | Raymond Hemmecke | 98

Aufteilungs-Beschleunigungssatz

Gegeben

I Problem der Gröÿea·nmit der Laufzeitf(a·n). I Dieses zerlegt man inbTeilprobleme der Laufzeitf(n).

I Ist die Laufzeit für das Aufteilen respektive Zusammenfügen der Teillösungenc·n, so ergibt sich die folgende Rekursionsgleichung und der folgende Satz.

Satz

Seiena>0,b,cnatürliche Zahlen und sei folgende Rekursionsgleichung gegeben:

f(1) = c/a

f(a·n) = b·f(n) +c·n fürn=aq,q>1.

Dann gilt

f(n)∈

O(n) , fallsa>b O(nlogn) , fallsa=b O(nlogab) , fallsa<b

SS 2009 | TU Darmstadt | Raymond Hemmecke | 99

Beweis

Fürn=aqgilt

f(n) =c an

q

X

i=0

b a i

.

Dies zeigt man durch Induktion überq. Fürq= 0ist die Summe0und daherf(1) =ca. Die Behauptung sei nun fürqgezeigt.

Dann ergibt sich im Induktionsschluss aufq+ 1:

SS 2009 | TU Darmstadt | Raymond Hemmecke | 100

Beweis (2)

f(aq+1) = f(a·aq)

= b·f(aq) +c·aq Rekursionsgleichung

= b·c a·aq

q

X

i=0

b a i

+c·aq Induktionsvoraussetzung

= c

a·aq+1b a

q

X

i=0

b a i

+c a·aq+1

= c

a·aq+1

q

X

i=0

b a

i+1

+c a·aq+1

= c

a·aq+1

q

X

i=1

b a i

+ 1

!

= c

a·aq+1

q+1

X

i=0

b a i

SS 2009 | TU Darmstadt | Raymond Hemmecke | 101

Beweis (3)

Also gilt

f(n) =c an

logan

X

i=0

b a i

. Wir betrachten jetzt3Fälle:

Fall1:a>b Dann ist

b a<1⇒

logab

X

i=0

b a i

<

X

i=0

b a i

. Die letzte Summe ist eine geometrische Reihe mit Wertk1= 1

1−ba =a−ba . Also ist f(n)<c·k1

a n⇒f(n)∈O(n).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 102

Beweis (4)

Fall2:a=b Dann ist

f(n) =c an

logan

X

i=0

1 =c

an(logan+ 1) =c

anlogan+c an Fürn≥aistlogan≥1und daher

f(n)≤c

anlogan+c

anlogan= 2c anlogan=

2c a loga2

·nlog2n∈O(nlog2n).

Oenbar ist dieser Fall gerade der auf Mergesort zutreende Fall.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 103

Beweis (5)

Fall3:a<b f(n) =c

an

logan

X

i=0

b a i

= c

aaq

q

X

i=0

b a i

dan=aq

= c

a

q

X

i=0

biaq−i=c a

q

X

i=0

bq−iai=c abq

q

X

i=0

a b i

< c abq

X

i=0

a b i

. Wie im Fall1istP

i=0 a b

i

eine geometrische Reihe mit Wertk2=b−ab . Also ist f(n)<ck2

a bq=ck2

a blogan=ck2

a nlogab∈O(nlogab).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 104

(14)

Multiplikation von Dualzahlen

SS 2009 | TU Darmstadt | Raymond Hemmecke | 105

Multiplikation von Dualzahlen

Laufzeit

I Traditionelle Methode erfordertΘ(n2)Bit-Operationen.

I Aufteilung und Beschleunigung erreichtO(nlog23)∈O(n1,59)Operationen.

Idee (ohne viel Nachdenken)

I Seienx,yzwein-stellige Dualzahlen, wobeineine Zweierpotenz sei.

I Wir teilenx,yin zwein2-stellige Zahlenx=a2n/2+bundy=c2n/2+d. I Dann istxy= (a2n/2+b)(c2n/2+d) =ac2n+ (ad+bc)2n/2+bd.

I Man hat die Multiplikation also auf4Multiplikationen vonn2-stelligen Zahlen und einige Additionen und Shifts (Multiplikationen mit2n/2bzw.2n), die nur linearen Aufwand erfordern, zurückgeführt.

I Dies führt zur RekursionsgleichungT(n) = 4T(n/2) +c0nmit Lösung T(n)∈Θ(n2), also ohne Gewinn gegenüber der traditionellen Methode.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 106

Multiplikation von Dualzahlen (2)

Idee (mit etwas mehr Nachdenken) I Die Anweisungen

u := (a+b)(c+d) v := ac

w := bd

z := v2n+ (u−v−w)2n/2+w

führen jedoch zur Berechnung vonz=xymit3Multiplikationen von Zahlen der Längen2bzw. n2+ 1, da beia+bbzw.c+dein Übertrag auf die(n2+ 1)-te Position entstehen könnte.

I Ignorieren wir diesen Übertrag, so erhält man T(n) = 3T(n/2) +c1n mit der gewünschten LösungT(n)∈Θ(nlog23).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 107

Multiplikation von Dualzahlen (3)

Berücksichtigung des Übertrags

I Um den Übertrag zu berücksichtigen, schreiben wira+bundc+din der Form a+b=α2n/2+ ¯aundc+d=γ2n/2+ ¯cmit den führenden Bitsα,γund den

n

2-stelligen Resten¯a, ¯c. Dann ist

(a+b)(c+d) =αγ2n+ (α¯a+γ¯c)2n/2+ ¯a¯c.

Hierin tritt nur ein Produkt vonn2-stelligen Zahlen auf (nämlich¯a¯c. Der Rest sind Shifts bzw. lineare Operationen aufn2-stelligen Zahlen (z.B.α¯a).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 108

Multiplikation von Dualzahlen (4)

Berücksichtigung des Übertrags (2)

I Daher erhält man insgesamt die RekursionsgleichungT(n) = 3T(n/2) +c2n, wobei c2nfolgenden Aufwand enthält:

Additionena+b,c+d: 2·n2

Produktαγ: 1

Shiftαγaufαγ2n: n

Produkteα¯a,γ¯c: 2·n2

Additionα¯a+γ¯c: n2+ 1

Shiftα¯a+γ¯cauf(α¯a+γ¯c)2n/2: n2

Shiftvaufv2n: n

Additionu−v−w: 2(n2+ 1)

Shiftu−v−wauf(u−v−w)2n/2: n2

Addition zuz: 2n

I Dieser Aufwand addiert sich zu8, 5n+ 2<9nfürn≥2. I Also kannc2als9angenommen werden.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 109

Multiplikation von Dualzahlen (5)

Berücksichtigung des Übertrags (3)

I Als Lösung erhält man nach dem Aufteilungsbeschleunigungssatz T(n)∈Θ(nlog23)∈Θ(n1,59).

Bemerkung

I Der Trick bestand also darin, auf Kosten zusätzlicher Additionen und Shifts, eine teure Multiplikation vonn2-stelligen Zahlen einzusparen.

I Die rekursive Anwendung dieses Tricks ergibt dann die Beschleunigung vonΘ(n2) aufΘ(n1,59).

I Für die normale Computerarithmetik (n= 32) zahlt sich dieser Trick nicht aus, jedoch bedeutet er für Computerarithmetiken mit beliebigstelligen Dualzahlen, die meist softwaremäÿig realisiert werden, eine wichtige Beschleunigung.

SS 2009 | TU Darmstadt | Raymond Hemmecke | 110

Multiplikation von Dezimalzahlen

Verfahren lässt sich natürlich auch im Dezimalsystem anwenden x= 4217 y= 5236 Dann ist

a = 42, b = 17 und a+b = 59;

c = 52, d = 36 und c+d = 88.

Also erhalten wir

u = (a+b)(c+d) = 55·88 = 5192 v = ac= 42·52 = 2184

w = bd= 17·36 = 612

xy = v·104+ (u−v−w)·102+w

= 2184·104+ 2396·102+ 612

= 21.840.000 + 239.600 + 612

= 22.080.212

SS 2009 | TU Darmstadt | Raymond Hemmecke | 111

Multiplikation von Matrizen

Bemerkungen

I Auf ähnliche Weise wie die Multiplikation von Zahlen lässt sich auch die Multiplikation (groÿer)n×nMatrizen beschleunigen.

I Hier erhält man die Rekursionsgleichung

T(2n) = 7T(n) + 14n

mit der LösungΘ(nlog27)∈Θ(n2,81), also eine Beschleunigung gegenüber der normalen Methode mit dem AufwandΘ(n3).

I Hier lassen sich noch weitere Beschleunigungen erzielen.

Der momentane Rekord steht beiO(n2,39).

SS 2009 | TU Darmstadt | Raymond Hemmecke | 112

Referenzen

ÄHNLICHE DOKUMENTE

Zum Sortieren einer Folge von n Keys mit einem allgemeinen Sortierverfahren sind im Worst-Case, ebenso wie im Average- Case, mindestens Ω(n log n) Vergleichsoperationen zwischen

Zum Sortieren einer Folge von n Keys mit einem allgemeinen Sortierverfahren sind im Worst-Case ebenso wie im Average-Case mindestens Ω(n log n) Vergleichsoperationen zwischen zwei

Eine Organisationszertifizierungsstelle (für Zertifikate nur für Benutzer und Computer innerhalb der Organisation) ist die Zertifizierungsstelle auf der höchsten Ebene in einer

The worst cases, described in that report were heavily doubted in the scientific community, and a lot of effort has been put into coming up with better

Laden Sie sich von der Vorlesungsseite die Datei SurfXY.java herunter! Das Programm zeichnet drei- dimensionale Kurven. Diese werden durch Linien dargestellt. In dieser Aufgabe

(Bemerkung: Natürlich kann eine solche Maschine durch einen Computer realisiert werden. Doch wir müssen uns hier gar nicht mit Computern befassen. Wir können uns z.B. auch

Idee: Leader gibt sich einen (neuen) Namen; restliche Knoten führen unter sich eine neue Election

De�nition ��.�. Haken) besagt, dass sich jede Landkarte (mit zusammenhängenden Ländern) durch vier Farben so färben lässt, dass je zwei Länder, die eine echte Grenze