Теоретические сведения

Приведём эффективные алгоритмы, генерирующие основные комбинаторные объекты.

1. Размещения с повторениями.

Данный алгоритм генерирует наиболее общий класс размещений с повторениями, когда i-ый элемент размещения выбирается из своего множества Xi . Генерация выполняется в лексикографическом порядке.

Используемые обозначения:

A – массив, содержащий размещение;

x – массив, содержащий минимальные значения элементов размещения;

y – массив, содержащий максимальные значения элементов размещения;

k – количество элементов в размещении.

{ i := k ; for ( j = ) Aj := xj ;

while ( i ³ 1 )

{вывод массива A;

i := k ;

while ( Ai = yi ) i := i -1;

if ( i ³1) {Ai := Ai +1;

for (j = ) Aj := xj ;

}

}

}


2. Перестановки без повторений.

Данный алгоритм генерирует перестановки без повторений в антилексикографическом порядке. При генерации используется рекурсивная функция.

Используемые обозначения:

P – массив, содержащий перестановку;

n – количество элементов в перестановке;

« – поменять местами переменные.

reverse ( m )

{ i :=1; j := m ;

while ( i <j ) {Pi «Pj ;

i :=i +1; j :=j -1;

}

}

Antilex ( m )

{ if( m =1) вывод массива P ;

else for (i = )

{ Antilex ( m -1);

if (i < m )

{ Pi «Pm ;

reverse ( m -1);

}

}

}

{ for (i = ) Pi := i ;

Antilex ( n );

}

3. Сочетания без повторений.

Генерация сочетаний без повторений так же, как и размещений с повторениями, выполняется в лексикографическом порядке.

Используемые обозначения:

С – массив, содержащий сочетание;

k – количество элементов в сочетании;

n – количество элементов в исходном множестве.

{ for (i = ) Ci := i ;

p :=k ;

while ( p ³1)

{вывод массива C;

if ( Ck = n ) p := p -1;

else p :=k ;

if ( p ³1) for (i = )

Ci := Cp + i p +1;

}

}

4. Размещения без повторений.

При генерации размещений без повторений используется комбинация двух алгоритмов: генерация сочетаний без повторений и перестановок без повторений. Для этого в алгоритме генерации сочетаний без повторений вместо печати сгенерированной комбинации выполняется генерация всех её перестановок (так как размещения отличаются от сочетаний тем, что в них учитывается порядок выбранных элементов). При реализации этого алгоритма сначала в массиве С генерируется сочетание, затем, вместо вывода массива С, его элементы копируются в массив P и вызывается рекурсивная процедура генерации перестановок.








Дата добавления: 2017-02-20; просмотров: 309;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.