12
$\begingroup$

I am a computer science student with an interest in competitive programming. I am currently looking to deepen my understanding of combinatorics, as it is a crucial part of algorithm design and analysis. Despite searching, I have not found good resources that are tailored for computer science students or those focusing on competitive programming.

Could anyone recommend comprehensive books or resources on combinatorics that are particularly suited for computer science students? Ideally, these resources would cover both fundamental concepts and advanced topics, with applications to algorithm challenges.

$\endgroup$
3
  • 2
    $\begingroup$ Knuth, Graham, and Patashnik's Concrete Mathematics for breadth of knowledge, all taught with a computer science leaning. Also Knuth's The Art of Computer Programming, which features lots of combinatorics directly applied to algorithm design. $\endgroup$ Apr 12 at 20:26
  • $\begingroup$ You can also look here for more general books on combinatorics: math.stackexchange.com/questions/15201/… $\endgroup$ Apr 12 at 20:49
  • $\begingroup$ Might not work for your tastes, but Lovasz has a lovely book called "Combinatorial Problems and Exercises", that develops a lot of theory through problems (which have both extensive hints and solutions provided). I found it quite useful in developing intuitions about combinatorial objects. Of course, this approach demands somewhat more effort from the learner than a standard textbook style. $\endgroup$ Apr 14 at 3:53

6 Answers 6

11
$\begingroup$

Being a CS undergrad, I was in a similar situation as yours, which is why, I completed my university's elective course titled 'Combinatorial Mathematics' in which the course book was Introductory Combinatorics by Richard A. Brualdi.

This book provides a solid foundation by beginning with fundamental concepts such as the principles of counting and progressively introduces more challenging material, all the way till graph theory, polya counting etc. It should be easy to follow through. Especially, if you have studied foundational Math/CS courses such as discrete math etc., you'll surely have no trouble understanding it, provided you start from the very beginning.

The best part about this book I found, were the end chapter exercises. For some chapters there are over $50$ problems and there are multiple (free) resources available online which provide you with step-by-step solutions to each problem.

All the best!

$\endgroup$
1
  • 3
    $\begingroup$ +1 for the "The best part about this book I found..." paragraph. $\endgroup$ Apr 13 at 2:10
6
$\begingroup$

I don't know what "competitive programming" is. Here are some textbooks with promising titles:
Zamir Bavel, Math Companion for Computer Science.
Peter J Cameron, Combinatorics: Topics, Techniques, Algorithms.
Kolman and Busby, Discrete Mathematical Structures in Computer Science.
Judith L Gersting, Mathematical Structures for Computer Science.

$\endgroup$
1
  • 1
    $\begingroup$ Competitive programming is a mind sport where participants solve algorithmic and mathematical problems within a specified time frame using programming languages. It involves competitions held online or onsite, challenging participants to solve a set of problems ranging in difficulty. The goal is to write efficient and correct solutions within the constraints given, such as time and memory limits. The most common platform for competitive programming is Codeforces. BTW there is an international computation Called ICPC which similar to IMO but with programming $\endgroup$ Apr 13 at 15:49
6
$\begingroup$

I am not sure how to answer your question on competitive programming, but I think that just trying problems, going through the editorials and comments, and reading blogs like the ones on Codeforces tend to suffice. Additionally, the top rated people seem to emphasise a lot that as a beginner, competitive programming is not supposed to have heavy prerequisites from mathematics. Even at the higher end, it seems that you pick up prerequisites on the fly. Most books used by competitive programmers, like CLRS or this book, tend to make themselves self-sufficient in mathematical requirements, which is why a book trying to serve as a combinatorial prerequisite for competitive programming and nothing more is simply unlikely to exist.

I think this book by Stasys Jukna can be treated as an encyclopaedia for everything a CS undergrad may need to know, where they read selected chapters based on their requirements.

$\endgroup$
1
  • $\begingroup$ +1 for Jukna, the single most comprehensive text for the combinatorics of computer science. It covers pretty much everything that you could possibly need. $\endgroup$ Apr 14 at 22:41
4
$\begingroup$

During my Masters, I used Discrete Mathematics for Computer Scientists and Mathematicians by J. L. Mott, A. Kandel, and T. P. Baker.

Fantastic book. You can read few pages and see if it suits you.

$\endgroup$
4
$\begingroup$

Concrete Mathematics, which has already been mentioned in a comment, is outstanding.

And since you are interested in computer science, you might consider An Introduction To The Analysis of Algorithms by Robert Sedgewick and Phillippe Flajolet. The book is noteworthy for its coverage of generating functions (which are an important tool in combinatorics) and their applications.

$\endgroup$
4
$\begingroup$

You may take a look at
Discrete Mathematics - Elementary and Beyond
by László Lovász, József Pelikán, and Katalin Vesztergombi (third and first author are a married couple)
2003, Springer Undergraduate Texts in Maths,
written in a conversational tune without neglecting rigour.

It focuses on Combinatorics and Graph theory, and the authors explicitly aim at undergraduate mathematics and computer science students.
Sections like "How to store Trees", "How to find a Perfect matching", or the last chapter "A Glimpse of Complexity and Cryptography" are pointing towards algorithmics.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .