2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Мультиперестановки
Сообщение04.01.2009, 05:59 
Сколько всего есть матриц, состоящих только из нулей и единиц, размера n*n, таких, что в каждой строке ровно k единиц и в каждом столбце ровно k единиц? (k<=n). Указать конструктивный способ перебора этих матриц.

 
 
 
 
Сообщение04.01.2009, 06:58 
Аватара пользователя
См. A008300

Сгенерировать такие матрицы можно, заведя массив сумм в столбцах, изначально равных $k$, и в рекурсивном цикле по строкам генерировать все сочетания столбцов с ненулевыми значениями сумм по $k$, уменьшая значения сумм в столбцах из сочетания на 1.

На PARI/GP примерная программка выглядит так (осуществляется только подсчет):
Код:
{ T(n,k) = local(m);
m=vector(n,i,k);
count=0;
genall(m,k);
count
}

{ genall(m,k) = local(m2,S);
S=select(j->m[j],vector(#m,j,j));
if(#S==0,count++;return);
forvec(v=vector(k,i,[1,#S]),
m2=m;
for(j=1,k,
  t=S[v[j]];
  m2[t]--;
);
genall(m2,k)
,2)
}

 
 
 
 
Сообщение04.01.2009, 07:24 
maxal писал(а):
См. http://www.research.att.com/~njas/sequences/A008300

Сгенерировать такие матрицы можно, заведя массив сумм в столбцах, изначально равных $k$, и в рекурсивном цикле по строкам генерировать все сочетания столбцов с ненулевыми значениями сумм по $k$, уменьшая значения сумм в столбцах из сочетания на 1.

На PARI/GP примерная программка выглядит так (осуществляется только подсчет):
Код:
{ T(n,k) = local(m);
m=vector(n,i,k);
count=0;
genall(m,k);
count
}

{ genall(m,k) = local(m2,S);
S=select(j->m[j],vector(#m,j,j));
if(#S==0,count++;return);
forvec(v=vector(k,i,[1,#S]),
m2=m;
for(j=1,k,
  t=S[v[j]];
  m2[t]--;
);
genall(m2,k)
,2)
}


Спасибо.
Что же, получается, нельзя изящно посчитать без использования машины количество таких матриц?

 
 
 
 
Сообщение04.01.2009, 08:39 
Аватара пользователя
lexus c. в сообщении #173708 писал(а):
Что же, получается, нельзя изящно посчитать без использования машины количество таких матриц?

Смотря, что значит "изящно". Вот, например, цитата из "Advanced Combinatorics" (стр. 235-236) с кое-какими формулами для $k=2$ и $k=3$:

Изображение

 
 
 
 
Сообщение04.01.2009, 08:46 
maxal писал(а):
lexus c. в сообщении #173708 писал(а):
Что же, получается, нельзя изящно посчитать без использования машины количество таких матриц?

Смотря, что значит "изящно". Вот, например, цитата из "Advanced Combinatorics" (стр. 235-236) с кое-какими формулами для $k=2$ и $k=3$:

Изображение

Спасибо!

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group