Dominator în teoria grafurilor este o relație binară pe nodurile unui graf direcționat cu un nod de intrare distins, arătând avantajul atunci când treceți calea de la nodul de intrare: nodul graf domină nodul (scris ca sau ) dacă există vreo cale din graf nodul de intrare care trece prin . În special, fiecare nod se domină pe sine.
Cea mai răspândită utilizare este în graficele de flux de control utilizate în teoria construcției compilatorului.
O modalitate utilă de a reprezenta informații despre dominatori este un arbore numit arbore dominator , unde nodul de intrare este rădăcina, iar fiecare nod domină doar copiii săi în arbore [1] .
Dominanța în informatică a fost introdusă pentru prima dată de Reese T. Prosser în 1959 [2] , algoritmul de calcul al dominanței a fost publicat pentru prima dată 10 ani mai târziu de către Lowry și Medlock ( ES Lowry , CW Medlock ) [3] . Interesul reînnoit pentru utilizarea relației de dominanță vine din lucrarea lui Ron Cytron din 1989, care utilizează această relație pentru a calcula eficient funcțiile φ care sunt utilizate în reprezentarea SSA [4] .
Observația cheie despre dominatori este că, dacă luăm orice cale aciclică de la nodul de intrare la nod , atunci toți dominatorii vor fi localizați pe această cale, în plus, ei vor fi localizați în aceeași ordine de-a lungul oricărei căi.
Dacă și și sunt dominatori ai , atunci fie , fie . Rezultă că fiecare nod , cu excepția nodului de intrare, trebuie să aibă un singur dominator imediat, adică dominatorul cel mai apropiat de-a lungul oricărei căi aciclice de la nodul de intrare la [5] .
Dominanța este folosită în compilatoare pentru a forma reprezentarea SSA . Un număr de optimizări ale compilatorului pot beneficia, de asemenea, de utilizarea dominatorilor. Pentru paralelizarea automată, este benefic să cunoaștem toate nodurile dominate de un anumit nod. Analiza utilizării memoriei poate beneficia de un arbore dominator, ceea ce facilitează identificarea scurgerilor și identificarea utilizării excesive a memoriei. În sistemele software, acestea sunt utilizate pentru a reduce dimensiunea setului de testare [6] .
Dominatorul grafului de implicație este căutat în CDCL-rezolvatorii de probleme de satisfacție pentru formule booleene la analiza structurii conflictului [7] .