Download presentation
Presentation is loading. Please wait.
1
1 Sadna in Algorithms Haim Kaplan and Svetlana Olonetsky Tel Aviv University, fall 07/08
2
2 Suggested topics Shortest path Maximum flow Min cost flow
3
3 What do you have to do: Choose algorithms to implement Understand them well Choose the graphs you’d run on The structure/language of your program What is the purpose ? Why do you do it ? There should be a goal, something that you do not know in advance, interesting graph classes
4
4 Inspiration There has been a lot of work recently on so called “algorithm engineering”: Three yearly conferences: 1)WAE 2)ALENEX 3)ESA (track B)
5
5 Some examples
6
6 Distances and Shortest Paths u v
7
7 There are many variations graph is undirected/directed weights: negative/nonnegative real/integer given pair(s)/single source/all pairs one shot/build a data structure or spaner exact/approximate randomized/deterministic
8
8 Dijkstra’s shortest path algorithm Let G = (V,E) be a weighted (weights are non-negative) undirected/directed graph, let s V. Want to find the distance (length of the shortest path), d(s,v) from s to every other vertex. s 3 3 2 3 2 1
9
9 Dijkstra: Maintain an upper bound d(v) on d(s,v). Every vertex is either scanned, labeled, or unlabeled. Initially: d(s) = 0 and d(v) = for every v s. s is labeled and all others are unlabeled. Pick a labeled vertex with d(v) minimum. Make v scanned. For every edge (v,w) if d(v) + w(v,w) < d(w) then 1) d(w) := d(v) + w(v,w) 2) label w if it is not labeled already
10
10 Dijkstra’s shortest path algorithm (implementation) Maintain the labeled vertices in a heap, using d(v) as the key of v. We perform n delete-min operations and n insert operations on the heap. O(n log(n)) For each edge we may perform a decrease-key. With regular heaps O(m log (n)). But if you can do decrease-key in O(1) time then you can implement Dijkstra’s algorithm to run in O(n log(n) + m) time !
11
11 Dial’s implementation Assume that weights are small integers Maintain vertices in an array according to their distance label
12
12 An Example 1 2 3 4 5 6 2 4 2 1 3 4 2 3 2 Initialize distance labels 0 Initialize array 1
13
13 Scan vertex 1 2 3 4 5 6 2 4 2 1 3 4 2 3 2 2 0 1 1 2 4 3
14
14 Scan vertex 2 2 3 4 5 6 2 4 2 1 3 4 2 3 2 2 0 1 1 2 4 3 2 3
15
15 Scan vertex 2 2 3 4 5 6 2 4 2 1 3 4 2 3 2 2 0 1 1 2 4 3 2 3 4 5
16
16 Analysis Let C-1 be the maximum length of an arc What should be the length of the array ? What is the running time ? How can you do better ?
17
17 2-level buckets 0 C-1.........
18
18 2-level buckets 0 C-1.........
19
19 2-level buckets 0 C-1.........
20
20 Analysis What is the running time ? How can you do better ?
21
21 Goldberg et al Has done extensive experimental work on Dijkstra’s algorithm It may be interesting to repeat some of them ? Run on different graph classes, check new ideas, etc
22
22 k simple shortest paths a b e f t s c d g
23
23 Maintain a trie that described the paths found so far a b e f t s c d g t s sgt
24
24 The heap a b e f t s c d g t s sgt sabeft sgft
25
25 a b e f t s c d g t s sg sabeft g t gt gft
26
26 a b e f t s c d g t s sg g t gt gft t sabeft
27
27 a b e f t s c d g t s sg g t gt gft t sabeft saceft
28
28 a b e f t s c d g t s sg g t gt gft t t sa abeft a aceft sabdft sacdft
29
29 a b e f t s c d g t s sg g t gt gft t t sa a aceft sacdft t b ab bdft beft
30
30 a b e f t s c d g t s sg g t gt gft t t sa a aceft sacdft t b ab bdft beft
31
31 Point to point shortest paths
32
32 Running Dijkstra...
33
33 Bidirectional Dijkstra
34
34 Define potential function π(v) and modify lengths: – ℓ(v,w) = c(v,w) − π(v) + π(w) – ℓ(v,w): reduced cost of arc (v,w). All s-t paths change by same amount: π(t) − π(s). A* search: – Equivalent to Dijkstra on the modified graph: correct if ℓ(v,w) ≥ 0 (π is feasible). Take π(v) to be lower bounds on dist(v, t) A* search
35
35 Bidirectional A* Could be made to work Need to be careful: lower bounds must be consistent
36
36 Where do we get lower bounds ? Use landmarks dist(v,w) ≥ dist(A,w) − dist(A,v) dist(v,w) ≥ dist(v,A) − dist(w,A) A v w A v w
37
37 Query with landmarks
38
38 Landmark selection There has been research on it: –selection at preprocessing –selection for the query
39
39 Reach Reach of v with respect to P: reach(v, P) = min{ dist(s, v), dist(v, t) } Reach of v with respect to the whole graph: reach(v) = max P {reach(v, P)}, over all shortest paths P that contain v [Gutman’04]. Intuition: – vertices on highways have high reach; – vertices on local roads have low reach. v t s
40
40 How do you use reaches While scanning an edge (v,w): – If reach(w) < min{d(s, v) + ℓ(v,w), LB(w, t)}, then w can be pruned. t s w The lower bound is natural if the search is bidirectional v
41
41
42
42 Shortcuts Consider a sequence of vertices of degree two on the path below: – they all have high reach; s s t 1000 1010 1020 1030 1040 1030 1020 1010 1000 10
43
43 Shortcuts s s t 1000 1010 1020 1030 1040 1030 1020 1010 1000 10 80 Add a shortcut: – single edge bypassing a path (with same length). – assume ties are broken by taking path with fewer nodes.
44
44 Shortcuts s s t 1000 60 50 40 30 40 50 60 1000 10 80 Decrease reaches
45
45 Shortcuts s s t 1000 60 50 40 30 40 50 60 1000 10 80 Can add more nested shortcuts 40
46
46 Shortcuts s s t 1000 20 10 20 30 20 10 20 1000 10 80 Can add more nested shortcuts 40
47
47 Reaches + shortcuts
48
48 Combine reaches+shortcuts and landmarks
49
49 Spanners Let G be a weighted undirected graph. A subgraph H of G is a t -spanner of G iff u,v G, H (u,v) t G (u,v). Awerbuch ’85 Peleg-Schäffer ‘89
50
50 Example
51
51 t-spanner Computing a t-spanner of smallest possible size is NP-complete. For a graph on n vertices, how large can a t-spanner be ? u v 2-spanner may require Ω(n 2 ) edges
52
52 Theorem For every k>1, every weighted undirected graph on n vertices has a (2k-1)-spanner with at most n 1+1/k edges. Tight for k=1,2,3,5. Conjectured to be tight for any k equivalent to a girth conjecture of Erdös.
53
53 Proof/Algorithm: Consider the edges in non-decreasing order of weight. If an edge closes a cycle of length ≤ 2k discard it, otherwise add it. The resulting graph is a (2k-1)-spanner and it does not contain a cycle of length ≤ 2k. Such graph has at most n 1+1/k edges. [Althöfer, Das, Dobkin, Joseph, Soares ‘93]
54
54 If |cycle| 2k, then red edge can be removed.
55
55 k=2, Baswana & Sen
56
56 k=2, Baswana & Sen
57
57 k=2, Baswana & Sen
58
58 k=2, Baswana & Sen
59
59 k=2, Baswana & Sen
60
60 k=2, Baswana & Sen
61
61 k=2, Baswana & Sen
62
62 k=2, Baswana & Sen
63
63 k=2, Baswana & Sen
64
64 k=2, Baswana & Sen
65
65 k=2, Baswana & Sen
66
66 k=2, Baswana & Sen
67
67 k=2, Baswana & Sen
68
68 Analysis What is the average # of edges in the spanner ?
69
69 Correctness Why is this a 3-spanner ? Show: Where the weight of the red edges is smaller than the weight of the green one
70
70 Correctness This clearly holds if the edge became green at the first stage:
71
71 Correctness Otherwise, an edge (u,v’) must exist u v x
72
72 Correctness Otherwise, an edge (u,v’) must exist u v x v’
73
73 Implementation
74
74 (a,b)-Spanners Let G be an unweighted undirected graph. A subgraph H of G is an (a,b)-spanner of G iff u,v G, H (u,v) a G (u,v) + b. (Dor-Halperin-Zwick ’96, a=1) Peleg-Elkin ’01 Baswana, Kavitha, Mehlhorn, Pettie ‘05 Thurup Zwick ‘06
75
75 Find interesting graph classes to test spanners on ? Should be relatively dense…
76
76 Other SP problems Distance oracles All pairs shortest paths geometric shortest paths/spanners time dependent shortest paths
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.