Interactive simulation of Aztec diamond domino tilings sampled via the q-deformed Robinson-Schensted-Knuth correspondence. Adjust diamond size n, q-Whittaker parameter q, and Schur specializations x,y. View modes include dominoes, dimer, double dimer loops, height fluctuations, and 3D stepped surface.
About the Simulation
q-RSK Sampling generates random domino tilings of the Aztec diamond using the q-deformed Robinson-Schensted-Knuth correspondence. At q=0, this gives uniform tilings; as q approaches 1, tilings concentrate near "frozen" configurations.
Parameters:
- n: Size of the Aztec diamond
- q: q-Whittaker parameter (0 ≤ q < 1). q=0 gives Schur measure; q>0 gives q-Whittaker measure
- x, y: Schur process specialization. Uniform (all 1s) gives standard measure; other weights create non-uniform sampling
- High precision: Uses 50-digit arithmetic (slower but stable for q close to 1)
The simulation outputs interlacing partitions that encode the domino tiling.
Visualization Modes:
- Dominoes: Standard flat tiling view with four colors for domino types.
- Dimer: Displays the underlying matching on the dual graph as edges.
- Double Dimer: Superimposes two independent samples to form loops. Includes a Min Loop Size filter.
- Fluctuations: Visualizes height difference between two samples, approximating the Gaussian Free Field.
- 3D: Renders the tiling as a stepped surface in 3D space. Supports rotation, perspective/orthographic toggle, and multiple visual presets.
View Options:
- Rotate 45°: Rotate the canvas view for alternative perspective.
- Particles: Show lattice points forming the Schur/q-Whittaker process.
- Color Palettes: Multiple palettes plus custom color pickers.
- Canvas/SVG: Toggle between renderers.
Export: PNG and PDF export with adjustable quality.
References:
- arXiv:1504.00666 — K. Matveev, L. Petrov, q-randomized Robinson-Schensted-Knuth correspondences and random polymers
- arXiv:1407.3764 — D. Betea et al., Perfect sampling algorithms for Schur processes
1^4 = 1,1,1,1
Frozen-curve formulas (black = q→1 triangle, red = finite-q arc)
Coordinates. In the rotated unit-square chart $(u,v) = \left(\frac{hx+hy+R}{2R}, \frac{hx-hy+R}{2R}\right)$ of the Aztec diamond $|hx|+|hy|\le R$, with $R = N + \tfrac12$, set $\kappa = \mathbf m$ and $c = -\mathbf x$. The finite-q arc is plotted after the $x = y$ reflection $(\kappa, c)\mapsto (\kappa, 1-c)$ (equivalently $hx\leftrightarrow hy$) so that it hugs the south (yellow) frozen lobe; the q→1 triangle is drawn after the antipodal flip $(\kappa, c)\mapsto (1-\kappa, 1-c)$ so it lands on the same half as the visible frozen lobe.
q→1 triangle (eq. (x9) of Aztec_sym_Vadim.tex): in the $t\to 1$ limit, particles at section $\kappa$ fill the interval
$$ c \in \bigl[\,p(1-\kappa),\; p(1-\kappa) + \kappa\,\bigr], \qquad p = \frac{\alpha\beta}{1+\alpha\beta}. $$
Two edges $u_L(\kappa) = p(1-\kappa)$ and $u_R(\kappa) = p(1-\kappa)+\kappa$ sweep the triangle.
Finite-q arc (q-Whittaker arctic curve, double saddle of the exponent in section 5 of Aztec_sym_Vadim.tex, specialised to $a_i=\alpha$, $b_j=\beta$):
$$f(w) = \kappa \log (w/\alpha;\,q)_\infty + (1-\kappa)\log(1+w\beta) - c\log w.$$
Solving $f'(w)=f''(w)=0$ for $(\kappa, c)$:
$$\kappa(w) = \frac{\alpha\beta}{\alpha\beta + \bigl(S_1 + \tfrac{w}{\alpha}\,S_2\bigr)(1+w\beta)^2},\qquad
c(w) = (1-\kappa)\,\frac{w\beta}{1+w\beta} - \kappa\,\frac{w}{\alpha}\, S_1,$$
$$S_1 = \sum_{k\ge 0} \frac{q^k}{1 - (w/\alpha) q^k},\qquad
S_2 = \sum_{k\ge 0} \frac{q^{2k}}{\bigl(1 - (w/\alpha) q^k\bigr)^2}.$$
The curve is traced by sweeping $w$ over the real line; poles of $S_1, S_2$ at $w = \alpha\, q^{-k}$ partition the sweep into branches, and the parametrization singularity at $w = -1/\beta$ pins the curve to $\kappa=1$.
At $\alpha=\beta=1$, $q=0$ this degenerates to the standard inscribed arctic circle $(\kappa - \tfrac12)^2 + (c-\tfrac12)^2 = \tfrac14$.
Partitions forming the Schur/q-Whittaker process
code
(note: parameters in the code might differ from the ones in simulation results below)-
Link to code(This simulation is interactive, written in JavaScript) -
Link to code(C++ source code (compiled to WebAssembly))