EdX

Graph Algorithms (edX)

Graph Algorithms (edX)

Learn how to use algorithms to explore graphs, compute shortest distance, min spanning tree, and connected components. If you have ever used a navigation service to find the optimal route and estimate time to destination, you've used algorithms on graphs.

Class Deals by MOOC List - Click here and see EdX's Active Discounts, Deals, and Promo Codes.

Graphs arise in various real-world situations, as there are road networks, water and electricity supply 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 in Facebook, you're going to work with graphs and algorithms on graphs.
In this course, part of the Algorithms and Data Structures MicroMasters program, you will learn what a graph is and its most important properties. You’ll learn several ways to traverse graphs and how you can do useful things while traversing the graph in some order. We will also talk about shortest paths algorithms. 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.

What you'll learn

  • Graph exploration and decomposition into connected components
  • Shortest paths algorithms, including breadth-first search, Dijkstra’s algorithm and Bellman-Ford algorithm
  • Minimum spanning tree algorithms

Syllabus

Modules 1 and 2: Decomposition of 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 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.

Modules 3 and 4: Shortest Paths
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 earn 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.

Module 5: 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).

Module 6: Flows in Networks
Network flows show up in many real-world situations in which a good needs to be transported across a network with limited capacity. You can see it when shipping goods across highways and routing packets across the internet. In this unit, we will discuss the mathematical underpinnings of network flows and some important flow algorithms. We will also give some surprising examples on seemingly unrelated problems that can be solved with our knowledge of network flows.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

CS50's Introduction to Computer Science (edX) EdX
HarvardX,Harvard University

CS50's Introduction to Computer Science (edX)

An introduction to the intellectual enterprises of computer science and the art of programming. This is CS50, Harvard University's introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan, CS50 teaches students how to think algorithmically and solve problems efficiently.

Self Paced
Self-Paced
Computing in Python IV: Objects & Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Computing in Python IV: Objects & Algorithms (edX)

Learn about recursion, search and sort algorithms, and object-oriented programming in Python. Complete your introductory knowledge of computer science with this final course on objects and algorithms. Now that you've learned about complex control structures and data structures, learn to develop programs that more intuitively leverage your natural understanding of problems through object-oriented programming. Then, learn to analyze the complexity and efficiency of these programs through algorithms. In addition, certify your broader knowledge of Introduction to Computing with a comprehensive exam.

Self Paced
Self-Paced
Fundamentals of Python (edX) EdX
SDA_Bocconi,SDA Bocconi School of Management

Fundamentals of Python (edX)

We will equip you with everything you need to properly start using Python in your daily work activities. You will learn how to install Python and work with it through different graphical front-ends. You will then learn how to define objects and how to recognize different characteristics and functionalities. Finally, you will learn how to make Python execute a series of instructions in a sequential order through loops, as well as how to write your own functions.

Self Paced
Self-Paced
Data Structures & Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps (edX) EdX
Georgia Institute of Technology,GTx

Data Structures & Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps (edX)

Become familiar with nonlinear and hierarchical data structures. Study various tree structures: Binary Trees, BSTs and Heaps. Understand tree operations and algorithms. Learn and implement HashMaps that utilize key-value pairs to store data. Explore probabilistic data structures like SkipLists. Course tools help visualize the structures and performance.

Self Paced
Self-Paced
Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms (edX) EdX
Georgia Institute of Technology,GTx

Introduction to Object-Oriented Programming with Java II: Object-Oriented Programming and Algorithms (edX)

Learn the basics of object-oriented programming and algorithms. Students will build on the skills learned from “Introduction to Object-Oriented Programming with Java I: Foundations and Syntax Basics” and learn the basics of writing classes that serve as blueprints of concepts or objects that are represented in a programming problem. Students will leverage the concepts of inheritance, interfaces, and polymorphism to program reusability and flexibility in classes. Finally, students will gain experience walking through and analyzing algorithms that are applied on data (including objects) in many object-oriented programs.

Self Paced
Self-Paced
Laboratorio di Programmazione (edX) EdX
University of Naples Federico II,FedericaX

Laboratorio di Programmazione (edX)

Impara a risolvere problemi complessi attraverso l'uso del computer e avvicinati alla magia degli algoritmi. Il linguaggio di programmazione è uno degli strumenti che abbiamo per interpretare e risolvere i problemi di tutti i giorni. Un linguaggio che è alla base di problemi comuni, come le previsioni del tempo o l'analisi della deformazione di una struttura di un'auto in un incidente stradale.

Self Paced
Self-Paced
Aplicaciones de la Teoría de Grafos a la vida real II (edX) EdX
Universitat Politècnica de València,UPValenciaX

Aplicaciones de la Teoría de Grafos a la vida real II (edX)

Aprenderemos a modelizar problemas del mundo real mediante su representación con grafos y a resolverlos mediante sus algoritmos asociados. Este curso trata la Teoría de Grafos desde el punto de vista de la modelización, lo que nos permitirá con posterioridad resolver muchos problemas de diversa índole. Presentaremos ejemplos de los distintos problemas en un contexto real, analizaremos la representación de éstos mediante grafos y veremos los algoritmos necesarios para resolverlos.

Self Paced
Self-Paced
Algoritmos y Programación en R (edX) EdX
Tecnológico de Monterrey,TecdeMonterreyX

Algoritmos y Programación en R (edX)

Aprende los fundamentos del pensamiento algorítmico, estructuras de datos y los principios básicos de programación con aplicación a los negocios. Los algoritmos pueden ser utilizados para la solución de problemas de negocio. En este curso aprenderás los conceptos básicos de algoritmos y el manejo de estructuras de datos.

Self Paced
Self-Paced
Introducción a la programación en Java: estructuras de datos y algoritmos (edX) EdX
Universidad Carlos III de Madrid - UC3M,UC3Mx

Introducción a la programación en Java: estructuras de datos y algoritmos (edX)

¡Aprende a mejorar tu código en Java utilizando estructuras de datos fundamentales y potentes algoritmos de programación! En este curso introductorio de java aprenderás programación en Java de forma fácil e interactiva. Trabajarás con estructuras de datos fundamentales, tales como listas, pilas, colas y árboles, sobre las cuales se presentarán algoritmos para insertar, eliminar, buscar y ordenar información de una manera eficiente.

Self Paced
Self-Paced