Matematick metody optimalizace Tom Vanek Katedra inenrsk informatiky

  • Slides: 36
Download presentation
Matematické metody optimalizace • • • Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT

Matematické metody optimalizace • • • Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b 407 vanicek@fsv. cvut. cz

Hledání nejkratší cesty 60 Plzeň 50 Strakonice 50 Praha Zdice 90 100 50 5

Hledání nejkratší cesty 60 Plzeň 50 Strakonice 50 Praha Zdice 90 100 50 5 Písek 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 60 ČB

Přes Budějovice je to 250 km 60 Plzeň 50 Strakonice 50 Praha Zdice 90

Přes Budějovice je to 250 km 60 Plzeň 50 Strakonice 50 Praha Zdice 90 100 50 5 Písek 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 60 ČB

Přes Plzeň jen 240 km 60 Plzeň 50 Strakonice 50 Praha Zdice 90 100

Přes Plzeň jen 240 km 60 Plzeň 50 Strakonice 50 Praha Zdice 90 100 50 5 Písek 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 60 ČB

Takhle je to jen 235 km 60 Plzeň 50 Strakonice 50 Praha Zdice 90

Takhle je to jen 235 km 60 Plzeň 50 Strakonice 50 Praha Zdice 90 100 50 5 Písek 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 60 ČB

Je to už opravdu nejkratší cesta? • Těch možných cest je docela dost •

Je to už opravdu nejkratší cesta? • Těch možných cest je docela dost • Chce to nějaký systém, jak je prozkoumat

Dijskrův algoritmus 60 Plzeň 50 Strakonice 50 Praha 0 Zdice 90 100 50 5

Dijskrův algoritmus 60 Plzeň 50 Strakonice 50 Praha 0 Zdice 90 100 50 5 Písek 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 60 ČB

Dijskrův algoritmus 60 Plzeň 50 Strakonice 50 Praha 0 Zdice 50 90 100 50

Dijskrův algoritmus 60 Plzeň 50 Strakonice 50 Praha 0 Zdice 50 90 100 50 5 Písek 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 90 60 ČB

Dijskrův algoritmus 60 Plzeň 110 50 Strakonice 50 Praha 0 Zdice 50 90 100

Dijskrův algoritmus 60 Plzeň 110 50 Strakonice 50 Praha 0 Zdice 50 90 100 50 5 Písek 150 30 80 Protivín 10 Číčenice 40 Lenora 10 60 Volary 90 Tábor 90 60 ČB

Dijskrův algoritmus 60 Plzeň 110 50 Strakonice 50 Praha 0 Zdice 50 90 100

Dijskrův algoritmus 60 Plzeň 110 50 Strakonice 50 Praha 0 Zdice 50 90 100 50 Tábor 90 5 Písek 140 30 80 Protivín 10 60 Číčenice 40 Lenora 10 60 ČB 150 Volary 90

Dijskrův algoritmus 60 Plzeň 110 50 Praha 0 Zdice 50 90 100 50 Strakonice

Dijskrův algoritmus 60 Plzeň 110 50 Praha 0 Zdice 50 90 100 50 Strakonice 160 50 Tábor 90 5 Písek 140 30 80 Protivín 10 60 Číčenice 40 Lenora 10 60 ČB 150 Volary 90

Dijskrův algoritmus 50 60 Praha 0 Zdice 50 Plzeň 110 90 100 50 50

Dijskrův algoritmus 50 60 Praha 0 Zdice 50 Plzeň 110 90 100 50 50 Strakonice 160 80 5 30 Písek 140 Protivín 14510 Lenora 10 60 Volary Tábor 90 60 Číčenice 40 ČB 150 90

Dijskrův algoritmus 50 60 Praha 0 Zdice 50 Plzeň 110 90 100 50 50

Dijskrův algoritmus 50 60 Praha 0 Zdice 50 Plzeň 110 90 100 50 50 Strakonice 160 80 5 30 Tábor 90 Písek 140 Protivín 14510 Lenora 10 60 Volary Číčenice 155 60 40 ČB 150 90

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Praha 0

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Praha 0 Zdice 50 50 30 5 Tábor 90 Písek 140 Protivín 14510 Lenora 10 60 Volary 240 Číčenice 155 60 40 ČB 150 90

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Praha 0

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Praha 0 Zdice 50 50 30 5 Tábor 90 Písek 140 Protivín 14510 Lenora 10 60 Volary 215 Číčenice 155 60 40 ČB 150 90

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Lenora 240

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Lenora 240 Praha 0 Zdice 50 50 30 5 Tábor 90 Písek 140 Protivín 14510 10 60 Volary 215 Číčenice 155 60 40 ČB 150 90

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Lenora 225

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Lenora 225 Praha 0 Zdice 50 50 30 5 Tábor 90 Písek 140 Protivín 14510 10 60 Volary 215 Číčenice 155 60 40 ČB 150 90

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Lenora 225

Dijskrův algoritmus 50 60 Plzeň 110 90 100 50 Strakonice 160 80 Lenora 225 Praha 0 Zdice 50 50 30 5 Tábor 90 Písek 140 Protivín 14510 10 60 Volary 215 Číčenice 155 60 40 ČB 150 90

Kořenový strom nejkratších cest 60 50 Praha 0 Zdice 50 90 Plzeň 110 50

Kořenový strom nejkratších cest 60 50 Praha 0 Zdice 50 90 Plzeň 110 50 50 Strakonice 160 5 Písek 140 Protivín 14510 Lenora 225 10 60 Volary 215 Tábor 90 60 Číčenice 155 ČB 150

Několik definic • Graf – uspořádaná dvojice množin (V, E) • V – konečná

Několik definic • Graf – uspořádaná dvojice množin (V, E) • V – konečná množina vrcholů (vertex, node) • E – množina hran (edge) - některých dvojic vrcholů • Orientovaný graf- V množině E jsou uspořádané dvojice

Definice • Sled – Posloupnost v 0 e 1 v 1 e 2 …

Definice • Sled – Posloupnost v 0 e 1 v 1 e 2 … en vn, kde ei = {vi-1, vi} • Cesta – sled, ve kterém se neopakují vrcholy • Hranové ohodnocení grafu – funkce z E do R (jeden graf může mít více ohodnocení) • Délka cesty – součet délek hran • Nejkratší cesta

Dijskrův algoritmus • Zadán graf (V, E), ohodnocení d: E-R, počáteční vrchol P, koncový

Dijskrův algoritmus • Zadán graf (V, E), ohodnocení d: E-R, počáteční vrchol P, koncový vrchol K • Vrcholu P přiřaď vzd(P): =0, ostatním vzd(v): =moc • Najdi vrchol v s minimálním vzd(P), který není hnědý • Obarvi v na hnědo • Pro všechny sousedy w vrcholu v spočítej vzd(v)+d(v, w), je-li to méně než vzd(w), uprav vzd(w) • Pokud není vrchol K hnědý, pokračuj třetím řádkem.

Příklad použití algoritmu • Graf a ohodnocení zadáno seznamem hran • • • •

Příklad použití algoritmu • Graf a ohodnocení zadáno seznamem hran • • • • Praha-Zdice d({A, Z}) = 50 Zdice-Plzeň d({Z, P}) = 60 Plzeň-Strakonice d({P, S}) = 50 Praha-Tábor d({A, T}) = 90 Tábor-České Budějovice d({T, C}) = 60 Zdice-Písek d({Z, I}) = 100 Tábor-Písek d({T, I}) = 50 Písek-Protivín d({I, R}) = 5 Strakonice-Proeivín d({S, R}) = 30 Protivín-Číčenice d({R, Č}) = 10 Číčenice-České Budějovice d({Č, C}) = 40 České Budějovice - Volary d({C, V}) = 90 Číčenice-Volary d({Č, V}) = 60 Strakonice-Lenora d({S, L}) = 80 Volary-Lenora d({V, L}) = 10 • Počáteční vrchol A, koncový vrchol L

Průběh algoritmu Vrchol Vzd A 0 Moc Moc Moc Z P T C I

Průběh algoritmu Vrchol Vzd A 0 Moc Moc Moc Z P T C I S R Č V L Předchozí vrchol

Průběh algoritmu Vrchol Vzd A 0 50 Moc 90 Moc Moc Z P T

Průběh algoritmu Vrchol Vzd A 0 50 Moc 90 Moc Moc Z P T C I S R Č V L Předchozí vrchol A A

Průběh algoritmu Vrchol Vzd A 0 50 110 90 Moc 150 Moc Moc Moc

Průběh algoritmu Vrchol Vzd A 0 50 110 90 Moc 150 Moc Moc Moc Z P T C I S R Č V L Předchozí vrchol A Z

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 Moc Moc Moc

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 Moc Moc Moc Z P T C I S R Č V L Předchozí vrchol A Z A T T

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 160 Moc Moc

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 160 Moc Moc Z P T C I S R Č V L Předchozí vrchol A Z A T T P

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 160 145 Moc

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 160 145 Moc Moc Z P T C I S R Č V L Předchozí vrchol A Z A T T P I

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 160 145 155

Průběh algoritmu Vrchol Vzd A 0 50 110 90 150 140 160 145 155 Moc Z P T C I S R Č V L Předchozí vrchol A Z A T T P I R

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160 145 155 240 Moc A Z A T T P I R C Z P T C I S R Č V L

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160 145 155 215 Moc A Z A T T P I R Č Z P T C I S R Č V L

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160 145 155 215 240 A Z A T T P I R Č S Z P T C I S R Č V L

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160 145 155 215 225 A Z A T T P I R Č V Z P T C I S R Č V L

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160

Průběh algoritmu Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160 145 155 215 225 A Z A T T P I R Č V Z P T C I S R Č V L

Nejkratší cesta z A do L je L-V-Č-R-I-T-A 225 km Vrchol Vzd Předchozí vrchol

Nejkratší cesta z A do L je L-V-Č-R-I-T-A 225 km Vrchol Vzd Předchozí vrchol A 0 50 110 90 150 140 160 145 155 215 225 A Z A T T P I R Č V Z P T C I S R Č V L