Find online courses made by experts from around the world.
Take your courses with you and learn anywhere, anytime.
Learn and practice real-world skills and achieve your goals.
This course is about advanced algorithms focusing on graph traversal, shortest path problems, spanning trees and maximum flow problems and a lots of its applications from Google Web Crawler to taking advantage of stock market arbitrage situations.
The course is going to take approximately 11 hours to completely but I highly suggest you typing these algorithms out several times in order to get the grasp of it. You can download the source code of the whole course at the last video.
In the first section we are going to talk about the main graph traversal algorithms (BFS, DFS) and its applications of course such as WebCrawler or topological ordering. The next section is about shortest path algorithms: there are several applications which we are going to be familiar with from image processing to FOREX market arbitrage. The next chapter is about minimum spanning trees and clustering algorithms. Then, we are going to learn about the maximum flow problem, maybe the most important algorithm in this course. The last chapter is about how to solve NP problems such as the travelling salesman problem with simulated annealing.
You should definitely take this course if you are interested in advanced topics concerning algorithms. There are a bunch of fields where these methods can be used: from software engineering to scientific research.
THE COURSE LAST UPDATE: 2016 october
Not for you? No problem.
30 day money back guarantee.
Learn on the go.
Desktop, iOS and Android.
Certificate of completion.
|Section 1: Introduction|
Graph theory - Hamiltonian and Eulerian cycles
|Section 2: Breadth First Search|
Breadth-first search introductionPreview
BFS - WebCrawler (core of search engines)
BFS - WebCrawler implementation
|Section 3: Depth First Search|
DFS implementation I - with stack
DFS implementation II - with recursionPreview
Topological ordering introduction
Topological ordering implementation I
Topological ordering implementation II
Cycle detection introduction
Cycle detection implementation I
Cycle detection implementation II
Maze solving algorithm implementation
Memory management: BFS vs DFS
|Section 4: Shortest Path Algorithms|
Dijkstra algorithm introduction - basics
Dijkstra algorithm introduction - algorithm
Dijkstra algorithm introduction - example
Bellman-Ford algorithm introduction
Dijkstra algorithm introduction - with adjacency matrix
Shortest path algorithms applications
Dijkstra algorithm implementation I
Dijkstra algorithm implementation II
Bellman-Ford algorithm implementation I
Bellman-Ford algorithm implementation II
DAG shortest path implementation
Arbitrage situations on FOREX introduction
Arbitrage situations on FOREX implementation
Longest path implementation
|Section 5: Spanning Trees|
Union-find data structure (disjoint sets)
Union-find data structure illustration
Spanning trees introduction - Kruskal algorithm
Kruskal algorithm implementation I
Kruskal algorithm implementation II - disjoint set
Kruskal algorithm implementation III
Spanning trees introduction - lazy Prim's algorithm
Prims lazy algorithm implementation I
Prims lazy algorithm implementation II - the core
Spanning trees introduction - eager Prim's algorithm
Eager Prim's algorithm implementation
Applications of spanning trees
|Section 6: Strongly Connected Components|
Strongly connected components introduction
Kosaraju algorithm introduction
We create the helper classes and again, the Graph class. We transpose our directed graph inside this Graph class, because in Kosaraju algorithm we have to do the first DFS (topological ordering) in the transposed graph.
(transposing a graph is just to reverse each edge: startVertex will be targetVertex and targetVertex will be the startVertex)
We create our class in which we will perform the first DFS on the transposed graph
In this video we make sure the our Kosaraju implementation gives the right results
DFS is a robust but not so fast algorithm, so Tarjan algorithm tries to get rid of the DFS.
Tarjan implementation II - test
Applications of strongly connected components
|Section 7: Maximum Flow Problem|
Maximum flow introduction - basics
Maximum flow introduction - properties
Maximum flow introduction - cuts
Maximum flow introduction - residual networks
Maximum flow introduction - Ford-Fulkerson algorithm
Maximum flow introduction - example
Maximum flow introduction - applications
Maximum flow implementation I - Edge, Vertex
Maximum flow implementation II - FlowNetwork class
Maximum flow implementation III - Ford-Fulkerson algorithm
Maximum flow implementation IV - augmentation
Maximum flow implementation V - testing
Bipartite matching problem introduction
Bipartite matching implementation
|Section 8: Travelling Salesman Problem (TSP)|
Travelling salesman problem introduction
TSP implementation with simulated annealing I - city
TSP implementation with simulated annealing II - tour
TSP implementation with simulated annealing III - algorithm
TSP implementation with simulated annealing IV - testing
Tabu search introduction
|Section 9: Euler cycle - Chinese Postman Problem|
Euler cycles introduction
|Section 10: Outro|
|Section 11: Source Code|
You can download the slides here!
Coupon codes - get any of my other courses for a discounted price
My name is Balazs Holczer. I am from Budapest, Hungary. I am qualified as a physicist and later on I decided to get a master degree in applied mathematics. At the moment I am working as a simulation engineer at a multinational company. I have been interested in algorithms and data structures and its implementations especially in Java since university. Later on I got acquainted with machine learning techniques, artificial intelligence, numerical methods and recipes such as solving differential equations, linear algebra, interpolation and extrapolation. These things may prove to be very very important in several fields: software engineering, research and development or investment banking. I have a special addiction to quantitative models such as the Black-Scholes model, or the Merton-model. Quantitative analysts use these algorithms and numerical techniques on daily basis so in my opinion these topics are definitely worth learning.