# Combinatorial algorithms

Combinatorial algorithms are algorithms that deal with combinatorial structures, which are sets, ordered n-tuples, and any structures that can be built from them, like graphs.

Combinatorial algorithms include algorithms for:

• Generation: List all structures of a given type, such as combinations and permutations, connected components of a graph
• Search: Find at least one structure with a given property
• Optimisation and approximation algorithms can be used to solve search problems
• Optimisation methods for search problems include exhaustive search, backtracking, branch and bound, and dynamic programming
• Approximation methods include greedy algorithms