Upload
byron-santos
View
32
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Dijkstra’s Algorithm. We are given a directed weighted graph There are no negative weights. We need to solve the single source shortest path problem. The source is given to be 1. 29. 34. 27. 22. 32. 26. 27. 20. 2. 2. 4. 7. 8. 9. 4. 3. 5. 1. 9. 10. 20. 3. 8. 19. 17. 15. - PowerPoint PPT Presentation
Citation preview
Dijkstra’s Algorithm
We are given a directed weighted graphThere are no negative weights.We need to solve the single source shortest path problem.The source is given to be 1.
1 9 10 20 3 8 19 17 15 16
11 14 12 5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
Processed nodes will be shown in red.
Partially processed nodes will be shown in green.
The partially processed nodes will be kept in a heap, where the key is value.
Unprocessed nodes will be shown in black.
Search tree pointers will be shown in red.
The back pointers are the reverse of the search tree pointers.
1 9 10 20 3 8 19 17 15 16
11 14 12 5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 200
1heap
valueback *
1 9 10 20 3 8 19 17 15 16
11 14 12 5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 9:
2value
11:1
* 1 1 1 1
back
0 2 1 34 27
20:27
17:34
heap
The value of a node is the weight of the shortest path found so far.
1 9 10 20 3 8 19 17 15 16
11 14 12 5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
9:2
heap
value
* 11 1 1 11 1 1
back
0 32 2 1 4 34 27
20:27
17:34
14:4
6:32
1 9 10 20 3 8 19 17 15 16
11 14 12 5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
heap
value
* 11 1 9 1 11 1 1
back
0 32 2 4 1 4 34 27
20:27
17:34
14:4
6:32
10:4
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
value
* 11 1 9 1 14 11 1 1
back
0 32 2 4 1 6 4 34 27
20:27
17:34
6:32
10:4
12:6
heap
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
20:8
17:34
6:32
12:6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 32 2 4 1 6 4 34 8 * 11 1 9 1 14 11 1 10
heap
A better path to 20 is found; its value and backpointer are updated.
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
32
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
20:8
17:34
6:32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 10 32 2 4 1 6 4 34 8 * 12 11 1 9 1 14 11 1 10
5:10
heap
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:34
6:32
5:10
15:30
19:28
3:15
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 15 10 32 2 4 1 6 4 30 34 28 8 * 20 12 11 1 9 1 14 11 20 1 20 10
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:34
6:32
15:30
19:28
3:14
heap
2:18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 32 2 4 1 6 4 30 34 28 8 * 5 5 12 11 1 9 1 14 11 20 1 20 10
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:34
6:32
15:30
19:28
heap
2:18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 32 22 2 4 1 6 4 30 34 28 8 * 5 5 12 11 3 1 9 1 14 11 20 1 20 10
8:22
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:34
6:32
15:30
19:28
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 32 25 18 2 4 1 6 4 30 34 28 8 * 5 5 12 11 2 2 1 9 1 14 11 20 1 20 10
8:18
32
7:25
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:34
6:32
15:30
19:27
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 32 25 18 2 4 1 6 4 30 34 27 8 * 5 5 12 11 2 2 1 9 1 14 11 20 1 8 10
32
7:25
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:34
6:28
15:30
19:26
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 28 25 18 2 4 1 6 4 30 34 26 8 * 5 5 12 7 2 2 1 9 1 14 11 20 1 7 10
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:30
6:28
15:30
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 28 25 18 2 4 1 6 4 30 30 26 8 * 5 5 12 7 2 2 1 9 1 14 11 20 19 7 10
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
17:30
18:35
15:30
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 28 25 18 2 4 1 6 4 30 30 35 26 8 * 5 5 12 7 2 2 1 9 1 14 11 20 19 6 7 10
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
18:35
15:30
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 10 28 25 18 2 4 1 6 4 30 30 35 26 8 * 5 5 12 7 2 2 1 9 1 14 11 20 19 6 7 10
32
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
18:35
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 37 10 28 25 18 2 4 1 6 4 30 35 30 35 26 8 * 5 5 15 12 7 2 2 1 9 1 14 11 20 15 19 6 7 10
32
16:35
4:37
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 37 10 28 25 18 2 4 1 6 4 30 35 30 26 8 * 5 5 15 12 7 2 2 1 9 1 14 11 20 15 19 7 10
32
16:35
4:37
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 37 10 28 25 18 2 4 1 6 40 4 30 35 30 35 26 8 * 5 5 15 12 7 2 2 1 9 1 14 16 11 20 15 19 6 7 10
32
13:40
4:37
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
heap
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 37 10 28 25 18 2 4 1 6 40 4 30 35 30 35 26 8 * 5 5 15 12 7 2 2 1 9 1 14 16 11 20 15 19 6 7 10
32
13:40
1 9 10 20 3 8 19 17 15 16
11 14 12
5 7 6 18 4 132
12 2
2
5
6
3
7
8
927
31
35
22 2
6
27
20
28
30
29 3
4
31
22
4
1
2
5
63
7
8
4
1 25 63 789
4 1
2
56
3
7 4256
37
89
1
2
53
7
4
1
2
563
7 8 9
4
2
537
8 9 4256 3
78 532 3
heap empty
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
valueback
0 16 14 37 10 28 25 18 2 4 1 6 40 4 30 35 30 35 26 8 * 5 5 15 12 7 2 2 1 9 1 14 16 11 20 15 19 6 7 10
32
The heap is empty and we are done.