diskrete mathematik ii

35
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 4 SS 2001 Tiefen- und Breitendurchlauf, eometrische Algorithmen, Segmentschnitt I

Upload: kaden-craft

Post on 01-Jan-2016

36 views

Category:

Documents


0 download

DESCRIPTION

Diskrete Mathematik II. Vorlesung 4 SS 2001. Tiefen- und Breitendurchlauf, geometrische Algorithmen, Segmentschnitt I. Übersicht. Abschluss Graph-Algorithmen Tiefendurchlauf Beispiel rekursiver Algorithmus Breitendurchlauf Beginn Geo-Algorithmen Prüfung auf Schnittfreiheit - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Diskrete Mathematik II

Institut für Kartographie und GeoinformationProf. Dr. Lutz Plümer

Diskrete Mathematik IIVorlesung 4

SS 2001

Tiefen- und Breitendurchlauf,geometrische Algorithmen, Segmentschnitt I

Page 2: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

2 2

Übersicht

• Abschluss Graph-Algorithmen– Tiefendurchlauf

• Beispiel• rekursiver Algorithmus

– Breitendurchlauf

• Beginn Geo-Algorithmen– Prüfung auf Schnittfreiheit– Heute: Schnitt zweier Segmente– Nächste Woche: Schnitt von n Segmenten

Page 3: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

3 3

Was ist neu

• In einem binären Baum hat jeder Knoten höchstens zwei Nachfolger, in einem Graphen beliebig viele

• Ein Baum ist immer zyklenfrei, ein Graph kann Zyklen enthalten (z.B. Do – Du – D – W im Beispiel)

• In einem Zyklus kann man unendlich viel Zeit verbringen

• Lösung: Faden der Ariadne (Quelle: Sagen des klassischen Altertums)

• Moderne Version: ein Boolescher Array „besucht“

Page 4: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

4 4

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 5: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

5 5

Tiefendurchlauf

aktuell

Do

Ha

W

Du

K

D

Page 6: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

6 6

Tiefendurchlauf

Do

Ha

W

Du

K

D

besucht

Page 7: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

7 7

Do

Ha

W

Du

K

D

Tiefendurchlauf

Page 8: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

8 8

Tiefendurchlauf

kein Nachfolger -backtracking

Do

Ha

W

Du

K

D

Page 9: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

9 9

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 10: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

10 10

Do

Ha

W

Du

K

D

Tiefendurchlauf

Alle Nachfolgersind bereits

besucht

Page 11: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

11 11

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 12: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

12 12

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 13: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

13 13

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 14: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

14 14

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 15: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

15 15

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 16: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

16 16

Tiefendurchlauf

Do

Ha

W

Du

K

D

Page 17: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

17 17

Tiefendurchlauf als rekursiver Algorithmus

tiefensuche(k) //Tíefendurchlauf vom Knoten k aus{

if(besucht[k] == false){

drucke k;besucht[k] = true;

for(jeder Nachfolger ki von k){

tiefensuche(ki);}

}}

Page 18: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

18 18

class BST { ... void Breitendurchlauf() {

SohnListe ws = new SohnListe(); Knoten aktuell;ws.FügeAn(wurzel); while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }

} ...}

entf

ern

e

Tes

t au

f E

nd

e

Breitendurchlauf (binärer Suchbaum)

Page 19: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

19 19

class BST { ... void Breitendurchlauf(k) {

SohnListe ws = new SohnListe(); Knoten aktuell;ws.FügeAn(k); while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }

} ...}

Breitendurchlauf

besucht[k] = true;

Page 20: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

20 20

class BST { ... void Breitendurchlauf(k) {

SohnListe ws = new SohnListe(); Knoten aktuell;ws.FügeAn(k);besucht[k] = true; while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }

} ...}

Breitendurchlauf

Verarbeiteneines Knotens

Page 21: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

21 21

class BST { ... void Breitendurchlauf(k) {

SohnListe ws = new SohnListe(); Knoten aktuell;ws.FügeAn(k);besucht[k] = true; while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); for(jeder Nachfolger ki von aktuell) {

if(besucht[ki] == false){ ws.FügeAn(ki); besucht[ki] = true; }

} } } ... }

Breitendurchlauf

Page 22: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

22 22

Prüfung auf Schnittfreiheit

• 1. Idee– Berechnung der Geradengleichungen g und g‘ der

Segmente s und s‘– Schnittpunkt p von g und g‘– prüfe ob p in s und s‘

Page 23: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

23 23

Schnittpunktberechnung

Gegeben: Endpunkte der Segmente

Geradengleichung für zwei Punkte:

)( 112

121 xx

xx

yyyy

bxay :g '' bxay :g'

Page 24: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

24 24

Prüfung auf Schnittfreiheit

• 1. Idee– Berechnung der Geradengleichungen g und g‘ der

Segmente s und s‘– Schnittpunkt p von g und g‘– prüfe ob p in s und s‘

• Problem– vertikale Segmente– Vermeidung unangenehmer Sonderfälle

Page 25: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

25 25

Segmentschnitt I

g1

g2

c)

g2g1

b)

g1

g2

a)

Page 26: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

26 26

Segmentschnitt II

• Reduktion auf das Problem:

P1, P2 liegen auf der gleichen / verschiedenen Seiten der durch g induzierten Geraden

• Homogene Koordinaten:P1 = (x1,y1,w1)P2 = (x2,y2,w2)P = (x,y,w)

• w = w1 = w2 = 1

g auf P liegt ist, 0D wenn

g von rechts P liegt ist, 0D wenn

g von links P liegt ist, 0D wenn

21

21

21

21

www

yyy

xxx

DPPPD ),,(

x

y

P1

P2

P

s

D > 0

D < 0

D = 0

Page 27: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

27 27

X

Y

Z

Was wird durch die Determinante berechnet?

x

y

P2

P1

P

Vektoren spannenParallelepiped auf

1p

2p

p

1

Page 28: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

28 28

Spatprodukt

Das Spatprodukt ergibt einen Skalar, der zahlenmäßig gleich dem Volumen des von den drei Vektoren gebildeten Parallelepipeds ist; das Ergebnis ist positiv, falls , und ein Rechtssystem, negativ, falls sie ein Linkssystem bilden.

c) b a(

a

b

c

zzz

yyy

xxx

cba

cba

cba

a b c - c a b - b c a-

b a c a c b c b a c) b a(

Page 29: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

29 29

X

Y

Z

1

Rechts- oder Linkssystem?

21 pp

P2

1p

2p

P1

P

p

Bilden einRechtssystem

x

y

Page 30: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

30 30

X

Y

Z

1

Rechts- oder Linkssystem?

P2

1p

2p

P1

P

p

x

y

bilden ein Rechtssystem21 p und p ,p

D > 0

Page 31: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

31 31

X

Y

Z

1

Rechts- oder Linkssystem?

21 pp

P1

2p

1p

P2

P

p

x

y

Page 32: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

32 32

X

Y

Z

1

Rechts- oder Linkssystem?

P1

P2

P

p

2p

1p

x

y

bilden ein Linkssystem21 p und p ,p

D < 0

Page 33: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

33 33

X

Y

Z

1

Rechts- oder Linkssystem?

D = 0Es wird kein

Parallelepipedaufgespannt

P1

1p

2p

P2

P

p

x

y

Page 34: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

34 34

Einfacher Segmentschnitt I

S1 = det ( P1,P3,P4) Def.: Vor.: Alle Determinanten sind 0:S2 = det ( P2,P3,P4) g und g` schneiden sich genau dann, wenn S1, S2

S3 = det ( P3,P1,P2) sowie S3, S4 jeweils verschiedene Vorzeichen S4 = det ( P4,P1,P2) haben.

P2

P1

P3 P4

P2

P3

P4

P1g

g`

P2

P1

P3

P4

Page 35: Diskrete Mathematik II

Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4 Lutz Plümer - Diskrete Mathematik - 2. Semester - SS 2001 - Vorlesung 4

35 35

Einfacher Segmentschnitt II

Wenn alle Determinanten gleich Null sind, dann folgt daraus, daß alle vier Punkte kollinear sind.

- eine Determinante ist Null:

=> Algorithmus: Einsparen von Multiplikationen