Combinatorics
Combinatorics
Combinatorics is an area of mathematics primarily concerned with counting, both as a means and an end in obtaining results, and certain properties of finite structures. It is a key skill for solving many algorithm problems.
Fundamental Principles
1. Rule of Sum: If a task can be done in one of n₁
ways AND in one of n₂
ways, where none of the set of n₁
ways is the same as any of the set of n₂
ways, then there are n₁ + n₂
ways to do the task.
2. Rule of Product: If a procedure can be broken down into a sequence of two tasks, and there are n₁
ways to do the first task and for each of these ways, there are n₂
ways to do the second task, then there are n₁ * n₂
ways to do the procedure.
Permutations
A permutation is an arrangement of objects in a specific order.
The number of permutations of n
distinct objects is n!
(n factorial).
The number of arrangements of r
objects taken from n
distinct objects (where order matters) is given by:
P(n, r) = n! / (n-r)!
Combinations
A combination is a selection of items from a set that has distinct members, such that the order of selection does not matter.
The number of ways to choose r
objects from a set of n
distinct objects (where order doesn't matter) is given by the binomial coefficient, read as "n choose r":
C(n, r) = n! / (r! * (n-r)!)
These values can be precomputed using Pascal's Triangle identity: C(n, r) = C(n-1, r-1) + C(n-1, r)
, often in the context of modular arithmetic to prevent overflow.
Applications in Algorithms
- Counting Paths on a Grid: The number of paths from (0,0) to (m,n) moving only right or down is
C(m+n, m)
. - Probability Problems: Calculating probabilities often involves dividing the number of favorable outcomes by the total number of outcomes, both of which are counting problems.
- Dynamic Programming: Many DP state definitions are based on combinatorial properties (e.g., number of ways to make change).
- Binomial Theorem: Used in various mathematical proofs and calculations.
(x+y)ⁿ = Σ C(n,k) * x^(n-k) * y^k