2015/4/11cs4335 design and analysis of algorithms /shuai cheng li page 1 evaluation of the course...

30
111/03/21 CS4335 Design and Analysis of Algorithms /Shuai Cheng Li Page 1 Evaluation of the Course (Modified) • Course work: 30% – Four assignments (25%) • 7.5 5 points for each of the first two three assignments • 10 points for the last assignment – One term paper (5%) (week13 Friday) • Find an open problem from internet. – State the problem definition in English. – Write the definition mathematically. – Summarize the current status – No more than 1 page • A final exam: 70%

Upload: chandler-amor

Post on 14-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

112/04/18 CS4335 Design and Analysis of Algorithms /Shuai Cheng Li

Page 1

Evaluation of the Course (Modified)• Course work: 30%

– Four assignments (25%)• 7.5 5 points for each of the first two three assignments

• 10 points for the last assignment

– One term paper (5%) (week13 Friday)• Find an open problem from internet.

– State the problem definition in English.

– Write the definition mathematically.

– Summarize the current status

– No more than 1 page

• A final exam: 70%

23/4/18 chapter25 2

Single source shortest path with negative cost edges

23/4/18 chapter25 3

Shortest Paths: Dynamic Programming

Def. OPT(i, v)=length of shortest s-v path P using at most i edges. • Case 1: P uses at most i-1 edges.

– OPT(i, v) = OPT(i-1, v)• Case 2: P uses exactly i edges.

– If (w, v) is the last edge, then OPT use the best s-w path using at most i-1 edges and edge (w, v).

Remark: if no negative cycles, then OPT(n-1, v)=length of shortest s-v path.

s w v

Cwv

OPT(0, s)=0.

23/4/18 chapter25 4

Shortest Paths: implementationShortest-Path(G, t) { for each node v V M[0, v] = M[0, s] = 0 for i = 1 to n-1 for each node w V M[i, w] = M[i-1, w] for each edge (w, v) E M[i, v] = min { M[i, v], M[i-1, w] + cwv }}

Analysis. O(mn) time, O(n2) space. m--no. of edges, n—no. of nodes

Finding the shortest paths. Maintain a "successor" for each table entry.

23/4/18 chapter25 5

Shortest Paths: Practical implementations

Practical improvements.• Maintain only one array M[v] = shortest v-t path that we

have found so far.• No need to check edges of the form (w, v) unless M[w]

changed in previous iteration.Theorem. Throughout the algorithm, M[v] is the length of

some s-v path, and after i rounds of updates, the value M[v] the length of shortest s-v path using i edges.

Overall impact.• Memory: O(m + n).• Running time: O(mn) worst case, but substantially faster in

practice.

23/4/18 chapter25 6

Bellman-Ford: Efficient ImplementationPush-Based-Shortest-Path(G, s, t) { for each node v V { M[v] = successor[v] = empty } M[s] = 0 for i = 1 to n-1 { for each node w V { if (M[w] has been updated in previous iteration) { for each node v such that (w, v) E { if (M[v] > M[w] + cwv) { M[v] = M[w] + cwv successor[v] = w } } } If no M[w] value changed in iteration i, stop. }}

Time O(mn), space O(n).

Note: Dijkstra’s Algorithm select a

w with the smallest M[w] .

23/4/18 chapter25 7

0

67

92

5

-2

8 7

-3

-4

8 8

8 8s

u v

x y(a)

23/4/18 chapter25 8

0

67

92

5

-2

8 7

-3

-4

6

8

7

8s

u v

x y(b)

23/4/18 chapter25 9

0

67

92

5

-2

8 7

-3

-4

6 4

7 2

s

u v

x y(c)

23/4/18 chapter25 10

0

67

92

5

-2

8 7

-3

-4

2 4

7 2

s

u v

x y(d)

23/4/18 chapter25 11

0

67

92

5

-2

8 7

-3

-4

2 4

7 -2

s

u v

x y(e) vertex: s u v x y

d: 0 2 4 7 -2

successor: s v x s u

23/4/18 chapter25 12

Corollary: If negative-weight circuit exists in the given graph, in the n-th iteration, the cost of a shortest path from s to some node v will be further reduced.

Demonstrated by the following example.

23/4/18 chapter25 13

0

6

7

8

5

-21

29

7

2 5

-8

An example with negative-weight cycle

23/4/18 chapter25 14

0

7

6

6

7

8

5

-21

29

7

2 5

-8

i=1

23/4/18 chapter25 15

0

7

6

16

11

9

6

7

8

5

-21

29

7

2 5

-8

i=2

23/4/18 chapter25 16

0

7

6

16

12

11

19

6

7

8

5

-21

29

7

2 5

-8

i=3

23/4/18 chapter25 17

0

6

6

16

12

11

19

6

7

8

5

-21

29

7

2 5

-8

i=4

23/4/18 chapter25 18

0

6

6

15

12

11

18

6

7

8

5

-21

29

7

2 5

-8

i=5

23/4/18 chapter25 19

0

6

6

15

12

11

08

6

7

8

5

-21

29

7

2 5

-8

i=6

23/4/18 chapter25 20

0

5

6

15

12

11

08

6

7

8

5

-21

29

7

2 5

-8

x i=7

23/4/18 chapter25 21

0

5

6

15

12

11

07

6

7

8

5

-21

29

7

2 5

-8

x i=8

23/4/18 chapter25 22

Dijkstra’s Algorithm: (Recall)

• Dijkstra’s algorithm assumes that w(e)0 for each e in the graph.

• maintain a set S of vertices such that– Every vertex v S, d[v]=(s, v), i.e., the shortest-path from s to v

has been found. (Intial values: S=empty, d[s]=0 and d[v]=)

• (a) select the vertex uV-S such that

d[u]=min {d[x]|x V-S}. Set S=S{u}

(b) for each node v adjacent to u do RELAX(u, v, w).

• Repeat step (a) and (b) until S=V.

23/4/18 chapter25 23

Continue:

• DIJKSTRA(G,w,s):

• INITIALIZE-SINGLE-SOURCE(G,s)

• S

• Q V[G]

• while Q

• do u EXTRACT -MIN(Q)

• S S {u}

• for each vertex v Adj[u]

• do RELAX(u,v,w)

23/4/18 chapter25 24

0

105

2

1

3 4

2

6

97

s

u v

x y8 8

8 8

(a)

23/4/18 chapter25 25

0

5/s

10/s

105

2

1

3 4

2

6

97

s

u v

x y8

8

(b)(s,x) is the shortest path using one edge. It is also the shortest path from s to x.

23/4/18 chapter25 26

0

7/x

14/x

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(c)

23/4/18 chapter25 27

0

7/x

13/y

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(d)

23/4/18 chapter25 28

0

7/x

9/u

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(e)

23/4/18 chapter25 29

0

7/x

9/u

5/s

8/x

105

2

1

3 4

2

6

97

s

u v

x y

(f)Backtracking: v-u-x-s

23/4/18 chapter25 30

The algorithm does not work if there are negative weight edges in the graph

.

1

2-10

s v

u

S->v is shorter than s->u, but it is longer than

s->u->v.