---
title: Full Permutations in Combinatorics
url: https://www.emergentmind.com/topics/full-permutations
type: topic
---

# Full Permutations in Combinatorics

Searching arXiv for papers related to "full permutations" and adjacent terminology.
The expression **full permutations** is not fully standardized across the combinatorics literature. In algorithmic generation, it commonly denotes permutations of *full length*—that is, all distinct reorderings of a multiset of size \(n\). In other settings, the same adjective is specialized: a permutation matrix may be called **full** when bootstrap percolation fills the entire \(n\times n\) board, and a permutation polynomial may be called **full-cycle** when it induces a single cycle on \(\mathbb{F}_p\). Across these usages, the common thread is maximality with respect to the ambient structure: full length, full growth, or full cyclic orbit [1009.4214] [2508.02030] [1005.2019].

## 1. Terminological scope

In the algorithmic setting of multiset rearrangements, the relevant problem is to generate all **full permutations** of length \(n\), meaning all distinct reorderings of a multiset
\[
\mathcal{L}=[\,l_1,l_2,\ldots,l_n\,].
\]
If the multiset contains \(p\) distinct values \(\{o_1,\dots,o_p\}\), with multiplicities \(m_1,\dots,m_p\) satisfying \(\sum_{i=1}^p m_i=n\), then the number of distinct full permutations is
\[
\frac{n!}{m_1!\,m_2!\,\cdots\,m_p!}\,.
\]
This is the sense used in the combinatorial-generation framework of Rohl’s algorithm and its variants [1009.4214].

A different, structurally richer use appears in bootstrap percolation on permutation matrices. There, a permutation \(\pi\in S_n\) is called **full** if, starting from the permutation matrix of \(\pi\), the percolation process ends with one single \(n\times n\) block of \(1\)’s; equivalently, every zero eventually mutates [2508.02030]. This definition is not about exhaustive rearrangement of symbols, but about a dynamical property of the matrix representation of a permutation.

A third use occurs in finite-field permutation polynomials. A **full-cycle** permutation polynomial is one whose induced permutation on \(\mathbb{F}_p\) is a single \(p\)-cycle. In that setting, “full” modifies the cycle structure rather than the support or matrix growth [1005.2019].

This suggests that the phrase is best treated as a family of context-dependent technical terms rather than a single invariant notion.

## 2. Full permutations as distinct reorderings of multisets

For a multiset input, the basic objective is to output each distinct arrangement exactly once. Rohl’s algorithm does this by separating the distinct values from their multiplicities. It maintains an array \(\mathcal{O}[1\ldots p]\) of distinct values in some imposed order, a count array `Count[1..p]` with
\[
Count[i]=m_i,
\]
and an output array \(R[1\ldots n]\) that is filled recursively [1009.4214].

The recursive procedure chooses, at each position \(pos\), one of the \(p\) distinct values whose remaining count is positive, writes it into \(R[pos]\), decrements the corresponding count, recurses, and then restores the count on backtracking. The construction is therefore multiplicity-aware from the outset, so duplicate outputs never arise from repeated symbols [1009.4214].

The correctness argument has three components. **Validity** follows because a value \(o_i\) is used only when \(Count[i]\ge1\), so no symbol can appear more times than its multiplicity. **Uniqueness** follows because each recursive path is determined by the sequence of indices chosen, and different such paths yield different outputs. **Completeness** follows because the recursion explores every feasible sequence of multiplicity-respecting choices until \(pos>n\), at which point a full assignment is printed [1009.4214].

The worked example
\[
\mathcal{L}=[A,B,A,C],\qquad \mathcal{O}=[A,B,C]
\]
has initial count vector \([2,1,1]\) and produces \(12\) distinct full permutations, matching
\[
\frac{4!}{2!1!1!}=12.
\]
The resulting outputs include \(AABC\), \(AACB\), \(ABAC\), and continue through \(CBAA\) [1009.4214].

## 3. Generation frameworks on ordinary permutations

When repetitions are absent, full permutations coincide with the symmetric group \(S_n\). In the permutation-language framework, the alphabet is
\[
\Sigma_n=\{1,2,\dots,n\},
\]
and a permutation \(\pi\in S_n\) is encoded in one-line notation as the word
\[
\pi=a_1a_2\cdots a_n\in \Sigma_n^n
\]
with \(\{a_1,\dots,a_n\}=[n]\) and no repetition. The associated permutation language is
\[
L_n:=S_n=\{a_1a_2\cdots a_n\in \Sigma_n^n\mid \{a_1,\dots,a_n\}=[n]\}.
\]
This furnishes a formal grammar for recursively generating all permutations via insertion and removal operators [1906.06069].

The insertion operators are
\[
c_i:S_{n-1}\to S_n,\qquad c_i(a_1\cdots a_{n-1})=a_1\cdots a_{i-1}\cdot n\cdot a_i\cdots a_{n-1},
\]
and the removal operator is
\[
p:S_n\to S_{n-1},\qquad p(a_1\cdots a_n)=a_1\cdots a_{j-1}a_{j+1}\cdots a_n,
\]
where \(a_j=n\). These operators support recursive constructions in which permutations of size \(n\) are obtained as children of permutations of size \(n-1\) [1906.06069].

The central generation procedure is the greedy **minimal-jump** algorithm \(J(L_n)\). Starting from the seed \(12\cdots n\), it repeatedly considers values \(v\) from \(n\) down to \(2\), finds the unique minimal jump of value \(v\) that yields an unvisited permutation in the language, and visits the resulting word. Jumps are cyclic rotations of substrings; for ordinary permutations this mechanism specializes to adjacent-transposition Gray coding [1906.06069].

A key transition rule is given explicitly. If
\[
\pi=a_1\cdots a_i\cdots a_j\cdots a_n
\]
with \(a_i=v>a_{i+1},\dots,a_j\), then a right jump by \(j-i\) steps is
\[
\pi' = a_1\cdots a_{i-1}\cdot a_{i+1}\cdots a_j\cdot v\cdot a_{j+1}\cdots a_n.
\]
For \(L_n=S_n\), each jump of the largest feasible value is by exactly one position, so the move is an adjacent swap. In this specialization, the method reproduces the Steinhaus–Johnson–Trotter order [1906.06069].

The implementation uses \(O(n)\) extra space and achieves \(O(1)\) amortized time per new permutation. The space bound comes from storing the current permutation in an array `pos[1…n]` giving positions of values, together with an inversion-count or adjacent-link structure. The time bound follows from maintaining, for each value \(v\), its current neighbors to the left and right, so that only a local neighborhood changes under each swap [1906.06069].

## 4. Hamiltonicity, Gray codes, and structural optimality

The permutation-language framework does more than enumerate \(S_n\); it realizes the enumeration geometrically on the permutahedron. The permutahedron \(\Pi_n\) is the convex hull of the \(n!\) points \((\pi(1),\dots,\pi(n))\in\mathbb{R}^n\) for \(\pi\in S_n\), and its \(1\)-skeleton has vertices \(S_n\) with edges joining permutations that differ by one adjacent transposition [1906.06069].

Because the listing produced by Algorithm \(J\) visits every permutation exactly once and moves only along adjacent-transposition edges, it is a Hamiltonian path on the graph \(G(\Pi_n)\). In polytopal notation,
\[
\Pi_n=\operatorname{conv}\{e_{\pi(1)}+2e_{\pi(2)}+\cdots+n\,e_{\pi(n)}\mid \pi\in S_n\}.
\]
The inductive proof lifts a Hamiltonian path on \(\Pi_{n-1}\) through alternating child sequences \(c_i\), arranged in zigzag order, and then stitches the lifted paths into a single Hamiltonian path on \(\Pi_n\) [1906.06069].

This Hamiltonian-path interpretation supplies what the source explicitly calls a **provable notion of optimality** for the Gray codes obtained from the framework: they translate into walks along the edges of a polytope [1906.06069]. For full permutations in the ordinary \(S_n\) sense, the Gray code is therefore not merely an ordering but a combinatorially and geometrically structured traversal.

The same framework also supports loopless implementation by maintaining an array of active jump directions, yielding worst-case \(O(1)\) per new permutation, and it extends to prefix-rotation Gray codes and pattern-restricted permutation languages [1906.06069]. These extensions show that the exhaustive generation of full permutations sits inside a larger language-theoretic program for combinatorial generation.

## 5. Full permutations under bootstrap percolation

In the bootstrap-percolation setting, the initial object is the permutation matrix of \(\pi\in S_n\): the unique \(1\) in row \(i\) lies in column \(\pi(i)\). A zero cell \((i,j)\) is **mutable** if at least two of its four cardinal neighbors contain \(1\), and when mutable it is changed from \(0\) to \(1\). Iterating this update yields a final configuration \(M_\infty\), and the order of mutations does not affect the terminal outcome [2508.02030].

A permutation is **full** when the percolation ends with one single \(n\times n\) block of \(1\)’s. Equivalently, every zero eventually mutates [2508.02030]. For example, \(213\in S_3\) is full, while \(2\,4\,1\,3\in S_4\) is a no-growth permutation [2508.02030].

The number \(p_n\) of full permutations in \(S_n\) satisfies
\[
p_n=S_{n-1},
\]
where \(S_{n-1}\) is the \((n-1)\)st large Schröder number. The generating function is stated as
\[
R(x)=\sum_{k\ge0}S_kx^k=\frac{1-x-\sqrt{\,1-6x+x^2\,}}{2x},
\]
and
\[
B(t)=\sum_{n\ge1}p_nt^n=t\,R(t).
\]
The Schröder recurrence appears in the form
\[
S_n=S_{n-1}+\sum_{k=0}^{n-1}S_k\,S_{n-1-k},\qquad S_0=1
\]
and is recovered combinatorially from the structure of full permutations [2508.02030].

A central structural tool is indecomposability. A permutation \(\pi=a_1a_2\cdots a_n\) is **indecomposable** if no prefix \(a_1\cdots a_k\) is itself a permutation of \([k]\). Writing \(q_n\) for the number of full indecomposable permutations, the paper proves the **half-lemma**
\[
q_n=\tfrac12\,p_n,\qquad n\ge2.
\]
The proof uses reversal
\[
R:a_1a_2\cdots a_n\longmapsto a_n\cdots a_2a_1,
\]
which preserves fullness and interchanges indecomposable and decomposable full permutations [2508.02030].

This use of “full permutation” differs fundamentally from the generation sense. Here fullness is a global growth property of the matrix under a local mutation rule, not an indication that all positions are occupied by a permutation word of maximal length.

## 6. Related notions: full cycles, containment, and prolificity

A neighboring but distinct notion is the **full-cycle** permutation polynomial over \(\mathbb{F}_p\), with \(p\) an odd prime. Under the isomorphism between the group of permutation polynomials over \(\mathbb{F}_p\) and the symmetric group \(S_p\), a polynomial is full-cycle precisely when it induces a single \(p\)-cycle. Every such polynomial is conjugate to
\[
T(x)=x+1,
\]
and Çeşmelioğlu’s characterization gives an explicit Carlitz-type form for all of them [1005.2019]. This is a cycle-theoretic use of “full,” not a use tied to exhaustive listing or bootstrap growth.

The literature on universal containment raises a different extremal perspective. A word over \([n]\) containing every permutation of length \(n\) as a contiguous factor is an \(n\)-superpermutation, while a word over \(\mathbb{P}\) containing every permutation of length \(n\) as an order-isomorphic subsequence is an \(n\)-superpattern [1810.08252]. These objects are not full permutations themselves; rather, they are ambient words containing all permutations. The distinction matters because “containing all permutations” concerns universal hosts rather than permutation objects with a fullness property.

A further adjacent notion is **\(k\)-prolificity**. A permutation \(\sigma\in S_n\) is \(k\)-prolific if every \((n-k)\)-pattern obtained by deleting \(k\) positions is distinct. The classification theorem states that \(\sigma\) is \(k\)-prolific if and only if its minimum \(L_1\) distance between any two plot-points is at least \(k+2\), and such permutations exist precisely when
\[
n\ge m(k):=k^2/2+2k+1.
\]
Again, this is not a definition of fullness, but it is closely connected to maximal pattern diversity under deletion [1608.06931].

These nearby notions help delimit the concept. A full permutation in one paper may mean a full-length multiset arrangement; in another, a matrix that fills under percolation; in another, a permutation polynomial with one full orbit. The surrounding vocabulary—generation, percolation, cycle structure, or pattern containment—determines the intended meaning.

## 7. Conceptual synthesis

Taken collectively, the arXiv literature shows that **full permutations** is best understood as a context-sensitive term attached to a maximality condition internal to a specific model. In multiset generation, the maximality is positional: one seeks length-\(n\) reorderings using all available symbols with their full multiplicities [1009.4214]. In permutation-language generation over \(S_n\), the same exhaustive scope is encoded as the full language \(L_n=S_n\), with Gray-code orderings, \(O(1)\)-amortized generation, and Hamiltonian paths on the permutahedron [1906.06069]. In bootstrap percolation, the maximality is dynamical and geometric: the permutation matrix grows to the all-\(1\) matrix, and the resulting counting sequence is the large Schröder numbers [2508.02030]. In permutation polynomials, the maximality is orbital: the induced action is one cycle of length \(p\) [1005.2019].

A plausible implication is that the phrase should not be used in isolation when precision matters. For research exposition, the modifier is most informative when anchored explicitly to its ambient structure: **full permutations of a multiset**, **full permutations under bootstrap percolation**, or **full-cycle permutation polynomials**. That practice aligns with the actual distribution of meanings in the literature and reduces the risk of conflating exhaustive generation, dynamical saturation, and cycle-theoretic transitivity.

Source: https://www.emergentmind.com/topics/full-permutations