# Is a thorough study of algorithms useful for a mathematician?

In my university, there is a core course called "basics computer science for mathematicians". The topics covered range from algorithms, to the bases of programming, to theory of computability.

The professor told me that we cover only basic algorithms for time reasons, but that a thorough knowledge of algorithms is necessary for a pure mathematician too, and he suggested I should read Introduction to Algorithms by Cormen et al to make the most out of his course.

I would like to ask: (1) is it actually true that a pure mathematician would benefit from a deep knowledge of algorithms in his research work? (2) from a mathematical point of view, are there other books which I should prefer to Introduction to Algorithms?

• Would you benefit? Certainly! Would it be worth the time? It depends... If your main research interests do not overlap with discrete mathematics, then I would say that Introduction to Algorithms is too technical and too thick. On the other hand, basic algorithmic ideas (like binary search, etc.) will be of use many times, for more consideration see this question and its answers. – dtldarek Nov 30 '14 at 22:44
• @dtldarek Thank you for your comment and for the reference. – Dal Dec 1 '14 at 15:56

Other areas of mathematics also come into play. For example, did you know that constructing a spanning tree is very related to constructing a basis for a vector space? We relate these with Matroid Theory, where we have a ground set $G$ and a set $I \subset 2^{G}$ where each element of $I$ is an independent subset of $G$. If $G$ is a set of vectors, $I$ is the set of all linearly independent sets of vectors.
Once we have our Matroid set up, we can sort the elements of $G$ and use a greedy basis algorithm to solve the optimization problem.
The theory of algorithms also gets into the theory of $\mathcal{NP}$-Completeness and complexity. It is helpful to understand the idea of a problem with (we believe) no efficient solution, and to prove it. You will also get into analyzing an algorithm's time and space efficiency. This skill is helpful if you work on the Numerical/Applied side of things, for designing and selecting efficient algorithms in your mathematical model. If you are doing a lot of high-powered and high-performance modeling, this is very useful.