Graph algorithms | Routing algorithms

Suurballe's algorithm

In theoretical computer science and network routing, Suurballe's algorithm is an algorithm for finding two disjoint paths in a nonnegatively-weighted directed graph, so that both paths connect the same pair of vertices and have minimum total length. The algorithm was conceived by John W. Suurballe and published in 1974. The main idea of Suurballe's algorithm is to use Dijkstra's algorithm to find one path, to modify the weights of the graph edges, and then to run Dijkstra's algorithm a second time. The output of the algorithm is formed by combining these two paths, discarding edges that are traversed in opposite directions by the paths, and using the remaining edges to form the two paths to return as the output.The modification to the weights is similar to the weight modification in Johnson's algorithm, and preserves the non-negativity of the weights while allowing the second instance of Dijkstra's algorithm to find the correct second path. The problem of finding two disjoint paths of minimum weight can be seen as a special case of a minimum cost flow problem, where in this case there are two units of "flow" and nodes have unit "capacity". Suurballe's algorithm, also, can be seen as a special case of a minimum cost flow algorithm that repeatedly pushes the maximum possible amount of flow along a shortest augmenting path.The first path found by Suurballe's algorithm is the shortest augmenting path for the initial (zero) flow, and the second path found by Suurballe's algorithm is the shortest augmenting path for the residual graph left after pushing one unit of flow along the first path. (Wikipedia).

Suurballe's algorithm
Video thumbnail

Heap Sort - Intro to Algorithms

This video is part of an online course, Intro to Algorithms. Check out the course here: https://www.udacity.com/course/cs215.

From playlist Introduction to Algorithms

Video thumbnail

Make A Combination Lock - Intro to Algorithms

This video is part of an online course, Intro to Algorithms. Check out the course here: https://www.udacity.com/course/cs215.

From playlist Introduction to Algorithms

Video thumbnail

Build a Heap - Intro to Algorithms

This video is part of an online course, Intro to Algorithms. Check out the course here: https://www.udacity.com/course/cs215.

From playlist Introduction to Algorithms

Video thumbnail

Iteration

Powered by https://www.numerise.com/ Iteration

From playlist Numerical Methods

Video thumbnail

Centrality - Intro to Algorithms

This video is part of an online course, Intro to Algorithms. Check out the course here: https://www.udacity.com/course/cs215.

From playlist Introduction to Algorithms

Video thumbnail

How do we multiply polynomials

👉 Learn how to multiply polynomials. To multiply polynomials, we use the distributive property. The distributive property is essential for multiplying polynomials. The distributive property is the use of each term of one of the polynomials to multiply all the terms of the other polynomial.

From playlist How to Multiply Polynomials

Video thumbnail

Distributive Property

👉 Learn how to multiply polynomials. To multiply polynomials, we use the distributive property. The distributive property is essential for multiplying polynomials. The distributive property is the use of each term of one of the polynomials to multiply all the terms of the other polynomial.

From playlist How to Multiply Polynomials

Video thumbnail

How to Multiply to Binomials Using Distributive Property - Polynomial

👉 Learn how to multiply polynomials. To multiply polynomials, we use the distributive property. The distributive property is essential for multiplying polynomials. The distributive property is the use of each term of one of the polynomials to multiply all the terms of the other polynomial.

From playlist How to Multiply Polynomials

Video thumbnail

What Is An Algorithm? | What Exactly Is Algorithm? | Algorithm Basics Explained | Simplilearn

This video explains what is an algorithm in the data structure. This Simplilearn's What Is An Algorithm? tutorial will help beginners to understand what exactly is an algorithm with an example. All of the algorithm basics are explained in this video. Following topics covered in this vi

From playlist Data Structures & Algorithms [2022 Updated]

Video thumbnail

Sorting Algorithms Full Course | Sorting Algorithms In Data Structures Explained | Simplilearn

This Simplilearn video is based on The Sorting Algorithms Full Course. This tutorial mainly focuses on all the major Sorting Algorithms In Data Structures Explained with detailed theory and practical examples for providing a better learning experience. This video covers the following Sort

From playlist Simplilearn Live

Video thumbnail

Lecture 1 - Introduction to Algorithms

This is Lecture 1 of the CSE373 (Analysis of Algorithms) course taught by Professor Steven Skiena [http://www.cs.sunysb.edu/~skiena/] at Stony Brook University in 2007. The lecture slides are available at: http://www.cs.sunysb.edu/~algorith/video-lectures/2007/lecture1.pdf More informati

From playlist CSE373 - Analysis of Algorithms - 2007 SBU

Video thumbnail

Lecture 1 - Introduction to Algorithms

This is Lecture 1 of the CSE373 (Analysis of Algorithms) taught by Professor Steven Skiena [http://www.cs.sunysb.edu/~skiena/] at Stony Brook University in 1997. The lecture slides are available at: http://www.cs.sunysb.edu/~algorith/video-lectures/1997/lecture1.pdf

From playlist CSE373 - Analysis of Algorithms - 1997 SBU

Video thumbnail

What Is An Algorithm ? | Introduction to Algorithms | How To Write An Algorithm? | Simplilearn

This video is based on What Is An Algorithm ? The Introduction to Algorithms tutorial will explain to you How To Write An Algorithm? and it will cover the following topics ✅00:00- Introduction to Algorithms ✅01:46- What Is an Algorithm? The algorithm is a step-by-step procedure or set o

From playlist C++ Tutorial Videos

Video thumbnail

Stanford Seminar - Participating and Designing around Algorithmic Sociotechnical Systems

Motahhare Eslami Carnegie Mellon University October 4, 2019 Algorithms play a vital role in curating online information in socio-technical systems, however, they are usually housed in black-boxes that limit users' understanding of how an algorithmic decision is made. While this opacity pa

From playlist Stanford Seminars

Video thumbnail

Ellen Vitercik: "How much data is sufficient to learn high-performing algorithms?"

Deep Learning and Combinatorial Optimization 2021 "How much data is sufficient to learn high-performing algorithms?" Ellen Vitercik - Carnegie Mellon University Abstract: Algorithms often have tunable parameters that have a considerable impact on their runtime and solution quality. A gro

From playlist Deep Learning and Combinatorial Optimization 2021

Video thumbnail

Better Algorithm Intuition

Data structure intuition is something that develops naturally for most software developers. In all languages, we rely heavily on standard containers and collections. Need fast insertion/lookup? Hashmap. Need a sorted data structure that stores unique values? Set. Duplicate values? Multiset

From playlist C++

Video thumbnail

Dynamic Graph Algorithms and Their Implementation

Abstract: While many algorithmic graph problems have been solved for static graphs, graphs that are used as models in various applications often change dynamically and, thus, require algorithms that can adapt quickly to the deletion and insertion of edges. I will start with providing an ov

From playlist SIAG-ACDA Online Seminar Series

Related pages

Fibonacci heap | Johnson's algorithm | Vertex (graph theory) | Edge disjoint shortest pair algorithm | Theoretical computer science | Dijkstra's algorithm | Directed graph