Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
18
Добавлен:
01.04.2025
Размер:
5.06 Mб
Скачать

Лабораторная работа № 39.

Тема: Разработка алгоритмов и программ с использованием комбинаторных алгоритмов.

Цель работы: Научиться разрабатывать алгоритмы и программы с использованием комбинаторных алгоритмов.

Средства: ПЭВМ, среда разработки Pascal.

Актуализация опорных знаний

1. Алгоритмы генерирования перестановок.

2. Генерирование k-элементных подмножеств.

3. Генерирование разбиений множества.

Пример выполнения задания

Задание: Разработать алгоритм и программу решения задачи, которая выполняет генерирование всех перестановок с минимальным числом транспозиций соседних элементов.

uses

Crt;

var

P:array[1..100] of integer;

i,n:integer;

procedure Perms;

var

C:array[1..100] of integer;

pr:array[1..100] of boolean;

i,j,t,k,x:integer;

begin

for i:=1 to n do

begin

p[i]:=i;

C[i]:=1;

pr[i]:=true;

end;

c[n]:=0;

for j:=1 to n do

Write(P[j]:4);

Writeln;

i:=1;

while i<n do

begin

i:=1; x:=0;

while c[i]=n-i+1 do

begin

pr[i]:=not pr[i];

c[i]:=1;

70

if pr[i] then x:=x+1;

i:=i+1;

end;

if i<n then

begin

if pr[i] then k:=c[i]+x

else k:=n-i+1-c[i]+x;

t:=p[k]; p[k]:=p[k+1]; p[k+1]:=t;

for j:=1 to n do

Write(P[j]:4);

Writeln;

c[i]:=c[i]+1;

end;

end;

end;

begin

clrscr;

Write('Введите количество чисел N= ?');

Readln(n);

for i:=1 to n do

P[i]:=i;

Perms;

end.

Задания

1. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {1,…,n} в лексикографическом порядке.

2. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {1,…,n} в антилексикографическом порядке.

3. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {1,…,n} за минимальное число транспозиций.

4. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {1,…,n} с минимальным числом транспозиций соседних элементов.

5. Разработать алгоритм и программу решения задачи, которая выполняет генерирование всех k-элементных подмножеств множества {1,…,n} в лексикографическом порядке.

6. Разработать алгоритм и программу решения задачи, которая выполняет генерирование всех разбиений множества {1,…,n}.

7. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {‘a’,…,’e’} в лексикографическом порядке.

8. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {‘a’,…,’e’} в антилексикографическом порядке.

9. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {‘a’,…,’e’} за минимальное число транспозиций.

10. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок множества {‘a’,…,’e’} с минимальным числом транспозиций соседних элементов.

11. Разработать алгоритм и программу решения задачи, которая выполняет генерирование всех k-элементных подмножеств множества {‘a’,…,’e’} в лексикографическом порядке.

12. Разработать алгоритм и программу решения задачи, которая выполняет генерирование всех разбиений множества {‘a’,…,’e’}.

13. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок букв, введенного слова (буквы исходного слова не совпадают) в лексикографическом порядке.

14. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок букв, введенного слова (буквы исходного слова не совпадают) в антилексикографическом порядке.

15. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок букв, введенного слова (буквы исходного слова не совпадают) за минимальное число транспозиций.

16. Разработать алгоритм и программу решения задачи, которая выполняет генерирование последовательности перестановок букв, введенного слова (буквы исходного слова не совпадают) с минимальным числом транспозиций соседних элементов.