02.01.2014 Aufrufe

Vorlesung 1.5

Vorlesung 1.5

Vorlesung 1.5

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

1 Datenstrukturen<br />

1.1 Abstrakte Datentypen<br />

1.2 Lineare Strukturen<br />

1.3 Bäume<br />

1.4 Prioritätsschlangen<br />

<strong>1.5</strong> Graphen<br />

1<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


<strong>1.5</strong> Graphen<br />

• Darstellung allgemeiner Beziehungen<br />

zwischen Objekten/Elementen<br />

– Objekte = Knoten:<br />

V = {v1, ..., vn}<br />

– Beziehungen = Kanten:<br />

E = {(a1,b1), ... (am,bm)}<br />

• Kanten können gerichtet (Vorgänger/<br />

Nachfolger) oder ungerichtet<br />

(Nachbarschaft) definiert werden.<br />

2<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Beispiele<br />

• Flugverbindungen (ungerichtet)<br />

• Straßennetz in Aachen (gerichtet)<br />

• Abhängigkeiten von Arbeitspaketen in<br />

einem Großprojekt (gerichtet)<br />

• 3D Polygonmodelle in der<br />

Computergraphik (ungerichtet)<br />

• Querbezüge in einem Hypertext-<br />

Dokument (HTML) (gerichtet)<br />

• ...<br />

3<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Beispiele<br />

4<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Beispiele<br />

Simulation<br />

CAD Modell<br />

NC Steuerung<br />

Werkzeug-Prototyp<br />

Workflow Mechatronic<br />

5<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Beispiele<br />

6<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Begriffe<br />

• Zusammenhängend (stark)<br />

• Vollständig<br />

• Isomorph<br />

• Planare Graphen<br />

7<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Begriffe<br />

• Zusammenhängend (stark)<br />

– Für jedes Paar vi, vj von Knoten existiert<br />

ein Pfad von Kanten von vi nach vj oder<br />

(und) von vj nach vi.<br />

• Vollständig<br />

• Isomorph<br />

• Planare Graphen<br />

8<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Begriffe<br />

• Zusammenhängend (stark)<br />

• Vollständig<br />

– Zwischen je zwei Knoten existiert eine<br />

Kante<br />

– m = n×(n−1)/2<br />

• Isomorph<br />

• Planare Graphen<br />

9<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Begriffe<br />

• Zusammenhängend (stark)<br />

• Vollständig<br />

• Isomorph<br />

– Graphen (V1,E1) und (V2,E2) durch<br />

Permutation der Knoten(indizes) ineinander<br />

überführbar.<br />

– Notwendige Kriterien: n1 = n2, m1 = m2,<br />

Anzahl der Knoten mit Grad k, ...<br />

• Planare Graphen<br />

10<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Kohlenwasserstoffe<br />

C <br />

C <br />

C <br />

C <br />

C <br />

C <br />

C <br />

C C C <br />

C <br />

C <br />

C <br />

C <br />

C <br />

C <br />

C C C C C <br />

C <br />

C <br />

C <br />

C <br />

C C C C <br />

C <br />

11<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Begriffe<br />

• Zusammenhängend (stark)<br />

• Vollständig<br />

• Isomorph<br />

• Planare Graphen<br />

– Zerlegung der Ebene in disjunkte<br />

Zellen<br />

• Kompatibilitätsbedingungen zwischen<br />

Kanten<br />

12<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Mobilfunknetze<br />

13<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Mobilfunknetze<br />

14<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Mobilfunknetze<br />

15<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Repräsentationen<br />

• Allgemeine Graphen<br />

– Adjazenzmatrix<br />

– Adjazenzliste<br />

• Planare Graphen<br />

• Simplex-Strukturen<br />

16<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Adjazenzmatrix<br />

• Knoten: V = {v1,...,vn}<br />

• A Bool nxn<br />

• aij = 1 falls (i,j) E, aij = 0 sonst<br />

• j-te Spalte: alle Vorgänger von vj<br />

• i-te Zeile: alle Nachfolger von vi<br />

• A symmetrisch für ungerichtete<br />

Graphen<br />

17<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


1 2 3 4 5 <br />

Adjazenzmatrix<br />

6 <br />

A =<br />

0 1 0 0 0 0 <br />

1 0 1 0 0 0 <br />

0 1 0 1 0 0 <br />

0 0 1 0 1 1 <br />

0 0 0 1 0 0 <br />

0 0 0 1 0 0 <br />

18<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Zusammenhangskomponenten<br />

1 2 3 4 5 <br />

6 <br />

B = A + I =<br />

1 1 0 0 0 0 <br />

1 1 1 0 0 0 <br />

0 1 1 1 0 0 <br />

0 0 1 1 1 1 <br />

0 0 0 1 1 0 <br />

0 0 0 1 0 1 <br />

19<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Zusammenhangskomponenten<br />

1 2 3 4 5 <br />

6 <br />

B 2 =<br />

1 1 1 0 0 0 <br />

1 1 1 1 0 0 <br />

1 1 1 1 1 1 <br />

0 1 1 1 1 1 <br />

0 0 1 1 1 1 <br />

0 0 1 1 1 1 <br />

20<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Zusammenhangskomponenten<br />

1 2 3 4 5 <br />

6 <br />

B 3 =<br />

1 1 1 1 0 0 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

0 1 1 1 1 1 <br />

0 1 1 1 1 1 <br />

21<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Zusammenhangskomponenten<br />

1 2 3 4 5 <br />

6 <br />

B 4 =<br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

22<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Zusammenhangskomponenten<br />

1 2 3 4 5 <br />

6 <br />

B 4 =<br />

Durchmesser<br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

1 1 1 1 1 1 <br />

23<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Adjazenzlisten<br />

• Bei komplexen Graphen bestehen oft<br />

nur lokale Knotenbeziehungen<br />

• Die meisten Einträge der<br />

Adjazenzmatrix sind „0“ (dünn<br />

besetzte Matrix)<br />

• Speichere nur die existierenden<br />

Kanten<br />

24<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Adjazenzlisten<br />

1 2 3 4 5 <br />

6 <br />

1: 2<br />

2: 1,3<br />

3: 2,4<br />

4: 3,5,6<br />

5: 4<br />

6: 4<br />

25<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Adjazenzlisten<br />

• Für gerichtete Graphen werden<br />

Vorgänger- und Nachfolger-Listen<br />

verwaltet.<br />

• Speicherverbrauch: (#Nachbarn ≤ k)<br />

• A-Matrix: n 2 bit<br />

• A-Listen: n×k×b = n×k×log n<br />

• Beispiel:<br />

Regionalbahnen in Aachen und<br />

Wladiwostok<br />

26<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Planare Graphen<br />

• ... beschreiben eine Partition der<br />

Ebene in disjunkte Zellen.<br />

• Knoten sind durch Kanten verbunden<br />

und diese bilden Zellen (Maschen).<br />

• Planar: es ist möglich die Knoten so<br />

zu platzieren, dass sich die Kanten<br />

nicht kreuzen.<br />

27<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Planare Graphen<br />

• Kompatibilitätsbedingungen<br />

– eindeutiger Umlaufsinn für die Nachbarn<br />

jedes Knotens<br />

– eindeutiger Umlaufsinn für die Kanten<br />

jeder Zelle / Masche<br />

1 2<br />

1<br />

1<br />

5<br />

3 4<br />

2<br />

3 4<br />

2<br />

3 4<br />

28<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Kantenstrukturen<br />

• Kanten verbinden Knoten<br />

• Kanten verweisen auf benachbarte<br />

Kanten (Umlaufsinn)<br />

• Garantiert die Planarität<br />

29<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge N1,N2<br />

Edge P1,P2<br />

}<br />

Kantenstrukturen<br />

30<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge Next<br />

Edge Prev<br />

}<br />

Kantenstrukturen<br />

31<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge Next<br />

Edge Prev<br />

}<br />

Kantenstrukturen<br />

32<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge Next<br />

Edge Prev<br />

}<br />

Kantenstrukturen<br />

33<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge Next<br />

Edge Prev<br />

}<br />

Kantenstrukturen<br />

34<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge Next<br />

Edge Prev<br />

}<br />

Kantenstrukturen<br />

35<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class Edge {<br />

Node A,B<br />

Edge Next<br />

Edge Prev<br />

}<br />

Kantenstrukturen<br />

36<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Halbkantenstrukturen<br />

37<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class HEdge {<br />

Node A<br />

Edge Next<br />

Edge Opposite<br />

}<br />

Halbkantenstrukturen<br />

38<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• class HEdge {<br />

Node A<br />

Edge Next<br />

Edge Prev<br />

Edge Opposite<br />

}<br />

Halbkantenstrukturen<br />

39<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Liste der Nachbarn<br />

1. Start at vertex<br />

40<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Liste der Nachbarn<br />

1. Start at vertex<br />

2. Outgoing halfedge<br />

41<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Liste der Nachbarn<br />

1. Start at vertex<br />

2. Outgoing halfedge<br />

3. Opposite halfedge<br />

42<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Liste der Nachbarn<br />

1. Start at vertex<br />

2. Outgoing halfedge<br />

3. Opposite halfedge<br />

4. Next halfedge<br />

43<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Liste der Nachbarn<br />

1. Start at vertex<br />

2. Outgoing halfedge<br />

3. Opposite halfedge<br />

4. Next halfedge<br />

5. Opposite halfedge<br />

44<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Liste der Nachbarn<br />

1. Start at vertex<br />

2. Outgoing halfedge<br />

3. Opposite halfedge<br />

4. Next halfedge<br />

5. Opposite halfedge<br />

6. Next halfedge<br />

...<br />

45<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Simplex-Strukturen<br />

• Simplices sind die einfachsten k-dim.<br />

Strukturen<br />

– Punkt<br />

– Strecke<br />

– Dreieck<br />

– Tetraeder<br />

– ...<br />

46<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


• Ein k-Simplex hat<br />

– k+1 Knoten<br />

– k+1 Nachbarn<br />

Simplex-Strukturen<br />

47<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Simplex-Strukturen<br />

• Seine k+1 Flächen sind (k−1)-<br />

Simplices<br />

48<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer


Simplex-Strukturen<br />

• class k_Simplex {<br />

Node Vertices[1..k+1]<br />

(k−1)_Simplex Faces[1..k+1]<br />

}<br />

• Darstellung beliebig dimensionaler<br />

Komplexe mit disjunkten Zellen<br />

• Navigation / Aufzählung schwieriger<br />

49<br />

Datenstrukturen und Algorithmen<br />

Prof. Dr. Leif Kobbelt, Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!