23
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.

Dijkstra’s Algorithm

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.