Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л.р. 1-й семестр.doc
Скачиваний:
3
Добавлен:
04.05.2019
Размер:
1.22 Mб
Скачать

Требования к оформлению отчета о выполнении лабораторной работы

В отчет о выполнении лабораторной работы необходимо включить следующие пункты:

  1. Тема лабораторной работы;

  2. Постановка задачи и вариант задания;

  3. Математическое описание метода решения поставленной задачи;

  4. Результаты выполнения задания;

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

Лабораторная работа № 1 Алгоритм слияния: включение, объединение и пересечение множеств.

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

Теоретическая часть

Если универсальное множество (универсум) велико или бесконечно, а рассматриваемые подмножества универсума не очень велики, то представление с помощью битовых шкал не является эффективным с точки зрения экономии памяти. В этом случае множества обычно представляются списками элементов. Элемент списка при этом представляется записью с двумя полями: информационным и указателем на следующий элемент. Весь список представляется указателем на следующий элемент.

При таком представлении трудоемкость операции составит , а трудоемкость операций , и составит , где и - мощности участвующих в операции множеств.

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

Включение множеств.

Входные параметры: проверяемые предварительно упорядоченные конечные множества А мощности и В мощности .

Выходные параметры: , если и , если .

  1. Указатели в списках А и В расположены на первых элементах списков ( ). Пока список А не пуст и список В не пуст ( и ) выполнять цикл: while

  2. Если Аi < Bj, то , конец цикла;

  3. Если Аi > Bj, то , перейти к 2;

  4. Если Аi = Bj, то , , , перейти к 2;

  5. End while.

  6. Если , но , то .

Объединение множеств.

Входные параметры: проверяемые предварительно упорядоченные конечные множества А мощности и В мощности .

Выходные параметры: конечное упорядоченное множество С каждый элемент которого удовлетворяет условию: .

  1. Указатели в списках А и В расположены на первых элементах списков ( ). Список С пуст ( ). Пока список А не пуст и список В не пуст ( и ) выполнять цикл: while

  2. Если Аi < Bj, то , , ;

  3. Если Аi > Bj, то , , , перейти к 2;

  4. Если Аi = Bj, то , , , , перейти к 2;

  5. End while.

  6. Если , но , то и пока выполнять цикл: while

  7. , , ;

  8. End while.

  9. Если , но , то и пока выполнять цикл: while

  10. , , ;

  11. End while.

Пересечение множеств.

Входные параметры: проверяемые предварительно упорядоченные конечные множества А мощности и В мощности .

Выходные параметры: конечное упорядоченное множество С каждый элемент которого удовлетворяет условию: .

  1. Указатели в списках А и В расположены на первых элементах списков ( ). Список С пуст ( ). Пока список А не пуст и список В не пуст ( и ) выполнять цикл: while

  2. Если Аi < Bj, то ;

  3. Если Аi > Bj, то , перейти к 2;

  4. Если Аi = Bj, то , , , , перейти к 2;

  5. End while.

Указания к выполнению лабораторной работы

  1. Упорядочить заданные вариантом множества. Для упорядочения можно использовать метод «воздушного пузырька», метод топологической сортировки или любой другой известный алгоритм по выбору студента.

  2. Реализовать заданный вариантом алгоритм слияния (включение, объединение или пересечение). Замечание: множества должны быть заданы списками, а не массивами.

  3. Объяснить реализованный алгоритм.