Two basic algorithms for path searching in a graph Telerik Algo Academy 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 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 & 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
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"
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-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]
форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно
програмиране за деца – безплатни курсове и уроцибезплатен 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