We may earn an affiliate commission when you visit our partners.
Course image
Holczer Balazs

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. 

Read more

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.

Enroll now

What's inside

Learning objectives

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

Syllabus

Introduction
Complexity theory basics
Graph Theory Overview
Graph theory overview
Read more
Adjacency matrix and adjacency list
Adjacency matrix and adjacency list implementation
Applications of graphs
Graph Algorithms Overview Quiz
Breadth-First Search (BFS)
Breadth-first search introduction
Breadth-first search implementation
Applications of breadth-first search
BFS Quiz
Course Challenge #1 - WebCrawler
Breadth-first search - WebCrawler (core of search engines)
Breadth-first search - WebCrawler implementation
Depth-First Search (DFS)



DFS implementation I - with stack
DFS implementation II - with recursion
Depth-first search and stack memory visualisation
Applications of depth-first search
Memory management of graph traversal algorithms
Graph Traversal Quiz
Course Challenge #2- Maze Escape
Maze problem introduction
Course challenge #1 - maze escape
Maze solving algorithm implementation
Topological Ordering
What is topological ordering?
Topological ordering implementation I
Topological ordering implementation II
Finding the shortest path with topological ordering
Topological ordering shortest path implementation I
Topological ordering shortest path implementation II
Dynamic programming with topological sort
Topological Ordering Quiz
Cycle Detection
Cycle detection introduction
Cycle detection implementation I
Cycle detection implementation II
Cycle Detection Quiz
Shortest Path Methods - Dijkstra's Algorithm
What is the shortest path problem?
Dijkstra algorithm visualization
Dijkstra algorithm implementation I
Dijkstra algorithm implementation II
Dijkstra algorithm implementation III
Dijktsra's algorithm with adjacency matrix representation
Shortest path algorithms applications
Dijkstra's Algorithm Quiz
Course Challenge #3 - Longest Path
The critical path method (CPM) and longest paths
Course challenge #3 - DAG shortest path
Longest path implementation
Shortest Path Methods - Bellman-Ford Algorithm
What is the Bellman-Ford algorithm?
Bellman-Ford algorithm visualisation
Bellman-Ford algorithm implementation I
Bellman-Ford algorithm implementation II
Greedy algorithm or dynamic programming approach?
Bellman-Ford Algorithm Quiz
Course Challenge #4 - Arbitrage on FOREX
Arbitrage situations on FOREX introduction
Arbitrage situations on FOREX implementation
Spanning Trees - Kruskal's Algorithm
What is the disjoint set data structure?
Disjoint sets visualization
Kruskal's algorithm introduction
Kruskal algorithm implementation I
Kruskal algorithm implementation II
Kruskal algorithm implementation III
Kruskal's Algorithm Quiz
Spanning Trees - Prim's Algorithm
What is the lazy Prim's algorithm?
Lazy Prim's algorithm implementation I
Lazy Prim's algorithm implementation II
What is the eager Prim's algorithm?
Eager Prim's algorithm implementation
Comparison of minimum spanning tree algorithms
Applications of spanning trees
Prim's Algorithm Quiz
Strongly Connected Components - Kosaraju's Algorithm
Strongly connected components introduction
Kosaraju algorithm introduction

Kosaraju algorithm implementation II
Kosaraju algorithm implementation III
Strongly Connected Components - Tarjan's Algorithm
Tarjan algorithm introduction
Tarjan algorithm visualization
Tarjan algorithm implementation
Applications of strongly connected components
Strongly Connected Components Quiz
Maximum Flow Problem
Maximum flow introduction - basics
Maximum flow introduction - properties
Maximum flow introduction - cuts
Maximum flow introduction - residual networks

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops advanced algorithms and graph theory techniques sought by software engineers and scientific researchers
Teaches depth-first search and breadth-first search, algorithms fundamental to network traversal
Helps learners master efficient graph traversal for applications such as WebCrawling
Delves into more complex scenarios like topological ordering, cycle detection, and finding strongly connected components
Provides numerous examples and use cases to reinforce learning
May be less suitable for beginners in the field without foundational knowledge of algorithms and data structures

Save this course

Save Advanced Algorithms (Graph Algorithms) in Java to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Advanced Algorithms (Graph Algorithms) in Java with these activities:
Review Graph Theory Basics
Refresh your knowledge of graph theory concepts, such as adjacency matrix and adjacency list, to strengthen your foundation for advanced graph algorithms.
Browse courses on Graphs
Show steps
  • Review definitions and representations of graphs.
  • Practice converting between adjacency matrix and adjacency list representations.
Graph Algorithms Reference Collection
Compile a comprehensive collection of reference materials, tutorials, and code examples to support your understanding of graph algorithms.
Browse courses on Graph Algorithms
Show steps
  • Gather resources from various sources, such as textbooks, websites, and online forums.
  • Organize and categorize the materials based on different graph algorithms.
  • Include helpful notes and summaries to enhance comprehension.
Book Review: Introduction to Algorithms
Review a classic textbook on algorithms to reinforce your understanding of graph algorithms and their applications.
Show steps
  • Read selected chapters on graph algorithms, such as shortest path and minimum spanning trees.
  • Summarize key concepts and algorithms in your own words.
  • Identify areas where you need further clarification or practice.
Six other activities
Expand to see all activities and additional details
Show all nine activities
Breadth-First Search Exercises
Practice implementing and applying breadth-first search to traverse graphs, enhancing your understanding of graph exploration.
Browse courses on Breadth-First Search
Show steps
  • Implement a breadth-first search algorithm.
  • Apply BFS to find the shortest path in an unweighted graph.
Topological Sorting Project
Develop a program to perform topological sorting on a directed acyclic graph to enhance your understanding of ordering tasks in a dependency-based system.
Show steps
  • Design and implement a topological sorting algorithm.
  • Test your program on various input graphs with different dependencies.
  • Analyze the efficiency of your algorithm and suggest improvements.
Prim's Algorithm Tutorial
Follow a guided tutorial to learn about Prim's algorithm and its application in finding minimum spanning trees.
Browse courses on Prim's Algorithm
Show steps
  • Watch a video tutorial or read an article on Prim's algorithm.
  • Implement Prim's algorithm in a programming language of your choice.
Mentor Junior Students in Graph Algorithms
Provide guidance and support to junior students who are learning graph algorithms, helping them develop a deeper understanding and overcome challenges.
Browse courses on Graph Algorithms
Show steps
  • Identify opportunities to mentor junior students, such as through tutoring sessions or study groups.
  • Create lesson plans and activities to help students grasp graph algorithms.
  • Provide constructive feedback and encouragement to support students' progress.
Dijkstra's Algorithm Problems
Practice solving problems related to Dijkstra's algorithm to reinforce your understanding of finding the shortest path in a graph.
Browse courses on Dijkstra's Algorithm
Show steps
  • Review the concept of Dijkstra's algorithm and its implementation.
  • Solve a set of practice problems on finding the shortest path in various graphs.
  • Analyze the time complexity of your solutions.
Maximum Flow Problem Practice
Solve a series of practice problems involving the maximum flow problem and its applications to enhance your problem-solving skills.
Show steps
  • Review the maximum flow problem and Ford-Fulkerson algorithm.
  • Implement the Ford-Fulkerson algorithm in a programming language of your choice.
  • Solve practice problems involving maximum flow in various network scenarios.

Career center

Learners who complete Advanced Algorithms (Graph Algorithms) in Java will develop knowledge and skills that may be useful to these careers:
Data Scientist
Data Scientists use advanced algorithms to analyze data and extract insights that can help businesses make better decisions. This course can help you develop the skills you need to become a successful Data Scientist. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as software engineering and scientific research.
Software Engineer
Software Engineers design, develop, and maintain software systems. This course can help you develop the skills you need to become a successful Software Engineer. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as software engineering and scientific research.
Quantitative Analyst
Quantitative Analysts use advanced algorithms to analyze data and make predictions. This course can help you develop the skills you need to become a successful Quantitative Analyst. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as finance and economics.
Operations Research Analyst
Operations Research Analysts use advanced algorithms to solve complex problems in business and industry. This course can help you develop the skills you need to become a successful Operations Research Analyst. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as logistics, scheduling, and supply chain management.
Computer Scientist
Computer Scientists design, develop, and analyze computer systems. This course can help you develop the skills you need to become a successful Computer Scientist. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as computer science, artificial intelligence, and machine learning.
Data Analyst
Data Analysts use data to solve problems and make informed decisions. This course can help you develop the skills you need to become a successful Data Analyst. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as business, healthcare, and social sciences.
Market Researcher
Market Researchers use data to understand consumer behavior and market trends. This course can help you develop the skills you need to become a successful Market Researcher. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as marketing, advertising, and public relations.
Business Analyst
Business Analysts use data and analysis to help businesses make better decisions. This course can help you develop the skills you need to become a successful Business Analyst. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as business, finance, and marketing.
Financial Analyst
Financial Analysts use data to analyze financial markets and make investment recommendations. This course can help you develop the skills you need to become a successful Financial Analyst. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as finance, economics, and accounting.
Software Tester
Software Testers test software to ensure that it meets requirements and is free of defects. This course can help you develop the skills you need to become a successful Software Tester. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as software testing, quality assurance, and software development.
Web Developer
Web Developers design and develop websites. This course can help you develop the skills you need to become a successful Web Developer. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as web development, user experience design, and search engine optimization.
Network Administrator
Network Administrators manage and maintain computer networks. This course can help you develop the skills you need to become a successful Network Administrator. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as network administration, network security, and network engineering.
Database Administrator
Database Administrators manage and maintain databases. This course can help you develop the skills you need to become a successful Database Administrator. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as database administration, data management, and data analysis.
Systems Analyst
Systems Analysts design and implement computer systems. This course can help you develop the skills you need to become a successful Systems Analyst. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as systems analysis, systems design, and systems engineering.
Project Manager
Project Managers plan, execute, and deliver projects. This course can help you develop the skills you need to become a successful Project Manager. You will learn how to implement advanced algorithms efficiently, including graph traversal algorithms, shortest path algorithms, and maximum flow algorithms. You will also learn about graph theory and its applications in various fields, such as project management, operations management, and supply chain management.

Reading list

We've selected 14 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Advanced Algorithms (Graph Algorithms) in Java.
Classic textbook on algorithms and valuable resource for understanding the fundamentals of graph algorithms. It provides a comprehensive overview of the topic and covers a wide range of algorithms, including graph traversal, shortest path algorithms, and spanning trees.
Provides a practical guide to designing and implementing efficient algorithms. It covers a variety of graph algorithms, including breadth-first search, depth-first search, and Dijkstra's algorithm.
Provides a comprehensive treatment of graph algorithms. It covers a wide range of topics, including graph traversal, shortest path algorithms, and maximum flow algorithms.
Provides a comprehensive treatment of network flow algorithms. It covers a wide range of topics, including maximum flow algorithms, minimum cost flow algorithms, and applications of network flow algorithms.
Provides a comprehensive treatment of graph theory. It covers a wide range of topics, including graph traversal, graph coloring, and graph connectivity.
Provides a comprehensive treatment of discrete mathematics, including graph theory. It covers a wide range of topics, including graph traversal, graph coloring, and graph connectivity.
Provides a comprehensive treatment of algorithms and data structures. It covers a wide range of topics, including graph algorithms, sorting algorithms, and searching algorithms.
Provides a comprehensive treatment of graph theory. It covers a wide range of topics, including graph traversal, graph coloring, and graph connectivity.
Provides a comprehensive treatment of algorithms on graphs. It covers a wide range of topics, including graph traversal, shortest path algorithms, and maximum flow algorithms.
Provides a comprehensive treatment of graph theory with applications to engineering and computer science. It covers a wide range of topics, including graph traversal, shortest path algorithms, and maximum flow algorithms.
Provides a comprehensive treatment of combinatorial optimization. It covers a wide range of topics, including graph algorithms, network flow algorithms, and integer programming.
Provides a comprehensive treatment of combinatorial algorithms. It covers a wide range of topics, including graph algorithms, network flow algorithms, and integer programming.
Provides a comprehensive treatment of algorithms and complexity. It covers a wide range of topics, including graph algorithms, sorting algorithms, and searching algorithms.
Provides a comprehensive treatment of graph theory and its applications. It covers a wide range of topics, including graph traversal, shortest path algorithms, and maximum flow algorithms.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Advanced Algorithms (Graph Algorithms) in Java.
Working with Graph Algorithms in Python
Most relevant
Executing Graph Algorithms with GraphFrames on Databricks
Most relevant
Graph Theory Algorithms
Most relevant
Algorithms and Data Structures in Python (INTERVIEW Q&A)
Most relevant
Approximation Algorithms
Most relevant
Data Structures & Algorithms IV: Pattern Matching,...
Most relevant
Java Data Structures and Algorithms Masterclass
Most relevant
I/O-efficient algorithms
Most relevant
Algorithms on Graphs
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser