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

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

Алгоритм с рабочим списком

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

Очевидно, что достаточно привести запись алгоритма для прямой задачи.

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

Алгоритм начинает работу на начальной разметке и рабочем списке, состоящем из единственной вершины start (для обратной задачи - stop ). Извлекая очередную вершину из рабочего списка, алгоритм вычисляет общую часть решения задачи по всем своим предшественникам и применяет к ней потоковую функцию, ассоциированную с данной вершиной. Если полученное значение отличается от текущего значения разметки after для данной вершины, то все ее наследники добавляются в рабочий список.

Пример: достижимые определения (1)

Продемонстрируем работу алгоритма на примере задачи о достижимых определениях. На иллюстрации слева показана исходная программа, в центре - ее граф потока управления. Слева от узлов указаны их номера, справа - греческими буквами обозначены присваивания. Набор потоковых функций показан в правой части иллюстрации.

Пример: достижимые определения (2)

На иллюстрации показано несколько состояний разметки в процессе работы алгоритма. Жирными стрелками обозначен порядок обход графа, внутри вершин показана разметка after. Видно, что при первом входе в вершину 4 вершины 6 и 9 еще необработанны (правая часть иллюстрации). После первого прохода по вершинам 7, 8 и 9 неподвижная точка еще не достигнута (средняя часть иллюстрации), что требует еще одного прохода по фрагменту пути 4, 7, 8. Окончательная разметка показана в правой части иллюстрации. Возможный порядок посещения вершин при работе алгоритма показан внизу иллюстрации.