Welcome to the preantepenultimate week of the term.
Questions about anything?
First let me say that I know many folks have been dealing with illness and stress, and I understand. Don't panic. We have 3.5 weeks left, and a good chunk of that should be time for you to work on your final projects. Please do connect with tutors and/or me by appointment as needed.
Second, let's go around the room and see what you're thinking of for the final projects.
Third, anything you'd like to talk about regarding the SQL we did last week?
Here's what I have in mind for coming attractions:
If there are any particular topics you'd like to add, let me know.
The "Traveling Salesman Problem" (TSP) is one of the all-time classic graph algorithms. No one has ever found a fast exact algorithm, though many have tried. This is a problem that does need to be solved in real life, and typically we use approaches that give routes that are good enough (1% or so within the best answer) for practical purposes.
We'll discuss what the problem is, what sorts of solutions there are, and play around with some code exercises in class.
We had a digression to discuss permutations and how to generate them :
Note that this local search notion is a common and powerful approach, a dominant part of machine learning algorithms. The idea is
The algorithms we've done earlier this term are all in the category P : polynomial time. (Note that nlog(n) is faster than n*2, and so still "polynomial".). The TSP is in the NP category (or at least, variations of it are depending on how we formulate the problem). NP stands for "non-deterministic polynomial".
Whether or not there is a difference between P vs NP is one of the best known unsolved problems in theoretical computer science.
Let's define & discuss these categories briefly:
This is profound, important stuff, and worth discussing further to understand the gist of what's going on ... so that's where we're headed next. It'll take a bit of background to really appreciate this stuff.
In our next excursion into a few other interesting topics as we wind down the term, and as you all work on your final projects, I'd like us to read about and discuss a few "big picture" ideas related to algorithms. There won't be as many "write this code" problems here, but instead hopefully give you some context for the sorts of questions that computer scientists study. If you continue on with computer science, these topics form the core of the "math theory" of what can be computed.
I've put up some complexity notes which can be a starting point for an overview of these topics.