We may earn an affiliate commission when you visit our partners.
Course image
Alexander S. Kulikov, Michael Levin, Daniel M Kane, and Neil Rhodes

If you have ever used a navigation service to find optimal route and estimate time to destination, you've used algorithms on graphs. Graphs arise in various real-world situations as there are road networks, computer networks and, most recently, social networks! If you're looking for the fastest time to get to work, cheapest way to connect a set of computers into a network or efficient algorithm to automatically find communities and opinion leaders in Facebook, you're going to work with graphs and algorithms on graphs.

Read more

If you have ever used a navigation service to find optimal route and estimate time to destination, you've used algorithms on graphs. Graphs arise in various real-world situations as there are road networks, computer networks and, most recently, social networks! If you're looking for the fastest time to get to work, cheapest way to connect a set of computers into a network or efficient algorithm to automatically find communities and opinion leaders in Facebook, you're going to work with graphs and algorithms on graphs.

In this online course, you will first learn what a graph is and what are some of the most important properties. Then you'll learn several ways to traverse graphs and how you can do useful things while traversing the graph in some order. We will then talk about shortest paths algorithms — from the basic ones to those which open door for 1000000 times faster algorithms used in Google Maps and other navigational services. You will use these algorithms if you choose to work on our Fast Shortest Routes industrial capstone project. We will finish with minimum spanning trees which are used to plan road, telephone and computer networks and also find applications in clustering and approximate algorithms.

Enroll now

What's inside

Syllabus

Decomposition of Graphs 1
Graphs arise in various real-world situations as there are road networks, computer networks and, most recently, social networks! If you're looking for the fastest time to get to work, cheapest way to connect set of computers into a network or efficient algorithm to automatically find communities and opinion leaders hot in Facebook, you're going to work with graphs and algorithms on graphs. In this module, you will learn ways to represent a graph as well as basic algorithms for decomposing graphs into parts. In the programming assignment of this module, you will apply the algorithms that you’ve learned to implement efficient programs for exploring mazes, analyzing Computer Science curriculum, and analyzing road networks. In the first week of the module, we focus on undirected graphs.
Read more
Decomposition of Graphs 2
This week we continue to study graph decomposition algorithms, but now for directed graphs.
Paths in Graphs 1
In this module you will study algorithms for finding Shortest Paths in Graphs. These algorithms have lots of applications. When you launch a navigation app on your smartphone like Google Maps or Yandex.Navi, it uses these algorithms to find you the fastest route from work to home, from home to school, etc. When you search for airplane tickets, these algorithms are used to find a route with the minimum number of plane changes. Unexpectedly, these algorithms can also be used to determine the optimal way to do currency exchange, sometimes allowing to earh huge profit! We will cover all these applications, and you will learn Breadth-First Search, Dijkstra's Algorithm and Bellman-Ford Algorithm. These algorithms are efficient and lay the foundation for even more efficient algorithms which you will learn and implement in the Shortest Paths Capstone Project to find best routes on real maps of cities and countries, find distances between people in Social Networks. In the end you will be able to find Shortest Paths efficiently in any Graph. This week we will study Breadth-First Search algorithm.
Paths in Graphs 2
This week we continue to study Shortest Paths in Graphs. You will learn Dijkstra's Algorithm which can be applied to find the shortest route home from work. You will also learn Bellman-Ford's algorithm which can unexpectedly be applied to choose the optimal way of exchanging currencies. By the end you will be able to find shortest paths efficiently in any Graph.
Minimum Spanning Trees
In this module, we study the minimum spanning tree problem. We will cover two elegant greedy algorithms for this problem: the first one is due to Kruskal and uses the disjoint sets data structure, the second one is due to Prim and uses the priority queue data structure. In the programming assignment for this module you will be computing an optimal way of building roads between cities and an optimal way of partitioning a given set of objects into clusters (a fundamental problem in data mining).
Advanced Shortest Paths Project (Optional)
In this module, you will learn Advanced Shortest Paths algorithms that work in practice 1000s (up to 25000) of times faster than the classical Dijkstra's algorithm on real-world road networks and social networks graphs. You will work on a Programming Project based on these algorithms. You will find the shortest paths on the real maps of parts of US and the shortest paths connecting people in the social networks. We encourage you not only to use the ideas from this module's lectures in your implementations, but also to come up with your own ideas for speeding up the algorithm! We encourage you to compete on the forums to see whose implementation is the fastest one :)

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Taught by Neil Rhodes, Michael Levin, Alexander S. Kulikov, Daniel M Kane; they are experienced algorithm scientists and instructors
Covers shortest pathfinding, a core skill for programmers in Tech
Develops problem-solving skills in the context of graphs and their applications
Provides a strong theoretical foundation for exploring many topics in Computer Science
Touches on topics heavily used in Industry (fastest routes in navigation systems, efficient network design)

Save this course

Save Algorithms on Graphs to your list so you can find it easily later:
Save

Reviews summary

Algorithms on graphs: highly recommended

Learners say that Algorithms on Graphs is a superb course with engaging assignments. According to students, this course is well structured, with clear explanations, thought-provoking discussions, and helpful programming assignments that aid in understanding the material. Overall, learners strongly recommend this course.

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 Algorithms on Graphs with these activities:
Review Matrix Representation of Graphs
Review matrix representation of graphs to enhance your understanding of graph theory.
Show steps
  • Go over notes or resources from previous coursework
  • Solve practice problems involving matrix representation of graphs
Read Introduction to Algorithms by Cormen et al.
Strengthen your foundational understanding of algorithms by reading a classic textbook in the field.
Show steps
  • Read selected chapters related to graph algorithms
  • Solve practice problems from the book
Join a Study Group for Graph Algorithms
Engage with peers to discuss and reinforce concepts related to graph algorithms.
Browse courses on Graphs
Show steps
  • Find a study group or create one with classmates
  • Schedule regular meetings
  • Discuss course materials, solve problems, and share insights
Six other activities
Expand to see all activities and additional details
Show all nine activities
Create a Visualization of Breadth-First Search
Create a visual representation of Breadth-First Search to solidify your understanding of graph traversal algorithms.
Browse courses on Breadth-First Search
Show steps
  • Choose a tool for creating visualizations
  • Implement Breadth-First Search algorithm
  • Visualize the execution of the algorithm
Attend a Workshop on Advanced Graph Algorithms
Deepen your understanding by attending a workshop tailored to advanced graph algorithms.
Browse courses on Graphs
Show steps
  • Research and identify relevant workshops
  • Register and attend the workshop
  • actively participate and engage with experts
Practice Dijkstra's Algorithm
Practice Dijkstra's Algorithm to strengthen your understanding of finding the shortest paths in graphs.
Browse courses on Shortest Paths
Show steps
  • Learn Dijkstra's Algorithm
  • Find practice problems
  • Solve practice problems using Dijkstra's Algorithm
Participate in Coding Contests on Graph Algorithms
Challenge yourself by participating in coding contests that focus on graph algorithms.
Browse courses on Graphs
Show steps
  • Identify coding platforms that host contests
  • Solve contest problems related to graph algorithms
  • Analyze your solutions and learn from others
Practice Creating Minimum Spanning Trees
Practice creating minimum spanning trees to improve your understanding of network optimization.
Browse courses on Minimum Spanning Trees
Show steps
  • Understand the concept of minimum spanning trees
  • Learn algorithms like Kruskal's and Prim's
  • Practice creating minimum spanning trees using these algorithms
Practice Finding Shortest Paths with Advanced Algorithms
Enhance your understanding of advanced shortest path algorithms and their practical applications.
Browse courses on Graphs
Show steps
  • Learn algorithms like A* and Dijkstra's with Fibonacci heap
  • Implement these algorithms
  • Apply them to real-world problems like finding shortest routes

Career center

Learners who complete Algorithms on Graphs will develop knowledge and skills that may be useful to these careers:
Management Consultant
Management Consultants help organizations improve their performance by providing advice on strategy, operations, and technology. They may work in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to analyze business problems, identify solutions, and communicate findings to stakeholders.
Marketing Manager
Marketing Managers are responsible for developing and executing marketing campaigns. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to develop and execute marketing campaigns, as well as how to manage marketing teams. This course is the right fit for Marketing Managers who want to learn about the use of graphs to map out customer and marketing data.
Data Scientist
Data Scientists use their knowledge of mathematics, statistics, and computer science to analyze data and solve problems. They may work in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to analyze data, identify trends, and draw conclusions. Data scientists often use graph algorithms to find patterns and trends in datasets. This course offers a great foundation for that line of work.
Business Analyst
Business Analysts use their knowledge of business and technology to analyze business problems and identify solutions. They may work in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to analyze business problems, identify solutions, and communicate findings to stakeholders.
Operations Research Analyst
Operations Research Analysts use mathematical and analytical techniques to solve problems in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to use mathematical and analytical techniques to solve problems, as well as how to communicate findings to stakeholders. This course helps build a foundation for those looking to work with graphs to develop optimal solutions for business problems.
Software Engineer
Software Engineers design, develop, and maintain software systems. They may work in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to design and develop software systems, as well as how to test and debug code. Many Google Maps developers rely on an advanced understanding of algorithms on graphs. This course is the right fit for a software engineer seeking such knowledge.
Customer Success Manager
Customer Success Managers are responsible for ensuring that customers are satisfied with their products and services. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to ensure that customers are satisfied with their products and services.
Systems Analyst
Systems Analysts are responsible for analyzing business systems and recommending improvements. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to analyze business systems and recommend improvements.
Data Analyst
Data Analysts use their knowledge of mathematics, statistics, and computer science to analyze data and solve business problems. They may work in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to analyze data, identify trends, and draw conclusions. Many Data Analysts also need to gain familiarity with graph algorithms. This course provides a foundation in this area.
Financial Analyst
Financial Analysts use their knowledge of finance and economics to analyze financial data and make investment recommendations. They may work in a variety of industries, including investment banking, asset management, and hedge funds. This course would be helpful in learning how to analyze financial data, make investment recommendations, and communicate findings to stakeholders.
Product Manager
Product Managers are responsible for the development and launch of new products. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to develop and launch new products, as well as how to manage product teams.
Project Manager
Project Managers are responsible for planning, executing, and closing projects. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to plan, execute, and close projects.
Sales Manager
Sales Managers are responsible for managing sales teams and generating revenue. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to manage sales teams and generate revenue.
Data Engineer
Data Engineers are responsible for the design, construction, and maintenance of data pipelines and systems. They may work in a variety of industries, including finance, healthcare, and retail. This course would be helpful in learning how to design and build data pipelines, as well as how to manage and analyze data. Data Engineers also rely on graph algorithms to help process data. Knowledge of these algorithms can be applied to working in this field.
Business Development Manager
Business Development Managers are responsible for generating new business for their companies. They may work in a variety of industries, including technology, retail, and manufacturing. This course would be helpful in learning how to generate new business, as well as how to manage sales teams.

Reading list

We've selected 33 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 Algorithms on Graphs.
Provides a comprehensive treatment of algorithms on graphs. It good reference for anyone who wants to learn more about the subject.
Comprehensive introduction to combinatorial algorithms. It includes topics such as graph algorithms, sorting algorithms, and searching algorithms. It valuable resource for students and professionals who want to learn more about combinatorial algorithms.
Provides a detailed treatment of shortest path algorithms. It good reference for anyone who wants to learn more about the subject.
Practical guide to algorithm design and includes a chapter on graph algorithms. It valuable resource for students and professionals who want to learn how to design and implement efficient algorithms.
Provides a comprehensive introduction to combinatorial optimization, with a focus on graph algorithms and their applications.
Comprehensive introduction to graph theory. It includes topics such as graph properties, graph algorithms, and graph applications. It valuable resource for students and professionals who want to learn more about graph theory.
Comprehensive introduction to parameterized complexity. It includes topics such as fixed-parameter tractability, kernelization, and exact algorithms. It valuable resource for students and professionals who want to learn more about parameterized complexity.
The topics covered by the book are very similar to the topics covered by the course, albeit with a narrower focus on algorithms. The book can be used for background on priority queues, disjoint sets, and other topics, and to gain a more thorough understanding of algorithms discussed in the course.
Provides a comprehensive treatment of network flows. It good reference for anyone who wants to learn more about the subject.
Classic introduction to algorithms and data structures and includes a chapter on graph algorithms. It is an excellent resource for students and professionals who want to learn more about the fundamentals of algorithms.
Comprehensive introduction to data structures and algorithms in Java. It includes a chapter on graph algorithms and valuable resource for students and professionals who want to learn about graph algorithms in Java.
Comprehensive introduction to combinatorial optimization. It includes topics such as linear programming, integer programming, and network flows. It valuable resource for students and professionals who want to learn more about combinatorial optimization.
Comprehensive introduction to algorithms in C++. It includes a chapter on graph algorithms and valuable resource for students and professionals who want to learn about graph algorithms in C++.
Comprehensive introduction to network flows. It includes topics such as maximum flow, minimum cost flow, and network optimization. It valuable resource for students and professionals who want to learn more about network flows.
Comprehensive introduction to approximation algorithms. It includes topics such as greedy algorithms, randomized algorithms, and linear programming. It valuable resource for students and professionals who want to learn more about approximation algorithms.
Provides a comprehensive treatment of graph theory. It good reference for anyone who wants to learn more about the subject.
Provides a comprehensive overview of graph theory and algorithms, with a focus on graph coloring and network flows.
Provides a comprehensive treatment of algorithms for optimization. It good reference for anyone who wants to learn more about the subject.
Provides a comprehensive treatment of combinatorial optimization. It good reference for anyone who wants to learn more about the subject.
Provides a good background in discrete mathematics, which is essential for understanding the algorithms covered in the course.
Provides a comprehensive treatment of convex optimization. It good reference for anyone who wants to learn more about the subject.
Provides a comprehensive treatment of reinforcement learning. It good reference for anyone who wants to learn more about the subject.
Provides a comprehensive treatment of machine learning. It good reference for anyone who wants to learn more about the subject.
Provides a broad overview of graph theory, providing a solid foundation for understanding the mathematical principles underlying graph algorithms.
Provides a classic introduction to algorithms and data structures, offering a theoretical foundation for understanding graph algorithms.
Provides a comprehensive overview of algorithms, offering a theoretical foundation for understanding graph algorithms.
Provides a comprehensive overview of algorithms in C++, offering a practical approach to implementing graph algorithms.

Share

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

Similar courses

Here are nine courses similar to Algorithms on Graphs.
Graph Algorithms
Most relevant
Working with Graph Algorithms in Python
Most relevant
Executing Graph Algorithms with GraphFrames on Databricks
Most relevant
Advanced Algorithms (Graph Algorithms) in Java
Most relevant
Graph Theory Algorithms
Most relevant
Unordered Data Structures
Most relevant
Data Structures & Algorithms IV: Pattern Matching,...
Most relevant
Approximation Algorithms
Algorithms and Data Structures in Python (INTERVIEW Q&A)
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