CS4102 Algorithms
Fall 2018
1
CS4102 Algorithms Fall 2018 Warm up: Modify Dijkstras Algorithm to - - PowerPoint PPT Presentation
CS4102 Algorithms Fall 2018 Warm up: Modify Dijkstras Algorithm to find the shortest paths by product of edge weights (assume all weights are at least 1) 1 Dijkstras Algorithm Initialize = for each node Keep a
1
2
3
10 2 7 11 9 5 6 3 7 3 1 8 12 9 A B C D E F G I H
β β β β β β β β
4
5
log 10 log 2 log 7 log 11 log 9 log 5 log 6 log 3 log 7 log 3 log 1 log 8 log 12 log 9 A B C D E F G I H
β β β β β β β β
6
7
8
9
1 Dollar = 3.87 Ringgit 1 Dollar = 0.8783121137 Euro
10
1 Dollar = 0.8783121137 Euro 1 Euro= 4.1823100458 Dirham 1 Dirham= 1.0548325619 Ringgit
1 Dollar= 0.8783121137 * 4.1823100458 * 1.0548325619 Ringgit = 3.87479406049 Ringgit
11
1 Ringgit = 0.2583979328 Dollar 1 Dollar = 3.87479406049 Ringgit 1 Dollar = 3.87479406049 * 0.2583979328 Dollar = 1.00123877526 Dollar
12
0.8783121137 USD Euro AED MYR 4.1823100458 1.0548325619 0.2583979328 3.87479406049
Invert edge weights to make it a minimization problem
13
1.14 USD Euro AED MYR 0.24 0.95 3.87 0.26
Take log of edge weights to make summation
14
Now a shortest path problem!
0.06 USD Euro AED MYR
0.57
Negative Edge Weights!
15
7 11
3 1 12 A B C D E F G I H π₯ π·, πΊ, πΈ, π· = β1 Weight if we take the cycle 0 times: 31 Weight if we take the cycle 1 time: 30 Weight if we take the cycle 2 times: 29 β¦
16
17
π‘ π€
π¦ ( πβππ π’(π β 1, π¦) + π₯(π¦, π€))
π‘ π€ π¦
18
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7
Start node is E Initialize all others to β
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges
19
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 8 β 7 π β 5 5 β π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7
Start node is E Initialize all others to β
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges
20
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 8 β 7 π β 5 5 β 18 8 4 7 π 4 5 5 7 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7
Start node is E Initialize all others to β
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges
21
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 8 β 7 π β 5 5 β 18 8 4 7 π 4 5 5 7
8 4 7 4 3 5 7 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7
Start node is E Initialize all others to β
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges
22
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 8 β 7 π β 5 5 β 18 8 4 7 π 4 5 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7
Start node is E Initialize all others to β
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges
23
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 8 β 7 π β 4 7 π 4 4 5 4 4 5 2 3 4 1 2 3 1 2 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 1 1 8
A B C D E F G I H B C D E F G H I 7
Start node is E Initialize all others to β
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges
If we computed row V, values change There is a negative weight cycle!
24
π2 π 1 π times πΉ times 1
25
26
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 5 β 7 π β 5 5 β 18 8 4 7 π 4 5 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7
8 4 7 4 3 5 7 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7
Each node will update its neighbors if edge weight changes
πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges 5
27
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 5 β 7 π β 5 5 β 15 5 1 7 π 4 5 5 7
5 1 7 4 3 5 7
5 1 7 4 3 5 7
5 1 7 4 3 5 7
5 1 7 4 3 5 7
5 1 7 4 3 5 7 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7 πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges 5
Each node will update its neighbors if edge weight changes
28
πβππ π’ π, π€ = min min
π¦ (πβππ π’(π β 1, π¦) + π₯(π¦, π€))
πβππ π’(π β 1, π€)
β β β β π β β β β β 5 β 7 π β 5 5 β 15 5 1 7 π 4 5 5 7
5 1 4 4 3 5 7
5 1 4 4 3 5 7
5 1 4 4 3 5 7
5 1 4 4 3 5 7
5 1 4 4 3 5 7 π€ = A 1 3 4 5 6 2 10 2 6
9 5 5
7 3 1 8
A B C D E F G I H B C D E F G H I 7 πβππ π’ π, π€ = weight of the shortest path from π‘ to π€ using at most π edges 5
Each node will update its neighbors if edge weight changes
29
2 6 11 9
8 3 7
1 8 12 9
30
π times π(π β πΉ)
31
πβππ π’ π, π, π = the length of the shortest path from node π to node π using only intermediate nodes 1,β¦ , π
π π
π π π π