Advanced Algorithms (Graph Algorithms) in Java
4.7 (902 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
10,734 students enrolled

Advanced Algorithms (Graph Algorithms) in Java

Graph algorithms, breadth-first search, depth-first search, shortest path, arbitrage, strongly connected components
Bestseller
4.7 (902 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
10,732 students enrolled
Created by Holczer Balazs
Last updated 7/2020
English
English [Auto], Spanish [Auto]
Current price: $129.99 Original price: $199.99 Discount: 35% off
13 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 10 hours on-demand video
  • 3 articles
  • 2 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
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
  • Able to move towards advanced topics such as machine learning or big data analysis
  • Get a good grasp of algorithmic thinking
  • Get to know graph algorithms: BFS, DFS, shortest paths and spanning trees
Requirements
  • Core Java
  • Eclipse IDE
  • Internet connection
  • Basic knowledge of data structures
Description

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:

  • the basic graph traversal algorithm

  • breadth-first search algorithm

  • depth-first search algorithm

Section 2:

  • shortest path algorithms

  • Dijkstra's algorithm

  • Bellman-Ford algorithm

Section 3:

  • what are spanning trees

  • union find data structures

  • Kruskal's algorithm

  • Prim's algorithm

Section 4:

  • what are strongly connected components

  • Kosaraju algorithm

  • Tarjan algorithm

Section 5:

  • the famous maximum flow problem

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

  • Ford-Fulkerson algorithm

  • bipartite matching problem

Section 6:

  • travelling salesman problem (TSP)

  • how to deal with NP-hard problems

  • using meta-heuristics: tabu search and simulated annealing

Section 7:

  • eulerian paths and eulerian cycles

  • Hierholzer algorithm and the Chinese Postman Problem

The course is going to take approximately 10 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
Course content
Expand all 82 lectures 09:56:17
+ Graph Theory Overview
4 lectures 19:37
Adjacency matrix and adjacency list
06:12
Adjacency matrix and adjacency list implementation
05:32
Applications of graphs
04:04
+ Breadth-First Search (BFS)
4 lectures 40:57
Breadth-first search implementation
10:37
Breadth-first search - WebCrawler (core of search engines)
05:49
Breadth-first search - WebCrawler implementation
15:00
+ Depth-First Search (DFS)
11 lectures 01:30:51



Depth-first search introduction
10:21
DFS implementation I - with stack
11:28
Topological ordering introduction
10:31
Topological ordering implementation I
05:49
Topological ordering implementation II
06:07
Cycle detection introduction
06:30
Cycle detection implementation I
08:14
Cycle detection implementation II
07:21
Maze solving algorithm implementation
14:50
Memory management: BFS vs DFS
05:23
Graph traversal quiz
5 questions
+ Shortest Path Algorithms
14 lectures 01:53:53
Dijkstra algorithm introduction - basics
05:35
Dijkstra algorithm introduction - algorithm
05:44
Dijkstra algorithm introduction - example
10:27
Bellman-Ford algorithm introduction
08:59
Dijkstra algorithm introduction - with adjacency matrix
09:22
Shortest path algorithms applications
08:37
Dijkstra algorithm implementation I
09:28
Dijkstra algorithm implementation II
10:57
Bellman-Ford algorithm implementation I
14:43
Bellman-Ford algorithm implementation II
06:05
DAG shortest path implementation
09:42
Arbitrage situations on FOREX introduction
03:47
Arbitrage situations on FOREX implementation
06:37
Longest path implementation
03:50
Shortest path algorithms quiz
5 questions
+ Spanning Trees
12 lectures 01:57:15
Union-find data structure (disjoint sets)
10:56
Union-find data structure illustration
06:35
Spanning trees introduction - Kruskal algorithm
10:36
Kruskal algorithm implementation I
08:04
Kruskal algorithm implementation II - disjoint set
15:40
Kruskal algorithm implementation III
10:07
Spanning trees introduction - lazy Prim's algorithm
07:10
Prims lazy algorithm implementation I
11:38
Prims lazy algorithm implementation II - the core
07:06
Spanning trees introduction - eager Prim's algorithm
11:02
Eager Prim's algorithm implementation
10:45
Applications of spanning trees
07:36
Spanning trees quiz
5 questions
+ Strongly Connected Components
9 lectures 50:53
Strongly connected components introduction
06:25
Kosaraju algorithm introduction
08:19

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)

Kosaraju implementation I - the Graph class
07:18

We create our class in which we will perform the first DFS on the transposed graph

Kosaraju implementation II
06:49

In this video we make sure the our Kosaraju implementation gives the right results

Kosaraju algorithm implementation III - test
02:40
Tarjan algorithm introduction
05:45

DFS is a robust but not so fast algorithm, so Tarjan algorithm tries to get rid of the DFS.

Tarjan implementation I
04:35
Tarjan implementation II - test
02:14
Applications of strongly connected components
06:48
Strongly connected components quiz
3 questions
+ Maximum Flow Problem
14 lectures 01:26:11
Maximum flow introduction - basics
06:55
Maximum flow introduction - properties
09:30
Maximum flow introduction - cuts
05:13
Maximum flow introduction - residual networks
06:49
Maximum flow introduction - Ford-Fulkerson algorithm
04:50
Maximum flow introduction - example
08:35
Maximum flow introduction - applications
03:08
Maximum flow implementation I - Edge, Vertex
11:58
Maximum flow implementation II - FlowNetwork class
05:26
Maximum flow implementation III - Ford-Fulkerson algorithm
08:03
Maximum flow implementation IV - augmentation
06:43
Maximum flow implementation V - testing
02:55
Bipartite matching problem introduction
03:50
Bipartite matching implementation
02:16
+ Hamiltonian cycles - Travelling Salesman Problem (TSP)
7 lectures 01:01:27
Travelling salesman problem introduction
10:52
TSP implementation with simulated annealing I - city
09:51
TSP implementation with simulated annealing II - tour
13:10
TSP implementation with simulated annealing III - algorithm
10:17
TSP implementation with simulated annealing IV - testing
04:29
Tabu search introduction
08:29
Tabu search introduction II
04:19
Travelling salesman problem quiz
2 questions
+ Eulerian Cycles - Chinese Postman Problem
2 lectures 11:12
Eulerian cycles introduction
09:38
Eulerian cycles application
01:34