Advanced Algorithms (Graph Algorithms) in Java
What you'll learn
- Learn about the applications of data structures
- Learn about the fundamental basics of graphs and graph theory
- Implement advanced algorithms (graph algorithms) efficiently
- Learn graph traversing such as breadth-first search and depth-first search
- Learn about topological ordering and cycle detection
- Learn about shortest path algorithms (Dijkstra's and Bellman-Ford algorithms)
- Learn about spanning trees
- Learn about strongly connected components
- Learn about Hamiltonian cycles and Eulerian cycles
- Learn about maximum flow (max flow min cut theorem)
- Internet connection
- Basic knowledge of data structures
This course is about advanced algorithms (graph 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.
Section 1 - Graphs Theory Basics:
what is a G(V,E) graph
adjacency matrix representation
adjacency list representation
Section 2 - Graph Traversal (Breadth-First Search)
what is breadth-first search?
how to use BFS for WebCrawling in search engines?
Section 3 - Graph Traversal (Depth-First Search)
what is depth-first search?
how to use recursion to implement DFS
applications of DFS such as topological ordering and cycle detection
find way out of a maze with DFS
Section 4 - Topological Ordering
what is topological ordering (topological sort)
directed acyclic graphs (DAGs)
DAG shortest path and longest path
critical path methods and project management
Section 5 - Cycle Detection
what are cycles in a graph?
forward edges and backward edges
cycle detection algorithms (Tarjan's algorithm with DFS)
Section 6 - Dijkstra's Shortest Path Algorithm
what is a shortest path in a G(V,E) graph
Dijkstra's shortest path algorithm
Section 7 - Bellman-Ford Shortest Path Algorithm
how to handle negative cycles
finding arbitrage opportunities on the FOREX
Section 8: - Spanning Trees (Kruskal and Prim's Algorithms)
what are spanning trees?
union find data structures
Section 9 - Strongly Connected Components (SCCs)
what are strongly connected components
Section 10 - Maximum Flow Problem
the famous maximum flow problem
how to reduce most of the hard problems to maximum flow problem
bipartite matching problem
Section 9 - Travelling Salesman Problem and Hamiltonian Cycles:
travelling salesman problem (TSP)
how to deal with NP-hard problems
what are meta-heuristics
Section 10 - Eulerian Paths
eulerian paths and eulerian cycles
Hierholzer algorithm and the Chinese Postman Problem
Section 11 - Algorithms Analysis
how to measure the running time of algorithms
running time analysis with big O (ordo), big Ω (omega) and big θ (theta) notations
polynomial (P) and non-deterministic polynomial (NP) algorithms
O(1), O(logN), O(N) and several other running time complexities
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 a good grasp of it. You can download the source code of the whole course at the last lecture.
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.
Thanks for joining the course, let's get started!
Who this course is for:
- This course is meant for everyone from scientists to software developers who want to get closer to algorithmic thinking in the main
My name is Balazs Holczer. I am from Budapest, Hungary. I am qualified as a physicist. 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.
Take a look at my website if you are interested in these topics!