WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

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

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

Полезным способом представления информации о доминаторах является дерево, именуемое деревом доминаторов, в котором входной узел является корнем, а каждый узел доминирует только над своими потомками в дереве[1].

История

Доминирование в информатике впервые ввёл Рис Проссер (Reese T. Prosser) в 1959 году[2], алгоритм вычисления доминирования впервые опубликован спустя 10 лет Лоури и Медлоком (E. S. Lowry, C. W. Medlock)[3]. Возобновление интереса к применению отношения доминирования связано с работой Рона Ситрона (Ron Cytron) 1989 года, в которой это отношение использовано для эффективного вычисления φ-функций, которые используются в SSA-представлении[4].

Свойства отношения

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

  • Транзитивность: если и , то ,
  • Антисимметричность: если , то невозможно одновременное выполнение и .

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

Применение

Доминирование используется в компиляторах для формирования SSA-представления. Ряд оптимизаций компилятора может также извлечь выгоду из использования доминаторов. Для автоматического распараллеливания выгодно знать все узлы, над которыми доминирует данный узел. Анализ использования памяти может извлечь выгоду из дерева доминаторов, с помощью которого легко найти утечку и определить излишнее использование памяти. В программных системах, они используются для уменьшения размеров тестового набора[6].

Доминатор импликационного графа ищется в CDCL-решателях задач выполнимости булевых формул при анализе структуры конфликта[7].

Примечания

  1. Компиляторы: принципы, технологии и инструменты, 2008, с. 787.
  2. Prosser, Reese T. (1959). “Applications of Boolean matrices to the analysis of flow diagrams”. AFIPS Joint Computer Conferences: Papers presented at the December 1–3, 1959, eastern joint IRE-AIEE-ACM computer conference. Boston, MA: ACM: 133—138.
  3. Lowry, Edward S.; and Medlock, Cleburne W. (January 1969). “Object code optimization”. Communications of the ACM. 12 (1): 13—22. Используется устаревший параметр |coauthors= (справка)
  4. Cytron, Ron; Hind, Michael; and Hsieh, Wilson (1989). “Automatic Generation of DAG Parallelism”. Proceedings of the ACM SIGPLAN 89 Conference on Programming Language Design and Implementation: 54—68. CiteSeerX: 10.1.1.50.9287. Используется устаревший параметр |coauthors= (справка)
  5. Компиляторы: принципы, технологии и инструменты, 2008, с. 788.
  6. Dubrova, Elena (2005). “Structural Testing Based on Minimum Kernels”. Proceedings of Design and Test in Europe Conference: 1168—1173.
  7. Armin Biere, Marijn Heule, Hans van Maaren and Toby Walsch. Chapter 4. Conflict-Driven Clause Learning SAT Solvers // Handbook of Satisfiability. — IOS Press, 2008. — P. 135.

Литература

  • Альфред В. Ахо, Моника С. Лам, Рави Сети, Джеффри Д. Ульман. Компиляторы: принципы, технологии и инструменты = Compilers: Principles, Techniques, and Tools. — Издательский дом "Вильямс", 2008. ISBN 0-321-48681-1.

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии