Catalan Stack Output Permutations
Count the permutations one stack can emit and expose the first impossible pattern.
By Riano · Published · Updated · Report a correction
Catalan Stack Output Permutations
In computer science, a stack is a fundamental data structure with last-in, first-out (LIFO) semantics. When an increasing sequence of elements is fed into a stack, only certain output permutations can be generated using a sequence of push and pop operations. These reachable permutations are closely tied to Catalan numbers.
Worked Example
Consider an input sequence of size n = 3: 1, 2, 3. We want to determine if the output permutation 3, 1, 2 is reachable. Because the input strictly increases, we must greedily push elements onto the stack until the next needed output element is at the top of the stack.
- We need to output
3. The next available input is1. Push1. - The top of the stack is
1, not3. Push2. - The top of the stack is
2, not3. Push3. - The top of the stack is
3. We pop3to the output. - Next, we need to output
1. The top of the stack is2, and there are no more input elements to push.
Input: [] Stack: [1, 2] Output: [3] Target next: 1
Since the top of the stack (2) does not match the target element (1) and we cannot bypass it, the target permutation 3, 1, 2 is impossible to generate. It requires avoiding the 3-1-2 pattern in stack-sortable permutations.
Experiment
The Catalan Stack Output Permutations interactive module allows varying the sequence size up to 5 and testing specific targets like "Obstructed" (e.g., 3, 1, 2 for n=3) versus "Decreasing" (3, 2, 1). The visualization shows a greedy tracing process that attempts to match the target permutation step-by-step.
- Open the interactive visualization.
- Set the Size control to
3and the Target control toObstructed. - Observe that the trace animation fails and the Reachability reads
Blocked. - Change the Target control to
Decreasingand observe it becomesReachable.
It also performs an exact independent enumeration of all valid push/pop operation sequences, mapping each sequence to its resulting output permutation. By counting the unique reachable outputs, we observe that the number of reachable permutations exactly matches the Catalan number C_n = binom(2n, n) / (n + 1), which is much smaller than the total number of permutations n!.
Limitations
The greedy trace logic relies on knowing the specific target output permutation in advance to guide the push/pop decisions. Furthermore, the enumeration uses a naive recursive search over all valid operation sequences. This approach is computationally limited for large n due to exponential growth. Therefore, it is constrained to sizes n ≤ 5 in the interactive tool.
References
For a comprehensive overview of combinatorial structures counted by Catalan numbers, including stack-sortable permutations, refer to Richard P. Stanley's work: https://math.mit.edu/~rstan/ec/catalan.pdf.
Experience it interactively
Adjust parameters, observe in real time, and build deep intuition with Riano’s interactive Catalan Stack Output Permutations module.
Try Catalan Stack Output Permutations on Riano →