Получение номера об объекту и объекта по номеру
Определение
Получение объекта по номеру n- это нахождение объекта, который стоит n-ым в лексикографическом порядке.
Получение номера по объекту - это нахождение номера объекта, стоящего в лексикографическом порядке.
Алгоритм
Нахождение номера по объекту:
, где это кол-во возможных объектов длины , начинающихся на элемент , - длина данного объекта.
Нахождение объекта по номеру:
Пусть
- длина объекта. Идем по порядку по всем элементам объекта ( - позиция элемента в объекте). Каждый элемент будет являться максимально возможным. Для кол-во возможных объектов , начинающихся на элемент и имеющих длину , не превосходит . С каждым шагом уменьшается на .
Примеры
Алгоритм вычисления по перестановке ее номера. Нам задана произвольная перестановка из N чисел. Пусть x - ее первое число. Тогда все перестановки с первыми числами от 1 до x-1 находятся перед нашей. Их количество num равно (x-1)·(N-1)!. Осталось узнать номер перестановки из N-1 числа, получающейся из нашей выбрасыванием числа x, и прибавить этот номер к num
Алгоритм получения перестановки по ее номеру реализуется аналогично: сначала определяем первую цифру перестановки, деля номер на (N-1)! и прибавляя 1, затем вторую, деля остаток от предыдущего деления на (N-2)!, и т.д.