stringtranslate.com

Gráfico de dependencia

En matemáticas , informática y electrónica digital , un grafo de dependencia 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 dependencia.

Definición

A depende de B y C ; B depende de D

Dado un conjunto de objetos y una relación transitiva con modelado de una dependencia " a depende de b " (" a necesita que b se evalúe primero"), el gráfico de dependencia es un gráfico con la reducción transitiva de R.

Por ejemplo, supongamos que tenemos una calculadora sencilla. Esta calculadora permite asignar valores constantes a las variables y asignar 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 . Esta relación se puede derivar directamente: A depende de B y C , porque se pueden sumar dos variables si y solo si se conocen los valores de ambas variables. Por lo tanto, B debe calcularse antes de que A pueda calcularse. Como B depende de D para calcularse, A también debe depender de D para calcularse antes (de ahí la propiedad transitiva indicada anteriormente). Por otro lado, los valores de C y D se conocen inmediatamente, porque son literales numéricos.

Reconociendo 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 en el 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.

Derivación de una orden de evaluación

Un orden de evaluación correcto es una numeración de los objetos que forman los nodos del grafo de dependencia de modo que se cumpla la siguiente ecuación: con . Esto significa que, si la numeración ordena dos elementos y de modo que se evaluarán antes que , entonces no deben 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 deriva un orden de evaluación correcto.

Supongamos una vez más 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 como sigue: [1] : 12 

Entonces, la cadena que consta de las etiquetas de vértice ordenadas por un orden de evaluación correcto corresponde a una cadena de una traza.

La operación monoidal toma la unión disjunta de los conjuntos de vértices de dos gráficos, conserva las aristas existentes en cada gráfico y dibuja nuevas aristas desde el primero hasta el segundo donde la relación de dependencia lo permite, [1] : 14 

La identidad es el gráfico vacío.

Ejemplos

Los gráficos de dependencia se utilizan en:

Los gráficos de dependencia son un aspecto de:

Véase también

Referencias

  1. ^ ab Mazurkiewicz, Antoni (1995). "Introducción a la teoría de las trazas" (PDF) . En Rozenberg, G.; Diekert, V. (eds.). El libro de las trazas . Singapur: World Scientific. ISBN 981-02-2058-8. Recuperado el 18 de abril de 2021 .
  2. ^ Mugilan Mariappan; Keval Vora (2019). "GraphBolt: procesamiento sincrónico basado en dependencias de gráficos en streaming". En la Conferencia Europea sobre Sistemas Informáticos (EuroSys'19) . págs. 25:1–25:16. doi :10.1145/3302424.3303974.
  3. ^ Keval Vora; Rajiv Gupta; Guoqing Xu (2017). "KickStarter: cálculos rápidos y precisos en gráficos de transmisión mediante aproximaciones recortadas". En la Conferencia internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos (ASPLOS'17) . págs. 237–251. doi : 10.1145/3093337.3037748 .
  4. ^ Gilbert, Ron. "Cuadros de dependencia de rompecabezas". Grumpy Gamer . Consultado el 11 de enero de 2020 .