Московский государственный университет путей сообщения
Опубликован: 06.09.2012 | Доступ: свободный | Студентов: 1232 / 168 | Оценка: 5.00 / 5.00 | Длительность: 35:22:00
Специальности: Разработчик аппаратуры
Лекция 32:

Жадный алгоритм поиска индивидуальных масок

< Лекция 31 || Лекция 32: 123 || Лекция 33 >

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

Теорема 1. Суммарный объем совокупности индивидуальных масок, полученной с помощью алгоритма2, не превышает величины

M\cdot(1+ln(|S|-1)),

где M - суммарный объем совокупности минимальных индивидуальных масок заданного СПР.

Доказательство. Обозначим через \#MaskSet(S_1,S_2,J) суммарное количество точек проверки, добавленное в совокупность масок H в результате вызова MaskSet(S_1,S_2,J).

Из определения алгоритма MaskSet ясно, что


\#MaskSet(S,\varnothing,|S|)=\sum\limits_{s\in S}\#MaskSet (\{s\},S\setminus\{s\},|S|-3).

Запуск MaskSet (\{s\},S\setminus\{s\},|S|-3) возвращает индивидуальную маску для технического состояния s. Работа такого запуска сводится к работе жадного алгоритма поиска минимального покрытия множества, содержащего |S|-1 элементов.

Известно [1], что размер покрытия множества P, полученного с помощью жадного алгоритма, превосходит размер минимального покрытия не более чем в 1+ln|P| раз. Отсюда


\#MaskSet (\{s\},S\setminus\{s\},|S|-3)=M_s\cdot(1+ln(|S|-1)),

где M_s - объем минимальной индивидуальной маски для технического состояния s. Из последнего неравенства следует, что

\# MaskSet(S,\varnothing,|S|) =\sum\limits_{s\in S}{M_s}
\cdot(1+ln(|S|-1))= M\cdot(1+ln(|S|-1))

где M=\sum\limits_{s\in S}{M_s}.

В следующей теореме оценивается сложность описанного алгоритма.

Теорема 2. Временная сложность алгоритма 2 составляет O(|S|^3m|\tau|). Объем дополнительной памяти, необходимой для функционирования алгоритма 2, оценивается величиной O(|S|^2).

Доказательство. Из формулировки алгоритма 2 ясно, что его сложность равна временной сложности вызова алгоритма MaskSet(S,\varnothing,|S|). Оценим ее.

Заметим, что рекурсия по второму обращению к функции MaskSet является концевой и эквивалентна итерационному процессу с параметром S_1 (с условием окончания процесса, как только выполнится |S_1|\le 1). Таким образом, стоит учитывать лишь первое обращение как рекурсивный вызов.

Максимально возможная глубина рекурсии по первому обращению MaskSet равна |S|-1. При каждом таком рекурсивном вызове происходит уменьшение количества элементов в множестве S_1\cup S_2, вследствие чего можно оценить сверху объем необходимой памяти для вызова MaskSet(S,\varnothing,|S|) величиной, кратной |S|(|S-1|)/2. Отсюда следует оценка емкостной сложности в формулировке теоремы.

Величиной той же кратности можно оценить стоимость поиска одной индивидуальной маски, а следовательно количество операций для поиска всей совокупности индивидуальных масок не превышает величины O(|S|^3m|\tau|).

Ключевые термины:

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

Задача о минимальном покрытии множества - классическая NP-полная задача, формулируемая следующим образом: Задано множество U и семейство его подмножеств S. Требуется найти такое семейство C\subseteq S,которое покрывает множество U.

Краткие итоги:

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

Вопросы и упражнения

  1. Каким образом задача о поиске совокупности индивидуальных масок может быть сведена к задаче о минимальном покрытии множества?
  2. Кратко изложите идейную основу и суть алгоритма 2.
  3. Какова верхняя оценка объема совокупности индивидуальных масок, получаемая по алгоритму 2?
  4. Какова временная оценка сложности алгоритма 2?
< Лекция 31 || Лекция 32: 123 || Лекция 33 >
Дмитрий Медведевских
Дмитрий Медведевских

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