Īsākā ceļa atrašana ar Deikstras algoritmu ()

Download Report

Transcript Īsākā ceļa atrašana ar Deikstras algoritmu ()

Deikstras algoritms
V1
Iepriekšējais
8
13
Pauze
10
V2
Nākošais
V6
Turpināt
11
6
16
7
17
V3
V5
14
5
V4
Šis algoritms
paredzēts īsākā
ceļa atrašanai no
vienas grafa
virsotnes uz visām
pārējām
Beigt
Deikstras algoritms
V1
Iepriekšējais
8
13
Pauze
10
V2
Nākošais
V6
Turpināt
11
6
16
7
17
V3
V5
14
5
V4
Algoritms izmanto iezīmju
piešķiršanas tehniku- katrā
iterācijā virsotnēm tiek piešķirta
iezīme, kas norāda īsāko ceļu
no sākuma virsotnes līdz
apskatāmajai virsotnei, cauri
jau apskatītām virsotnēm
Beigt
Deikstras algoritms
V1
Iepriekšējais
8
13
Pauze
10
V2
Nākošais
V6
Turpināt
11
6
16
7
17
V3
V5
14
5
V4
Katrā iterācijā algoritma
darbības laikā iezīme,
kuras vērtība ir vismazākā,
kļūst par konstanti
Beigt
Deikstras algoritms
V1
Iepriekšējais
8
13
Pauze
10
V2
Nākošais
V6
Turpināt
11
6
16
7
Beigt
17
V3
V5
14
5
V4
Ja ceļš no sākuma virsotnes
līdz apskatāmai virsotnei sastāv
no vairākiem viens otram
sekojošiem lokiem, tad iezīme ir
šo loku svaru summa, ja šādi
ceļi ir vairāki, tad par iezīmi
kļūst mazākā no summām
Deikstras algoritms
Nākošais
0
V1
∞
Iepriekšējais
8
13
10
V2
V6 ∞
Pauze
Turpināt
11
6
17
∞
7
16
V5 ∞
V3
14
Beigt
5
∞ V4
S: Ø
V1
V2
V3
V4
V5
V6
0
∞
∞
∞
∞
∞
Algoritmam sākot
darbu, sākuma
virsotnei tiek
piešķirta iezīme 0,
bet visām pārējām
∞
Deikstras algoritms
Nākošais
0
V1
∞
Iepriekšējais
8
13
10
V2
V6 ∞
Pauze
Turpināt
11
6
17
∞
7
16
V5 ∞
V3
14
5
∞ V4
S- konstanto
virsotņu kopa
sākotnēji ir tukša
1. Iterācija
S: Ø
V1
V2
V3
V4
V5
V6
0
∞
∞
∞
∞
∞
Beigt
Deikstras algoritms
Nākošais
0
V1
∞
Iepriekšējais
8
13
10
V2
V6 ∞
Pauze
Turpināt
11
6
17
∞
7
16
V5 ∞
V3
14
5
∞ V4
1. Iterācija
S: V1,
V1
V2
V3
V4
0
∞
∞
∞
Tā kā vismazākā iezīme
ir virsotnei V1, tā kļūst
konstanta un virsotni
iekļauj kopā S
V5
V6
∞
∞
Beigt
Deikstras algoritms
Nākošais
0
V1
∞
Iepriekšējais
8
13
10
V2
V6 8
Pauze
Turpināt
11
6
7
16
Beigt
17
V5 16
V3
13
14
5
∞ V4
2. Iterācija
S: V1
V1
V2
V3
V4
V5
V6
0
∞
13
∞
16
8
Notiek virsotņu iezīmju
atjaunošana visām
virsotnēm, kuras ir
virsotnes V1 pēcteči,
iezīmes kļūst vienādas
ar loka no virsotnes V1
uz katru pēcteci svaru
Deikstras algoritms
Nākošais
0
V1
∞
Iepriekšējais
8
13
10
V2
V6 8
Pauze
Turpināt
11
6
7
16
Beigt
17
13
V5 16
V3
14
5
∞ V4
Vismazākā iezīme ir
virsotnei V6, šī virsotne
kļūst par konstanti un
tiek iekļauta kopā S
2. Iterācija
S: V1, V6
V1
V2
V3
V4
V5
V6
0
∞
13
∞
16
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
Pauze
V6 8
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
25 V4
Notiek virsotņu iezīmju
atjaunošana, visām
virsotnēm, kuras nav
kopā S
3. Iterācija
S: V1, V6
V1
V2
V3
V4
V5
V6
0
18
13
25
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
Tā kā ceļš no sākuma
virsotnes uz virsotni V5
caur virsotni V6 ir ar svaru
8+7=15, bet no virsotnes
V1 uz virsotni V5 ar svaru
16, tad šai virsotnei tiek
mainīta iezīme
V4
25
3. Iterācija
S: V1, V6
V1
V2
V3
V4
V5
V6
0
18
13
25
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
Pauze
V6 8
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
V4
25
Vismazākā iezīme
ir virsotnei V3, to
iekļauj kopā S
3. Iterācija
S: V1, V6, V3
V1
V2
V3
V4
V5
V6
0
18
13
25
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
Notiek virsotņu iezīmju
atjaunošana visām
virsotnēm, kuras nepieder
kopai S. Tā kā īsāks ceļš uz
nevienu no tām nav atrasts,
tad iezīmju vērtības netiek
mainītas
V4
25
4. Iterācija
S: V1, V6, V3
V1
V2
V3
V4
V5
V6
0
18
13
25
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
V4
Vismazākā iezīme ir
virsotnei V5, tāpēc tā
kļūst konstanta un
virsotni iekļauj kopā S
25
4. Iterācija
S: V1, V6, V3, V5
V1
V2
V3
V4
V5
V6
0
18
13
25
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
Pauze
V6 8
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
Notiek virsotņu iezīmju
atjaunošana visām virsotnēm,
kuras nav kopā S. Tā kā no
virsotne V1 uz virsotni V4
tagad zināms īsāks ceļš, šīs
virsotnes iezīme mainās
5
V4
20
5. Iterācija
S: V1, V6, V3, V5
V1
V2
V3
V4
V5
V6
0
18
13
20
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
V4
Vismazākā iezīme ir
virsotnei V2, tā kļūst
konstanta un to
pievieno kopai S
20
5. Iterācija
S: V1, V6, V3, V5, V2
V1
V2
V3
V4
V5
V6
0
18
13
20
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
Notiek virsotņu iezīmju
atjaunošana visām
virsotnēm, kuras nav kopā
S. Tā kā no virsotne V1 uz
virsotni V4 nav atrasts īsāks
ceļš, tad šīs virsotnes
iezīme nemainās
V4
20
6. Iterācija
S: V1, V6, V3, V5, V2
V1
V2
V3
V4
V5
V6
0
18
13
20
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
V4
Vismazākā iezīme ir
virsotnei V4, tā kļūst
konstanta un virsotne
tiek pievienota kopai
S
20
6. Iterācija
S: V1, V6, V3, V5, V2, V4
V1
V2
V3
V4
V5
V6
0
18
13
20
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
16
7
Beigt
17
13
V5 15
V3
14
5
V4
Algoritms beidz darbu,
jo visas virsotnes
atrodas kopā S un nav
vairs virsotņu ar
maināmām iezīmēm
20
6. Iterācija
S: V1, V6, V3, V5, V2, V4
V1
V2
V3
V4
V5
V6
0
18
13
20
15
8
Deikstras algoritms
Nākošais
0
V1
13
18
Iepriekšējais
8
10
V2
V6 8
Pauze
Turpināt
11
6
7
16
Beigt
17
13
V5 15
V3
14
5
V4
Algoritmam beidzot darbu,
katras virsotnes iezīme
norāda īsākā ceļa garumu
no sākuma virsotnes līdz
šai virsotnei
20
S: V1, V6, V3, V5, V2, V4
V1
V2
V3
V4
V5
V6
0
18
13
20
15
8