Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
JYVÄSKYLÄN YLIOPISTO
14. Luennon sisältö
Kuljetustehtävä – esimerkki
Verkkoteoria ja optimointi – verkkoteorian optimointitehtäviä – verkon virittävä puu – lyhimmät polut
kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi
JYVÄSKYLÄN YLIOPISTO
Esimerkki kuljetustehtävän ratkaisemisesta
http://www.optimalon.com/examples/transport.htm
kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi
Graafit ja verkot
Suuntamaton graafi: Joukko solmuja ja joukko järjestämättömiä solmuparejaeli haaroja
Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria
Haaran päätesolmut: Haaraan liittyvät solmut
Kaaren alku- ja loppusolmut: Kaareen liittyvät solmut
Solmun aste: Solmuun liittyvien haarojen lukumäärä
1
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
a
��
��
��
���
b@
@@
@@
@@
@@
c
d
e
f
Suuntaamaton graafi G(N, A)
Solmut N = {1,2,3,4,5}
Haarat A = {a, b, c, d, e, f} = {(1,4), (1,2), (1,3), (2,3), (2,3), (3,5)}
2
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
-a
��
��
��
����
b@
@@
@@
@@
@@R
c
-d
�
e
�f
Suunnattu graafi G(N, A)
Solmut N = {1,2,3,4,5}
Kaaret A = {a, b, c, d, e, f} = {(1,4), (2,1), (1,3), (2,3), (3,2), (5,3)}
3
Polku: Katkeamaton jono solmuja ja haaroja/kaaria
Silmukka: Polku, jonka alku- ja loppusolmut ovat samat
Yksinkertainen polku: Solmu esiintyy polussa vain kerran
Yhdistetyt solmut: Solmujen välillä on ainakin yksi polku
4
Yhtenäinen (yhdistetty) graafi: Kaikki solmuparit ovat yhdistettyjä
Renkaaton graafi: Ei yhtään silmukkaa
Puu: Graafi, joka on yhtenäinen ja renkaaton
5
Verkko: Graafi, jonka solmuihin ja haaroihin/kaariin liittyy numeerisia arvoja(esimerkiksi pituus, kustannus tai kapasiteetti)
Virtaus: Tavara tms. kulkee solmusta toiseen kaaria/haaroja pitkin
Lähdesolmu: Solmu, josta tulee lisää tavaraa verkkoon
Viemärisolmu: Solmu, josta tavaraa poistuu verkosta
Virtauksen säilyvyys: Solmuun saapuva ja siitä lähtevä virtaus ovat samat(paitsi lähde- ja viemärisolmuissa)
6
Tuotannon ajoitus
Tuotetta valmistetaan usean tuotantokauden aikana
Tuotteen tarve kaudella i on di
Tuotetta voidaan valmistaa myös varastoon
Valmistuksesta ja varastoinnista aiheutuvat tietyt kustannukset
Tavoite: Määrää tuotteen valmistusmäärät kullakin kaudella siten, ettäkokonaiskustannukset minimoituvat
7
xi = valmistusmäärä kaudella i
vi = varaston koko kaudelta i kaudelle i + 1
Solmut kuvaavat kausia, solmu 0 kuvaa alkutilannetta
Kaaret kuvaavat tuotteen ”kulkeutumista” kaudelta toiselle
Jokaiseen kaareen liittyy joko valmistuskustannus tai varastointikustannus
8
0&%'$
1&%'$
2&%'$
3&%'$
4&%'$
?
d1 + d2 + d3 + d4
��
��
��
��
��
��
��+
x1
��
��
��
���
x2
AAAAAAAAU
x3
QQs
x4
-v1
-v2
-v3
?
d1
?
d2
?
d3
?
d4
Tehtävä: Etsi minimihintainen virtaus verkon läpi
9
Lukujärjestysongelma
Seminaarissa kuusi tunnin esitelmää
Seminaarin kokonaiskesto neljä tuntia
Esitelmän 1 kanssa ei samanaikaisesti esitelmää 3Esitelmän 3 kanssa ei samanaikaisesti esitelmiä 1, 4, 5, 6Esitelmän 4 kanssa ei samanaikaisesti esitelmiä 3, 5, 6Esitelmän 5 kanssa ei samanaikaisesti esitelmiä 3, 4, 6Esitelmän 6 kanssa ei samanaikaisesti esitelmiä 3, 4, 5
Tavoite: Järjestä esitelmät siten, että rajoitteet toteutuvat
10
Solmut kuvaavat esitelmiä
Solmut yhdistetään haaralla, jos vastaavat esitelmät eivät saa ollasamanaikaisesti
Neljä eri tunnusta, yksi kullekin seminaarin tunnille
11
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
6&%'$
@@
@@
@@
@@@
��
��
��
���
Tehtävä: Liitä jokaiseen solmuun yksi tunnus siten, että kahdella solmulla ei saaolla sama tunnus, jos niiden välillä on haara
12
Jakeluongelma
Pizzerialla on kotiinkuljetusta varten käytössä n autoa
Tavoite: Toimita pizzat asiakkaille siten, että toimituksille luvattu aikaraja ei ylity
13
Solmut kuvaavat pizzeriaa ja eri asiakkaita
Haarat kuvaavat lyhimpiä reittejä eri solmujen välillä
Jokaiseen haaraan liitetään ajoaika kyseisellä reitillä (= haaran pituus)
Tehtävä: Muodosta n silmukkaa siten, että— pizzeriasolmu on mukana jokaisessa silmukassa— jokainen asiakassolmu on mukana jossain silmukassa— jokaisen silmukan pituus viimeiseen asiakassolmuun asti ei ylitä aikarajaa
14
Koneen vaihto-ongelma
Tarkastellaan n:ää aikaperiodia
Jokaisen periodin alussa vanha kone voidaan vaihtaa uuteen tai säilyttäävanha kone
Kun hankitaan uusi kone periodin i alussa ja myydään se periodin j alussa,siitä aiheutuu kustannus cij
Tavoite: Määrää, milloin kone vaihdetaan, jotta kokonaiskustannuksetminimoituvat
15
Solmut kuvaavat periodeja 1, . . . , n + 1
Kaari (i, j) tarkoittaa, että kone hankitaan periodin i alussa ja myydäänperiodin j alussa
Jokaiseen kaareen (i, j) liitetään vastaava kustannus cij (= kaaren pituus)
16
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
- - - -����������HHHHHHHHHHj����������HHHHHHHHHHj����������HHHHHHHHHHj
PPPPPPPPPPPPPPPP����������������1PPPPPPPPPPPPPPPP����������������1
��
��
��
��� @
@@
@@
@@
@@R
Tehtävä: Etsi lyhin reitti solmusta 1 solmuun n + 1
17
Toimintaverkko
Projektissa on n osatehtävää
Osatehtävät on suoritettava tiettyjen sääntöjen mukaisessa järjestyksessä
Osatehtävän i suoritusaika on ti
Tavoite: Määrää osatehtävien suoritusjärjestys siten, että kokonaissuoritusaikaminimoituu
18
si = osatehtävän i aloitusaika
Solmut kuvaavat osatehtäviä
Solmu 0 on projektin aloitusosatehtävä, solmu n + 1 lopetusosatehtävä
Kaari (i, j) tarkoittaa, että osatehtävä i on saatava valmiiksi ennenosatehtävän j aloittamista
Jokaiseen kaareen (i, j) liitetään rajoite sj ≥ si + ti
19
0&%'$
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
6&%'$
��������*
HHHHHHHHj
HHHHHHHHj
-
6
��������*
-
��������*
HHHHHHHHj
HHHHHHHHj
��������*
Tehtävä: Ratkaise
min sn+1 − s0
kun sj ≥ si + ti (i, j) ∈ A
20
Tavallisesti kuitenkin toimintaverkko kuvataan seuraava sti:
Solmut kuvaavat osatehtävien alku- ja lopputapahtumia
Kaaret kuvaavat osatehtäviä
Jokaiseen kaareen liitetään osatehtävän kesto (= kaaren pituus)
Kaikkien tiettyyn solmuun päättyvien osatehtävien täytyy olla suoritettu ennenkuin mikään kyseisestä solmusta alkava osatehtävä voidaan aloittaa
Tehtävä: Etsi pisin polku ensimmäisestä solmusta viimeiseen solmuun
21
Graafien ja verkkojen tietorakenteita
— Naapurimatriisit
— Insidenssimatriisit
— Haara- ja kaarilistat
— Naapurilistat
22
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������
HHHHHHHH
QQ��
��
��
��
��
��
��
Naapurimatriisi, suuntaamaton graafi:
1 2 3 4 51 0 1 1 0 02 1 0 0 1 13 1 0 0 1 14 0 1 1 0 15 0 1 1 1 0
HUOM: Symmetrinen
23
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������*
HHHHHHHHj
QQs��
��
��
��
��
��
��3
�
?
�
Naapurimatriisi, suunnattu graafi:
1 2 3 4 51 0 1 1 0 02 0 0 0 0 13 0 0 0 1 04 0 1 0 0 15 0 0 1 0 0
24
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������
HHHHHHHH
QQ��
��
��
��
��
��
��
Insidenssimatriisi, suuntaamaton graafi:
(1,2) (1,3) (2,4) (2,5) (3,4) (3,5) (4,5)1 1 1 0 0 0 0 02 1 0 1 1 0 0 03 0 1 0 0 1 1 04 0 0 1 0 1 0 15 0 0 0 1 0 1 1
HUOM: Täysin unimodulaarinen
25
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������*
HHHHHHHHj
QQs��
��
��
��
��
��
��3
�
?
�
Insidenssimatriisi, suunnattu graafi:
(1,2) (1,3) (2,5) (3,4) (4,2) (4,5) (5,3)1 1 1 0 0 0 0 02 −1 0 1 0 −1 0 03 0 −1 0 1 0 0 −14 0 0 0 −1 1 1 05 0 0 −1 0 0 −1 1
HUOM: Täysin unimodulaarinen
26
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������6
HHHHHHHH
12
4
��
��
��
��
��
��
��
2
2
7
5
Haaralista, suuntaamaton verkko:
Päätesolmu Päätesolmu Pituus(1,2) 1 2 6(1,3) 1 3 12(2,4) 2 4 2(2,5) 2 5 4(3,4) 3 4 2(3,5) 3 5 5(4,5) 4 5 7
27
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������*6
HHHHHHHHj
12
QQs
4
��
��
��
��
��
��
��3
2
� 2
?
7
� 5
Kaarilista, suunnattu verkko:
Alkusolmu Loppusolmu Pituus(1,2) 1 2 6(1,3) 1 3 12(2,5) 2 5 4(3,4) 3 4 2(4,2) 4 2 2(4,5) 4 5 7(5,3) 5 3 5
28
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������
HHHHHHHH
QQ��
��
��
��
��
��
��
Naapurilista, suuntaamaton graafi:
Naapurisolmut1 2 32 1 4 53 1 4 54 2 3 55 2 3 4
29
1&%'$
2&%'$
3&%'$
4&%'$
5&%'$
��������*
HHHHHHHHj
QQs��
��
��
��
��
��
��3
�
?
�
Naapurilista, suunnattu graafi:
Naapurisolmut(lähtevät kaaret)
1 2 32 53 44 2 55 3
Naapurisolmut(tulevat kaaret)
1 −2 1 43 1 54 35 2 4
30
Graafin tai verkon virittävä puu
Aligraafi: Graafi, jossa on mukana osa (tai kaikki) solmuista jaosa (tai kaikki) haaroista
Virittävä aligraafi: Aligraafi, jossa on mukana kaikki solmut
Yhtenäinen virittävä aligraafi: Virittävä aligraafi, joka on yhtenäinen
Minimaalinen yhtenäinen virittävä aligraafi: Yhtenäinen virittävä aligraafi, jossaon mukana mahdollisimman vähän haaroja
31
Puu: Graafi, joka on yhtenäinen ja renkaaton
Yhtenäisen graafin minimaalinen yhtenäinen virittävä aligraafi on puu= Graafin virittävä puu
(Verkon virittävä puu vastaavasti)
Graafi on yhtenäinen, jos sillä on olemassa virittävä puu
32
Esimerkki
Tiedetään, ketkä kylän asukkaista keskustelevat keskenään
Tavoite: Selvitä, saavuttaako juoru kaikki kylän asukkaat
Solmut kuvaavat asukkaita
Haara (i, j) tarkoittaa, että asukkaat i ja j keskustelevat keskenään
Tehtävä: Tutki, onko graafilla virittävää puuta
33
Esimerkki
Rakennetaan kaapeliyhteyksiä eri kaupunkien välille
Jokaisen kaupungin on oltava mukana kaapeliverkossa
Kun rakennetaan yhteys kaupunkien i ja j välille, siitä aiheutuu kustannus cij
Tavoite: Määrää rakennettavat kaapeliyhteydet siten, että kokonaiskustannuksetminimoituvat
34
Solmut kuvaavat kaupunkeja
Haara (i, j) tarkoittaa, että kaupunkien i ja j välille voitaisiin rakentaakaapeliyhteys
Jokaiseen haaraan (i, j) liitetään vastaava kustannus cij (= haaran pituus)
Tehtävä: Etsi verkon virittävä puu, jonka kokonaispituus on mahdollisimman pieni
35
Virittävän puun etsiminen
Aluksi puu on tyhjä, jokainen solmu muodostaa oman komponenttinsa jakaikki haarat (tai kaaret) ovat tutkimattomia.
1. Jos tutkimattomia haaroja ei ole jäljellä, niin lopeta. Muuten valitse jokin haaraja merkitse se tutkituksi.
2. Jos valitun haaran molemmat päätesolmut kuuluvat samaan komponenttiin,jatka kohdasta 1. Muuten lisää haara puuhun ja yhdistä päätesolmujenkomponentit samaksi komponentiksi.
3. Jos jäljellä on vain yksi komponentti, niin lopeta. Muuten jatka kohdasta 1.
36
Jos algoritmin päättyessä jäljellä on vain yksi komponentti, virittävä puuon löytynyt
Jos halutaan löytää verkon lyhin virittävä puu, niin haarat valitaan pituudenmukaan kasvavassa järjestyksessä
Jos halutaan löytää verkon pisin virittävä puu, niin haarat valitaan pituudenmukaan laskevassa järjestyksessä
37
Lyhimmät polut
Lyhimpien polkujen tehtäviä:
— Etsi lyhin polku kahden solmun välillä
— Etsi lyhimmät polut jostain solmusta verkon kaikkiin muihin solmuihin
— Etsi lyhimmät polut verkon kaikkien solmujen välillä
Seuraavassa oletetaan, että verkko on suunnattu, yhdistetty jakaarien pituudet ovat kokonaislukuja
38
Esimerkki
Pakkausongelma:
max a1x1 + · · ·+ anxn
kun w1x1 + · · ·+ wnxn ≤W
x1, . . . , xn ∈ N
Vastaava lyhimmän polun tehtävä:— Solmut 0,1, . . . , W
— Jokaista tavaraa j kohti kaaret (i, i + wj), i = 0,1, . . . , W − wj,joiden pituus on −aj
— Lisäksi kaaret (i, i + 1), i = 0,1, . . . , W − 1, joiden pituus on 0
(vastaavat puutemuuttujaa)— Tehtävä: Etsi lyhin polku solmusta 0 solmuun W
39
Lyhimpien etäisyyksien puu
Lyhimpien etäisyyksien puu: Sellainen verkon virittävä puu, jossapolut juurisolmusta s puun muihin solmuihin ovat samat kuinverkon lyhimmän etäisyyden polut solmusta s verkon muihin solmuihin
Olkoon s = i1 → i2 → · · · → ip = t lyhin polku solmusta s solmuun t
=⇒ s = i1 → i2 → · · · → ij on lyhin polku solmusta s solmuun ijkaikilla j = 2, . . . , p− 1
=⇒ On aina olemassa lyhimpien etäisyyksien puu
40
Lyhimmät polut yhdestä lähtösolmusta alkaen
Solmuihin liitetään tunnuksia (etäisyys lähtösolmusta, solmunedeltäjäsolmu, jne.)
Tunnukset voivat olla väliaikaisia tai lopullisia
Väliaikaisia tunnuksia muutetaan iteratiivisesti
Tunnuksen asettavat menetelmät: Joka iteraatiolla yksi väliaikainen tunnuskiinnitetään lopulliseksi
Tunnusta korjaavat menetelmät: Kaikki väliaikaiset tunnukset kiinnitetäänkerralla lopullisiksi sitten, kun muutoksia ei enää voi tehdä
41
Dijkstran menetelmä
Tunnuksen asettava menetelmä
Oletus: Kaarien pituudet dij ovat ei-negatiivisia
Tunnukset:
d(i) = jonkin polun pituus lähtösolmusta s solmuun i
e(i) = solmun i edeltäjäsolmu kyseisellä polulla
Solmut jaetaan kahteen ryhmään:
P = {solmut, joiden tunnukset ovat lopullisia}T = {solmut, joiden tunnukset ovat väliaikaisia}
42
1. Aluksi P = ∅, T = N , d(s) = 0 ja d(i) =∞ kaikilla i ∈ T \ {s}.
2. Jos P = N , niin lopeta. Muuten valitse jokin solmu i ∈ T siten, että
d(i) = min{d(j) | j ∈ T}.
Kaikilla j ∈ T siten, että on olemassa (i, j) ∈ A tee seuraavaa:
Jos d(i) + dij < d(j), niin aseta d(j) = d(i) + dij ja e(j) = i.
3. Kiinnitä solmun i tunnukset lopullisiksi, ts. aseta P = P ∪ {i} ja T = T \ {i}.Jatka kohdasta 2.
43
Algoritmin päätyttyä:— Lyhin etäisyys lähtösolmusta s solmuun i on d(i)
— Vastaava polku on i← e(i)← e(e(i))← · · · ← s
Jos halutaan löytää lyhin polku lähtösolmusta s johonkin tiettyyn solmuun t,algoritmi voidaan lopettaa, kun solmun t tunnukset on kiinnitetty lopullisiksi
44
Solmuja n kpl
Yhdellä iteraatiolla valitaan yksi solmu, jonka tunnukset ovat väliaikaisia=⇒ ∼ n operaatiota
Yhdellä iteraatiolla kiinnitetään yhden solmun tunnukset lopullisiksi=⇒ n iteraatiota
=⇒ Algoritmin suoritusaika (laskennallinen vaativuus) on O(n2)
45
Dialin toteutustapa:
Solmun valintaan kuluvaa aikaa pienennetään pitämällä joukon T solmutlajiteltuina väliaikaisten tunnusten d(i) mukaan kasvavassa järjestyksessä
Käytössä on joukko lokeroita, jotka on numeroitu 0,1,2, . . .
Lokeroon k tallennetaan ne joukon T solmut, joilla d(i) = k
(jos d(i) =∞, solmua ei tarvitse tallentaa)
=⇒ Valittava solmu löytyy ensimmäisestä epätyhjästä lokerosta
46
Olkoon C pisimmän kaaren pituus
=⇒ Jokaisen solmun lopullinen d(i) on pienempi kuin nC
=⇒ nC + 1 lokeroa riittää varmasti
Jokaisella iteraatiokierroksella on d(i) ≤ d(j) ≤ d(i) + C
kaikilla j ∈ T siten, että d(j) 6=∞
=⇒ Vain lokerot d(i), d(i) + 1, . . . , d(i) + C ovat epätyhjiä
=⇒ C + 1 lokeroa riittää
47
Optimaalisuusehdot
Olkoot dij kaarien (i, j) ∈ A pituudet (voivat olla myös negatiivisia)
Oletetaan, että verkossa ei ole silmukkaa, jonka pituus on negatiivinen
Etäisyystunnukset d(i) ovat lyhimpien polkujen etäisyyksiälähtösolmusta s solmuihin i, jos ja vain jos
d(j) ≤ d(i) + dij ∀(i, j) ∈ A
48
Silmukka, jonka pituus on negatiivinen:
Olkoon C = {silmukan kaaret} ja∑
(i,j)∈C dij < 0
Oletetaan, että optimaalisuusehdot ovat voimassa
=⇒ d(j) ≤ d(i) + dij ∀(i, j) ∈ C
=⇒ d(i)− d(j) + dij ≥ 0 ∀(i, j) ∈ C
=⇒
∑
(i,j)∈C
(d(i)− d(j) + dij) ≥ 0
=⇒
∑
(i,j)∈C
dij ≥ 0 =⇒ Ristiriita
=⇒ Optimaalisuusehdot eivät voi olla voimassa
49
Optimaalisuusehtoihin perustuva menetelmä
Tunnusta korjaava menetelmä
Oletus: Verkossa ei ole silmukkaa, jonka pituus on negatiivinen
Tunnukset:
d(i) = jonkin polun pituus lähtösolmusta s solmuun i
e(i) = solmun i edeltäjäsolmu kyseisellä polulla
Tunnukset kiinnitetään lopullisiksi vasta, kun algoritmi on päättynyt
50
1. Aluksi d(s) = 0 ja d(i) =∞ kaikilla i ∈ N \ {s}.
2. Jos d(j) ≤ d(i) + dij kaikilla (i, j) ∈ A, niin lopeta. Muuten valitse jokinkaari (i, j) siten, että d(j) > d(i) + dij ja tee seuraavaa:
Aseta d(j) = d(i) + dij ja e(j) = i.
3. Jatka kohdasta 2.
Algoritmin päätyttyä:— Lyhin etäisyys lähtösolmusta s solmuun i on d(i)
— Vastaava polku on i← e(i)← e(e(i))← · · · ← s
51
Järjestys, jossa kaaret käydään läpi kullakin iteraatiolla,vaikuttaa algoritmin suoritusaikaan
”Huono” järjestys (esim. satunnainen)=⇒ Suoritusaika voi olla eksponentiaalinen
”Järkevä” järjestys (esim. aina samassa järjestyksessä)=⇒ Suoritusaika saadaan polynomiseksi
52
Algoritmin nopeuttaminen:
Käydään kaaret läpi aina samassa järjestyksessä, siten ettäsamasta solmusta lähtevät kaaret ovat aina peräkkäin
Olkoon solmu i siten, että jollain iteraatiolla ehdot
d(j) ≤ d(i) + dij ∀j siten että (i, j) ∈ A
ovat voimassa
Jos solmun i tunnukset eivät muutu kyseisellä iteraatiolla=⇒ Samat ehdot ovat voimassa myös seuraavalla iteraatiolla=⇒ Kaaria (i, j) ∈ A ei tarvitse tutkia seuraavalla iteraatiolla
53
Lyhimmät polut kaikkien solmuparien välillä
Käytetään edellisiä menetelmiä n kertaa:— Määrätään lyhimmät polut jostain lähtösolmusta s kaikkiin muihin solmuihin— Vaihdetaan lähtösolmuksi s jokin muu solmu ja toistetaan
Jos kaikki kaarien pituudet ei-negatiivisia, voidaan käyttää Dijkstranmenetelmää; muuten täytyy käyttää (esimerkiksi) optimaalisuusehtoihinperustuvaa menetelmää
54
Kaarien pituuksien muuntaminen
Olkoon osa kaarien pituuksista negatiivisia, mutta verkossa ei ole silmukkaa,jonka pituus on negatiivinen
Määrätään lyhimmät polut jostain lähtösolmusta s kaikkiin muihin solmuihinoptimaalisuusehtoihin perustuvalla menetelmällä=⇒ d(j) ≤ d(i) + dij kaikilla (i, j) ∈ A
Asetetaan jokaiselle kaarelle uusi pituus d′ij = dij + d(i)− d(j)
=⇒ d′ij ≥ 0 kaikilla (i, j) ∈ A
55
Olkoon k = i0 → i1→ · · · → ip = ` jokin polku ja P = {polun kaaret}=⇒
∑
(i,j)∈P
d′ij =∑
(i,j)∈P
(dij + d(i)− d(j)) =∑
(i,j)∈P
dij + d(k)− d(`)
=⇒ Polun pituus muuttuu vakiolla d(k)− d(`)
=⇒ Kaikki solmujen k ja ` väliset polut muuttuvat samalla vakiolla
=⇒ Lyhimmät polut säilyvät muunnoksessa
=⇒ Lyhimmät polut kaikista muista solmuista N \ {s} alkaenvoidaan määrätä Dijkstran menetelmällä
56