Комбинаторика_Разм_Сочет.ppt
- Количество слайдов: 9
Комбинаторика Размещения и сочетания
Размещения и сочетания n n Перестановки (permutations) были первым классическим объектом комбинаторики. Сейчас мы рассмотрим два остальных – размещения (allocations) и сочетания (combinations). Важность этих двух определений различна. Сочетания используются повсеместно. Размещения же нужны почти исключительно для того, чтобы сочетания было удобно определять, они служат удобным переходом от перестановок к сочетаниям.
Размещения n n n Пусть задано множество из n элементов. Упорядоченный набор из m элементов (m < n) называется размещением из n элементов по m. Обозначим множество размещений из n элементов по m через Anm , а его мощность через Anm. И опять те же три вопроса: чему равно Anm, как перебрать элементы Anm , как их перенумеровать. Легко видеть, что Anm = n(n-1). . . (n-m+1) = n!/(n-m)! имеем n возможностей выбора первого элемента, n-1 возможностей выбора второго и т. д. Получаем m сомножителей, начиная с n и уменьшая каждый раз на 1.
Пример размещений Задано множество А = {a, b, c, d, e} из 5 элементов. Перечислим все размещения из 5 элементов по 3. Их число должно быть равно 5 4 3=60. Имеем: n n n abc abd abe acb acd ace adb adc ade aeb aec aed bac bad bae bca bcd bce bda bdc bde bea bec bed cab cad cae cba cbd cbe cda cdb cde cea ceb ced dab dac dae dba dbc dbe dca dcb dce dea deb dec eab eac ead eba ebc ebd eca ecb ecd eda edb edc
Сочетания n n n n Пусть задано множество из n элементов. Неупорядоченный набор m из этих элементов (m < n) называется сочетанием из n элементов по m. Определение отличается от определения для размещений всего одним словом: неупорядоченный. Обозначим множество сочетаний из n элементов через Combnm , а его мощность через Cnm. Три вопроса: 1. Чему равно Cnm, 2. Как перебрать элементы Combnm , 3. Как перенумеровать элементы Combnm. Легко видеть связь между Anm и Cnm = Anm/m!= n!/(m!(n-m)!) Вспомним таблицу в примере: в каждой строке m! элементовразмещений, и каждая строка – одно сочетание.
Перебор сочетаний n n n Для упрощения перебора сочетаний полезно их представить в другом виде. Каждое сочетание – это подмножество мощности m в множестве из n элементов. Если вспомнить о представлении подмножества характеристическим вектором, мы придем к тому, что сочетание задается набором, в котором ровно m единиц и n-m нулей. Значит нужно научиться перебирать такие наборы. В лексикографическом порядке! Примем за начальный набор – тот, в котором идут сначала все единицы, а потом все нули. Переход к соседнему набору – это сдвиг на одну позицию вправо самой правой единицы, которую еще можно сдвигать, и «подтаскивание» к ней, всех находящихся справа единиц. Полезен пример.
Перебор сочетаний Задано множество А = {a, b, c, d, e} из 5 элементов. Перечислим все сочетания из 5 элементов по 3. Их число должно быть равно C 53 = A 53/3!= 5 4 3/1 2 3=10. Имеем: n=5 и m=3. Красным выделены единицы, сдвигаемые на позицию вправо Черным – сдвигаемые влево группы единиц. n 11100 n n n n 11010 11001 10110 10101 10011 01110 01101 01011 00111 n Опишите этот алгоритм в терминах позиций, занятых единицами, и в терминах позиций, занятых нулями.
Перебор сочетаний Пусть n=7 и m=5. Красным выделены единицы, сдвигаемые на позицию вправо Черным – группы единиц, сдвигаемые влево. n n n n 1111100 1111010 1111001 1110110 1110101 1110011 1101110 1101101011 1100111 1011110 1011101 1011011 1010111 100111110 0111101 0111011 0110111 0101111 0011111
Перебор СОЧЕТАНИЙ Начало Ввести n, m, отвести место в памяти для массива B[m]. i: = 0, j: = 0, k: = n-m i: = i + 1 i>m да Обработка очередного сочетания нет ИЛИ Вывод массива B[m]. Bi: = j Bi: = Bi + 1 j: = Bi да j <= k+i да i -i>0 нет Конец
Комбинаторика_Разм_Сочет.ppt