Лекции по дискретной математике. Ч.II. Комбинаторика, разостные уравнения, алгоритмы на графах. Гайдамака Ю.В - 23 стр.

UptoLike

end;
end.
Алгоритм начинает работу с распечатки
Π
=(1,2,…,n) и заканчи-
вает ее при i=0, что происходит в случае, когда
π
1
>
π
2
>…>
π
n
, т.е.
когда получена последняя в лексикографическом порядке переста-
новка.
Сочетания
Пусть основным множеством является множество натуральных
чисел (1,2,…,n). Необходимо сгенерировать все сочетания мощно-
сти k. Рассмотрим генерацию в лексикографическом порядке. На-
пример, для
3
5
543
10
123
C
⋅⋅
==
⋅⋅
сочетаний из пяти предметов по три
получается следующий лексикографический порядок 123, 124,
125, 134, 135, 145, 234, 235, 245, 345.
Алгоритм лексикографической генерации сочетаний может
быть следующим.
Начиная с сочетания (1,2,…,k), следующее сочетание находится
просмотром текущего сочетания справа налево с тем, чтобы опре-
делить место самого правого элемента, который еще не достиг
своего максимального значения. Этот элемент увеличивается на
единицу, а всем элементам справа от него присваиваются новые
наименьшие возможные значения. Например, если n=6 и мы полу-
чили сочетание (1236) , то следующим будет сочетание (1245).
Следующий алгоритм реализует эту процедуру:
Листинг 6.2
Алгоритм генерации сочетаний.
C
0
-1;
for i=1 to k do C
i
I;
j
1;
while j
0 do
begin
вывести (C
1
,C
2
,…,C
k
);
j
k;
while C
j
=n-k+j do j
j-1;
C
j
C
j
+1;
for i=j+1 to k do C
i
=C
i-1
+1;
end.
23