Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
6
Добавлен:
28.06.2014
Размер:
36.86 Кб
Скачать

Тема "Реализация множества на базе вектора".

Определение множества на функциональном уровне.

Множество - это совокупность элементов произвольного характера со следующими свойствами:

1. Элементы не связаны между собой (не упорядочены).

2. Все элементы различны.

3. Количество элементов (мощность) множества произвольно и не определено заранее.

4. Если к множеству добавляется элемент, который уже находится в множестве, то добавления не происходит.

5. Попытка выполнения операции удаления из множества элемента, не принадлежащего множеству, не приводит ни к какому (в том числе и к аномальному) результату.

Задание №1 (л.р. 4). " Операции над множествами".

Выполнить операции над заданными множествами, реализуя множества двумя способами.

Способ 1. Использовать встроенные средства языка Паскаль для описания множества.

Способ 2. На базе вектора (одномерного массива).

а) вектор, тип элементов которого совпадает с базовым типом элементов множества;

б) вектор с элементами логического типа.

Требования к оформлению программы.

Главная программа должна представлять исполнитель "Множество" и содержать действия над всей структурой множество.

Для Способа 2 все действия над множествами должны быть реализованы в виде чистых процедур (или функций), описания которых вынесены в отдельный модуль UNIT.

Правила сдачи лабораторной работы.

1. Лабораторная работа сдается только при наличии спецификации.

2. При демонстрации работы на экран должны выводиться исходные множества и результаты.

Задание №2(л.р. 5). “Хэширование ”

Задача. Задано множество М мощности p, элементами которого являются

натуральные числа 0, 1, 2, ..., p-1.

Разместить множество М в памяти с адресами V1, V2 ,...,  Vn , (p > n) путем хэширования (рассеивания), помещая каждый элемент m  M (0 < m < p-1) по адресу Vi, который вычисляется с помощью следующей хэш-функции

i = m - (m div n)  n + 1 .

При p > n на один и тот же адрес может претендовать несколько элементов. В этом случае может возникнуть коллизия - когда место по адресу элемента занято.

Основные требования.

1. Элементы множества генерируются с помощью датчика псевдослучайных чисел (процедура RANDOM).

Замечание. Необходимо учесть, что генератор может выдавать одинаковые числа.

2. Адреса памяти V1, V2, …, Vn  представлены массивом.

3. Элементы размещаются, пока память не будет заполнена.

4. Провести эксперимент, меняя исходные параметры p, r, n , где p = r  n (r= 1, 2, 3),

в результате которого определить:

- если коллизии не находят разрешения, то

А. Число размещенных элементов до 1-й, 2-й, и т.д. коллизии.

Б. Процент заполнения памяти до 1-й, 2-й, и т.д. коллизии.

В. Число (или процент) возникших коллизий при полном заполнении памяти.

  • если коллизии находят разрешение (выделяется первый свободный адрес после занятого), то А., Б., В.,

Г. Число проб (до первого свободного места) для разрешения 1-й, 2-й, и т.д. коллизии.

Варианты заданий (л.р. 4).

Для множеств А, В, С выполнить следующие операции.

  1. (A  B) \ C

  2. (A  B)  C

  3. (A  B) Δ C

  4. (A  B) \ C

  5. (A  B) Δ C

  6. (A  B)  C

  7. (A \ B) Δ C

  8. (A \ B)  C

  9. (A \ B)  C

  10. (A Δ B) \ C

  11. (A Δ B)  C

  12. (A Δ B)  C

  13. (A  B) \ C

  14. (A \ B) Δ C

  15. (A  B) \ C

  1. A  (B \ C )

  2. A  (B  C)

  3. A  (B Δ C)

  4. A  (B \ C)

  5. A  (B Δ C)

  6. A  (B  C)

  7. A \ (B Δ C)

  8. A \ (B  C)

  9. A \ (B  C)

  10. A Δ (B \ C)

  11. A Δ( B  C)

  12. A Δ (B  C)

  13. A  (B \ C)

  14. A \ (B Δ C)

  15. A  (B \ C )

где A Δ B = (A  B) \ (A  B) = (A \ B)  (B \ A)

Соседние файлы в папке METOD2