Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
18 Algorythmic problems of JSM.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
68.1 Кб
Скачать

Алгоритмы поиска минимальных пересечений

Далее будут рассмотрены два алгоритма порождения минимальных пересечений, авторами которых являются О.М. Аншаков и К.П. Хазановский. Первый из этих алгоритмов вопреки намерениям его создателей порождает не только минимальные пересечения, но и некоторые другие объекты, не являющиеся пересечениями никаких объектов исходного множества. Первый алгоритм был исправлен и для него, также как и для второго алгоритма, была доказана теорема о корректности.

Алгоритм Аншакова

Имеется упорядоченное множество (массив) объектов X. Известно количество объектов. Нужно найти все возможные минимальные пересечения над X и их множества образующих.

Процедура поиска такова:

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

  2. Если в образовании полученного пересечения участвовало не менее двух объектов, то считать его минимальным, а объекты исходного массива с запомненными номерами - его образующими.

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

  4. Если непустых объектов, по крайней мере, два, повторить процедуру с шага 1, считая первым первый непустой объект.

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

Наличие пятого пункта, отсутствующего в первоисточнике, объясняется необходимостью очистить массив минимальных пересечений от чужеродных элементов, являющихся минимальными пересечениями объектов нового массива, получающегося на шаге 3, но не являющихся минимальными пересечениями объектов исходного массива. Например, для массива ({, , }, {, }, {}) на шаге 1 мы получим пересечение {}, образованное всеми тремя объектами массива. На шаге 3 получим новый массив ({, }, {}, {}), и, вернувшись к шагу 1, получим пересечение {}, не являющееся минимальным над исходным массивом, так как, вообще, не являющееся пересечением никаких его элементов.

Утверждение: Данный алгоритм порождает все минимальные пересечения над заданным массивом объектов и только их.

Алгоритм Хазановского

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

Алгоритм состоит в следующем:

  1. Объявить текущее пересечение равным универсуму, а «дополнение» к нему - пустым объектом.

  2. Взять атом из универсума и проверить все объекты исходного массива на предмет нахождения в них этого атома; в случае положительного исхода проверки получить пересечение текущего пересечения и «проверенного» объекта и объявить полученное пересечение текущим, запомнив индекс объекта в массиве; иначе, присоединить атомы объекта к «дополнению» текущего пересечения.

  3. Если в образовании текущего пересечения участвовало, по крайней мере, два объекта, и оно не пересекается со своим «дополнением», исключить атомы текущего пересечения из универсума и признать текущее пересечение минимальным, а объекты с запомненными индексами - его образующими; иначе, исключить из универсума рассматриваемый атом.

  4. Если универсум не пуст, то перейти к шагу 1.

Утверждение. Данный алгоритм порождает все минимальные пересечения над заданным множеством объектов и только их.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]