Допустим, вы рассматриваете комбинации k
символов из алфавита A = {a_0, a_1, ..., a_n}
(то есть с n
символами и a_i < a_j
лексикографически, если i < j
).В вашем примере у вас есть алфавит из 4 символов A = {1, 2, 3, 4}
и комбинаций k = 3
символов.
Затем комбинация c = [a_i1, a_i2, ..., a_ik]
может быть уникально закодирована как I(c) = i1 + n*i2 + (n^2)*i3 + ... + (n^(k-1))*ik
.Индекс, который вы ищете: F(c) = I(c) + 1
.
Давайте посмотрим, как это работает для вашего примера:
F([1,1,1]) = I([1,1,1]) + 1 = 0 + 4*0 + (4^2)*0 + 1 = 1
F([2,1,1]) = I([2,1,1]) + 1 = 1 + 4*0 + (4^2)*0 + 1 = 2
F([3,1,1]) = I([2,1,1]) + 1 = 2 + 4*0 + (4^2)*0 + 1 = 3
F([4,1,1]) = I([2,1,1]) + 1 = 3 + 4*0 + (4^2)*0 + 1 = 4
...
F([2,1,3]) = I([2,2,3]) + 1 = 1 + 4*1 + (4^2)*2 + 1 = 38
...
F([1,1,4]) = I([1,1,4]) + 1 = 0 + 4*0 + (4^2)*3 + 1 = 49
...
F([4,4,4]) = I([4,4,4]) + 1 = 3 + 4*3 + (4^2)*3 + 1 = 64