tw2020 optimalisering - hoorcollege 6 · 2016. 10. 19. · tw2020 optimalisering hoorcollege 6 leo...

Post on 24-Jan-2021

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

TW2020 OptimaliseringHoorcollege 6

Leo van Iersel

Technische Universiteit Delft

19 oktober 2016

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 1 / 20

Deze week

Primal-Dual algoritmes voor:

Kortste PadI Dijkstra

Max FlowI Ford-Fulkerson

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 2 / 20

Kortste Pad Probleem

Probleem

Kortste Pad

Gegeven: gerichte graaf D = (V ,A) met lengte cj ≥ 0 voor elke pijlej ∈ A en twee speciale punten s, t ∈ V .

Bepaal: een kortste pad van s naar t.

Definieer de node-arc incidence matrix A als volgt:

aij =

1 als pijl ej uit punt i vertrekt

−1 als pijl ej in punt i aankomt

0 anders.

Beslissingsvariabelen:

fj =

{1 als het pad pijl ej gebruikt

0 anders

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 3 / 20

Kortste Pad Probleem

Probleem

Kortste Pad

Gegeven: gerichte graaf D = (V ,A) met lengte cj ≥ 0 voor elke pijlej ∈ A en twee speciale punten s, t ∈ V .

Bepaal: een kortste pad van s naar t.

Definieer de node-arc incidence matrix A als volgt:

aij =

1 als pijl ej uit punt i vertrekt

−1 als pijl ej in punt i aankomt

0 anders.

Beslissingsvariabelen:

fj =

{1 als het pad pijl ej gebruikt

0 anders

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 3 / 20

Primale:

min∑ej∈A

cj fj

o.d .v . Af =

10...0−1

f ≥ 0

Duale:

max πs − πto.d .v . πTA ≤ c

π ∈ Rm

Oftewel:

max πs − πto.d .v . πu − πv ≤ cuv ∀(u, v) ∈ A

π ∈ Rm

Complementary Slackness:

fuv > 0 ⇒ πu − πv = cuv

Oftewel: πu − πv < cuv ⇒ fuv = 0

Met notatie: als ej = (u, v) dan fj = fuv en cj = cuv .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 4 / 20

Primale:

min∑ej∈A

cj fj

o.d .v . Af =

10...0−1

f ≥ 0

Duale:

max πs − πto.d .v . πTA ≤ c

π ∈ Rm

Oftewel:

max πs − πto.d .v . πu − πv ≤ cuv ∀(u, v) ∈ A

π ∈ Rm

Complementary Slackness:

fuv > 0 ⇒ πu − πv = cuv

Oftewel: πu − πv < cuv ⇒ fuv = 0

Met notatie: als ej = (u, v) dan fj = fuv en cj = cuv .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 4 / 20

Primale:

min∑ej∈A

cj fj

o.d .v . Af =

10...0−1

f ≥ 0

Duale:

max πs − πto.d .v . πTA ≤ c

π ∈ Rm

Oftewel:

max πs − πto.d .v . πu − πv ≤ cuv ∀(u, v) ∈ A

π ∈ Rm

Complementary Slackness:

fuv > 0 ⇒ πu − πv = cuv

Oftewel: πu − πv < cuv ⇒ fuv = 0

Met notatie: als ej = (u, v) dan fj = fuv en cj = cuv .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 4 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Idee:

Begin met W := {s} en voeg punten aan W toe totdat W = V .

Bepaal voor elk punt v de waarde ρ(v): de lengte van een kortste padvan s naar v dat alleen punten uit W gebruikt.

Voeg steeds het punt x ∈ V \W met minimale ρ(x) toe aan W .De waarde ρ(x) wordt dan definitief.

π = −ρ is een toegelaten oplossing van het duale probleem,

met waarde πs − πt gelijk aan de lengte van het pad.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 5 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Idee:

Begin met W := {s} en voeg punten aan W toe totdat W = V .

Bepaal voor elk punt v de waarde ρ(v): de lengte van een kortste padvan s naar v dat alleen punten uit W gebruikt.

Voeg steeds het punt x ∈ V \W met minimale ρ(x) toe aan W .De waarde ρ(x) wordt dan definitief.

π = −ρ is een toegelaten oplossing van het duale probleem,

met waarde πs − πt gelijk aan de lengte van het pad.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 5 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Idee:

Begin met W := {s} en voeg punten aan W toe totdat W = V .

Bepaal voor elk punt v de waarde ρ(v): de lengte van een kortste padvan s naar v dat alleen punten uit W gebruikt.

Voeg steeds het punt x ∈ V \W met minimale ρ(x) toe aan W .De waarde ρ(x) wordt dan definitief.

π = −ρ is een toegelaten oplossing van het duale probleem,

met waarde πs − πt gelijk aan de lengte van het pad.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 5 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Idee:

Begin met W := {s} en voeg punten aan W toe totdat W = V .

Bepaal voor elk punt v de waarde ρ(v): de lengte van een kortste padvan s naar v dat alleen punten uit W gebruikt.

Voeg steeds het punt x ∈ V \W met minimale ρ(x) toe aan W .De waarde ρ(x) wordt dan definitief.

π = −ρ is een toegelaten oplossing van het duale probleem,

met waarde πs − πt gelijk aan de lengte van het pad.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 5 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Idee:

Begin met W := {s} en voeg punten aan W toe totdat W = V .

Bepaal voor elk punt v de waarde ρ(v): de lengte van een kortste padvan s naar v dat alleen punten uit W gebruikt.

Voeg steeds het punt x ∈ V \W met minimale ρ(x) toe aan W .De waarde ρ(x) wordt dan definitief.

π = −ρ is een toegelaten oplossing van het duale probleem,

met waarde πs − πt gelijk aan de lengte van het pad.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 5 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Idee:

Begin met W := {s} en voeg punten aan W toe totdat W = V .

Bepaal voor elk punt v de waarde ρ(v): de lengte van een kortste padvan s naar v dat alleen punten uit W gebruikt.

Voeg steeds het punt x ∈ V \W met minimale ρ(x) toe aan W .De waarde ρ(x) wordt dan definitief.

π = −ρ is een toegelaten oplossing van het duale probleem,

met waarde πs − πt gelijk aan de lengte van het pad.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 5 / 20

Algoritme van Dijkstra voor het vinden van een kortste pad van s naar tin een gerichte graaf D = (V ,A) met een lengte cuv ≥ 0 voor elkepijl (u, v) ∈ A en met s, t ∈ V .

Algoritme

W := {s}ρ(s) := 0ρ(v) := csv voor elk punt v ∈ V \ {s}(met csv =∞ wanneer (s, v) /∈ A)

Herhaal totdat W = V :

1 Vind u ∈ V \W met minimale ρ(u)

2 W := W ∪ {u}3 Voor elke v ∈ V \W met (u, v) ∈ A

I ρ(v) := min{ρ(v), ρ(u) + cuv}

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 6 / 20

Na afloop is ρ(t) de lengte van een kortste pad van s naar t.

Voor een gegeven s vindt het algoritme deze afstand voor alle t ∈ V .

Boekhouding: onthoud voor elk punt v wat het vorige punt op hetpad is (d.w.z. een u waarvoor ρ(v) = ρ(u) + cuv ).

Dan is een kortste s-t pad makkelijk te bepalen door “backtracking”vanuit t.

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 7 / 20

Kortste pad d.m.v. slijmzwam

http://www.youtube.com/watch?v=czk4xgdhdY4

Vincenzo Bonifaci, Kurt Mehlhorn and Girish Varma. Physarum cancompute shortest paths. Journal of Theoretical Biology 309: 121-133(2012).

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 8 / 20

Probleem

Max Flow

Gegeven: gerichte graaf D = (V ,A) met een capaciteit bij ≥ 0 voorelke pijl (i , j) ∈ A en twee speciale punten s, t ∈ V .

Bepaal: een maximale stroom (flow) van s naar t.

Beslissingsvariabelen:

fij : de stroom op pijl (i , j)

v : de waarde van de stroom van s naar t

(= de totale uitstroom van s = de totale instroom bij t)

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 9 / 20

Probleem

Max Flow

Gegeven: gerichte graaf D = (V ,A) met een capaciteit bij ≥ 0 voorelke pijl (i , j) ∈ A en twee speciale punten s, t ∈ V .

Bepaal: een maximale stroom (flow) van s naar t.

Beslissingsvariabelen:

fij : de stroom op pijl (i , j)

v : de waarde van de stroom van s naar t

(= de totale uitstroom van s = de totale instroom bij t)

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 9 / 20

Voorbeeld

s

u

x y

wt

v

1/8 4/4

5/5

2/5

3/8

3/3

1/82/5

4/71/7

Labels: fij/bij (stroom/capaciteit)

Vraag

Wat is de waarde v van de stroom van s naar t?Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 10 / 20

Primale:

max v

o.d .v . Af +

−10...01

v = 0

f ≤ bf , v ≥ 0

Duale:

min∑

(i ,j)∈A

bijγij

o.d .v . πi − πj + γij ≥ 0 ∀(i , j) ∈ A−πs + πt ≥ 1πi ∈ R ∀i ∈ Vγij ≥ 0 ∀(i , j) ∈ A

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 11 / 20

Primale:

max v

o.d .v . Af +

−10...01

v = 0

f ≤ bf , v ≥ 0

Duale:

min∑

(i ,j)∈A

bijγij

o.d .v . πi − πj + γij ≥ 0 ∀(i , j) ∈ A−πs + πt ≥ 1πi ∈ R ∀i ∈ Vγij ≥ 0 ∀(i , j) ∈ A

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 11 / 20

Definitie

Een s-t snede (cut) in een gerichte graaf D = (V ,A) is een partitie(W ,V \W ) van de punten zodanig dat s ∈W en t ∈ V \W = W .

De capaciteit van de snede (W ,W ) is

C (W ,W ) =∑

(i ,j)∈A | i∈W , j∈W

bij

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 12 / 20

Voorbeeld

De partitie in groene en zwarte punten ({s, u, x}, {v ,w , y , t})is een s-t snede.

s

u

x y

wt

v

1/8 4/4

5/5

2/5

3/8

3/3

1/82/5

4/71/7

Vraag

Wat is de capaciteit van deze snede?

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 13 / 20

Voorbeeld

De partitie in groene en zwarte punten ({s, u, x}, {v ,w , y , t})is een s-t snede.

s

u

x y

wt

v

1/8 4/4

5/5

2/5

3/8

3/3

1/82/5

4/71/7

Vraag

Wat betekent dit voor de waarde van een optimale stroom?

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 14 / 20

Max Flow Min Cut

Stelling (6.1)

Elke s-t snede (W ,W ) bepaalt een toegelaten oplossing voor het dualeprobleem met doelfunctiewaarde C (W ,W ).

Stelling (6.2)

(i) Voor elke toegelaten s-t stroom met waarde v en voor elke s-t snede(W ,W ) geldt v ≤ C (W ,W ).

(ii) De maximale waarde v van een s-t stroom is gelijk aan deminimale capaciteit C (W ,W ) van een s-t snede.

(iii) Een stroom f en een snede (W ,W ) zijn beiden optimaal dan enslechts dan als:

I fij = bij voor alle (i , j) ∈ A met i ∈W en j ∈W ;I fij = 0 voor alle (i , j) ∈ A met i ∈W en j ∈W .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 15 / 20

Max Flow Min Cut

Stelling (6.1)

Elke s-t snede (W ,W ) bepaalt een toegelaten oplossing voor het dualeprobleem met doelfunctiewaarde C (W ,W ).

Stelling (6.2)

(i) Voor elke toegelaten s-t stroom met waarde v en voor elke s-t snede(W ,W ) geldt v ≤ C (W ,W ).

(ii) De maximale waarde v van een s-t stroom is gelijk aan deminimale capaciteit C (W ,W ) van een s-t snede.

(iii) Een stroom f en een snede (W ,W ) zijn beiden optimaal dan enslechts dan als:

I fij = bij voor alle (i , j) ∈ A met i ∈W en j ∈W ;I fij = 0 voor alle (i , j) ∈ A met i ∈W en j ∈W .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 15 / 20

Max Flow Min Cut

Stelling (6.1)

Elke s-t snede (W ,W ) bepaalt een toegelaten oplossing voor het dualeprobleem met doelfunctiewaarde C (W ,W ).

Stelling (6.2)

(i) Voor elke toegelaten s-t stroom met waarde v en voor elke s-t snede(W ,W ) geldt v ≤ C (W ,W ).

(ii) De maximale waarde v van een s-t stroom is gelijk aan deminimale capaciteit C (W ,W ) van een s-t snede.

(iii) Een stroom f en een snede (W ,W ) zijn beiden optimaal dan enslechts dan als:

I fij = bij voor alle (i , j) ∈ A met i ∈W en j ∈W ;I fij = 0 voor alle (i , j) ∈ A met i ∈W en j ∈W .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 15 / 20

Max Flow Min Cut

Stelling (6.1)

Elke s-t snede (W ,W ) bepaalt een toegelaten oplossing voor het dualeprobleem met doelfunctiewaarde C (W ,W ).

Stelling (6.2)

(i) Voor elke toegelaten s-t stroom met waarde v en voor elke s-t snede(W ,W ) geldt v ≤ C (W ,W ).

(ii) De maximale waarde v van een s-t stroom is gelijk aan deminimale capaciteit C (W ,W ) van een s-t snede.

(iii) Een stroom f en een snede (W ,W ) zijn beiden optimaal dan enslechts dan als:

I fij = bij voor alle (i , j) ∈ A met i ∈W en j ∈W ;I fij = 0 voor alle (i , j) ∈ A met i ∈W en j ∈W .

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 15 / 20

Voorbeeld

Bewijs dat de gegeven stroom optimaal is.

s

u

x y

wt

v

2/8 3/4

5/5

3/5

3/8

3/3

0/83/5

5/70/7

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 16 / 20

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 17 / 20

“Air power is an effective means of interdicting an enemy’s rail system,and such usage is a logical and important mission for this Arm.

As in many military operations, however, the success of interdictiondepends largely on how complete, accurate, and timely is the commander’sinformation, particularly concerning the effect of his interdiction-programefforts on the enemy’s capability to move men and supplies. Thisinformation should be available at the time the results are being achieved.

The present paper describes the fundamentals of a method intended tohelp the specialist who is engaged in estimating railway capabilities, sothat he might more readily accomplish this purpose and thus assist thecommander and his staff with greater effciency than is possible at present.”

Harris and Ross (1955), Fundamentals of a Method for Evaluating RailNet Capacities

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 18 / 20

Algoritme van Ford-Fulkerson voor Max Flow1 Begin met fij = 0 voor alle (i , j) ∈ A2 Maak een gerichte hulpgraaf Df met dezelfde punten als D en

voor elke pijl (i , j) van D:als fij < bij dan krijgt Df een pijl (i , j) met capaciteit cij = bij − fijals fij > 0 dan krijgt Df een pijl (j , i) met capaciteit cji = fij

3 Geval 1: er bestaat een gericht pad P van s naar t in Df .

α := min{cij | (i , j) ligt op P}

Vermeerder stroom f als volgt:

fij := fij + α als (i , j) op P ligtfij := fij − α als (j , i) op P ligt

Ga naar (2).4 Geval 2: er bestaat geen pad van s naar t in Df . Definieer:

U := {u ∈ V | er bestaat een pad van s naar u in Df }Dan is (U,V \U) een s-t snede met C (U,V \U) =waarde(f ).

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 19 / 20

Voorbeeld

Stel we hebben in een zekere iteratie de volgende stroom gevonden. Vindeen optimale stroom door het algoritme van Ford-Fulkerson toe te passen.

s

u

x y

wt

v

1/8 4/4

5/5

2/5

3/8

3/3

1/82/5

4/71/7

Leo van Iersel (TUD) TW2020 Optimalisering 19 oktober 2016 20 / 20

top related