
- •Введение
- •Библиография
- •Теория множеств
- •Множества и подмножества
- •Мощность множества
- •Операции над множествами
- •Декартово произведение
- •Круги Эйлера
- •Мультимножества
- •Бинарные отношения
- •Упорядоченные множества
- •Множества в информатике и программировании
- •Библиография
- •Комбинаторная теория
- •Правило сложения
- •Правило умножения
- •Метод включения и исключения
- •Перестановки
- •Размещения
- •Сочетания
- •Перестановки с повторениями
- •Размещения с повторениями
- •Сочетания с повторениями
- •Бином Ньютона и полиномиальная формула
- •Разбиения
- •Генерация всех перестановок
- •Генерация всех подмножеств
- •Генерация размещений без повторений
- •Генерация размещений с повторениями
- •Генерация сочетаний с повторениями
- •Генерация всех разбиений
- •Библиография
- •Теория графов
- •Основные понятия
- •Представление графов в компьютере
- •Матрица смежности
- •Матрица инцидентности
- •Список связности
- •Список рёбер
- •Обход графа в глубину
- •Обход графа в ширину
- •Маршруты, цепи и циклы
- •Связность
- •Сочленения
- •Мосты
- •Деревья
- •Эйлеровы графы
- •Гамильтоновы графы
- •Планарные графы
- •Покрытие и независимость
- •Библиография
- •Приложение А. Исчисление конечных сумм
- •Библиография
- •Приложение Б. Рекуррентные соотношения
- •Задача о ханойских башнях
- •Задача о разрезании пиццы
- •Задача Иосифа Флавия
- •Библиография
- •Приложение В. Элементы теории чисел
- •Делимость и кратность
- •Алгоритм Евклида
- •Простые числа
- •Сравнения
- •Библиография
- •Библиография
Комбинаторная теория |
23 |
соответствие не обычные двоичные числа, а числа в коде Грея. Для кода Грея как раз и характерно то, что два соседних двоичных числа отличаются друг от друга не более чем на один разряд. Для генерирования последовательности чисел в коде Грея можно использовать следующий алгоритм (B – двоичное число и G – его код Грея):
–начнём с B=0 ;
–положим G [1]=B[1] ;
–G[i ]=B [i]xor B[i−1], 2≤i≤n .
Втаблице ниже приведено соответствие между обычными трёхразрядными двоичными числами и числами в коде Грея (D обозначает десятичное число):
D |
B |
G |
D |
B |
G |
|
|
|
|
|
|
0 |
000 |
000 |
4 |
100 |
110 |
|
|
|
|
|
|
1 |
001 |
001 |
5 |
101 |
111 |
|
|
|
|
|
|
2 |
010 |
011 |
6 |
110 |
101 |
|
|
|
|
|
|
3 |
011 |
010 |
7 |
111 |
100 |
|
|
|
|
|
|
Генерация размещений без повторений
Алгоритмы генерации размещений без повторений достаточно сложны и здесь не рассматриваются.
Генерация размещений с повторениями
Рассмотрим генерацию размещений с повторениями на примере множества X ={a ,b , c} :
(1,1),(1,2),(1,3)
(2,1),(2,2),(2,3) (3,1),(3,2),(3,3)
Неправда ли, знакомая картина? Для размещений по два и по три можно использовать вложенные циклы, а для большего количества элементов в размещении можно воспользоваться рекурсией.
Генерация сочетаний с повторениями
Аналогично рассмотрим генерацию сочетаний с повторениями на примере множества
X ={a ,b , c} :
(1,1),(1,2), (1,3)
(2,2),(2,3) (3,3)
Также часто встречающаяся последовательность. Для сочетаний по два можно использовать вложенные циклы, а в остальных случаях – рекурсию.
Генерация всех разбиений
Алгоритмы генерации всех разбиений сложны и потребуют отдельную лекцию, поэтому здесь не рассматриваются.
24 |
Симоненко Е.А. Дискретная математика. Лекции |
Библиография
Для первоначального ознакомления с комбинаторикой можно воспользоваться учебником [Кузьмин: комбинаторика], но в нём рассматриваются не все вопросы, кроме того, имеются отличия в терминологии. Хорошее введение в комбинаторику с большим количеством примеров и задач даётся в [Виленкин: комбинаторика]. Можно также почитать [Окулов: ДМ] и [Новиков]. Есть также несколько классических учебников по комбинаторике: [Риордан], [Холл]. Об алгоритмах комбинаторики можно почитать в некоторых книгах по алгоритмам, например, в четвёртом томе «Искусства программирования» Кнута, а также в некоторых учебниках по комбинаторике, написанных специально для программистов, таких как [Окулов: ДМ] и [Новиков].