Найти индекс упорядоченного набора из N элементов
Описание проблемы: набор списков из N целых чисел i1,i2,....,iN
с 0<= i1<=i2<=i3<=....<=iN <=M
, создается, начиная с одного целого числа 0<=i1<=M
и многократно добавляя одно целое число, которое больше или равно последнему добавленному целому числу. При добавлении последнего целого числа для получения окончательного набора списков индекс запускается, начиная с 0 to BinomialC[M+N,N)]-1
,
For example, for M=3, i1=0,1,2,3
так что списки
{0},{1},...,{3}.
Добавление другого целого числа i2>=i1
приведет к
{0,0},{0,1},{0,2},{0,3},
{1,1},{1,2},{1,3},
{2,2},{2,3}
{3,3}
с индексами
0,1,2,3,
4,5,6,
7,8,
9.
Этот индекс может быть представлен в терминах i1,i2,...,iN и M. Если бы условия>= не присутствовали, то это было бы просто i1*(M+1)^(N-1)+i2*(M+1)^(N-2)+...+iN*(M+1)^(N-N)
, Но, в случае выше, есть отрицательный сдвиг в индексе из-за ограничений. Например, N=2, сдвиг равен -i1(i1+1)/2, а индекс равен i = i1*(M+1)^1 + i2*(M+1)^0 -i1(i1+1)/2.
Вопрос: Кто-нибудь, особенно из математики, знает, как написать индекс для общего случая N элементов? или только последнее выражение? Любая помощь будет оценена! Спасибо!