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. 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.

This course is part of the Introduction to Discrete Mathematics for Computer Science Specialization

# Delivery Problem

Offered By

## About this Course

#### 100% online

#### Course 5 of 5 in the

#### Flexible deadlines

#### Beginner Level

#### Approx. 7 hours to complete

#### English

## Syllabus - What you will learn from this course

**4 hours to complete**

## 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.

**4 hours to complete**

**4 videos**

**1 reading**

**4 practice exercises**

**4 hours to complete**

## 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.

**4 hours to complete**

**4 videos**

**2 practice exercises**

**5 hours to complete**

## 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.

**5 hours to complete**

**1 practice exercise**

### Reviews

#### 4.6

##### TOP REVIEWS FROM DELIVERY PROBLEM

This final course in 5 course specialization is relatively easy one, although the last problem takes little bit time to solve. Provides good introduction to difficult to learn Delivery problem.

This is a very nice course. I feel that a further explanation in the coding problems would be useful since sometimes you are not sure what one should return from the function.

A fun conclusion to the specialization that brings all of the mathematics of combinatorics and graph theory together to show how it can be applied to some real world problems.

perfect course! very easy and interesting to follow. Pseudo-Algorithms were very useful and helped a lot to understand the concepts.

Very good course. If you are really good in python then go ahead with this course. Challenging questions to solve.

This is a nice way to end the course and, seaways nicely into studying algorithms in general.

This course is to the point and challenges you with practical application.

### About University of California San Diego

### About National Research University Higher School of Economics

## About the Introduction to Discrete Mathematics for Computer Science Specialization

## Frequently Asked Questions

When will I have access to the lectures and assignments?

Once you enroll for a Certificate, you’ll have access to all videos, quizzes, and programming assignments (if applicable). Peer review assignments can only be submitted and reviewed once your session has begun. If you choose to explore the course without purchasing, you may not be able to access certain assignments.

What will I get if I subscribe to this Specialization?

When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile. If you only want to read and view the course content, you can audit the course for free.

What is the refund policy?

Is financial aid available?

More questions? Visit the Learner Help Center.