Download presentation
Presentation is loading. Please wait.
1
Two basic algorithms for path searching in a graph Telerik Algo Academy http://academy.telerik.com Graph Algorithms
2
Relaxing of edges and paths Negative Edge Weights Negative Cycles Bellman-Ford algorithm Description Pseudo code Floyd-Warshall algorithm Description Pseudo code 2
4
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 dist[v] = dist[u] + w 2 5 2 7 4 2 + 2 = 4 2 + 5 = 7 4 -1 = 3 3
6
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 S 2 -3-2 1 3 25 2 0 0 3
8
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) 8
9
9 //Step 1: initialize graph for each vertex v in vertices if v is source then dist[v] = 0 if v is source then dist[v] = 0 else dist[v] = infinity else dist[v] = infinity //Step 2: relax edges repeatedly for i = 1 to i = vertices-1 for each edge (u, v, w) in edges for each edge (u, v, w) in edges if dist[v] > dist[u] + w if dist[v] > dist[u] + w dist[v] = dist[u] + w dist[v] = dist[u] + w //Step 3: check for negative-weight cycles for each edge (u, v, w) in edges if dist[v] > dist[u] + w if dist[v] > dist[u] + w error "Graph contains a negative-weight cycle" error "Graph contains a negative-weight cycle"
10
10 Bellman-Ford AlgorithmBellman-Ford Algorithm Live Demo A 1 0 5 B CD 2 3 E -3 2 4 ∞ ∞ ∞∞
11
Flexibility Optimizations http://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm 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 for each edge (u, v, w) in edges if dist[v] > dist[u] + w if dist[v] > dist[u] + w dist[v] = dist[u] + w dist[v] = dist[u] + w
13
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
14 let dist be a |V| × |V| array of minimum distances initialized to ∞ (infinity) for each vertex v dist[v][v] == 0 dist[v][v] == 0 for each edge (u,v) dist[u][v] = w(u,v) // the weight of the 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 i = 1 to i = |V| for j = 1 to j = |V| for j = 1 to j = |V| if (dist[i][j] > dist[i][k] + dist[k][j]) if (dist[i][j] > dist[i][k] + dist[k][j]) dist[i][j] = dist[i][k] + dist[k][j] dist[i][j] = dist[i][k] + dist[k][j]
15
15 Floyd-Warshall AlgorithmFloyd-Warshall Algorithm Live Demo A -4 1 1 4 B D C 1 2
16
форум програмиране, форум уеб дизайн курсове и уроци по програмиране, уеб дизайн – безплатно програмиране за деца – безплатни курсове и уроци безплатен 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# Николай Костов - блог за програмиране http://algoacademy.telerik.com
17
Negative weights http://www.informit.com/articles/article.aspx?p=1695 75&seqNum=8 http://www.informit.com/articles/article.aspx?p=1695 75&seqNum=8 http://www.informit.com/articles/article.aspx?p=1695 75&seqNum=8 MIT Lecture and Proof http://videolectures.net/mit6046jf05_demaine_lec18/ http://videolectures.net/mit6046jf05_demaine_lec18/ Optimizations fhttp://en.wikipedia.org/wiki/Bellman%E2%80%93Fo rd_algorithmy fhttp://en.wikipedia.org/wiki/Bellman%E2%80%93Fo rd_algorithmy fhttp://en.wikipedia.org/wiki/Bellman%E2%80%93Fo rd_algorithmy
18
“C# Programming @ Telerik Academy csharpfundamentals.telerik.com csharpfundamentals.telerik.com Telerik Software Academy academy.telerik.com academy.telerik.com Telerik Academy @ Facebook facebook.com/TelerikAcademy facebook.com/TelerikAcademy Telerik Software Academy Forums forums.academy.telerik.com forums.academy.telerik.com
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.