Summary09

This is a student submissions based lecture, so the basic approach can be to follow the UW student submissions. The first half of the lecture finishes up shortest paths algorithms, the last half introduces some MST algorithms, so that in the next lecture we can prove that they are correct. The goal of the spanning tree discussion is for the students to have a clear understanding of what the algorithm is.


The first activity was to find out what students knew about Dijkstra. The goal was to include a little bit of the history of the field in the course - students should know something about the people who created computer science.

The discussion opened with a joke: to be a Computer Scientist, you need to know how to pronounce Dijkstra, and to spell Dijkstra. (Since Dijkstra is a Dutch name - it's spelling and pronounciation are unusual for Americans - the letters i-j-k rarely are used in sequence.

The student submissions gave a number of contributions that Dijkstra is known for. However, I think that several of the students got their answers from a web search!

If I were to think of a contribution by Dijkstra (other than the algorithm), I would list his paper paper: Goto's considered harmful.


Student submission


Encourage students to have a look at the Dijkstra web page.


There is a short discussion of negative cost edges - this is to clear up a few issues on negative cost edges. Dijstra's algorithm only applies to the case where edges have non-negative cost edges, but other algorithms handle negative cost edges.


This is a brief discussion of the run time of dijkstra's algorithm - for completeness. At about 13:00 the instructor asks the class how many operations are performed. (Note that the answer is on the slide). At 14:30 there are some questions about data structure run time.


Bottleneck shortest paths are introduced, and then students are asked to solve a larger example with student submissions. When students did this activity, I discovered that a number of the students had not understood the definition of the problem. (So working on the problem was effective at helping students understand what the problem was.)



Student Submission


The algorithm that is used is a simple modification of dijkstra's shortest paths algorithm.


At about 27:30 the instructor asks the question "how do you demonstrate that you understand an algorithm", and then spends several minutes talking about this.



30:48 the instructor asks which algorithms do you know for the minimum spanning tree. Student's answer Prim's algorithm and Kruskal's algorithm.

The instructor simulates Prim's algorithm, and then has the students work through a submission of Prim's algorithm. The students are asked to indicate the order that the edges are added by Prim's algorithm (so that they show something other than just the final tree).


Student Submission


The instructor ended up skipping this student submission, so as to be able to do the reverse delete algorithm instead, since time was running short in class.

Done as a student submission after the algorithm was introduced.


Student Submission


After showing the student submission, the instructor talks briefly about Kruskal's algorithm.

The question is asked if Dijstra has a minimum spanning tree algorithm. The instructor then shows that Prim's algorithm has the same structure as Dijkstra's algorithm.