• Keine Ergebnisse gefunden

Algorithmen & Komplexität

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen & Komplexität"

Copied!
29
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen & Komplexität

Angelika Steger

Institut für Theoretische Informatik steger@inf.ethz.ch

(2)

Wdh: Wie misst man die Laufzeit??

Anzahl arithmetischer Operationen

bis auf einen konstanten Faktor genau

Worst Case Analyse:

Beispiel: BubbleSort hat Laufzeit O(n2)

MergeSort hat Laufzeit O(n log n)

(3)

Algorithmen-Klassifikation

(4)

Graphenalgorithmen

(5)

Szenario

Gegeben:

Flugplan einer Airline

Aufgabe:

Schreibe ein Programm, das Anfragen der Form „Kann man von A nach B mit höchstens

einmal umsteigen gelangen?“

beantwortet.

(6)

Modellierung

(7)

Graph

Ein Graph G ist ein Tupel (V,E), wobei V eine (endliche) nichtleere Menge von Knoten ist.

Die Menge E ist eine Teilmenge der zweielementigen Teilmengen von V, also E ⊆ { {x,y} : x,y V, x≠y}.

Die Elemente der Menge E bezeichnet man als Kanten.

(8)

Einige spezielle Graphenklassen (I)

• Vollständiger Graph Kn

• Kreis Cn

• Pfad Pn

K5

C6

P4

#edges(Kn) = n(n-1)/2

#edges(Cn) = n

#edges(Pn) = n

#vertices(Pn) = n+1

(9)

Einige spezielle Graphenklassen (II)

• Vollständiger bipartiter Graph Kn,n

• Hyperwürfel Qd

K3,3

Q3

#edges(Kn,n) = n2

#edges(Qd) = ½ d 2d

(10)

Nachbarschaft, Grad

• Nachbarschaft: (v) = {uV | {u,v}E }

• Grad: deg(v) = | (v) |

• G heisst k-regulär, wenn deg(v)=k vV

• Sprechweise für e={u,v}E:

- u und v sind adjazent, und - u und e sind inzident.

Definitionen: Graph G=(V,E), vV

(11)

Grad

Lemma:

Für jeden Graphen G=(V,E) gilt

deg(v) = 2 |E|

vV

Beweis:

„Doppeltes Abzählen“

(12)

Pfade, Zusammenhang

• Ein Pfad in G ist eine Folge (v0,…,vn) mit {vi,vi+1}  E und vivj für ij

• G heisst zusammenhängend, wenn für alle u,vV ein u-v-Pfad existiert.

• Die zusammenhängenden Teile von G heissen die Komponenten von G.

Definition: Sei G=(V,E) ein Graph

(13)

Bäume

Definition:

Einen zusammenhängenden, kreisfreien Graphen T=(V,E) nennt man einen Baum.

Ein Knoten vV mit deg(v) = 1 heisst Blatt.

(14)

Eigenschaften von Bäumen

Satz: Jeder Baum T=(V,E) mit |V|  enthält mindestens zwei Blätter.

Satz: Ist T=(V,E) ein Baum mit |V| so ist der Graph, der durch Entfernen eines Blattes entsteht, ebenso ein Baum.

(15)

Eigenschaften von Bäumen

Satz: Ist T=(V,E) ein Baum mit |V| so ist der Graph, der durch Entfernen eines Blattes entsteht, ebenso ein Baum.

(16)

Eigenschaften von zshgd Graphen

Lemma: G=(V,E) zshgd. Graph, C Kreis in G Dann gilt: Ge=(V,E\e) zshgd. eC

(17)

Eigenschaften von Bäumen

Lemma: Für jeden zshgd. Graphen G=(V,E) gilt

|E||V|-1

(18)

Eigenschaften von Bäumen

Satz: Ein zshgd. Graph G=(V,E) ist genau dann ein Baum, wenn |E|=|V|-1.

Beweis:

„“: Per Induktion über n=|V|.

• n = 2: Einziger Baum ist

• n n+1:

– Sei w ein Blatt von G, und {v,w} E.

– Dann ist G=(V,E) mit V = V \ w, E = E \ {v,w} ein Baum.

– Induktion liefert

|E| = |E| + 1 = (|V| - 1) + 1 = |V| - 1

1 2

(19)

Teilgraph, Spannbaum

• H=(VH,EH) mit VHV, EHE heisst ein Teilgraph (engl.

subgraph) von G.

• Gilt für einen Teilgraph VVH, nennt man ihn einen spannenden Teilgraphen.

• Ist H zusätzlich ein Baum und G zshgd, nennt man ihn einen Spannbaum von G.

Graph G=(V,E)

G 4 Spannbäume von G

(20)

Breitensuche, Tiefensuche

Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu durchlaufen

Breitensuche („breadth first search“, BFS)

 wichtige Bausteine von „fortge- schrittenen“ Graphenalgorithmen

Tiefensuche („depth first

search“, DFS)

(21)

BFS und DFS - Beispiel

(22)

BFS

(23)

DFS

(24)

Speicherung eines Graphen

Adjazenzmatrix Adjazenzlisten

(25)

Datenstrukturen Elementare Datenstrukturen

• Felder (engl. arrays):

a[i,j,k]

• Listen:

(26)

2

1 3 5

4

0 1

0 1

0 5

1 0

1 0

1 4

0 1

0 1

0 3

1 0

1 0

1 2

0 1

0 1

0 1

5 4

3 2

1

Adjazenzmatrix

Speicheraufwand: O(|V|2)

(27)

1 2 3 4 5

2 4

1 3 5

2 4

1 3 5

2 4

Adjazenzliste

2

1 3 5

4

Speicheraufwand: O(|V|+|E|)

Ein Nachteil von Adjazenzlisten:

Test auf {u,v}E dauert O(min{deg(u),deg(v)})

(28)

2

1 3 5

4

1 0

0 0

0 5

0 1

0 1

0 4

0 1

1 0

0 3

1 0

1 0

1 2

0 0

0 1

1 1

e d

c b

a

Inzidenzmatrix

a b

c d

e f

1 1 0 0 0 f Vor allem theoretische Bedeutung: Inzidenzmatrizen

 Beziehung zwischen Linearer Algebra und Graphentheorie

Lineare Abhängigkeit, Basis, … Kreise, Bäume, …

(29)

Breitensuche, Tiefensuche

Wir besprechen nun zwei grundlegende Verfahren, alle Knoten eines Graphen zu durchlaufen

Breitensuche („breadth first search“, BFS)

Tiefensuche („depth first

search“, DFS)

Datenstrukturen:

queue stack

Referenzen

ÄHNLICHE DOKUMENTE

[r]

könnte deine Schwester, Frau N., wenn sie nun doch auf diesem Stück Erde mit ihrem Manne wohnen will, ungestraft das alte Haus niederreissen und ein neues bauen; denn dies neue

Lies deinen Text am Ende rückwärts noch einmal Wort für Wort durch. Siehst du einen Fehler? Dann vergleiche deinen Text mit dieser Vorlage. Findest du jetzt noch Fehler, dann

[r]

Bäumchen – nun ein stattlicher schöner Baum – sehr viel Kraft, den anderen Trost zuzusprechen, so dass sie, dadurch gestärkt, innerlich stark wurden, was auch sie zum

Die Schüler sollen aus dem dunkelbraunen Tonpapier einen Stamm und viele Äste reißen und auf den Hintergrund kleben. Anschließend werden aus dem bunten Seidenpapier kleine

so wichtig wie die selbst erschlossenen „Denkbilder“ (vgl. Da Bilder Emotionen auslösen, intensivieren sie den literarischen Lernprozess, ohne die basale Schriftsprachlichkeit

sie sprangen frei und hielten Schmaus und sangen auf das beste. Ich fand ein Bett zu süßer Ruh' auf weichen, grünen Matten, der Wirt, er deckte selbst mich zu mit seinem