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

Анализ потока управления

Выделение компонент сильной связности (1)


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

Для выделения компонент сильной связности построим нумерацию T , такую, что для би-вершин порядок, задаваемый T -номерами, совпадает с порядком, задаваемым Post -номерами, а все компоненты сильной связности заполнены T -номерами последовательно.

Выделение сильно связных подграфов (2)

Алгоритм построения T -нумерации обходит граф в порядке возрастания Post -номеров вершин. При этом каждая вершина может находиться в двух состояниях: обработанная или необработанная. Первоначально все вершины находятся в необработанном состоянии.

Обнаружив необработанную вершину, алгоритм присваивает ей очередной номер, выделяет ее область и присваивает вершинам области очередные номера.

На рисунке на слайде показан граф с его T -нумерацией.

Иерархия вложенных зон


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

Иерархией вложенных зон называется совокупность сильно связных подграфов S , два любых из которых либо не пересекаются, либо один из них содержит другой, такая, что для произвольного сильно связного подграфа Z найдется содержащий его элемент S , который имеет с Z общую входную вершину.

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

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