Thank you Jeff Erickson for the free materials!!!! http://compgeom.cs.uiuc.edu/~jeffe//teaching/algorithms/ Algorithms Course Materialsby Jeff
Erickson
This page contains all my lecture notes for the algorithms classes
required for all computer science undergraduate and graduate students
at the University of Illinois, Urbana-Champaign. I have taught
incarnations of this course eight times: Spring 1999, Fall 2000, Spring
2001, Fall 2002, Spring 2004, Fall 2005, Fall 2006, Spring 2007, Fall
2008, and Spring 2009. These notes are numbered roughly in the order I
used them in my undergraduate class, with (lettered) notes containing
sprinkled in reasonable places. More advanced material is indicated by
the symbol ※. More
information about these notes is available after the notes
themselves.
|
You know,
I could write a book.
And this book would be thick enough to stun an ox. |
— Laurie Anderson, "Let X=X", Big Science (1982) |
Everything
- Everything in one file (765 pages)
- Cover material (6 pages)
- All lecture notes in one file (379 pages)
- All homework, head-banging, and exam problems in one file (386 pages)
If we are ready to tolerate everything as understood, there is nothing left to explain; while if we sourly refuse to take anything, even tentatively, as clear, no explanation can be given. What intrigues us as a problem, and what will satisfy us as a solution, will depend upon the line we draw between what is already clear and what needs to be clarified. |
— Nelson Goodman, Fact, Fiction & Forecast (1955) |
Lecture Notes
- 0. Introduction, history, and course goals
- Recursion
- Randomization
- Amortized analysis
- 8. Aggregation, taxation, potential
- 9. Scapegoat trees and splay trees
- 10. Maintaining disjoint sets ("union-find") — includes O(α(n)) amortized analysis ※
- String algorithms
- Basic graph algorithms
- Flows and cuts
- Linear programming
- I. Definitions and duality ※
- J. The simplex algorithm ※
- Lower bounds
- Appendix
- Retired: These notes contain material that I have not covered in several years, and that I do not expect to cover in the future.
The
problem is that we attempt to solve the simplest questions cleverly,
thereby rendering them unusually complex.
One should seek the simple solution. |
— Anton Pavlovich Chekhov (c. 1890) |
Homeworks, Exams, and Head-Banging Sessions
- Johnny's algorithms homework (Fall 2000 HW 1)
- Spring 1999: everything
- Fall 2000: everything
- Spring 2001: everything
- Fall 2002: everything
- Spring 2004: everything
- Fall 2005: everything
- Fall 2006: everything
- Spring 2007: everything
- Fall 2008: everything
- Spring 2009: everything
More Information
Caveat Lector.
Some of these lecture notes have been used less often than others and
are therefore (sometimes considerably) less complete/
Alternate sources. My UIUC colleague Sariel Har-Peled maintains his own collection of algorithms lecture notes, which heavily overlap mine, although our presentation styles and specific topical choices are different, sometimes radically so. Choice is good! For people who really prefer dead trees, I recommend the textbooks by Dasgupta, Papadimitriou, and Vazirani; by Kleinberg and Tardos; and (especially for stunning oxen) by Cormen, Leiserson, Rivest, and Stein. An increasing amount of basic algorithmic material can be found at the Source of All Lies. Many more references are listed in the cover material for the lecture notes.
Drawing tools. Most of the figures were drawn with OmniGraffle, but a few very old figures were drawn with xfig, and a few particularly complex figures were drawn with either Freehand or Illustrator. The map on the first page of the maxflow/mincut notes was copied from Lex Schrijver's excellent survey "On the history of combinatorial optimization (till 1960)"; the original map is from a US Government work in the public domain.
Am I writing a textbook?
No. All textbooks suck. (Partly that's because of the unethical
rapacious profitable business practices of (most)
textbook publishers—these notes will always be freely
available. But also, I've never seen a textbook on any
topic that I'd be willing to teach from for more than a few weeks;
that's why I wrote these notes in the first place.) In particular, if
these notes ever became a textbook, they would immediately suck.
(Determining whether they already suck is an illuminating
exercise for the reader.) Besides, have you ever talked to someone
who's actually written a textbook? Do you realize how much work
is involved?! No way, man. Not for me.