Изменения

Перейти к: навигация, поиск

Получение номера по объекту

40 байт добавлено, 02:45, 13 декабря 2011
Нет описания правки
*'''numOfObject''' {{---}} искомый номер комбинаторного объекта.
*'''a[1..n]''' {{---}} данный комбинаторный обьект.
*'''d[i][j]''' - (количество комбинаторных объектов с префиксом от 1 до <tex>i-1 </tex> равным данному и с <tex>i</tex>-м элементом равным <tex>j</tex>)
numOfObject = 0
'''for''' i = 1 '''to''' n '''do''' ''// перебираем элементы комбинаторного объекта''
'''if''' элемент j можно поставить на i-e место
'''then''' numOfObject += d[i][j]
Сложность алгоритма {{---}} <tex>O(nk) </tex>. Здесь , где <tex>k</tex> - количество различных элементов, которые могут находиться в данном комбинаторном объекте. Для битового вектора <tex>k=2</tex>: возможны только 0 и 1. Количества комбинаторных объектов с заданными префиксами считаются известными, и их подсчет в сложности не учитывается.
Приведем примеры способов получения номеров некоторых из комбинаторных объектов по данному объекту.
== Перестановки ==
Рассмотрим алгоритм получения номера в лексикографическом порядке по данной перестановки размера <tex>n</tex>.
*'''P[1..n]''' {{---}} количество перестановок данного размера размера.
*'''a[1..n]''' {{---}} данная перестановка.
Анонимный участник

Навигация