Two basic algorithms for path searching in a graph Telerik Algo Academy Graph Algorithms.

18
Algorithms Bellman-Ford and Floyd Two basic algorithms for path searching in a graph Telerik Algo Academy http://academy.telerik.com Graph Algorithms
  • date post

    17-Dec-2015
  • Category

    Documents

  • view

    226
  • download

    4

Transcript of Two basic algorithms for path searching in a graph Telerik Algo Academy Graph Algorithms.

AlgorithmsBellman-Ford and

FloydTwo basic algorithms for path searching in a

graph

Telerik Algo Academyhttp://academy.telerik.com

Graph Algorithms

2

Table of Contents Relaxing of edges and paths Negative Edge Weights Negative Cycles Bellman-Ford algorithm

Description

Pseudo code

Floyd-Warshall algorithm Description

Pseudo code

Relaxing Edges

Relaxing Edges Edge relaxation : Test whether traveling along a given edge gives a new shortest path to its destination vertex

Path relaxation: Test whether traveling through a given vertex gives a new shortest path connecting two other given vertices

if dist[v] > dist[u] + w dist[v] = dist[u] + w

-1

2

52 7

4

2 + 2 = 4

2 + 5 = 7

4 -1 = 33

Negative Edges and Cycles

Negative Edges and Cycles

Negative edges & Negative cycles A cycle whose edges sum to a

negative value

Cannot produce a correct "shortest path" answer if a negative cycle is reachable from the source

S2

-3

-2 1

32 5

2

0

0

3

Bellman-FordAlgorithm

8

Bellman-Ford Based on dynamic programming approach

Shortest paths from a single source vertex to all other vertices in a weighted graph Slower than other algorithms but

more flexible, can work with negative weight edges

Finds negative weight cycles in a graph

Worst case performance O(V·E)

9

Bellman-Ford (2)

//Step 1: initialize graphfor each vertex v in vertices if v is source then dist[v] = 0 else dist[v] = infinity

//Step 2: relax edges repeatedlyfor i = 1 to i = vertices-1 for each edge (u, v, w) in edges if dist[v] > dist[u] + w dist[v] = dist[u] + w

//Step 3: check for negative-weight cyclesfor each edge (u, v, w) in edges if dist[v] > dist[u] + w error "Graph contains a negative-weight cycle"

10

Bellman-Ford Algorithm

Live Demo

A

-1

1

0

5

B

C D

23E

-3

2

4

∞∞

∞∞

Bellman-Ford (3) Flexibility

Optimizations http://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm

Disadvantages Does not scale well Count to infinity (if node is

unreachabel) Changes of network topology are not

reflected quickly (node-by-node)11

for i = 1 to i = n for each edge (u, v, w) in edges if dist[v] > dist[u] + w dist[v] = dist[u] + w

Floyd-WarshallAlgorithm

Floyd-Warshall Based on dynamic programming approach

All shortest paths through the graph between each pair of vertices Positive and negative edges

Only lengths

No details about the path

Worst case performance: O(V 3)13

14

Floyd-Warshall (2)

let dist be a |V| × |V| array of minimum distances initialized to ∞ (infinity)

for each vertex v dist[v][v] == 0

for each edge (u,v) dist[u][v] = w(u,v) // the weight of the edge (u,v)

for k = 1 to k = |V| for i = 1 to i = |V| for j = 1 to j = |V| if (dist[i][j] > dist[i][k] + dist[k][j]) dist[i][j] = dist[i][k] + dist[k][j]

15

Floyd-Warshall Algorithm

Live Demo

A

-4

11

4

B

DC

12

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезания

ASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NETкурсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGap

free C# book, безплатна книга C#, книга Java, книга C#Дончо Минков - сайт за програмиранеНиколай Костов - блог за програмиранеC# курс, програмиране, безплатно

?

? ? ??

?? ?

?

?

?

??

?

?

? ?

Questions?

?

Bellman-Ford

http://algoacademy.telerik.com

Links for more information

Negative weights http://www.informit.com/articles/article.

aspx?p=169575&seqNum=8

MIT Lecture and Proof http://videolectures.net/mit6046jf05_de

maine_lec18/

Optimizations fhttp://en.wikipedia.org/wiki/Bellman%E

2%80%93Ford_algorithmy

Free Trainings @ Telerik Academy

“C# Programming @ Telerik Academy csharpfundamentals.telerik.com

Telerik Software Academy academy.telerik.com

Telerik Academy @ Facebook facebook.com/TelerikAcademy

Telerik Software Academy Forums forums.academy.telerik.com