36

I already have knowledge about basic algorithms. Now I plan to study more advance algorithms and I decide to go with Introduction to Algorithms.

I'm not sure, do I need to refresh my math's skill before read this book or not? (I forget almost math that I learn in high school and college) If this book need strong math knowledge, please suggest subjects that benefit.

I want to learn about implementation, design and analysis of algorithms.

1
  • 1
    Here is a great resource to refresh your skills if you choose you need to. khanacademy.org Jul 18, 2011 at 22:51

4 Answers 4

31

The MIT course that uses the CLR book has a specific prerequisite course. The textbook used by that prerequisite course is available for free.

Here it is:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/readings/

The prerequisite course's prerequisite course is single-variable calculus.

3
  • How come this book doesn't have anything about logarithms, isn't that one of the main requirements to understand Big O? Oct 28, 2020 at 19:11
  • @StevenAguilar "The prerequisite course's prerequisite course is single-variable calculus."
    – user16764
    Oct 29, 2020 at 20:38
  • 1
    this course seems LONG ocw.mit.edu/courses/mathematics/… based on your opinion which are essential for understanding Big O? I just need to refresh my memory. Oct 29, 2020 at 21:05
11

A version of what is normally called discrete mathematics, combined with first-year (university) level calculus are the primary requirements to understanding many (basic) algorithms and their analysis.

Specialized or advanced algorithms can require additional or advanced mathematical background, such as in statistics / probability (scientific and financial programming), abstract algebra, and number theory (i.e. for cryptography).

As a student my discrete mathematics course had the textbook Discrete Mathematics with Applications by Susanna Epp, and another textbook I found in my library was Discrete Mathematics by Kenneth Ross and Charles Wright. A decent quality used copy of one of these is likely a reasonable place to start (with or without combining with the MIT Open Course Ware, depending on your learning style). For self-study I often find having two sources to refer to can help clarify points I'm having trouble understanding.

An alternative I've seen suggested is Concrete Mathematics, Second edition by Ronald L. Graham, Donald E. Knuth, and Oren Patashnik. I cannot find my copy at the moment, and have not worked through it diligently so I cannot make a recommendation for or against it.

From the Preface:

But what exactly is Concrete Mathematics? It is a blend of continuous and discrete mathematics. More concretely, it is the controlled manipulation of mathematical formulas, using a collection of techniques for solving problems.

I'll note the curmudgeon comments of Bill the Lizard in this blog entry "Books Programmers Don't Really Read". Personally I still find Robert Sedgewick's Algorithms (now 4th ed.) less intimidating and more approachable.

In regards to the continuous (i.e. Real numbers) part of mathematics, Calculus by Stewart seems to be a frequently used tome for lecturing to students on the enlightenment that comes from differentiation and integration.

6

It's not really so much math per se, as it is comfort and fluency with the mathematical formalism. Learn basic set terminology and the corresponding formalism.

The analysis of algorithms, especially in the context of complexity theory in which you study the underlying computational problem (if you're attempting to do something more substantial than "Big-Oh" notation), does require a significant investment in time into graph theory and abstract algebra, all in addition to a huge dose of innate cleverness.

1

I believe you're good to go unless you are concerned about the "Analysis" of Algorithms, not just their implementation. That us course is usually and UD math or CS course in most college curriculum.

Just understanding how to implement the algorithms in that book shouldn't be a problem

2
  • I want to learn about analysis of algorithms too. Please give me suggestions. :)
    – Anonymous
    Jul 18, 2011 at 16:11
  • 2
    @Anonymous In that case I think there is no choice but to bite the bullet. I started teaching myself discrete math, but soon got overwhelmed and quit, tried the easy way out by doing "popular" books on data structures and algorithms, only to find that the real deal was missing. I'm now mustering the courage to begin again.
    – ankush981
    Mar 14, 2014 at 15:52

Not the answer you're looking for? Browse other questions tagged or ask your own question.