Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsii.pdf
Скачиваний:
81
Добавлен:
22.05.2015
Размер:
403.19 Кб
Скачать

22

Симоненко Е.А. Дискретная математика. Лекции

Для i от 1 до n D[r] := X[i];

Decart(X, D, r + 1);

Конец.

Вызов: Decart(X, D, 1).

Генерация сочетаний с повторениями

Аналогично рассмотрим генерацию сочетаний с повторениями на примере множества

X ={1,2, 3} :

(1,1),(1,2),(1,3)

(2,2),(2,3) (3,3)

Также часто встречающаяся последовательность. Для сочетаний по два и по три можно использовать вложенные циклы, а в остальных случаях – рекурсию:

Co:

Вход: X – массив с n элементами, представляющий исходное множество; C – массив с k элементами, представляющий искомый кортеж; r – текущая обрабатываемая координата в кортеже C; m – номер текущего выбранного элемента во множестве X.

Начало:

Если r == k + 1 То

// что-то делаем с кортежем C

Иначе

Для i от m до n C[r] := X[i];

Co(X, C, r + 1, m);

Конец.

Вызов: Co(X, C, 1, 1).

Генерация всех сочетаний без повторений

Небольшое рассуждение должно навести на мысль, что алгоритм генерации всех сочетаний без повторений аналогичен алгоритмы генерации всех сочетаний с повторениями за той лишь разницей, что при очередном рекурсивном вызове Co() будем передавать не m, а m+1, то есть будем выбирать следующий элемент множества X.

Генерация всех размещений без повторений

Алгоритмы генерации размещений без повторений достаточно сложны и здесь не рассматриваются.

Генерация всех разбиений

Алгоритмы генерации всех разбиений сложны и потребуют отдельную лекцию, поэтому здесь не рассматриваются.

Комбинаторная теория

23

Библиография

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]