Category: Combinatorial algorithms

Garsia–Wachs algorithm
The Garsia–Wachs algorithm is an efficient method for computers to construct optimal binary search trees and alphabetic Huffman codes, in linearithmic time. It is named after Adriano Garsia and Michel
Bit-reversal permutation
In applied mathematics, a bit-reversal permutation is a permutation of a sequence of items, where is a power of two. It is defined by indexing the elements of the sequence by the numbers from to , rep
Fisher–Yates shuffle
The Fisher–Yates shuffle is an algorithm for generating a random permutation of a finite sequence—in plain terms, the algorithm shuffles the sequence. The algorithm effectively puts all the elements i
Heap's algorithm
Heap's algorithm generates all possible permutations of n objects. It was first proposed by B. R. Heap in 1963. The algorithm minimizes movement: it generates each permutation from the previous one by
Bender–Knuth involution
In algebraic combinatorics, a Bender–Knuth involution is an involution on the set of semistandard tableaux, introduced by , pp. 46–47) in their study of plane partitions.
Boltzmann sampler
A Boltzmann sampler is an algorithm intended for random sampling of combinatorial structures. If the object size is viewed as its energy, and the argument of the corresponding generating function is i
Kernighan–Lin algorithm
The Kernighan–Lin algorithm is a heuristic algorithm for finding partitions of graphs.The algorithm has important practical application in the layout of digital circuits and components in electronic d
Greedy algorithm
A greedy algorithm is any algorithm that follows the problem-solving heuristic of making the locally optimal choice at each stage. In many problems, a greedy strategy does not produce an optimal solut
Additive combinatorics
Additive combinatorics is an area of combinatorics in mathematics. One major area of study in additive combinatorics are inverse problems: given the size of the sumset A + B is small, what can we say
Lemke–Howson algorithm
The Lemke–Howson algorithm is an algorithm that computes a Nash equilibrium of a bimatrix game, named after its inventors, Carlton E. Lemke and .It is said to be "the best known among the combinatoria
Lin–Kernighan heuristic
In combinatorial optimization, Lin–Kernighan is one of the best heuristics for solving the symmetric travelling salesman problem. It belongs to the class of local search algorithms, which take a tour
Robinson–Schensted–Knuth correspondence
In mathematics, the Robinson–Schensted–Knuth correspondence, also referred to as the RSK correspondence or RSK algorithm, is a combinatorial bijection between matrices A with non-negative integer entr
Jeu de taquin
In the mathematical field of combinatorics, jeu de taquin is a construction due to Marcel-Paul Schützenberger which defines an equivalence relation on the set of skew standard Young tableaux. A jeu de
Picture (mathematics)
In combinatorial mathematics, a picture is a bijection between skew diagrams satisfying certain properties, introduced by in a generalization of the Robinson–Schensted correspondence and the Littlewoo
Criss-cross algorithm
In mathematical optimization, the criss-cross algorithm is any of a family of algorithms for linear programming. Variants of the criss-cross algorithm also solve more general problems with linear ineq
SMAWK algorithm
The SMAWK algorithm is an algorithm for finding the minimum value in each row of an implicitly-defined totally monotone matrix. It is named after the initials of its five inventors, Peter Shor, Shlomo
Tompkins–Paige algorithm
The Tompkins–Paige algorithm is a computer algorithm for generating all permutations of a finite set of objects.
Loopless algorithm
In computational combinatorics, a loopless algorithm or loopless imperative algorithm is an imperative algorithm that generates successive combinatorial objects, such as partitions, permutations, and
Cycle detection
In computer science, cycle detection or cycle finding is the algorithmic problem of finding a cycle in a sequence of iterated function values. For any function f that maps a finite set S to itself, an
Reverse-search algorithm
Reverse-search algorithms are a class of algorithms for generating all objects of a given size, from certain classes of combinatorial objects. In many cases, these methods allow the objects to be gene
Steinhaus–Johnson–Trotter algorithm
The Steinhaus–Johnson–Trotter algorithm or Johnson–Trotter algorithm, also called plain changes, is an algorithm named after Hugo Steinhaus, Selmer M. Johnson and Hale F. Trotter that generates all of
Robinson–Schensted correspondence
In mathematics, the Robinson–Schensted correspondence is a bijective correspondence between permutations and pairs of standard Young tableaux of the same shape. It has various descriptions, all of whi
Map folding
In the mathematics of paper folding, map folding and stamp folding are two problems of counting the number of ways that a piece of paper can be folded. In the stamp folding problem, the paper is a str