Advanced Algorithms in Java

Breadth-first search, depth-first search, shortest path, arbitrage, strongly connected components and graph algorithms
4.2 (44 ratings) Instead of using a simple lifetime average, Udemy calculates a
course's star rating by considering a number of different factors
such as the number of ratings, the age of ratings, and the
likelihood of fraudulent ratings.
1,421 students enrolled
Instructed by Holczer Balazs IT & Software / Other
$100
Take This Course
  • Lectures 76
  • Contents Video: 10 hours
    Other: 0 mins
  • Skill Level All Levels
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion
Wishlisted Wishlist

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

About This Course

Published 2/2015 English

Course Description

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 7 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 lecture 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 pathalgorithms: there are several applications which we are going to be familiar with from image processing to FOREX market. The third chapter is about minimum spanning trees and clustering algorithms. Lastly, we are going to learn about the maximum flow problem, maybe the most important algorithm in this course. The last chapters are about how to solve NP problems with simulated annealing or genetic algorithms.

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.

What are the requirements?

  • Core Java
  • Eclipse IDE
  • Internet connection

What am I going to get from this course?

  • Learn about the applications of data structures
  • Implement advanced algorithms efficiently
  • Able to move towards advanced topics such as machine learning or big data analysis
  • Get a good grasp of algorithmic thinking

What is the target audience?

  • This course is meant for everyone from scientists to software developers who want to get closer to algorithmic thinking in the main

What you get with this course?

Not for you? No problem.
30 day money back guarantee.

Forever yours.
Lifetime access.

Learn on the go.
Desktop, iOS and Android.

Get rewarded.
Certificate of completion.

Curriculum

Section 1: Introduction
Introduction
Preview
03:29
Graph theory - Hamiltonian and Eulerian cycles
06:54
Section 2: Complexity Theory
Complexity notations
09:31
Complexity notations example
09:10
Algorithm running times
09:37
Complexity classes
07:13
Section 3: Breadth First Search
Breadth-first search introduction
Preview
09:30
BFS implementation
12:10
BFS - WebCrawler (core of search engines)
05:44
BFS - WebCrawler implementation
15:00
Section 4: Depth First Search
10:21



DFS implementation I - with stack
11:28
DFS implementation II - with recursion
Preview
04:17
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
09:38
Maze solving algorithm implementation
14:50
Memory management: BFS vs DFS
05:23
Section 5: Shortest Path Algorithms
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
Section 6: Spanning Trees
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
Section 7: Strongly Connected Components
Strongly connected components introduction
06:57
Kosaraju algorithm introduction
08:19
07:28

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)

07:41

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

01:01

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

09:06

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

Tarjan implementation II - test
00:44
Applications of strongly connected components
06:48
Section 8: Maximum Flow Problem
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:37
Section 9: Travelling Salesman Problem (TSP)
Travelling salesman problem introduction
10:52
TSP implementation - with simulated annealing
14:17
Tabu search introduction
09:47
Section 10: Euler cycle - Chinese Postman Problem
Euler cycles introduction
10:49
Section 11: Outro
Final words
02:16
Section 12: Source Code
Source code
Article
Article

You can download the slides here!


Coupon codes - get any of my other courses for a discounted price
Article

Students Who Viewed This Course Also Viewed

  • Loading
  • Loading
  • Loading

Instructor Biography

Holczer Balazs, Software Engineer

Hi!

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.

Ready to start learning?
Take This Course