AuD große Übung:20.11.2014

Werbung
AuD
große Übung:20.11.2014
Christian Scheffer
Hunger?
1
0
0
0
10
1
0
0
0
9
gerichtete Graphen
Pizzabestellung
. G := (V, E)
. V := V [ V
1
2
.E ⇢ V ⇥ V
1
n
.
.
.
.
.
.
V1
V2
m
2
mit (v, w) 2 E
:, Student v mag
Pizza w
. 8v 2 V1 : (v)  m
. 8w 2 V2 : (w)  30
Pizza hat nur 30 Stücke
Pizzabestellung
. G := (V, E)
. V := V [ V
1
n
.
.
.
.
.
.
mögl. Einteilung
. G0 := (V, E 0 )
m
0
mit E ✓ E und
8v 2 V1 : (v)  1
. val(G0 ) := |E 0 |
. arg max val(G0 )
0
G ⇢G
V1
V2
2
. |E 0 |  n
. |E 0 |  30 · m
Pizzabestellung
Pzza(G)
E 0 := ;
0
0
G := (V, E )
so lange möglich
.
.
.
.
.
.
0
E := verbessere E
was heißt
„so lange möglich“?
wie verbessern
wir E 0
0
Pizzabestellung
wie verbessern
wir E 0
Am Bsp.:
max. Größe: 2, n=5, m=5
|E 0 | = 5 = n
-> optimale
Einteilung
Pizzabestellung
wie verbessern
wir E 0
v5
w5
w4
v3
Student v1 kriegt
Stück v. Pizza w2
Student v3 gibt Stück
v. Pizza w2 zurück
w2
v1
Am Bsp.:
max. Größe: 2, n=5, m=5
Sequenz:
Student v3 kriegt
Stück v. Pizza w4
Student v5 gibt Stück
v. Pizza w4 zurück
Student v5 kriegt
Stück v. Pizza w5
laufe unbenutzte
Kante entlang
laufe benutzte
Kante entlang
laufe unbenutzte
Kante entlang
laufe benutzte
Kante entlang
laufe unbenutzte
Kante entlang
Pizzabestellung
wie verbessern
wir E 0
v5
w5
Am Bsp.:
max. Größe: 2, n=5, m=5
w4
v3
Student kriegt Pizzastück
w2
v1
Auslastung aller Pizzen (bis auf letzte)
bleibt gleich, da alternierend
Student gibt Pizzastück
zurück
Suche nach verbesserndem alt. Pfad
Pizzabestellung
wie verbessern
wir E 0
v5
w5
w4
v3
w2
v1
Orientiere alle Kanten und suche
verbessernden Pfad in ger. Graph
Am Bsp.:
max. Größe: 2, n=5, m=5
laufe unbenutzte Kanten e
0
(v,
w)
=
e
2
/
E
d.h.
von Student v
zu Pizza w
Laufe benutzte Kanten e
0
(v,
w)
=
e
2
E
d.h.
von Pizza w
zu Student v
Pizzabestellung
wie verbessern
wir E 0
Allg.:
Geg.: G = (V, E) und E 0
Ges.: „verbessernder Pfad“
0
verbessere( G, E )
E 00 = ; G00 = (V, E 00 )
0
0
für alle (v, w) = e 2 E ✓ V1 ⇥ V2
E 00 = E 00 [ {(w, v)}
0
für alle (v, w) 2 E\E ⇢ V1 ⇥ V2
E 00 = E 00 [ {(v, w)}
markiere alle w 2 V2 mit (w) < 2
für alle v 2 V1
suche ausgehend von v
Pfad ⇡ zu markiertem Knoten
BFS(v) oder DFS(v)
BFS und DFS suchen doch
nur nach Knoten und nicht
nach Pfaden?!
für alle (p, q) 2 ⇡ 0
falls (p, q) 2 E dann
E 0 = E 0 \{(p, q)}
falls (p, q) 2
/ E0
E 0 = E 0 [ {(p, q)}
Nicht
ganz!
Pizzabestellung
Wiederholung
BFS
1
2
4
7
3
5
8
BFS = breadth-first search
(Breitensuche)
verw. Datenstruktur:
Queue (Warteschlange)
6
9
first-in-first-out (fifo)
10
Pizzabestellung
Kanten gerichtet
-> Pfade?
Wiederholung
BFS
1
2
4
7
3
5
6
8
9
9
10 8
10
7
6
5
4
3
2
1
Pizzabestellung
Kanten gerichtet
-> Pfade?
1
2
4
7
Was heißt das
im StudentenPizza-Graphen?
3
5
8
v erreichbar
Aber wie?
9
Wiederholung
BFS
6
9
10
-> Pfad zwischen v und 1
10 8
7
6
5
4
3
2
1
Pizzabestellung
Kanten gerichtet
-> Pfade?
1
v erreichbar
Aber wie?
Was heißt das
im StudentenPizza-Graphen?
-> Pfad zwischen v und 1
Wiederholung
BFS
Pizzabestellung
Wiederholung
DFS
1
2
DFS = depth-first search
(Tiefensuche)
3
verw. Datenstruktur:
4
7
5
8
Stack (Stapel)
last-in-first-out (lifo)
6
9
10
Pizzabestellung
Wiederholung
DFS
1
2
4
7
3
5
8
6
9
10
Pizzabestellung
Wiederholung
DFS
1
2
4
7
3
5
8
6
9
10
Pizzabestellung
Pzza(G)
E 0 := ;
0
0
G := (V, E )
so lange möglich
0
E := verbessere E
0
was heißt
„so lange möglich“?
so lange BFS oder DFS
Pfad zu nicht überfülltem
Termin liefert
-> solange Pizzaverteilung
um 1 verbesserbar
Pizzabestellung
Pzza(G)
E 0 := ;
0
0
G := (V, E )
so lange möglich
0
E := verbessere E
was heißt
„so lange möglich“?
wie verbessern
wir E 0
0
Pizzabestellung
Analyse
. pro Schleifeniteration
Verbesserung um 1
=> max. n Iterationen
0
|E
|n
warum?
Nicht mehr als
n Studenten
einteilbar
=> max. 30 · m Iterationen
warum? 8v 2 V1 : (v)  30
Es gibt nur
.
.
30 · m
Pzza(G)
E 0 := ;
0
0
G := (V, E )
so lange möglich
0
E := verbessere E
Stücke
=> nicht mehr als max{n, 30 · m}Iterationen
Sei T (G) benötigte Zeit für BFS/DFS auf G
also für eine Iteration
=> Gesamt benötigte Zeit: T (G) · min{n, 30 · m}
=> Verfahren terminiert
Verfahren endlich beschreibbar
=> Algoritmus
0
Herunterladen