A Shortest Path Algorithm

1 / 18

# A Shortest Path Algorithm - PowerPoint PPT Presentation

A Shortest Path Algorithm. Motivation. Given a connected, positive weighted graph Find the length of a shortest path from vertex a to vertex z. Dijkstra’s Shortest Path Algorithm. Dijkstra(w,a,z,L){ L(a)=0 for all vertices x ≠a L(x)=∞ T=set of all vertices

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'A Shortest Path Algorithm' - tevy

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### A Shortest Path Algorithm

Motivation

Given a connected, positive weighted graph

Find the length of a shortest path from vertex a to vertex z.

Dijkstra’s Shortest Path Algorithm

Dijkstra(w,a,z,L){

L(a)=0

for all vertices x ≠a

L(x)=∞

T=set of all vertices

while(z є T){

choose v є T with minimum L(v)

T=T-{v}

for each x є T adjacent to v

L(x)=min{L(x),L(v)+w(v,x)}

}

}

Input: A connected, positive weighted graph,vertices a and z

Output: L(z), the length of a shortest path from a to z

Example 8.4.2

b

2

c

1

2

4

2

3

a

d

e

z

4

3

7

1

6

f

g

5

Find L(z)

Initialization

b

2

c

1

2

4

2

3

a

d

e

z

0

4

3

7

1

6

f

g

5

1.L(a)=0

2.L(x)=∞,x≠a

3.T={a,b,c,d,e,f,g,z}

Iteration 1

2

b

2

c

1

2

4

2

3

a

d

e

z

0

4

3

7

1

6

f

g

5

1

1.L(a)=min{L(x),xєT}

2.T={b,c,d,e,f,g,z}

3.L(b)=2,L(f)=1

Iteration 2

2

b

2

c

1

2

4

2

3

4

a

d

e

z

0

4

3

7

1

6

f

g

5

6

1

1.L(f)=min{L(x),xєT}

2.T={b,c,d,e,g,z}

3.L(d)=4,L(g)=6

Iteration 3

2

4

b

2

c

1

2

4

2

3

4

6

a

d

e

z

0

4

3

7

1

6

f

g

5

6

1

1.L(b)=min{L(x),xєT}

2.T={c,d,e,g,z}

3.L(c)=4,L(e)=6,L(d)=4

Iteration 4

2

4

b

2

c

1

2

4

2

6

4

6

a

d

e

z

5

0

4

3

7

1

6

f

g

5

6

1

1.L(c)=L(d)=min{L(x),xєT},begin with c first

2.T={d,e,g,z}

3.L(e)=6,L(z)=5

……

We can continue, but L(z) will not change in this example.

Proof of Dijkstra’s Algorithm

x

w

a

u

P

Basic Step(i=1):

we set L(a)=0, and L(a) is sure the length of a shortest path from a to a.

Inductive step: For an arbitrary step i

Suppose for step k<i, L(v) is the length of a shortest path from a to v.

Next, suppose that at the it step we choose v in T with minimum L(v). We will seek a contradiction that if there is a w whose length is less than L(v) then w is not in T.

By way of contradiction, suppose there is a w with L(w)<L(v), wєT. Then, let P be the shortest path from a to w, and let x be the vertex nearest to a on P that is in T and let u be x’s predecessor. The node u must not be in T (because x was the nearest node to a that was in T). By assumption, L(u) was the length of the shortest path from a to u.

Then, L(x) ≤ L(u)+w(u,x) ≤ length of P < L(v). This is a contradiction. So w is not in T.

According to our assumption, every path from a to v has length at least L(v).

Example 2

b

3

c

2

2

a

1

z

1

2

d

e

1

Find L(z)

Initialization

b

3

c

2

2

1

a

z

0

1

2

d

e

1

1.L(a)=0

2.L(x)=∞,x≠a

3.T={a,b,c,d,e,z}

Iteration 1

a,2

b

3

c

2

2

1

a

z

0

1

2

d

e

1

a,1

1.L(a)=min{L(x),xєT}

2.T={b,c,d,e,z}

3.L(b)=2,L(d)=1

Iteration 2

a,2

b

3

c

2

2

1

a

z

0

1

2

d

e

1

d,2

a,1

1.L(d)=min{L(x),xєT}

2.T={b,c,e,z}

3.L(e)=2

Iteration 3

a,2

b,5

b

3

c

2

2

1

a

z

0

1

2

d

e

1

d,2

a,1

1.L(b)=min{L(x),xєT},(a,2)<(d,2)

2.T={c,e,z}

3.L(c)=5,L(e)=2

Iteration 4

a,2

b,5

b

3

c

2

2

1

a

z

0

e,4

1

2

d

e

1

d,2

a,1

1.L(e)=min{L(x),xєT}

2.T={c,z}

3.L(z)=4

Iteration 5

a,2

b,5

b

3

c

2

2

1

a

z

0

e,4

1

2

d

e

1

d,2

a,1

1.L(z)=min{L(x),xєT}

2.T={c}

3.L(c)=5.Stop.

Theorem 8.4.5

For input consisting of an n-vertex, simple, connected, weighted graph, Dijkstra’s algorithm has worst-case run time Ѳ(n2).

Proof: The while loop will take Ѳ(n2) worst-case running time.