Delivery Problem (Coursera)

Delivery Problem (Coursera)

We’ll implement (in Python) together efficient programs for a problem needed by delivery companies all over the world millions times per day — the travelling salesman problem. The goal in this problem is to visit all the given places as quickly as possible. How to find an optimal solution to this problem quickly? We still don’t have provably efficient algorithms for this difficult computational problem and this is the essence of the P versus NP problem, the most important open question in Computer Science.

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

Still, we’ll implement several solutions for real world instances of the travelling salesman problem. While designing these solutions, we will rely heavily on the material learned in the courses of the specialization: proof techniques, combinatorics, probability, graph theory. We’ll see several examples of using discrete mathematics ideas to get more and more efficient solutions.

Course 5 of 5 in the Introduction to Discrete Mathematics for Computer Science Specialization

Syllabus

WEEK 1
Traveling Salesman Problem
We start this module with the definition of mathematical model of the delivery problem — the classical traveling salesman problem (usually abbreviated as TSP). We'll then review just a few of its many applications: from straightforward ones (delivering goods, planning a trip) to less obvious ones (data storage and compression, genome assembly). After that, we will together take the first steps in implementing programs for TSP.

WEEK 2
Exact Algorithms
We'll see two general techniques applied to the traveling salesman problem. The first one, branch and bound, is a classical approach in combinatorial optimization that is used for various problems. It can be seen as an improvement of the brute force search: we try to construct a permutation piece by piece, but at each step we check whether it still makes sense to continue constructing the permutation (if it doesn't, we just cut off the current branch). The second one, dynamic programming, is arguably the most popular algorithmic technique. It solves a problem by going through a collection of smaller subproblems.

WEEK 3
Approximation Algorithms
As we've seen in the previous modules, solving the traveling salesman problem exactly is hard. In fact, we don't even expect an efficient solution in the nearest future. For this reason, it makes sense to ask: is it possible to find efficiently a solution that is probably suboptimal, but at the same time is close to optimal? It turns out that the answer is yes! We'll learn two algorithms. The first one guarantees to find quickly a solution which is at most twice longer than the optimal one. The second algorithms does not have such guarantees, but it is known to work pretty well in practice.

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

Related Courses

Programación en Python (Coursera) Coursera
Universidad de los Andes

Programación en Python (Coursera)

¡Te damos la bienvenida al curso de Programación en Python de la Universidad de los Andes! El propósito de este curso es ofrecerte un ambiente interactivo para que desarrolles tus habilidades de pensamiento computacional, aprendas a programar en el lenguaje Python y te entrenes en la resolución de problemas utilizando un computador. La estrategia pedagógica empleada es el aprendizaje activo basado en casos.

Sep 28th 2026
4 Weeks
Fibonacci Numbers and the Golden Ratio (Coursera) Coursera
The Hong Kong University of Science and Technology - HKUST

Fibonacci Numbers and the Golden Ratio (Coursera)

Learn the mathematics behind the Fibonacci numbers, the golden ratio, and how they are related. These topics are not usually taught in a typical math curriculum, yet contain many fascinating results that are still accessible to an advanced high school student. The course culminates in an explanation of why the Fibonacci numbers appear unexpectedly in nature, such as the number of spirals in the head of a sunflower.

Sep 28th 2026
3 Weeks
NLP Modelos y Algoritmos (Coursera) Coursera
Universidad Austral

NLP Modelos y Algoritmos (Coursera)

Este curso te brindará los conocimientos necesarios para la implementación de algoritmos de NLP. Mediante el uso de los últimos algoritmos más populares en NLP se procederá a dar solución a un conjunto de problemas propios del área. Para realizar este curso es necesario contar con conocimientos de programación de nivel básico a medio, deseablemente conocimiento básico del lenguaje Python y es recomendable conocer los Jupyter Notebooks en el entorno Anaconda.

Sep 28th 2026
4 Weeks
Data Visualization with Python & R for Engineers (Coursera) Coursera
Northeastern University

Data Visualization with Python & R for Engineers (Coursera)

The primary objective of this course is to offer students an opportunity to learn how to use visualization tools and techniques for data exploration, knowledge discovery, data storytelling, and decision making in engineering, healthcare operations, manufacturing, and related applications. This course covers basics of data mining and visualization, and Python. It also introduces students to static visualization charts and techniques that reveal information, patterns, interactions.

Sep 28th 2026
4 Weeks
Probabilistic Graphical Models 3: Learning (Coursera) Coursera
Stanford University

Probabilistic Graphical Models 3: Learning (Coursera)

Probabilistic graphical models (PGMs) are a rich framework for encoding probability distributions over complex domains: joint (multivariate) distributions over large numbers of random variables that interact with each other. These representations sit at the intersection of statistics and computer science, relying on concepts from probability theory, graph algorithms, machine learning, and more. They are the basis for the state-of-the-art methods in a wide variety of applications, such as medical diagnosis, image understanding, speech recognition, natural language processing, and many, many more. They are also a foundational tool in formulating many machine learning problems.

Sep 28th 2026
5-12 Weeks
Uncertainty and Research (Coursera) Coursera
Johns Hopkins University

Uncertainty and Research (Coursera)

This course teaches the fundamentals of scientific research. We approach the research process as a means of systematically reducing uncertainty and demonstrate how conducting a scientific investigation can be posed as an exercise in Bayesian uncertainty quantification. We begin by exploring the scientific landscape to understand the different types of research, where they are conducted, how they are supported, and why each of these types of research is important.

Sep 28th 2026
5-12 Weeks
Introduction to Software Product Management (Coursera) Coursera
University of Alberta

Introduction to Software Product Management (Coursera)

This course highlights the importance and role of software product management. It also provides an overview of the specialization, as well as its goals, structure, and expectations. The course explains the value of process, requirements, planning, and monitoring in producing better software. Upon successful completion of this course, you will be able to: relate software product management to better software products; recognize the role of a software product manager; reflect on how Agile principles will improve your own projects.

Sep 28th 2026
2 Weeks
Practical Python for AI Coding 1 (Coursera) Coursera
Korea Advanced Institute of Science and Technology - KAIST

Practical Python for AI Coding 1 (Coursera)

This course is for a complete novice of Python coding, so no prior knowledge or experience in software coding is required. This course selects, introduces and explains Python syntaxes, functions and libraries that were frequently used in AI coding. In addition, this course introduces vital syntaxes, and functions often used in AI coding and explains the complementary relationship among NumPy, Pandas and TensorFlow, so this course is helpful for even seasoned python users.

Sep 28th 2026
5-12 Weeks
Practical Python for AI Coding 2 (Coursera) Coursera
Korea Advanced Institute of Science and Technology - KAIST

Practical Python for AI Coding 2 (Coursera)

This course is for a complete novice of Python coding, so no prior knowledge or experience in software coding is required. This course selects, introduces and explains Python syntaxes, functions and libraries that were frequently used in AI coding. In addition, this course introduces vital syntaxes, and functions often used in AI coding and explains the complementary relationship among NumPy, Pandas and TensorFlow, so this course is helpful for even seasoned python users.

Sep 28th 2026
5-12 Weeks
操作系统原理 (Operating Systems) (Coursera) Coursera
Peking University

操作系统原理 (Operating Systems) (Coursera)

操作系统原理》是针对计算机科学技术专业三年级本科生开设的一门专业基础课程。本课程着重学生系统观的培养,通过重点讲述操作系统的内部结构、工作原理及典型技术的实现,使学生建立起对操作系统的整体及各个功能模块的认识,从而系统掌握计算机的专业知识,进一步提升学生的软件开发能力乃至系统软件开发能力。

Sep 28th 2026
13-24 Weeks
Applied Calculus with Python (Coursera) Coursera
Johns Hopkins University

Applied Calculus with Python (Coursera)

This course is designed for the Python programmer who wants to develop the foundations of Calculus to help solve challenging problems as well as the student of mathematics looking to learn the theory and numerical techniques of applied calculus implemented in Python. By the end of this course, you will have learned how to apply essential calculus concepts to develop robust Python applications that solve a variety of real-world challenges.

Sep 28th 2026
5-12 Weeks