<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%A8%D0%B0%D0%BF%D0%BE%D0%B2%D0%B0%D0%BB%D0%BE%D0%B2+%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B8%D0%BD</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%D0%A8%D0%B0%D0%BF%D0%BE%D0%B2%D0%B0%D0%BB%D0%BE%D0%B2+%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B8%D0%BD"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/%D0%A8%D0%B0%D0%BF%D0%BE%D0%B2%D0%B0%D0%BB%D0%BE%D0%B2_%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B8%D0%BD"/>
		<updated>2026-06-11T15:50:48Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4801</id>
		<title>Получение следующего объекта</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4801"/>
				<updated>2010-11-12T05:31:50Z</updated>
		
		<summary type="html">&lt;p&gt;Шаповалов Константин: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
'''Получение следующего объекта''' - это нахождение следующего объекта в лексикографическом порядке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Пример (перестановки) ==&lt;br /&gt;
&lt;br /&gt;
Каждая следующая перестановка строится следующим образом:&lt;br /&gt;
&lt;br /&gt;
Двигаясь с конца массива сравниваем соседние элементы, если a[i - 1] &amp;gt; a[i] двигаемся дальше, если a[i - 1] &amp;lt; a[i], m := i - 1(поскольку мы нашли m дальше не смысла двигаться) выходим из цикла.&lt;br /&gt;
k := i, такое что a[i] &amp;gt; a[m] и a[i] = min(a[i]), при i &amp;gt; m.&lt;br /&gt;
Меняем местами a[m] и a[k] &lt;br /&gt;
Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://rain.ifmo.ru/cat/view.php/vis/combinations/permutations-2000 Дискретная математика : алгоритмы] &lt;br /&gt;
&lt;br /&gt;
[http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 Википедия - свободная энциклопедия]&lt;/div&gt;</summary>
		<author><name>Шаповалов Константин</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4798</id>
		<title>Получение следующего объекта</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4798"/>
				<updated>2010-11-12T03:50:07Z</updated>
		
		<summary type="html">&lt;p&gt;Шаповалов Константин: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
'''Получение следующего объекта''' - это нахождение следующего объекта в лексико графическом порядке.&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Пример (перестановки) ==&lt;br /&gt;
&lt;br /&gt;
Каждая следующая перестановка строится следующим образом:&lt;br /&gt;
&lt;br /&gt;
Двигаясь с конца массива сравниваем соседние элементы, если a[i - 1] &amp;gt; a[i] двигаемся дальше, если a[i - 1] &amp;lt; a[i], m := i - 1(поскольку мы нашли m дальше не смысла двигаться) выходим из цикла.&lt;br /&gt;
k := i, такое что a[i] &amp;gt; a[m] и a[i] = min(a[i]), при i &amp;gt; m.&lt;br /&gt;
Меняем местами a[m] и a[k] местами.&lt;br /&gt;
Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://rain.ifmo.ru/cat/view.php/vis/combinations/permutations-2000 Дискретная математика : алгоритмы] &lt;br /&gt;
&lt;br /&gt;
[http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 Википедия - свободная энциклопедия]&lt;/div&gt;</summary>
		<author><name>Шаповалов Константин</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4797</id>
		<title>Получение следующего объекта</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4797"/>
				<updated>2010-11-12T03:49:00Z</updated>
		
		<summary type="html">&lt;p&gt;Шаповалов Константин: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
'''Получение следующего объекта''' - это нахождение следующего объекта в лексико графическом порядке&lt;br /&gt;
&lt;br /&gt;
== Алгоритм ==&lt;br /&gt;
Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Пример (перестановки) ==&lt;br /&gt;
&lt;br /&gt;
Каждая следующая перестановка строится следующим образом:&lt;br /&gt;
&lt;br /&gt;
Двигаясь с конца массива сравниваем соседние элементы, если a[i - 1] &amp;gt; a[i] двигаемся дальше, если a[i - 1] &amp;lt; a[i], m := i - 1(поскольку мы нашли m дальше не смысла двигаться) выходим из цикла.&lt;br /&gt;
k := i, такое что a[i] &amp;gt; a[m] и a[i] = min(a[i]), при i &amp;gt; m.&lt;br /&gt;
Меняем местами a[m] и a[k] местами.&lt;br /&gt;
Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://rain.ifmo.ru/cat/view.php/vis/combinations/permutations-2000 Дискретная математика : алгоритмы] &lt;br /&gt;
&lt;br /&gt;
[http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 Википедия - свободная энциклопедия]&lt;/div&gt;</summary>
		<author><name>Шаповалов Константин</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4793</id>
		<title>Получение следующего объекта</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4793"/>
				<updated>2010-11-12T03:46:20Z</updated>
		
		<summary type="html">&lt;p&gt;Шаповалов Константин: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Алгоритм ==&lt;br /&gt;
Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Пример (перестановки) ==&lt;br /&gt;
&lt;br /&gt;
Каждая следующая перестановка строится следующим образом:&lt;br /&gt;
&lt;br /&gt;
Двигаясь с конца массива сравниваем соседние элементы, если a[i - 1] &amp;gt; a[i] двигаемся дальше, если a[i - 1] &amp;lt; a[i], m := i - 1(поскольку мы нашли m дальше не смысла двигаться) выходим из цикла.&lt;br /&gt;
k := i, такое что a[i] &amp;gt; a[m] и a[i] = min(a[i]), при i &amp;gt; m.&lt;br /&gt;
Меняем местами a[m] и a[k] местами.&lt;br /&gt;
Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://rain.ifmo.ru/cat/view.php/vis/combinations/permutations-2000 Дискретная математика : алгоритмы] &lt;br /&gt;
&lt;br /&gt;
[http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 Википедия - свободная энциклопедия]&lt;/div&gt;</summary>
		<author><name>Шаповалов Константин</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4773</id>
		<title>Получение следующего объекта</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81%D0%BB%D0%B5%D0%B4%D1%83%D1%8E%D1%89%D0%B5%D0%B3%D0%BE_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%B0&amp;diff=4773"/>
				<updated>2010-11-11T20:12:22Z</updated>
		
		<summary type="html">&lt;p&gt;Шаповалов Константин: Новая страница: «== Определение == В комбинаторике перестано́вка — это упорядоченный набор чисел  обычно тр…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Определение ==&lt;br /&gt;
В комбинаторике перестано́вка — это упорядоченный набор чисел  обычно трактуемый как биекция на множестве , которая числу i ставит соответствие i-й элемент из набора. Число n при этом называется порядком перестановки.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Перебор перестановок в лексикографическом порядке ==&lt;br /&gt;
&lt;br /&gt;
Каждая следующая перестановка строится следующим образом:&lt;br /&gt;
&lt;br /&gt;
Двигаясь с конца массива сравниваем соседние элементы, если a[i - 1] &amp;gt; a[i] двигаемся дальше, если a[i - 1] &amp;lt; a[i], m := i - 1(поскольку мы нашли m дальше не смысла двигаться) выходим из цикла.&lt;br /&gt;
k := i, такое что a[i] &amp;gt; a[m] и a[i] = min(a[i]), при i &amp;gt; m.&lt;br /&gt;
Меняем местами a[m] и a[k] местами.&lt;br /&gt;
Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Перебор перестановок методом рекурсии ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы построить все перестановки для n элементов, построим все перестановки для n-1 элементов и добавим к каждой из них n-ый элемент всеми возможными n способами. &lt;br /&gt;
'''Пример''' К перестановке 2431 элемент 5 добавим следующими способами: 24315, 24351, 24531, 25431, 52431. &lt;br /&gt;
Для построения следующей перестановки подвинется 4, после чего снова будет двигаться 5. На протяжении всего процесса хранится информация о том, в каком направлении двигается каждый элемент.&lt;br /&gt;
&lt;br /&gt;
При построении следующей перестановки на первом шаге рассматривается наибольший элемент . Если в направлении его движения еще есть, куда двигаться, передвигаем на одну позицию, это и будет следующей перестановкой. Если двигаться больше некуда (элемент стоит на краю массива и направление его движения — к краю), то меняем его направление движения, после чего «забываем» про этот элемент и строим следующую перестановку для оставшейся части массива, для этого находим в ней наибольший элемент и т.д. (повторяем все снова).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
[http://rain.ifmo.ru/cat/view.php/vis/combinations/permutations-2000 Дискретная математика : алгоритмы] &lt;br /&gt;
&lt;br /&gt;
[http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0 Википедия - свободная энциклопедия]&lt;/div&gt;</summary>
		<author><name>Шаповалов Константин</name></author>	</entry>

	</feed>