Опубликован: 23.07.2006 | Доступ: свободный | Студентов: 2218 / 892 | Оценка: 4.28 / 4.17 | Длительность: 21:37:00
Специальности: Системный архитектор
Лекция 13:

Анализ потоков данных

Решение задачи анализа потоков данных (1)

Для описания решения задачи анализа потоков данных рассмотрим вновь систему ( * ). Для каждой пары уравнений системы введем пару вспомогательных функций gv1, gv2, каждая из которых вычисляет значение правой части соответствующего уравнения (см. пример на слайде).

Можно показать, что полученные таким образом функции являются монотонными.

Решение задачи анализа потоков данных (2)


Введем в рассмотрение полурешетку, представляющую собой декартову степень 2|V| исходной полурешетки L и введем в рассмотрение функцию F на ней. Данная функция принимает на вход элемент <before1, after1, ..., before|V|, after|V|> и возвращает элемент, полученный применением функций, построенных на предыдущем шаге, к соответствующим аргументам. Иными словами, если, например, для вершины 10 графа потока управления предшественниками являются вершины 2 и 3, то двадцатым элементом возвращаемого F значения будет g10,2(after2, after3) .

Легко видеть, что функция F является монотонной. Кроме того, можно показать, что ее произвольная неподвижная точка является решением системы уравнений ( * ), поскольку произвольный элемент решетки L2ґ|V| определяет пару разметок before, after.

Наконец, итерирование функции F, начиная с наименьшего элемента, дает в конце концов наименьшую неподвижную точку и, следовательно, искомое решение задачи анализа потоков данных.

Свойства итеративного подхода

Может быть показано, что нахождение точного решения задачи анализа потоков данных (т.е. наименьшего общего набора свойства при исполнении по всем путям до данной вершины) неразрешимо. Таким образом, итеративный подход дает только приближенное решение.

Однако доказано, что в случае, когда все потоковые функции не просто монотонны, но и дистрибутивны, итеративное решение является точным.