Получение номера об объекту и объекта по номеру — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Примеры)
Строка 14: Строка 14:
  
 
== Примеры ==
 
== Примеры ==
'''Алгоритм вычисления по перестановке ее номера'''. Нам задана произвольная перестановка из <tex>N</tex> чисел. Пусть <tex>x</tex> - ее первое число. Тогда все перестановки с первыми числами от 1 до <tex>x-1</tex> находятся перед нашей. Их количество <tex>s</tex> равно <tex>(x-1)·(N-1)!</tex>. Осталось узнать номер перестановки из <tex>N-1</tex> числа, получающейся из нашей выбрасыванием числа <tex>x</tex>, и прибавить этот номер к <tex>s</tex>
 
  
'''Алгоритм получения перестановки по ее номеру''' реализуется аналогично: сначала определяем первую цифру перестановки, деля номер на <tex>(N-1)!</tex> и прибавляя 1, затем вторую, деля остаток от предыдущего деления на <tex>(N-2)!</tex>, и т.д.
+
'''Вычислим по перестановке ее номер.''' Возьмем перестановку из 4 чисел: 3124. Перестановки, начинающиеся на числа 1, 2 находятся перед нашей. Их количество: 2*(4-1)!=12. Следовательно минамально возможный номер нашей перестановки: 12+1=13. Следующий элемент перестановки - 1, минимально возможный, следовательно номер перестановки не поменялся. 3-ий элемент перестановки - 2, т.к. число 1 уже использовалось ранее в перестановке, то число 2 - минимально возможный элемент, и он также не меняет номер перестановки. Последний элемент не играет роли. Следовательно номер нашей перестановки 13.  
  
 +
'''Аналогично по номеру получим перестановку.''' Возьмем номер перестановки из 4 элементов: 13. Определим первую цифру перестановки, разделим нацело номер на (4-1)! и прибавим 1: x1 = 13 div (3!) + 1 = 3. Остаток от деления: 1. Аналогично найдем 2-й элемент: х2 = 1 div (2!) + 1 = 1. Остаток от деления: 1. 3-й элемент: х3 = 1 div (1!)+1 = 1. Но т.к. число 1 уже использовалось в перестановке, возьмем следующий в лексикографическом порядке элемент 2, следовательно х3 = 2. 4-ый элемент получается исключением х4 = 4. Получаем перстановку: 3124.
  
 
== Ссылки ==
 
== Ссылки ==
  
 
[http://www.chasolimp.de/practic_info63.htm Получение объекта по номеру и номера по объекту]
 
[http://www.chasolimp.de/practic_info63.htm Получение объекта по номеру и номера по объекту]

Версия 23:16, 15 января 2011

Определение

Получение объекта по номеру n- это нахождение объекта, который стоит n-ым в лексикографическом порядке.

Получение номера по объекту - это нахождение номера объекта, стоящего в лексикографическом порядке.

Алгоритм

Нахождение номера по объекту:

[math] n = \sum_{i=1}^l s_{a_i-1}[/math], где [math]s_m[/math] это кол-во возможных объектов длины [math]n-i+1[/math], начинающихся на элемент [math]m[/math], [math]l[/math] - длина данного объекта.

Нахождение объекта по номеру:

Пусть [math]l[/math] - длина объекта. Идем по порядку по всем элементам объекта ([math]i[/math] - позиция элемента в объекте). Каждый элемент [math]p[/math] будет являться максимально возможным. Для [math]p[/math] кол-во возможных объектов [math]s[/math], начинающихся на элемент [math]p[/math] и имеющих длину [math]l-i+1[/math], не превосходит [math]n[/math]. С каждым шагом [math]n[/math] уменьшается на [math]s[/math].

Примеры

Вычислим по перестановке ее номер. Возьмем перестановку из 4 чисел: 3124. Перестановки, начинающиеся на числа 1, 2 находятся перед нашей. Их количество: 2*(4-1)!=12. Следовательно минамально возможный номер нашей перестановки: 12+1=13. Следующий элемент перестановки - 1, минимально возможный, следовательно номер перестановки не поменялся. 3-ий элемент перестановки - 2, т.к. число 1 уже использовалось ранее в перестановке, то число 2 - минимально возможный элемент, и он также не меняет номер перестановки. Последний элемент не играет роли. Следовательно номер нашей перестановки 13.

Аналогично по номеру получим перестановку. Возьмем номер перестановки из 4 элементов: 13. Определим первую цифру перестановки, разделим нацело номер на (4-1)! и прибавим 1: x1 = 13 div (3!) + 1 = 3. Остаток от деления: 1. Аналогично найдем 2-й элемент: х2 = 1 div (2!) + 1 = 1. Остаток от деления: 1. 3-й элемент: х3 = 1 div (1!)+1 = 1. Но т.к. число 1 уже использовалось в перестановке, возьмем следующий в лексикографическом порядке элемент 2, следовательно х3 = 2. 4-ый элемент получается исключением х4 = 4. Получаем перстановку: 3124.

Ссылки

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