<?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=91.122.173.29&amp;*</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=91.122.173.29&amp;*"/>
		<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/91.122.173.29"/>
		<updated>2026-08-06T16:57:32Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%B2_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5&amp;diff=42990</id>
		<title>Генерация комбинаторных объектов в лексикографическом порядке</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%B2_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5&amp;diff=42990"/>
				<updated>2014-12-29T06:26:11Z</updated>
		
		<summary type="html">&lt;p&gt;91.122.173.29: /* Источники информации */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Комбинаторные объекты сгенерированы в '''лексикографическом порядке''' ''(in lexicographical order)'', если для любых &amp;lt;tex&amp;gt; i&amp;lt;j &amp;lt;/tex&amp;gt; выполняется неравенство &amp;lt;tex&amp;gt; S_i&amp;lt;S_j &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; S_i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; S_j &amp;lt;/tex&amp;gt; комбинаторные объекты с номерами &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм построения ==&lt;br /&gt;
&lt;br /&gt;
==== Описание процедуры построения ====&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм генерирует все объекты заданного типа в лексикографическом порядке. На каждом шаге генерируется минимальный возможный префикс требуемого объекта.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{genObj(K, ␣␣p)}&amp;lt;/tex&amp;gt; {{---}} процедура генерирования,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{ p}&amp;lt;/tex&amp;gt; {{---}} глубина рекурсии,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;A&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{K}&amp;lt;/tex&amp;gt; {{---}} текущий комбинаторный объект,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{len}&amp;lt;/tex&amp;gt; {{---}} требуемый размер объекта,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;A&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{alpha}&amp;lt;/tex&amp;gt; {{---}} все возможные элементы комбинаторного объекта, отсортированные в лексикографическом порядке,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{n}&amp;lt;/tex&amp;gt; {{---}} размер &amp;lt;tex&amp;gt;\mathtt{alpha}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;list &amp;lt;A&amp;gt; &amp;gt;}&amp;lt;/tex&amp;gt;''  {{---}} список, содержащий все сгенерированные объекты в нужном порядке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''list&amp;lt;A&amp;gt;''' genObj('''int''' K, '''int''' p):&lt;br /&gt;
   '''if''' p == len                            &amp;lt;font color=green&amp;gt; // если сформирован объект нужного размера, то возвращаем его   &amp;lt;/font&amp;gt; &lt;br /&gt;
     ans.push_back(K)                     &amp;lt;font color=green&amp;gt;// записываем объект K в ответ &amp;lt;/font&amp;gt;&lt;br /&gt;
   '''else'''&lt;br /&gt;
     '''for''' i = 1 to n                        &lt;br /&gt;
        '''if''' к объекту К можно добавить элемент alpha[i] в конец&lt;br /&gt;
          K.push_back(alpha[i])                      &lt;br /&gt;
          genObj(K, p + 1)                &amp;lt;font color=green&amp;gt; // добавляем alpha[i] в конец и вызываем функцию genObj от нового полученного префикса &amp;lt;/font&amp;gt;&lt;br /&gt;
          К.pop_back()&lt;br /&gt;
&lt;br /&gt;
==== Генерация с помощью процедуры получения следующего объекта ====&lt;br /&gt;
&lt;br /&gt;
Составляем первый объект {{---}} &amp;lt;tex&amp;gt;K_1&amp;lt;/tex&amp;gt;, для него [[Получение следующего объекта|получаем следующий объект]] {{---}} &amp;lt;tex&amp;gt;K_2&amp;lt;/tex&amp;gt;, для &amp;lt;tex&amp;gt;K_2&amp;lt;/tex&amp;gt; получаем &amp;lt;tex&amp;gt;K_3&amp;lt;/tex&amp;gt;, далее действуем также, для &amp;lt;tex&amp;gt;K_i&amp;lt;/tex&amp;gt; получая &amp;lt;tex&amp;gt;K_i&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;_+&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;_1&amp;lt;/tex&amp;gt; объект, пока не получим последний объект &amp;lt;tex&amp;gt;K_n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
==== Пример генерации сочетаний из N элементов по M в лексикографическом порядке ====&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм генерирует все сочетания из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов по &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{genChooses(k, l)}&amp;lt;/tex&amp;gt; {{---}} процедура генерирования,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;int&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{a}&amp;lt;/tex&amp;gt; {{---}} текущее сочетание,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{k}&amp;lt;/tex&amp;gt; {{---}} следующий элемент в сочетании,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{l}&amp;lt;/tex&amp;gt; {{---}} глубина рекурсии,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;list &amp;lt;int&amp;gt; &amp;gt; }&amp;lt;/tex&amp;gt;'' {{---}} все сгенерированные сочетания в нужном порядке.&lt;br /&gt;
&lt;br /&gt;
 '''list&amp;lt;int&amp;gt;''' genChooses(int k, int l)&lt;br /&gt;
   a[l] = k&lt;br /&gt;
   '''if''' l == m        &lt;br /&gt;
     ans.push_back(a)&lt;br /&gt;
   '''for''' i = k + 1 to n&lt;br /&gt;
     genChooses(i, l + 1);&lt;br /&gt;
&lt;br /&gt;
==== Пример работы процедуры генерации ====&lt;br /&gt;
&lt;br /&gt;
Иллюстрация работы процедуры генерирования всех сочетаний из 4 по 2.&lt;br /&gt;
&lt;br /&gt;
[[Файл:4 2 s.png]]&lt;br /&gt;
&lt;br /&gt;
==См. также==&lt;br /&gt;
* [[Получение номера по объекту]]&lt;br /&gt;
* [[Получение объекта по номеру]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Перечисление_(комбинаторика) Википедия — Перечисление (комбинаторика)]&lt;br /&gt;
* [http://rain.ifmo.ru/cat/view.php/ Дискретная математика — Алгоритмы]&lt;br /&gt;
* [http://algolist.ru/maths/combinat/ AlgoList — Комбинаторика и переборные задачи]&lt;br /&gt;
* [http://e-maxx.ru/algo/ MAXimal :: Комбинаторика]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Комбинаторика ]]&lt;/div&gt;</summary>
		<author><name>91.122.173.29</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%B2_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5&amp;diff=42989</id>
		<title>Генерация комбинаторных объектов в лексикографическом порядке</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%B2_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5&amp;diff=42989"/>
				<updated>2014-12-29T06:11:13Z</updated>
		
		<summary type="html">&lt;p&gt;91.122.173.29: /* Описание процедуры построения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Комбинаторные объекты сгенерированы в '''лексикографическом порядке''' ''(in lexicographical order)'', если для любых &amp;lt;tex&amp;gt; i&amp;lt;j &amp;lt;/tex&amp;gt; выполняется неравенство &amp;lt;tex&amp;gt; S_i&amp;lt;S_j &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; S_i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; S_j &amp;lt;/tex&amp;gt; комбинаторные объекты с номерами &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм построения ==&lt;br /&gt;
&lt;br /&gt;
==== Описание процедуры построения ====&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм генерирует все объекты заданного типа в лексикографическом порядке. На каждом шаге генерируется минимальный возможный префикс требуемого объекта.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{genObj(K, ␣␣p)}&amp;lt;/tex&amp;gt; {{---}} процедура генерирования,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{ p}&amp;lt;/tex&amp;gt; {{---}} глубина рекурсии,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;A&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{K}&amp;lt;/tex&amp;gt; {{---}} текущий комбинаторный объект,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{len}&amp;lt;/tex&amp;gt; {{---}} требуемый размер объекта,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;A&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{alpha}&amp;lt;/tex&amp;gt; {{---}} все возможные элементы комбинаторного объекта, отсортированные в лексикографическом порядке,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{n}&amp;lt;/tex&amp;gt; {{---}} размер &amp;lt;tex&amp;gt;\mathtt{alpha}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;list &amp;lt;A&amp;gt; &amp;gt;}&amp;lt;/tex&amp;gt;''  {{---}} список, содержащий все сгенерированные объекты в нужном порядке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''list&amp;lt;A&amp;gt;''' genObj('''int''' K, '''int''' p):&lt;br /&gt;
   '''if''' p == len                            &amp;lt;font color=green&amp;gt; // если сформирован объект нужного размера, то возвращаем его   &amp;lt;/font&amp;gt; &lt;br /&gt;
     ans.push_back(K)                     &amp;lt;font color=green&amp;gt;// записываем объект K в ответ &amp;lt;/font&amp;gt;&lt;br /&gt;
   '''else'''&lt;br /&gt;
     '''for''' i = 1 to n                        &lt;br /&gt;
        '''if''' к объекту К можно добавить элемент alpha[i] в конец&lt;br /&gt;
          K.push_back(alpha[i])                      &lt;br /&gt;
          genObj(K, p + 1)                &amp;lt;font color=green&amp;gt; // добавляем alpha[i] в конец и вызываем функцию genObj от нового полученного префикса &amp;lt;/font&amp;gt;&lt;br /&gt;
          К.pop_back()&lt;br /&gt;
&lt;br /&gt;
==== Генерация с помощью процедуры получения следующего объекта ====&lt;br /&gt;
&lt;br /&gt;
Составляем первый объект {{---}} &amp;lt;tex&amp;gt;K_1&amp;lt;/tex&amp;gt;, для него [[Получение следующего объекта|получаем следующий объект]] {{---}} &amp;lt;tex&amp;gt;K_2&amp;lt;/tex&amp;gt;, для &amp;lt;tex&amp;gt;K_2&amp;lt;/tex&amp;gt; получаем &amp;lt;tex&amp;gt;K_3&amp;lt;/tex&amp;gt;, далее действуем также, для &amp;lt;tex&amp;gt;K_i&amp;lt;/tex&amp;gt; получая &amp;lt;tex&amp;gt;K_i&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;_+&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;_1&amp;lt;/tex&amp;gt; объект, пока не получим последний объект &amp;lt;tex&amp;gt;K_n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
==== Пример генерации сочетаний из N элементов по M в лексикографическом порядке ====&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм генерирует все сочетания из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов по &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{genChooses(k, l)}&amp;lt;/tex&amp;gt; {{---}} процедура генерирования,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;int&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{a}&amp;lt;/tex&amp;gt; {{---}} текущее сочетание,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{k}&amp;lt;/tex&amp;gt; {{---}} следующий элемент в сочетании,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{l}&amp;lt;/tex&amp;gt; {{---}} глубина рекурсии,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;list &amp;lt;int&amp;gt; &amp;gt; }&amp;lt;/tex&amp;gt;'' {{---}} все сгенерированные сочетания в нужном порядке.&lt;br /&gt;
&lt;br /&gt;
 '''list&amp;lt;int&amp;gt;''' genChooses(int k, int l)&lt;br /&gt;
   a[l] = k&lt;br /&gt;
   '''if''' l == m        &lt;br /&gt;
     ans.push_back(a)&lt;br /&gt;
   '''for''' i = k + 1 to n&lt;br /&gt;
     genChooses(i, l + 1);&lt;br /&gt;
&lt;br /&gt;
==== Пример работы процедуры генерации ====&lt;br /&gt;
&lt;br /&gt;
Иллюстрация работы процедуры генерирования всех сочетаний из 4 по 2.&lt;br /&gt;
&lt;br /&gt;
[[Файл:4 2 s.png]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Перечисление_(комбинаторика) Википедия — Перечисление (комбинаторика)]&lt;br /&gt;
* [http://rain.ifmo.ru/cat/view.php/ Дискретная математика — Алгоритмы]&lt;br /&gt;
* [http://algolist.ru/maths/combinat/ AlgoList — Комбинаторика и переборные задачи]&lt;br /&gt;
* [http://e-maxx.ru/algo/ MAXimal :: Комбинаторика]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Комбинаторика ]]&lt;/div&gt;</summary>
		<author><name>91.122.173.29</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%B2_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5&amp;diff=42988</id>
		<title>Генерация комбинаторных объектов в лексикографическом порядке</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BC%D0%B1%D0%B8%D0%BD%D0%B0%D1%82%D0%BE%D1%80%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2_%D0%B2_%D0%BB%D0%B5%D0%BA%D1%81%D0%B8%D0%BA%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%BC_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B5&amp;diff=42988"/>
				<updated>2014-12-29T06:01:37Z</updated>
		
		<summary type="html">&lt;p&gt;91.122.173.29: /* Описание процедуры построения */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Комбинаторные объекты сгенерированы в '''лексикографическом порядке''' ''(in lexicographical order)'', если для любых &amp;lt;tex&amp;gt; i&amp;lt;j &amp;lt;/tex&amp;gt; выполняется неравенство &amp;lt;tex&amp;gt; S_i&amp;lt;S_j &amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt; S_i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; S_j &amp;lt;/tex&amp;gt; комбинаторные объекты с номерами &amp;lt;tex&amp;gt; i &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; j &amp;lt;/tex&amp;gt;.&lt;br /&gt;
== Алгоритм построения ==&lt;br /&gt;
&lt;br /&gt;
==== Описание процедуры построения ====&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм генерирует все объекты заданного типа в лексикографическом порядке. На каждом шаге генерируется минимальный возможный префикс требуемого объекта.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{genObj(K, ␣␣p)}&amp;lt;/tex&amp;gt; {{---}} процедура генерирования,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{ p}&amp;lt;/tex&amp;gt; {{---}} глубина рекурсии,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;A&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{K}&amp;lt;/tex&amp;gt; {{---}} текущий комбинаторный объект,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{len}&amp;lt;/tex&amp;gt; {{---}} требуемый размер объекта,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;A&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{alpha}&amp;lt;/tex&amp;gt; {{---}} все возможные элементы комбинаторного объекта, отсортированные в лексикографическом порядке,&lt;br /&gt;
* &amp;lt;tex&amp;gt;\mathtt{n}&amp;lt;/tex&amp;gt; {{---}} размер &amp;lt;tex&amp;gt;\mathtt{alpha}&amp;lt;/tex&amp;gt;,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;list &amp;lt;A&amp;gt; &amp;gt;}&amp;lt;/tex&amp;gt;''  {{---}} список, содержащий все сгенерированные объекты в нужном порядке.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 '''list&amp;lt;A&amp;gt;''' genObj(int K,int p)&lt;br /&gt;
   '''if''' p == len                            &amp;lt;font color=green&amp;gt; // если сформирован объект нужного размера, то возвращаем его   &amp;lt;/font&amp;gt; &lt;br /&gt;
     ans.push_back(K)                     &amp;lt;font color=green&amp;gt;// записываем объект K в ответ &amp;lt;/font&amp;gt;&lt;br /&gt;
   '''else'''&lt;br /&gt;
     '''for''' i = 1 to n                        &lt;br /&gt;
        '''if''' к объекту К можно добавить элемент alpha[i] в конец&lt;br /&gt;
          K.push_back(alpha[i])                      &lt;br /&gt;
          genObj(K, p + 1)                &amp;lt;font color=green&amp;gt; // добавляем alpha[i] в конец и вызываем функцию genObj от нового полученного префикса &amp;lt;/font&amp;gt;&lt;br /&gt;
          К.pop_back()&lt;br /&gt;
&lt;br /&gt;
==== Генерация с помощью процедуры получения следующего объекта ====&lt;br /&gt;
&lt;br /&gt;
Составляем первый объект {{---}} &amp;lt;tex&amp;gt;K_1&amp;lt;/tex&amp;gt;, для него [[Получение следующего объекта|получаем следующий объект]] {{---}} &amp;lt;tex&amp;gt;K_2&amp;lt;/tex&amp;gt;, для &amp;lt;tex&amp;gt;K_2&amp;lt;/tex&amp;gt; получаем &amp;lt;tex&amp;gt;K_3&amp;lt;/tex&amp;gt;, далее действуем также, для &amp;lt;tex&amp;gt;K_i&amp;lt;/tex&amp;gt; получая &amp;lt;tex&amp;gt;K_i&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;_+&amp;lt;/tex&amp;gt;&amp;lt;tex&amp;gt;_1&amp;lt;/tex&amp;gt; объект, пока не получим последний объект &amp;lt;tex&amp;gt;K_n&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
==== Пример генерации сочетаний из N элементов по M в лексикографическом порядке ====&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм генерирует все сочетания из &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; элементов по &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{genChooses(k, l)}&amp;lt;/tex&amp;gt; {{---}} процедура генерирования,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;int&amp;gt;}&amp;lt;/tex&amp;gt;'' &amp;lt;tex&amp;gt;\mathtt{a}&amp;lt;/tex&amp;gt; {{---}} текущее сочетание,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{k}&amp;lt;/tex&amp;gt; {{---}} следующий элемент в сочетании,&lt;br /&gt;
*&amp;lt;tex&amp;gt;\mathtt{l}&amp;lt;/tex&amp;gt; {{---}} глубина рекурсии,&lt;br /&gt;
*''&amp;lt;tex&amp;gt;\mathtt{list &amp;lt;list &amp;lt;int&amp;gt; &amp;gt; }&amp;lt;/tex&amp;gt;'' {{---}} все сгенерированные сочетания в нужном порядке.&lt;br /&gt;
&lt;br /&gt;
 '''list&amp;lt;int&amp;gt;''' genChooses(int k, int l)&lt;br /&gt;
   a[l] = k&lt;br /&gt;
   '''if''' l == m        &lt;br /&gt;
     ans.push_back(a)&lt;br /&gt;
   '''for''' i = k + 1 to n&lt;br /&gt;
     genChooses(i, l + 1);&lt;br /&gt;
&lt;br /&gt;
==== Пример работы процедуры генерации ====&lt;br /&gt;
&lt;br /&gt;
Иллюстрация работы процедуры генерирования всех сочетаний из 4 по 2.&lt;br /&gt;
&lt;br /&gt;
[[Файл:4 2 s.png]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/Перечисление_(комбинаторика) Википедия — Перечисление (комбинаторика)]&lt;br /&gt;
* [http://rain.ifmo.ru/cat/view.php/ Дискретная математика — Алгоритмы]&lt;br /&gt;
* [http://algolist.ru/maths/combinat/ AlgoList — Комбинаторика и переборные задачи]&lt;br /&gt;
* [http://e-maxx.ru/algo/ MAXimal :: Комбинаторика]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Комбинаторика ]]&lt;/div&gt;</summary>
		<author><name>91.122.173.29</name></author>	</entry>

	</feed>