510 likes | 689 Views
Lecture 10. The Label Correcting Algorithm. Label Correcting Algorithm. An Example. . . 2. 4. 2. 3. 3. 3. 1. . . -2. 6. 1. 5. 7. 0. Initialize. 2. 3. 4. 3. d(1) := 0; d(j) :=  for j  1. -4. 3. 6. . .
                
                E N D
Lecture 10 The Label Correcting Algorithm
An Example   2 4 2 3 3 3 1   -2 6 1 5 7 0 Initialize 2 3 4 3 d(1) := 0; d(j) :=  for j  1 -4 3 6   In next slides: the number inside the node will be d(j). Violating arcs will be in thick lines.
An Example 2  3  3 3 3 1 -2 6 0   Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4   Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2  3  3 3 3 1 -2 6 0  6  Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4   Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2  3  3 3 3 1 -2 6 0 6   Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4  3  Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2  5  3 3 3 3 1 -2 6 0 6   Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4 3   Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2 5  3  3 3 3 1 -2 6 0  4 6  Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4 3   Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2 5  3  3 3 3 1 -2 6 0 6 4   Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4 3   6 Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2 5  3  3 3 3 1 -2 6 0 6  4  Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4 3  2  6 Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2 5  3  3 3 3 1 -2 6 0  6 4 9  Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4 3 2   6 Pick a violating arc (i,j) and replace d(j) by d(i) + cij.
An Example 2 5  3  3 3 3 1 -2 6 0 4  6  9 Generic Step 2 3 4 3 An arc (i,j) is violating if d(j) > d(i) + cij. -4 2  3 6  Pick a violating arc (i,j) and replace d(j) by d(i) + cij. No arc is violating We now show the predecessor arcs. The distance labels are optimal
The Modified Label Correcting Algorithm   2 5 2 3 3 3 1   -2 6 1 4 7 0 Initialize 2 3 4 3 d(1) := 0; d(j) :=  for j  1 -4 3 6   LIST := {1} In next slides: the number inside the node will be d(j).
An Example 2  LIST := { 1 } LIST := { 2, 3 } LIST := { 2 } LIST := { } LIST := {1} LIST := { 2, 3, 4 }  3 3 3 3 1 -2 6 0 0  6  2 3 4 3 Generic Step -4  3  Take a node i from LIST Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2  5 LIST := { 3, 4, 5 } LIST := {1} LIST := { 2 } LIST := { } LIST := { 2, 3, 4 } LIST := { 3, 4 } LIST := { 2, 3 } 3 3  3 3 3 1 -2 6 0 4 6   2 3 4 3 -4 Take a node i from LIST 3   Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2 5  LIST := { 4, 5 } 3  LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0 6 4   2 3 4 3 -4 Take a node i from LIST 3  3  Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2 5  LIST := { 5 } LIST := { 4, 5 } LIST := { 5, 6 } 3  LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0  4 4 6  2 3 4 3 -4 Take a node i from LIST 3  6  Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2 5  5 LIST := { 5, 6 } LIST := { 5 } LIST := { 4, 5 } LIST := { 6 }  3 LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0 4  6  2 3 4 3 -4 Take a node i from LIST  3  6 Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2  5 LIST := { 3, 7 } LIST := { 5 } LIST := { 5, 6 } LIST := { 4, 5 } LIST := { } LIST := { 3 } LIST := { 6 } 3  LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0  6 4  9 2 3 4 3 -4 Take a node i from LIST 2  3  6 6 Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2  5 LIST := { 7 } LIST := { 4, 5 } LIST := { 5, 6 } LIST := { 5 } LIST := { } LIST := { 3 } LIST := { 3, 7 } LIST := { 6 }  3 LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0  4 6  9 2 3 4 3 -4 Take a node i from LIST 3  2 2  6 Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2  5 LIST := { } LIST := { 4, 5 } LIST := { 5 } LIST := { 6 } LIST := { 5, 6 } LIST := { 3 } LIST := { 3, 7 } LIST := { 7 } LIST := { }  3 LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0 6 4  9 9  2 3 4 3 -4 Take a node i from LIST  2 3  6 Update(i): for each arc (i,j) with d(j) > d(i) + cijreplace d(j) by d(i) + cij.
An Example 2 5  LIST := { 7 } LIST := { 3, 7 } LIST := { 5, 6 } LIST := { 3 } LIST := { 5 } LIST := { } LIST := { 6 } LIST := { 4, 5 } LIST := { }  3 LIST := { 3, 4, 5 } 3 3 3 1 -2 6 0 6 4  9  2 3 4 3 -4 LIST is empty. The distance labels are optimal 3 2   6 Here are the predecessors