We may earn an affiliate commission when you visit our partners.
Course image
Alexander S. Kulikov

In this online course 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.

Read more

In this online course 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.

Enroll now

What's inside

Syllabus

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

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores efficient ways to address the traveling salesman problem, which is essential for delivery companies worldwide
Taught by Alexander S. Kulikov, a recognized expert in combinatorial optimization and algorithm design
Develops skills in proof techniques, combinatorics, probability, and graph theory, which are core foundations for computer science
Provides hands-on experience in implementing efficient programs for the traveling salesman problem
Examines the P versus NP problem, a central open question in computer science
Requires some background in computer science and mathematics

Save this course

Save Delivery Problem to your list so you can find it easily later:
Save

Reviews summary

Well-received course in delivery problems

learners say that this is a good and well-structured course on delivery problems, especially for beginners. Many students enjoyed the programming problems, puzzles, and quizzes.
Learners found the programming exercises to be helpful.
"Good exercises!"
"Very practical course a lot of things to learn."
"The code in examples is well written and clean."
Many students enjoyed this course.
"I liked it!"
"I am going to miss these professors a lot."
"I especially enjoyed the module on dynamic programming."
This course is a good fit for beginners.
"Very good course for beginners."
"Well structured introductory course"
"It's a great introductory course to these topics."
Some students felt that the course could have allowed learners to be more independent.
"The course could have allowed the learner to be more independent."
"I wasn't absolutely confident that I could repeat the results of the following in a similar circumstance."
Some learners found the content to be challenging.
"Too difficult compared with previous modules."
"Great course, but complex matters need to explained more slowly"
"I found that this required more advanced Python skills than I expected."

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 Delivery Problem with these activities:
Organize Course Resources
Improve your organization and note-taking skills while preparing for the course.
Show steps
  • Create a folder or notebook for course materials.
  • Organize materials into sections (e.g., notes, assignments, quizzes).
TSP Heuristics Tutorial
Enhance your understanding of TSP heuristics by following guided tutorials.
Browse courses on Heuristics
Show steps
  • Find tutorials on TSP heuristics.
  • Follow the tutorials and implement the heuristics.
TSP Coding Challenges
Develop your problem-solving and coding skills by working through TSP coding challenges.
Browse courses on Coding
Show steps
  • Find online TSP coding challenges.
  • Solve the challenges using your preferred programming language.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Branch and Bound Algorithm for TSP
Reinforce your understanding of the branch and bound algorithm and its application to solving the Traveling Salesman Problem.
Browse courses on Branch and Bound
Show steps
  • Review the fundamentals of the branch and bound algorithm.
  • Apply the branch and bound algorithm to a TSP problem.
The Traveling Salesman Problem: Algorithms and Applications
Expand your understanding of the theoretical foundations and practical aspects of the Traveling Salesman Problem.
Show steps
  • Read selected chapters to gain in-depth knowledge of TSP algorithms.
Interactive TSP Visualization
Solidify your understanding of TSP by creating an interactive visualization that allows you to explore different solutions.
Show steps
  • Choose a programming language and framework.
  • Design the visualization interface.
  • Implement the TSP algorithm.
  • Test and refine the visualization.
Contribute to OpenTSP
Gain practical experience and contribute to the TSP community by working on open-source projects.
Show steps
  • Identify areas to contribute to within OpenTSP.
  • Fork the OpenTSP repository.
  • Implement your contributions and submit a pull request.

Career center

Learners who complete Delivery Problem will develop knowledge and skills that may be useful to these careers:
Software Engineer
As a Software Engineer, you will be responsible for designing and developing software applications. The Delivery Problem course will help you learn how to apply computer science principles to solve real-world problems. This course will also help you develop the skills you need to work in a team environment and deliver high-quality software products.
Operations Research Analyst
As an Operations Research Analyst, you will use mathematical and analytical techniques to solve problems in a variety of industries. The Delivery Problem course will help you learn how to apply optimization techniques to real-world problems. This course will also help you develop the skills you need to communicate your findings to decision-makers.
Data Scientist
As a Data Scientist, you will use data to solve business problems. The Delivery Problem course will help you learn how to apply data science techniques to optimize delivery routes and improve customer service. This course will also help you develop the skills you need to communicate your findings to decision-makers.
Supply Chain Manager
As a Supply Chain Manager, you will be responsible for managing the flow of goods and materials throughout a supply chain. The Delivery Problem course will help you learn how to optimize supply chains and minimize inventory costs. This course will also help you develop the skills you need to manage relationships with suppliers and customers.
Transportation Planner
As a Transportation Planner, you will be responsible for planning and managing transportation systems. The Delivery Problem course will help you learn how to design efficient transportation networks and minimize traffic congestion. This course will also help you develop the skills you need to work with stakeholders and community groups.
Logistics Analyst
As a Logistics Analyst, you will be responsible for planning and managing the movement of goods and materials. The Delivery Problem course will help you learn how to design efficient supply chains and minimize transportation costs. This course will also help you develop the skills you need to analyze data and make informed decisions.
Management Consultant
As a Management Consultant, you will help businesses solve problems and improve their performance. The Delivery Problem course will help you learn how to apply analytical techniques to identify and solve business problems. This course will also help you develop the skills you need to communicate your findings to decision-makers.
Actuary
As an Actuary, you will use mathematical and statistical techniques to assess risk and uncertainty. The Delivery Problem course will help you learn how to apply mathematical and analytical techniques to real-world problems. This course will also help you develop the skills you need to work in a team environment and deliver high-quality work products.
Financial Analyst
As a Financial Analyst, you will be responsible for analyzing financial data and making investment recommendations. The Delivery Problem course will help you learn how to apply mathematical and analytical techniques to financial data. This course will also help you develop the skills you need to communicate your findings to decision-makers.
Delivery Driver
As a Delivery Driver, you will be responsible for transporting goods and packages to customers. The Delivery Problem course will help you learn how to optimize your routes and deliver goods efficiently. This course will also help you develop the skills you need to provide excellent customer service.

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 Delivery Problem.
Provides an in-depth analysis of the traveling salesman problem, covering both exact and approximation algorithms. It also includes a survey of applications, making it a comprehensive resource for anyone interested in the topic.
Provides a comprehensive overview of the traveling salesman problem, covering both mathematical models and metaheuristics. It offers a good balance of theory and practice, making it a valuable resource for anyone interested in the topic.
Offers a comprehensive overview of combinatorial optimization, and includes a dedicated chapter on the traveling salesman problem. Providing both theoretical foundations and practical algorithms, this book can serve as a valuable reference for understanding the concepts covered in the course.
Provides a comprehensive introduction to linear programming, covering topics such as the simplex method, duality theory, and sensitivity analysis. It offers a good foundation for understanding the linear programming techniques used in the course.
Provides a comprehensive introduction to computational complexity theory, covering topics such as NP-completeness, inapproximability, and randomized algorithms. It offers a good foundation for understanding the theoretical limits of efficient computation.
Provides a comprehensive introduction to graph algorithms, covering topics such as shortest paths, max flows, and matching algorithms. It offers a good foundation for understanding the graph algorithms used in the course.
Focuses specifically on approximation algorithms, and includes a chapter on approximation algorithms for the traveling salesman problem. It provides a theoretical understanding of the topic, making it a valuable resource for those interested in the algorithmic aspects of the problem.
This classic textbook provides a comprehensive introduction to algorithms, including chapters on graph algorithms and combinatorial optimization. It offers a solid foundation for understanding the algorithmic concepts used in the course.
Provides a practical guide to algorithm design, covering topics such as greedy algorithms, divide-and-conquer algorithms, and dynamic programming. It offers a good complement to the theoretical concepts covered in the course.
Provides a comprehensive introduction to operations research, covering topics such as linear programming, network optimization, and decision analysis. It offers a good foundation for understanding the optimization techniques used in the course.
Provides a comprehensive introduction to graph theory, covering topics such as connectivity, Eulerian and Hamiltonian cycles, and graph coloring. It offers a good foundation for understanding the graph-theoretic concepts used in the course.
Provides a comprehensive introduction to discrete mathematics, covering topics such as logic, set theory, and graph theory. It offers a foundation for understanding the mathematical concepts used in the course.
Provides an introduction to randomized algorithms and probabilistic analysis, covering topics such as random variables, Markov chains, and concentration inequalities. It offers a foundation for understanding the probabilistic concepts used in the course.

Share

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

Similar courses

Here are nine courses similar to Delivery Problem.
Algorithms and Data Structures in Python (INTERVIEW Q&A)
Most relevant
Advanced Algorithms (Graph Algorithms) in Java
Most relevant
Data Structures & Algorithms in Java + 130 Leetcode...
AI Mastery: From Search Algorithms to Advanced Strategies
AZ-700 Microsoft Azure Network Engineer Associate
Implementing Site Reliability Engineering (SRE)...
Deep Learning with Keras 2
The Harder Side of Science Communication
Data Structures & Algorithms Using C++
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