Articulo de referencia

Dominador (teoría de grafos)

Árbol de dominación correspondiente del grafo de flujo de control En informática , un nodo d de un grafo de flujo de control domina a un nodo n si todo camino desde el nodo de e...

Árbol de dominación correspondiente del grafo de flujo de control

En informática , un nodo d de un grafo de flujo de control domina a un nodo n si todo camino desde el nodo de entrada hasta n debe pasar por d . Notacionalmente, esto se escribe como d dom n (o a veces dn ). Por definición, cada nodo se domina a sí mismo.

Existen varios conceptos relacionados:

  • Un nodo d domina estrictamente a un nodo n si d domina a n y d no es igual a n .
  • El dominador inmediato o idom de un nodo n es el único nodo que domina estrictamente a n pero no domina estrictamente a ningún otro nodo que domine estrictamente a n . Cada nodo alcanzable desde el nodo de entrada tiene un dominador inmediato (excepto el nodo de entrada). [ 1 ]
  • La frontera de dominancia de un nodo d es el conjunto de todos los nodos n i tales que d domina a un predecesor inmediato de n i , pero d no domina estrictamente a n i . Es el conjunto de nodos donde termina la dominancia de d .
  • Un árbol dominador es un árbol donde los hijos de cada nodo son aquellos nodos a los que domina inmediatamente. El nodo inicial es la raíz del árbol.

Historia

El concepto de dominancia fue introducido por primera vez por Reese T. Prosser en un artículo de 1959 sobre el análisis de diagramas de flujo. [ 2 ] Prosser no presentó un algoritmo para calcular la dominancia, lo cual tuvo que esperar diez años hasta que Edward S. Lowry y CW Medlock lo hicieran. [ 3 ] Ron Cytron et al. reavivaron el interés en la dominancia en 1989 cuando la aplicaron al problema de calcular eficientemente la ubicación de las funciones φ, que se utilizan en forma de asignación única estática . [ 4 ]

Aplicaciones

Los dominadores, y en particular las fronteras de dominancia, tienen aplicaciones en compiladores para calcular la forma de asignación única estática . Varias optimizaciones de compiladores también pueden beneficiarse de los dominadores. El grafo de flujo en este caso comprende bloques básicos .

Los dominadores desempeñan un papel crucial en el análisis del flujo de control al identificar los comportamientos del programa que son relevantes para una instrucción u operación específica, lo que ayuda a optimizar y simplificar el flujo de control de los programas para su análisis. [ 5 ]

La paralelización automática se beneficia de las fronteras de postdominancia. Este es un método eficiente para calcular la dependencia de control, lo cual es fundamental para el análisis.

El análisis del uso de memoria puede beneficiarse del árbol de dominancia para encontrar fácilmente fugas e identificar un alto uso de memoria. [ 6 ]

En sistemas de hardware, los dominadores se utilizan para calcular probabilidades de señal para la generación de pruebas, estimar actividades de conmutación para el análisis de potencia y ruido, y seleccionar puntos de corte en la verificación de equivalencia. [ 7 ] En sistemas de software, se utilizan para reducir el tamaño del conjunto de pruebas en técnicas de prueba estructural como la cobertura de sentencias y ramas. [ 8 ]

Algoritmos

Dejarnorte0{\displaystyle n_{0}}ser el nodo fuente en el grafo de flujo de control . Los dominadores de un nodonorte{\displaystyle n}se obtienen mediante la solución máxima de las siguientes ecuaciones de flujo de datos:

Dom(norte)={{norte} si norte=norte0{norte}(pagdepredadores(norte)Dom(pag)) si nortenorte0{\displaystyle \operatorname {Dom} (n)={\begin{cases}\left\{n\right\}&{\mbox{ si }}n=n_{0}\\\left\{n\right\}\cup \left(\bigcap _{p\in {\text{preds}}(n)}^{}\operatorname {Dom} (p)\right)&{\mbox{ si }}n\neq n_{0}\end{cases}}}

El dominador del nodo inicial es el propio nodo inicial. El conjunto de dominadores para cualquier otro nodonorte{\displaystyle n}es la intersección del conjunto de dominadores para todos los predecesorespag{\displaystyle p}denorte{\displaystyle n}. El nodonorte{\displaystyle n}también está en el conjunto de dominadores paranorte{\displaystyle n}.

Un algoritmo para la solución directa es:

// El dominador del nodo de inicio es el propio inicio. Dom(n 0 ) = {n 0 } // Para todos los demás nodos, establezca todos los nodos como dominadores. para cada n en N - {n 0 } Dom(n) = N; // Eliminar iterativamente los nodos que no son dominadores mientras haya cambios en cualquier Dom(n) para cada n en N - {n 0 }: Dom(n) = {n} unión con intersección sobre Dom(p) para todo p en pred(n)

La solución directa es cuadrática en el número de nodos, o O( ). Lengauer y Tarjan desarrollaron un algoritmo que es casi lineal, [ 1 ] y en la práctica, salvo para algunos grafos artificiales, el algoritmo y una versión simplificada del mismo son tan rápidos o más rápidos que cualquier otro algoritmo conocido para grafos de todos los tamaños, y su ventaja aumenta con el tamaño del grafo. [ 9 ]

Keith D. Cooper , Timothy J. Harvey y Ken Kennedy de la Universidad Rice describen un algoritmo que esencialmente resuelve las ecuaciones de flujo de datos anteriores, pero utiliza estructuras de datos bien diseñadas para mejorar el rendimiento. [ 10 ]

Postdominancia

De forma análoga a la definición de dominancia anterior, se dice que un nodo z postdomina a un nodo n si todos los caminos hacia el nodo de salida del grafo que parten de n deben pasar por z . Del mismo modo, el postdominador inmediato de un nodo n es el postdominador de n que no postdomina estrictamente a ningún otro postdominador estricto de n .

Véase también

Referencias

  1. 1 2 Lengauer, Thomas ; Tarjan, Robert Endre (julio de 1979). "Un algoritmo rápido para encontrar dominadores en un grafo de flujo". ACM Transactions on Programming Languages ​​and Systems . 1 (1): 121– 141. CiteSeerX 10.1.1.117.8843 . doi : 10.1145/357062.357071 . S2CID 976012 .  
  2. Prosser, Reese T. (1959). "Aplicaciones de matrices booleanas al análisis de diagramas de flujo" . Artículos presentados en la conferencia conjunta de informática IRE-AIEE-ACM del este, del 1 al 3 de diciembre de 1959, IRE-AIEE-ACM '59 (Eastern) . pp. 133–138 . doi : 10.1145/1460299.1460314 . S2CID 15546681 .  
  3. Lowry, Edward S.; Medlock, Cleburne W. (enero de 1969). "Optimización del código objeto" . Communications of the ACM . 12 (1): 13– 22. doi : 10.1145/362835.362838 . S2CID 16768560 . 
  4. Cytron, Ron; Ferrante, Jeanne; Rosen, Barry K.; Wegman, Mark N.; Zadeck, F. Kenneth (1989). "Un método eficiente para calcular la forma de asignación única estática" . Actas del 16.º simposio ACM SIGPLAN-SIGACT sobre principios de lenguajes de programación - POPL '89 . págs. 25-35 . doi : 10.1145/75277.75280 . ISBN  0897912942. S2CID 8301431 . 
  5. Tamrawi, Ahmed; Kothari, Suresh (1 de octubre de 2018). "Grafo de control proyectado para el cálculo de comportamientos relevantes del programa" . Science of Computer Programming . 163 : 93–114 . doi : 10.1016/j.scico.2018.04.003 . ISSN 0167-6423 . 
  6. "Árbol Dominador" . eclipse.org . SAP AG e IBM Corporation. 2012 [2008] . Consultado el 21 de junio de 2013 .
  7. Teslenko, Maxim; Dubrova, Elena (2005). "Un algoritmo eficiente para encontrar dominadores de doble vértice en grafos de circuitos". Diseño, automatización y pruebas en Europa . págs. 406–411 . CiteSeerX 10.1.1.598.3053 . doi : 10.1109/DATE.2005.53 . ISBN   9780769522883. S2CID 10305833 . 
  8. Dubrova, Elena (2005). "Pruebas estructurales basadas en núcleos mínimos" . Diseño, automatización y pruebas en Europa . págs. 1168–1173 . CiteSeerX 10.1.1.583.5547 . doi : 10.1109/DATE.2005.284 . ISBN   9780769522883. S2CID 11439732 . 
  9. Georgiadis, Loukas; Tarjan, Robert E. ; Werneck, Renato F. (2006). "Encontrando dominantes en la práctica" (PDF) . Archivado del original (PDF) el 15 de abril de 2024.
  10. Cooper, Keith D. ; Harvey, Timothy J; Kennedy, Ken (2001). "Un algoritmo de dominancia simple y rápido" (PDF) .
  • Biblioteca de análisis de flujo de control Machine-SUIF
  • Algoritmos para calcular dominadores explicados visualmente