# Young tableaux and Gelfand-Tsetlin patterns

young_tableaux gelfand_tsetlin_patterns

One can convert a (semi-standard) Young tableau $$T$$ to a Gelfand-Tsetlin pattern $$(\lambda^k_j)_{1 \le j \le k}$$ in the following way:

$\lambda^k_j = \text{number of entries }\le k\text{ in the }j\text{th row of }T.$

This map is invertible: given GT pattern $$(\lambda^k_j)$$, one can reconstruct the corresponding tableau by putting $$\lambda^k_j - \lambda^{k - 1}_j$$ of $$k$$s and $$\lambda^j_j$$ of $$j$$s in the $$j$$th row.

Example.

$\begin{array}{ccccc} 1&2&2&3&3\\2&3&4&\\4&&& \end{array}$

corresponds to

$(\lambda^1_1, \lambda^2_1, \lambda^2_2, \lambda^3_1, \lambda^3_2, \lambda^3_3, \lambda^4_1, \lambda^4_2, \lambda^4_3, \lambda^4_4) = (1, 3, 1, 5, 2, 0, 5, 3, 1, 0)$

$$\square$$

The shape of the Young tableau is thus the bottom row of the Gelfand Tsetlin pattern. In the above example it is $$(5, 3, 1)$$.

For example here are sample Python codes of the two conversions:

def Tableau2GT(T):
if T == []:
return []
l = max([max(i) for i in T])
Lambda = [[0] * (k + 1) for k in range(l)]
for j, row in enumerate(T):
for i in range(j, l):
Lambda[i][j] = sum([1 if e <= i + 1 else 0 for e in row])
return Lambda

def GT2Tableau(Lambda):
T = []
l = len(Lambda)
for j in range(l):
row = [j + 1] * Lambda[j][j]
for k in range(j + 1, l):
row += [k + 1] * (Lambda[k][j] - Lambda[k - 1][j])
T += [row]
T += [[]]
return T[:T.index([])]