The Algorithm Design Manual
About the Book
Programming Challenges

The Stony Brook Algorithm Repository

Steven Skiena
Stony Brook University
Dept. of Computer Science


Combinatorica is a collection of over 450 algorithms for discrete mathematics and graph theory written in Mathematica. These routines have been designed to work together, enabling one to experiment with discrete structures and build prototype applications. Combinatorica has been widely used for both research and education.

Although (in my totally unbiased opinion) Combinatorica is more comprehensive and better integrated than other libraries of combinatorial algorithms, it is not the fastest such system available. Credit for all of these properties is largely due to Mathematica, which provides a very high-level, functional, interpreted, and thus inefficient programming language. Combinatorica is best for finding quick solutions to small problems, and (if you can read Mathematica code) as a terse exposition of algorithms for translation into other languages.

The latest version of Combinatorica was codeveloped by Sriram Pemmaraju and Steven Skiena, and is best described in our book Computational Discrete Mathematics: Combinatorics and Graph Theory with Mathematica, Cambridge University Press, 2003.

Combinatorica is included with the standard Mathematica distribution in the directory Packages/DiscreteMath/Combinatorica.m . The latest version can also be obtained the official website, along with many Combinatorica-related resources.

  • Download Files (local site)
  • Combinatorica distribution

    Recommended Books

    Computational Discrete Mathematics: Combinatorics and Graph Theory with Mathematica by S. Pemmaraju and S. Skiena

    Problem Links

    Generating Graphs (8)
    Generating Partitions (7)
    Generating Permutations (7)
    Generating Subsets (7)
    Drawing Graphs Nicely (6)
    Drawing Trees (6)
    Graph Data Structures (6)
    Determinants and Permanents (4)
    Edge Coloring (4)
    Edge and Vertex Connectivity (4)
    Transitive Closure and Reduction (4)
    Vertex Cover (4)
    Connected Components (3)
    Eulerian Cycle / Chinese Postman (3)
    Graph Isomorphism (3)
    Hamiltonian Cycle (3)
    Matching (3)
    Minimum Spanning Tree (3)
    Network Flow (3)
    Shortest Path (3)
    Topological Sorting (3)
    Traveling Salesman Problem (3)
    Vertex Coloring (3)
    Longest Common Substring (2)
    Planarity Detection and Embedding (2)
    Sorting (2)
    Clique (1)

    This page last modified on 2008-07-10 .