Введение

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

1 dom 3 4 5 6 2 dom 3 dom 4 dom 5 dom 6 dom Соответствующее отношение доминирования: не строго доминируются, немедленно доминируются.

В информатике узел d графа потока управления доминирует над узлом n, если каждый путь от начального узла к n должен проходить через d. Это обозначается как d dom n (или иногда d ≫ n). По определению, каждый узел доминирует над самим собой. Существует ряд связанных понятий:

Узел d строго доминирует над узлом n, если d доминирует над n и d не равен n.
Непосредственный доминатор (idom) узла n — это уникальный узел, который строго доминирует над n, но не строго доминирует над каким-либо другим узлом, который строго доминирует над n. Каждый узел, кроме начального, имеет непосредственный доминатор. Проссер не представил алгоритм для вычисления доминирования, который пришлось ждать десять лет, пока его не разработали Эдвард С. Лоури и Си. В. Медлок. Рон Сайтрон и другие вновь вызвали интерес к доминированию в 1989 году, когда применили его к задаче эффективного вычисления размещения φ-функций, которые используются в статической форме однозначного присваивания.

Приложения

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

Постдоминирование

Аналогично определению доминирования, узел z называется постдоминантом узла n, если все пути к выходному узлу графа, начинающиеся в n, должны проходить через z. Соответственно, непосредственный постдоминатор узла n – это постдоминатор n, который не строго постдоминирует ни один другой строгий постдоминатор n.