Изменения

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

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

16 байт убрано, 05:49, 18 ноября 2011
Нет описания правки
*'''n''' {{---}} количество мест в комбинаторном объекте (например, битовый вектор длины <tex>n</tex>)
*'''k''' {{---}} количество различных элементов, которые могут находиться в данном комбинаторном объекте. Например, для Для битового вектора <tex>k=2</tex> : возможны только 0 и 1. Все элементы занумерованы в лексикографическом порядке, начиная с 1.
Комбинаторные объекты занумерованы с 0. Переход к нумерации с единицы можно сделать с помощью одной операции декремента перед проходом алгоритма.
'''for''' i = 1 '''to''' n '''do'''
'''}'''
Данный алгоритм работает за <tex>O(n^2)</tex>, так как в случае перестановок <tex>n=k</tex>. Мы можем посчитать все '''n!''' за <tex>O(n) </tex>. Асимптотику можно улучшить
до <tex>O(n \log {n}) </tex>, если использовать структуры данных(например, декартово дерево по неявному ключу), которые позволяют искать <tex>i</tex>-ый элемент множества и удалять элемент множества за <tex>O( \log {n}) </tex>. Например декартово дерево по неявному ключу.
== Битовые вектора ==
Анонимный участник

Навигация