Advanced Algorithms (Graph Algorithms) in Java

Go to class
Write Review

Advanced Algorithms (Graph Algorithms) in Java provided by Udemy is a comprehensive online course, which lasts for 12 hours worth of material. Advanced Algorithms (Graph Algorithms) in Java is taught by Holczer Balazs. Upon completion of the course, you can receive an e-certificate from Udemy. The course is taught in Englishand is Paid Course. Visit the course page at Udemy for detailed price information.

Overview
  • Breadth-First Search, Depth-First Search, Shortest Path, Arbitrage, Strongly Connected Components and Maximum Flow

    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)

    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

    • Bellman-Ford 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

    • Kruskal's algorithm

    • Prim's algorithm

    Section 9 - Strongly Connected Components (SCCs)

    • what are strongly connected components

    • Kosaraju's algorithm

    • Tarjan's algorithm

    Section 10 - Maximum Flow Problem

    • the famous maximum flow problem

    • how to reduce most of the hard problems to maximum flow problem

    • Ford-Fulkerson algorithm

    • 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

    • complexity classes

    • 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!