Gráfico de dependencia
En matemáticas, informática y electrónica digital, un grafo de dependencias es un grafo dirigido que representa las dependencias de varios objetos entre sí. Es posible derivar un orden de evaluación o la ausencia de un orden de evaluación que respete las dependencias dadas a partir del grafo de dependencias.
Definición

Dado un conjunto de objetos y una relación transitiva con modelar una dependencia "a depende de b"a necesidades b evaluado primero"), el gráfico de dependencia es un gráfico con la reducción transitiva de R.
Por ejemplo, asuma una calculadora simple. Esta calculadora soporta la asignación de valores constantes a variables y asignando la suma de exactamente dos variables a una tercera variable. Dadas varias ecuaciones como "A = B+C; B = 5+D; C=4; D=2; entonces y . Puede derivar esta relación directamente: A depende de B y C, porque puede añadir dos variables si y sólo si conoce los valores de ambas variables. Así, B debe calcularse antes A se puede calcular. Sin embargo, los valores de C y D son conocidos inmediatamente, porque son números literales.
Reconociendo las evaluaciones imposibles
En un gráfico de dependencias, los ciclos de dependencias (también llamados dependencias circulares) conducen a una situación en la que no existe un orden de evaluación válido, porque ninguno de los objetos del ciclo puede evaluarse primero. Si un gráfico de dependencias no tiene ninguna dependencia circular, forma un gráfico acíclico dirigido y se puede encontrar un orden de evaluación mediante ordenamiento topológico. La mayoría de los algoritmos de ordenamiento topológico también son capaces de detectar ciclos en sus entradas; sin embargo, puede ser deseable realizar la detección de ciclos por separado del ordenamiento topológico para proporcionar un manejo adecuado para los ciclos detectados.
Supongamos que la calculadora es sencilla. El sistema de ecuaciones "A=B; B=D+C; C=D+A; D=12;" contiene una dependencia circular formada por A, B y C, ya que B debe evaluarse antes que A, C debe evaluarse antes que B y A debe evaluarse antes que C.
Conducir una orden de evaluación
A orden de evaluación correcto es una numeración de los objetos que forman los nodos del gráfico de dependencia para que la siguiente ecuación tenga: con . Esto significa, si la numeración ordena dos elementos y así será evaluado antes Entonces no debe depender de .
Puede haber más de un orden de evaluación correcto. De hecho, una numeración correcta es un orden topológico, y cualquier orden topológico es una numeración correcta. Por lo tanto, cualquier algoritmo que derive un orden topológico correcto derivará un orden de evaluación correcto.
Supongamos una vez más que utilizamos la calculadora simple de arriba. Dado el sistema de ecuaciones "A = B+C; B = 5+D; C=4; D=2;", un orden de evaluación correcto sería (D, C, B, A). Sin embargo, (C, D, B, A) también es un orden de evaluación correcto.
Estructura monoide
Un gráfico de dependencia acíclica corresponde a una traza de un monoide de traza de la siguiente manera:
- Una función etiqueta cada vértice con un símbolo del alfabeto
- Hay un borde o si está en la relación de dependencia .
- Dos gráficos se consideran iguales si sus etiquetas y bordes corresponden.
Entonces, la cadena que consiste en las etiquetas de vértice ordenadas por un orden de evaluación correcto corresponde a una cadena de traza.
La operación monoidal toma la unión descomunal de dos conjuntos de vértice de gráficos, conserva los bordes existentes en cada gráfico, y dibuja nuevos bordes del primero al segundo donde la relación de dependencia permite,
La identidad es el gráfico vacío.
Ejemplos
Los gráficos de dependencia se utilizan en:
- instaladores de software automatizados: Caminan el gráfico buscando paquetes de software que son necesarios pero no instalados. La dependencia es dada por el acoplamiento de los paquetes.
- Software construye scripts como Unix Make, Node npm install, php composer, Twitter bower install, o Apache Ant. Necesitan saber qué archivos han cambiado así que sólo los archivos correctos necesitan ser recompilados.
- En la tecnología compiladora y la aplicación formal del lenguaje:
- Programación de instrucciones: Los gráficos de dependencia se computan para el funcionamiento de las instrucciones de montaje o intermedia y se utilizan para determinar un orden óptimo para las instrucciones.
- Eliminación del código muerto: Si ninguna operación de efecto secundario depende de una variable, esta variable se considera muerta y se puede eliminar.
- Análisis dinámico del gráfico: Las dependencias de valor de captura de GraphBolt y KickStarter para el cálculo incremental cuando la estructura de gráficos cambia.
- Calculadoras de hoja de cálculo. Necesitan derivar una orden de cálculo correcta similar a esa en el ejemplo utilizado en este artículo.
- Normas Web Forms como XForms para saber qué elementos visuales actualizar si los datos del modelo cambian.
- Videojuegos, especialmente rompecabezas y videojuegos de aventura, que son diseñados frecuentemente como un gráfico de relaciones dependientes entre acciones en el juego.
Los gráficos de dependencia son un aspecto de:
- Tipos de fábrica: Las materias primas se procesan en productos a través de varias etapas dependientes.
- Tienda de trabajo programando: Una colección de problemas teóricos relacionados en la informática.
Véase también
- Llama al gráfico
- Tipo topológico
- Dependencia de datos
Referencias
- ^ a b Mazurkiewicz, Antoni (1995). "Introducción a la Teoría Trace" (PDF). En Rozenberg, G.; Diekert, V. (eds.). El Libro de Traces. Singapur: World Scientific. ISBN 981-02-2058-8. Retrieved 18 de abril 2021.
- ^ Mugilan Mariappan; Keval Vora (2019). "GraphBolt: Procesamiento Sincrónico de Transmisión de Gráficos". En la Conferencia Europea sobre Sistemas Informáticos (EuroSys'19). pp. 25:1–25:16. doi:10.1145/3302424.3303974.
- ^ Keval Vora; Rajiv Gupta; Guoqing Xu (2017). "KickStarter: Computaciones rápidas y precisas sobre el streaming de Gráficos a través de Aproximaciones Trimed". In International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS'17). págs. 237 a 251. doi:10.1145/3093337.3037748.
- ^ Gilbert, Ron. "Puzzle Dependency Charts". Grumpy Gamer. Retrieved 11 de enero 2020.
- Balmas, Francoise (2001) Mostrando gráficos de dependencia: un enfoque jerárquico Archived 2012-02-11 en la máquina Wayback, [1] wcre, p. 261, Octava Conferencia de Trabajo sobre Ingeniería Inversa (WCRE'01)