Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 1. Множества .doc
Скачиваний:
9
Добавлен:
27.09.2019
Размер:
122 Кб
Скачать
☆

1.8. Алгоритм построения бинарного кода Грея

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

Для самостоятельного изучения. (описан в учебнике).

1.9. Алгоритмы пересечения, объединения двух множеств и проверки включения слиянием

В общем случае множество состоит из элементов. При этом трудоемкость выполнения основных операций будет:

  •  - О(n) – ограничено сверху числом элементов в множестве. Т.е. для проверки принадлежности элемента множеству в худшем случае необходимо сравнить данный элемент с каждым элементом множества 1 раз;

  • ,, - О(m*n) – ограничено сверху произведением мощностей множеств. Т.е. для выполнения данных операций, сначала необходимо каждый элемент первого множества сравнить с каждым элементом второго.

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

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

Рассмотрим алгоритм вычисления пересечения слиянием двух множеств A и B. В данном примере подразумевается, что множества представлены в виде массивов, чьи элементы упорядочены.

ia<-0;

ib<-0;

С<-; //C – пустое множество

while (ia<|A| and ib<|B|) do

if (A[ia] < B[ib]) then //A[ia] не принадлежит пресечению,

ia <- ia + 1; //переходим на следующий

else if (A[ia] > B[ib]) then //B[ib] не принадлежит пресечению,

ib <- ib + 1; //переходим на следующий

else //элементы A[ia] и B[ib] совпадают

Добавить элемент A[ia] в множество С;

ia <- ia + 1;

ib <- ib + 1;

endif

end while

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