En las matemáticas , en particular la teoría de grafos , y la informática , un gráfico acíclico dirigido ( DAG o dag / d æ ɡ / ( escuchar ) ) es un gráfico dirigido con no hay ciclos dirigidos . Es decir, consta de vértices y aristas (también llamados arcos ), con cada arista dirigida de un vértice a otro, de modo que seguir esas direcciones nunca formará un bucle cerrado. Un gráfico dirigido es un DAG si y solo si se puede ordenar topológicamente, organizando los vértices como un orden lineal que es consistente con todas las direcciones de los bordes. Los DAG tienen numerosas aplicaciones científicas y computacionales, que van desde la biología (evolución, árboles genealógicos, epidemiología) hasta la sociología (redes de citas) y la computación (programación).
Definiciones
Un gráfico está formado por vértices y aristas que conectan pares de vértices, donde los vértices pueden ser cualquier tipo de objeto que esté conectado en pares por aristas. En el caso de un gráfico dirigido , cada borde tiene una orientación, de un vértice a otro vértice. Un camino en un gráfico dirigido es una secuencia de aristas que tiene la propiedad de que el vértice final de cada arista en la secuencia es el mismo que el vértice inicial del siguiente arista en la secuencia; un camino forma un ciclo si el vértice inicial de su primer borde es igual al vértice final de su último borde. Un gráfico acíclico dirigido es un gráfico dirigido que no tiene ciclos. [1] [2] [3]
Se dice que un vértice v de una gráfica dirigida es accesible desde otro vértice u cuando existe una ruta que comienza en u y termina en v . Como caso especial, se considera que cada vértice es accesible desde sí mismo (por una ruta con cero aristas). Si un vértice puede alcanzarse a sí mismo a través de una ruta no trivial (una ruta con uno o más bordes), entonces esa ruta es un ciclo, por lo que otra forma de definir gráficos acíclicos dirigidos es que son los gráficos en los que ningún vértice puede llegar a sí mismo a través de un camino no trivial. [4]
Propiedades matematicas
Accesibilidad, cierre transitivo y reducción transitiva
La relación de accesibilidad en cualquier grafo acíclico dirigido se puede formalizar como un orden parcial ≤ en los vértices del DAG. En este orden parcial, dos vértices U y V están clasificadas como u ≤ v exactamente cuando existe un camino dirigido desde u a v en el DAG; es decir, cuando v es accesible desde u . [5] Sin embargo, diferentes DAG pueden dar lugar a la misma relación de accesibilidad y al mismo orden parcial. [6] Por ejemplo, el DAG con dos bordes un → b y b → c tiene la misma relación de alcanzabilidad como la gráfica con tres bordes un → b , b → c , y un → c . Ambos DAGS producen el mismo orden parcial, en el que los vértices se ordenan como a ≤ b ≤ c .
Si G es un DAG, su cierre transitivo es el gráfico con más aristas que representa la misma relación de accesibilidad. Tiene un borde u → v siempre que u puede alcanzar v . Es decir, tiene un borde para cada par relacionado u ≤ v de elementos distintos en la relación de accesibilidad de G y, por lo tanto, puede pensarse como una traducción directa de la relación de accesibilidad ≤ en términos de la teoría de gráficos. El mismo método de traducir órdenes parciales en DAG funciona de manera más general: para cada conjunto finito parcialmente ordenado ( S , ≤) , el gráfico que tiene un vértice para cada miembro de S y un borde para cada par de elementos relacionados por u ≤ v es automáticamente un DAG cerrado transitivamente, y tiene ( S , ≤) como su relación de accesibilidad. De esta manera, cada conjunto finito parcialmente ordenado puede representarse como la relación de accesibilidad de un DAG.
La reducción transitiva de un DAG G es la gráfica con los bordes menor número que representa la misma relación de alcanzabilidad como G . Es un subgrafo de G , formado descartando las aristas u → v para las cuales G también contiene un camino más largo que conecta los mismos dos vértices. Al igual que el cierre transitivo, la reducción transitiva se define de forma única para los DAG. Por el contrario, para un gráfico dirigido que no es acíclico, puede haber más de un subgráfico mínimo con la misma relación de accesibilidad. [7]
Si un DAG G tiene una relación de accesibilidad descrita por el orden parcial ≤ , entonces la reducción transitiva de G es un subgrafo de G que tiene un borde u → v para cada par en la relación de cobertura de ≤ . Las reducciones transitivas son útiles para visualizar los órdenes parciales que representan, porque tienen menos bordes que otros gráficos que representan los mismos órdenes y, por lo tanto, conducen a dibujos de gráficos más simples . Un diagrama de Hasse de orden parcial es un dibujo de la reducción transitiva en el que la orientación de cada borde se muestra colocando el vértice inicial del borde en una posición más baja que su vértice final. [8]
Orden topológico
Un ordenamiento topológico de un grafo dirigido es un ordenamiento de sus vértices en una secuencia, de modo que para cada borde, el vértice inicial del borde ocurre antes en la secuencia que el vértice final del borde. Un gráfico que tiene un orden topológico no puede tener ciclos, porque el borde en el vértice más temprano de un ciclo tendría que estar orientado de manera incorrecta. Por tanto, todo gráfico con un orden topológico es acíclico. Por el contrario, cada grafo acíclico dirigido tiene al menos un orden topológico. Por tanto, la existencia de un ordenamiento topológico se puede utilizar como una definición equivalente de un gráfico acíclico dirigido: son exactamente los gráficos que tienen ordenamientos topológicos. [2] En general, este orden no es único; un DAG tiene un orden topológico único si y solo si tiene una ruta dirigida que contiene todos los vértices, en cuyo caso el orden es el mismo que el orden en el que aparecen los vértices en la ruta. [9]
La familia de ordenamientos topológicos de un DAG es la misma que la familia de extensiones lineales de la relación de accesibilidad para el DAG, [10] por lo que dos gráficos que representan el mismo orden parcial tienen el mismo conjunto de órdenes topológicos.
Enumeración combinatoria
El gráfico enumeración problema de contar gráficos acíclicos dirigidos fue estudiada por Robinson (1973) . [11] El número de DAG en n vértices etiquetados, para n = 0, 1, 2, 3,… (sin restricciones en el orden en el que estos números aparecen en un orden topológico del DAG) es
Estos números pueden calcularse mediante la relación de recurrencia
Eric W. Weisstein conjeturaron, [12] y McKay et al. (2004) demostró que los mismos números cuentan las matrices (0,1) para las que todos los valores propios son números reales positivos . La prueba es biyectiva : una matriz A es una matriz de adyacencia de un DAG si y solo si A + I es una matriz (0,1) con todos los valores propios positivos, donde I denota la matriz identidad . Debido a que un DAG no puede tener bucles propios , su matriz de adyacencia debe tener una diagonal cero, por lo que agregar I conserva la propiedad de que todos los coeficientes de la matriz son 0 o 1. [13]
Familias relacionadas de gráficos
Un polytree es un gráfico dirigido que se forma al orientar los bordes de un árbol libre . [14] Cada polytree es un DAG. En particular, esto es cierto para las arborescencias que se forman al dirigir todos los bordes hacia afuera desde las raíces de un árbol.
Un árbol múltiple (también llamado gráfico claramente inequívoco o manglar) es un gráfico dirigido en el que hay como máximo una trayectoria dirigida (en cualquier dirección) entre dos vértices cualesquiera; de manera equivalente, es un DAG en el que, por cada vértice v , el subgrafo accesible desde v forma un árbol. [15]
Problemas computacionales
Clasificación y reconocimiento topológico
La ordenación topológica es el problema algorítmico de encontrar una ordenación topológica de un DAG dado. Se puede resolver en tiempo lineal . [16] El algoritmo de Kahn para la ordenación topológica construye la ordenación de vértices directamente. Mantiene una lista de vértices que no tienen aristas entrantes de otros vértices que aún no se han incluido en el ordenamiento topológico parcialmente construido; inicialmente, esta lista consta de los vértices sin aristas entrantes en absoluto. Luego, agrega repetidamente un vértice de esta lista al final del orden topológico construido parcialmente y verifica si sus vecinos deben agregarse a la lista. El algoritmo termina cuando todos los vértices se han procesado de esta manera. [17] Alternativamente, se puede construir un orden topológico invirtiendo una numeración posterior a un recorrido de gráfico de búsqueda en profundidad . [dieciséis]
También es posible comprobar si un gráfico dirigido dado es un DAG en tiempo lineal, ya sea intentando encontrar un orden topológico y luego probando para cada borde si el orden resultante es válido [18] o, alternativamente, para algunos algoritmos de clasificación topológica, verificando que el algoritmo ordena correctamente todos los vértices sin cumplir una condición de error. [17]
Construcción a partir de gráficos cíclicos
Cualquier grafo no dirigido puede convertirse en un DAG eligiendo un orden total para sus vértices y dirigiendo cada borde desde el punto final anterior en el orden al punto final posterior. La orientación resultante de los bordes se denomina orientación acíclica . Diferentes órdenes totales pueden conducir a la misma orientación acíclica, por lo que un gráfico de n -vértices puede tener menos de n . orientaciones acíclicas. El número de orientaciones acíclicas es igual a | χ (−1) | , donde χ es el polinomio cromático del gráfico dado. [19]
Cualquier gráfico dirigido puede convertirse en un DAG eliminando un conjunto de vértices de retroalimentación o un conjunto de arcos de retroalimentación , un conjunto de vértices o aristas (respectivamente) que toca todos los ciclos. Sin embargo, el conjunto más pequeño de este tipo es NP-difícil de encontrar. [20] Un gráfico dirigido arbitrario también se puede transformar en un DAG, llamado su condensación , al contraer cada uno de sus componentes fuertemente conectados en un solo supervertex. [21] Cuando el gráfico ya es acíclico, sus conjuntos de vértices de retroalimentación y los conjuntos de arcos de retroalimentación más pequeños están vacíos , y su condensación es el gráfico en sí.
Cierre transitivo y reducción transitiva
El cierre transitivo de un DAG dado, con n vértices y m aristas, se puede construir en el tiempo O ( mn ) mediante el uso de búsqueda primero en amplitud o búsqueda en profundidad primero para probar la accesibilidad desde cada vértice. [22] Alternativamente, se puede resolver en el tiempo O ( n ω ) donde ω <2.373 es el exponente para los algoritmos de multiplicación de matrices ; esta es una mejora teórica sobre el límite de O ( mn ) para gráficos densos . [23]
En todos estos algoritmos de cierre transitivo, es posible distinguir pares de vértices que son alcanzables por al menos un camino de longitud dos o más de pares que solo pueden estar conectados por un camino de longitud uno. La reducción transitiva consiste en los bordes que forman trayectorias de longitud uno que son las únicas trayectorias que conectan sus extremos. Por lo tanto, la reducción transitiva se puede construir en los mismos límites de tiempo asintóticos que el cierre transitivo. [24]
Problema de cierre
El problema de cierre toma como entrada un gráfico acíclico vértice ponderado dirigido y busca el peso mínimo (o máximo) de un cierre - un conjunto de vértices C , de manera que no hay bordes dejan C . El problema puede formularse para grafos dirigidos sin el supuesto de aciclicidad, pero sin mayor generalidad, porque en este caso equivale al mismo problema de condensación del grafo. Puede resolverse en tiempo polinomial utilizando una reducción al problema de flujo máximo . [25]
Algoritmos de ruta
Algunos algoritmos se vuelven más simples cuando se usan en DAG en lugar de gráficos generales, según el principio de ordenamiento topológico. Por ejemplo, es posible encontrar las rutas más cortas y más largas desde un vértice inicial dado en DAG en tiempo lineal procesando los vértices en un orden topológico y calculando la longitud de la ruta para cada vértice para que sea la longitud mínima o máxima obtenida a través de cualquier de sus bordes entrantes. [26] En contraste, para gráficos arbitrarios, el camino más corto puede requerir algoritmos más lentos como el algoritmo de Dijkstra o el algoritmo de Bellman-Ford , [27] y los caminos más largos en gráficos arbitrarios son NP-difíciles de encontrar. [28]
Aplicaciones
Planificación
Las representaciones de gráficos acíclicos dirigidos de ordenamientos parciales tienen muchas aplicaciones en la programación de sistemas de tareas con restricciones de ordenamiento. [29] Una clase importante de problemas de este tipo se refiere a las colecciones de objetos que necesitan actualizarse, como las celdas de una hoja de cálculo después de que una de las celdas ha sido cambiada, o los archivos de objetos de un software de computadora después de su origen. se ha cambiado el código . En este contexto, un gráfico de dependencia es un gráfico que tiene un vértice para cada objeto a actualizar y un borde que conecta dos objetos cuando uno de ellos necesita actualizarse antes que el otro. En este gráfico, un ciclo se denomina dependencia circular y, por lo general, no se permite, porque no habría forma de programar de manera consistente las tareas involucradas en el ciclo. Los gráficos de dependencia sin dependencias circulares forman DAG. [30]
Por ejemplo, cuando cambia una celda de una hoja de cálculo , es necesario volver a calcular los valores de otras celdas que dependen directa o indirectamente de la celda modificada. Para este problema, las tareas a programar son los recálculos de los valores de celdas individuales de la hoja de cálculo. Las dependencias surgen cuando una expresión en una celda usa un valor de otra celda. En tal caso, el valor que se usa debe recalcularse antes que la expresión que lo usa. Ordenar topológicamente el gráfico de dependencia y usar este orden topológico para programar las actualizaciones de las celdas permite que toda la hoja de cálculo se actualice con una única evaluación por celda. [31] Problemas similares de orden de tareas surgen en archivos MAKE para la compilación de programas [31] y la programación de instrucciones para la optimización de programas de computadora de bajo nivel. [32]
La técnica de evaluación y revisión de programas (PERT) utiliza una formulación algo diferente basada en DAG de las restricciones de programación , un método para la gestión de grandes proyectos humanos que fue una de las primeras aplicaciones de los DAG. En este método, los vértices de un DAG representan hitos de un proyecto en lugar de tareas específicas a realizar. En cambio, una tarea o actividad está representada por un borde de un DAG, que conecta dos hitos que marcan el comienzo y la finalización de la tarea. Cada uno de estos bordes está etiquetado con una estimación de la cantidad de tiempo que le tomará a un equipo de trabajadores realizar la tarea. La ruta más larga en este DAG representa la ruta crítica del proyecto, la que controla el tiempo total del proyecto. Los hitos individuales se pueden programar de acuerdo con las longitudes de los caminos más largos que terminan en sus vértices. [33]
Redes de procesamiento de datos
Puede usarse un gráfico acíclico dirigido para representar una red de elementos de procesamiento. En esta representación, los datos ingresan a un elemento de procesamiento a través de sus bordes entrantes y salen del elemento a través de sus bordes salientes.
Por ejemplo, en el diseño de circuitos electrónicos, los bloques lógicos combinacionales estáticos se pueden representar como un sistema acíclico de puertas lógicas que calcula una función de una entrada, donde la entrada y salida de la función se representan como bits individuales . En general, la salida de estos bloques no se puede utilizar como entrada a menos que sea capturada por un registro o elemento de estado que mantenga sus propiedades acíclicas. [34] Los esquemas de circuitos electrónicos en papel o en una base de datos son una forma de gráficos acíclicos dirigidos que utilizan instancias o componentes para formar una referencia dirigida a un componente de nivel inferior. Los circuitos electrónicos en sí mismos no son necesariamente acíclicos o dirigidos.
Los lenguajes de programación de flujo de datos describen sistemas de operaciones en flujos de datos y las conexiones entre las salidas de algunas operaciones y las entradas de otras. Estos lenguajes pueden resultar convenientes para describir tareas repetitivas de procesamiento de datos, en las que se aplica la misma colección de operaciones conectadas acíclicamente a muchos elementos de datos. Se pueden ejecutar como un algoritmo paralelo en el que cada operación se realiza mediante un proceso paralelo tan pronto como otro conjunto de entradas esté disponible. [35]
En los compiladores , el código de línea recta (es decir, secuencias de declaraciones sin bucles o ramas condicionales) puede representarse mediante un DAG que describe las entradas y salidas de cada una de las operaciones aritméticas realizadas dentro del código. Esta representación permite al compilador realizar la eliminación de subexpresiones comunes de manera eficiente. [36] En un nivel superior de organización del código, el principio de dependencias acíclicas establece que las dependencias entre módulos o componentes de un gran sistema de software deben formar un gráfico acíclico dirigido. [37]
Las redes neuronales feedforward son otro ejemplo.
Estructuras causales
Los gráficos en los que los vértices representan eventos que ocurren en un tiempo definido, y donde los bordes siempre apuntan desde el vértice de tiempo temprano a un vértice de tiempo tardío del borde, son necesariamente dirigidos y acíclicos. La falta de un ciclo se debe a que el tiempo asociado con un vértice siempre aumenta a medida que sigue cualquier camino en el gráfico, por lo que nunca puede volver a un vértice en un camino. Esto refleja nuestra intuición natural de que la causalidad significa que los eventos solo pueden afectar el futuro, nunca afectan el pasado y, por lo tanto, no tenemos bucles causales . Un ejemplo de este tipo de gráfico acíclico dirigido son los que se encuentran en el enfoque del conjunto causal de la gravedad cuántica, aunque en este caso los gráficos considerados son transitivamente completos . En el ejemplo del historial de versiones, cada versión del software está asociada a una hora única, normalmente la hora en que se guardó, confirmó o publicó la versión. Para los gráficos de citas, los documentos se publican al mismo tiempo y solo pueden hacer referencia a documentos más antiguos.
A veces, los eventos no están asociados con un momento físico específico. Siempre que los pares de eventos tengan una relación puramente causal, es decir, los bordes representan relaciones causales entre los eventos, tendremos un gráfico acíclico dirigido. [38] Por ejemplo, una red bayesiana representa un sistema de eventos probabilísticos como vértices en un gráfico acíclico dirigido, en el que la probabilidad de un evento puede calcularse a partir de las probabilidades de sus predecesores en el DAG. [39] En este contexto, el gráfico moral de un DAG es el gráfico no dirigido creado agregando un borde (no dirigido) entre todos los padres del mismo vértice (a veces llamado casamiento ) y luego reemplazando todos los bordes dirigidos por bordes no dirigidos. [40] Otro tipo de gráfico con una estructura causal similar es un diagrama de influencia , cuyos vértices representan decisiones a tomar o información desconocida, y cuyos bordes representan influencias causales de un vértice a otro. [41] En epidemiología , por ejemplo, estos diagramas se utilizan a menudo para estimar el valor esperado de diferentes opciones de intervención. [42] [43]
Lo contrario también es cierto. Es decir, en cualquier aplicación representada por un gráfico acíclico dirigido, existe una estructura causal, ya sea un orden explícito o tiempo en el ejemplo o un orden que puede derivarse de la estructura del gráfico. Esto se debe a que todos los gráficos acíclicos dirigidos tienen un orden topológico , es decir, hay al menos una forma de poner los vértices en un orden tal que todos los bordes apunten en la misma dirección a lo largo de ese orden.
Genealogía e historial de versiones
Los árboles genealógicos pueden verse como gráficos acíclicos dirigidos, con un vértice para cada miembro de la familia y un borde para cada relación entre padres e hijos. [44] A pesar del nombre, estos gráficos no son necesariamente árboles debido a la posibilidad de matrimonios entre parientes (por lo que un niño tiene un antepasado común tanto del lado de la madre como del padre) causando el colapso del pedigrí . [45] Los gráficos de descendencia matrilineal (relaciones "madre" entre mujeres) y descendencia patrilineal (relaciones "paternales" entre hombres) son árboles dentro de este gráfico. Como nadie puede convertirse en su propio antepasado, los árboles genealógicos son acíclicos. [46]
El historial de versiones de un sistema de control de revisiones distribuido , como Git , generalmente tiene la estructura de un gráfico acíclico dirigido, en el que hay un vértice para cada revisión y un borde que conecta pares de revisiones que se derivaron directamente entre sí. Estos no son árboles en general debido a fusiones. [47]
En muchos algoritmos aleatorios de geometría computacional , el algoritmo mantiene un DAG histórico que representa el historial de versiones de una estructura geométrica a lo largo de una secuencia de cambios en la estructura. Por ejemplo, en un algoritmo incremental aleatorio para la triangulación de Delaunay , la triangulación cambia reemplazando un triángulo por tres triángulos más pequeños cuando se agrega cada punto, y mediante operaciones de "volteo" que reemplazan pares de triángulos por un par de triángulos diferente. El DAG histórico para este algoritmo tiene un vértice para cada triángulo construido como parte del algoritmo, y bordes de cada triángulo a los otros dos o tres triángulos que lo reemplazan. Esta estructura permite que las consultas de ubicación de puntos sean respondidas de manera eficiente: para encontrar la ubicación de un punto de consulta q en la triangulación de Delaunay, siga una ruta en el historial DAG, en cada paso moviéndose al triángulo de reemplazo que contiene q . El triángulo final alcanzado en este camino debe ser el triángulo de Delaunay que contiene q . [48]
Gráficos de citas
En un gráfico de citas, los vértices son documentos con una sola fecha de publicación. Los bordes representan las citas de la bibliografía de un documento a otros documentos necesariamente anteriores. El ejemplo clásico proviene de las citas entre artículos académicos, como se señala en el artículo de 1965 "Redes de artículos científicos" [49] de Derek J. de Solla Price, quien llegó a producir el primer modelo de una red de citas, el modelo de Price . [50] En este caso, el recuento de citas de un artículo es solo el grado de entrada del vértice correspondiente de la red de citas. Esta es una medida importante en el análisis de citas . Las sentencias de los tribunales proporcionan otro ejemplo, ya que los jueces apoyan sus conclusiones en un caso recordando otras decisiones anteriores tomadas en casos anteriores. Un último ejemplo lo proporcionan las patentes que deben hacer referencia al estado de la técnica anterior, patentes anteriores que son relevantes para la reivindicación de patente actual. Teniendo en cuenta las propiedades especiales de los gráficos acíclicos dirigidos, se pueden analizar redes de citas con técnicas no disponibles al analizar los gráficos generales considerados en muchos estudios que utilizan análisis de redes . Por ejemplo, la reducción transitiva brinda una nueva perspectiva de las distribuciones de citas que se encuentran en diferentes aplicaciones, destacando diferencias claras en los mecanismos que crean redes de citas en diferentes contextos. [51] Otra técnica es el análisis de la ruta principal , que rastrea los enlaces de citas y sugiere las cadenas de citas más significativas en un gráfico de citas dado .
El modelo de Price es demasiado simple para ser un modelo realista de una red de citas, pero es lo suficientemente simple como para permitir soluciones analíticas para algunas de sus propiedades. Muchos de estos se pueden encontrar mediante el uso de resultados derivados de la versión no dirigida del modelo de Price , el modelo Barabási-Albert . Sin embargo, dado que el modelo de Price proporciona un gráfico acíclico dirigido, es un modelo útil cuando se buscan cálculos analíticos de propiedades exclusivas de los gráficos acíclicos dirigidos. Por ejemplo, la longitud de la ruta más larga, desde el n-ésimo nodo agregado a la red hasta el primer nodo de la red, se escala como [52] .
Compresión de datos
Los gráficos acíclicos dirigidos también se pueden usar como una representación compacta de una colección de secuencias. En este tipo de aplicación, se encuentra un DAG en el que los caminos forman las secuencias dadas. Cuando muchas de las secuencias comparten las mismas subsecuencias, estas subsecuencias compartidas se pueden representar mediante una parte compartida del DAG, lo que permite que la representación utilice menos espacio del que se necesitaría para enumerar todas las secuencias por separado. Por ejemplo, el gráfico de palabras acíclico dirigido es una estructura de datos en informática formada por un gráfico acíclico dirigido con una sola fuente y con bordes etiquetados con letras o símbolos; las rutas desde la fuente hasta los sumideros en este gráfico representan un conjunto de cadenas , como palabras en inglés. [53] Cualquier conjunto de secuencias se puede representar como caminos en un árbol, formando un vértice de árbol para cada prefijo de una secuencia y haciendo que el padre de uno de estos vértices represente la secuencia con un elemento menos; el árbol formado de esta manera para un conjunto de cuerdas se llama trie . Un gráfico de palabras acíclico dirigido ahorra espacio en un trie al permitir que las rutas diverjan y se vuelvan a unir, de modo que un conjunto de palabras con los mismos sufijos posibles se pueda representar mediante un único vértice de árbol. [54]
La misma idea de usar un DAG para representar una familia de caminos ocurre en el diagrama de decisión binario , [55] [56] una estructura de datos basada en DAG para representar funciones binarias. En un diagrama de decisión binario, cada vértice no sumidero está etiquetado con el nombre de una variable binaria, y cada sumidero y cada borde está etiquetado con un 0 o 1. El valor de la función para cualquier asignación de verdad a las variables es el valor en el sumidero que se encuentra siguiendo una ruta, comenzando desde el vértice de origen único, que en cada vértice no sumidero sigue el borde saliente etiquetado con el valor de la variable de ese vértice. Así como los gráficos de palabras acíclicos dirigidos pueden verse como una forma comprimida de intentos, los diagramas de decisión binarios pueden verse como formas comprimidas de árboles de decisión que ahorran espacio al permitir que los caminos se reincorporen cuando coinciden en los resultados de todas las decisiones restantes. [57]
Referencias
- ^ Thulasiraman, K .; Swamy, MNS (1992), "5.7 Gráficos dirigidos acíclicos", Gráficos: teoría y algoritmos , John Wiley and Son, p. 118, ISBN 978-0-471-51356-8.
- ^ a b Bang-Jensen, Jørgen (2008), "2.1 Acyclic Digraphs", Digraphs: Theory, Algorithms and Applications , Springer Monographs in Mathematics (2da ed.), Springer-Verlag, pp. 32-34, ISBN 978-1-84800-997-4.
- ^ Christofides, Nicos (1975), Teoría de grafos: un enfoque algorítmico , Academic Press, págs. 170-174.
- ^ Mitrani, I. (1982), Técnicas de simulación para sistemas de eventos discretos , Cambridge Computer Science Texts, 14 , Cambridge University Press, p. 27, ISBN 9780521282826.
- ^ Kozen, Dexter (1992), El diseño y análisis de algoritmos , Monografías en informática, Springer, p. 9, ISBN 978-0-387-97687-7.
- ^ Banerjee, Utpal (1993), "Ejercicio 2 (c)", Transformaciones de bucle para reestructurar compiladores: los fundamentos , Springer, p. 19, Bibcode : 1993ltfr.book ..... B , ISBN 978-0-7923-9318-4.
- ^ Bang-Jensen, Jørgen; Gutin, Gregory Z. (2008), "2.3 Dígrafos transitivos, cierres y reducciones transitivos ", Dígrafos: teoría, algoritmos y aplicaciones , Monografías de Springer en matemáticas, Springer, págs. 36-39, ISBN 978-1-84800-998-1.
- ^ Jungnickel, Dieter (2012), Gráficos, redes y algoritmos , Algoritmos y computación en matemáticas, 5 , Springer, págs. 92–93, ISBN 978-3-642-32278-5.
- ^ Sedgewick, Robert ; Wayne, Kevin (2011), "4,2,25 Ordenamiento topológico único", Algoritmos (4ª ed.), Addison-Wesley, págs. 598–599, ISBN 978-0-13-276256-4.
- ^ Bender, Edward A .; Williamson, S. Gill (2005), "Ejemplo 26 (Extensiones lineales - géneros topológicos)", Un curso corto de matemáticas discretas , Libros de Dover sobre informática, Publicaciones de Courier Dover, p. 142, ISBN 978-0-486-43946-4.
- ^ a b Robinson, RW (1973), "Contando dígrafos acíclicos etiquetados", en Harary, F. (ed.), New Directions in the Theory of Graphs , Academic Press, págs. 239-273. Ver también Harary, Frank ; Palmer, Edgar M. (1973), Enumeración gráfica , Academic Press , p. 19, ISBN 978-0-12-324245-7.
- ^ Weisstein, Eric W. , "Conjetura de Weisstein" , MathWorld
- ^ McKay, BD ; Royle, GF ; Wanless, mensajería instantánea; Oggier, FE ; Sloane, NJA ; Wilf, H. (2004), "dígrafos acíclicos y valores propios de (0,1) -matrices" , Revista de secuencias del número entero , 7 : 33, arXiv : matemáticas / 0310423 , bibcode : 2004JIntS ... 7 ... 33M, Artículo 04.3.3.
- ^ Rebane, George; Pearl, Judea (1987), "La recuperación de poliarboles causales a partir de datos estadísticos", en Proc. Tercera Conferencia Anual sobre Incertidumbre en Inteligencia Artificial (UAI 1987), Seattle, WA, EE. UU., Julio de 1987 (PDF) , págs. 222–228[ enlace muerto permanente ] .
- ^ Furnas, George W .; Zacks, Jeff (1994), "Multiárboles: enriquecimiento y reutilización de la estructura jerárquica", Proc. Conferencia SIGCHI sobre factores humanos en sistemas informáticos (CHI '94) , págs. 330–336, doi : 10.1145 / 191666.191778 , ISBN 978-0897916509, S2CID 18710118.
- ^ a b Cormen, Thomas H .; Leiserson, Charles E .; Rivest, Ronald L .; Stein, Clifford (2001) [1990], Introducción a los algoritmos (2ª ed.), MIT Press y McGraw-Hill, ISBN 0-262-03293-7 Sección 22.4, Clasificación topológica, págs. 549–552.
- ↑ a b Jungnickel (2012) , págs. 50–51.
- ^ Para elalgoritmo de clasificación topológica basado en búsqueda en profundidad , esta verificación de validez se puede intercalar con el propio algoritmo de clasificación topológica; ver por ejemplo Skiena, Steven S. (2009), Manual de diseño de algoritmos , Springer, págs. 179–181, ISBN 978-1-84800-070-4.
- ^ Stanley, Richard P. (1973), "Orientaciones acíclicas de gráficos" (PDF) , Matemáticas discretas , 5 (2): 171-178, doi : 10.1016 / 0012-365X (73) 90108-8.
- ^ Garey, Michael R .; Johnson, David S. (1979), Computadoras e intratabilidad: una guía para la teoría de NP-Completeness , W. H. Freeman , ISBN 0-7167-1045-5, Problemas GT7 y GT8, págs. 191-192.
- ^ Harary, Frank ; Norman, Robert Z .; Cartwright, Dorwin (1965), Modelos estructurales: una introducción a la teoría de los gráficos dirigidos , John Wiley & Sons, p. 63.
- ^ Skiena (2009) , p. 495.
- ^ Skiena (2009) , p. 496.
- ^ Bang-Jensen y Gutin (2008) , p. 38.
- ^ Picard, Jean-Claude (1976), "Cierre máximo de un gráfico y aplicaciones a problemas combinatorios", Management Science , 22 (11): 1268-1272, doi : 10.1287 / mnsc.22.11.1268 , MR 0403596.
- ^ Cormen y col. 2001, Sección 24.2, Rutas más cortas de una sola fuente en gráficos acíclicos dirigidos, págs. 592–595.
- ^ Cormen y col. 2001, Secciones 24.1, El algoritmo de Bellman-Ford, págs. 588–592, y 24.3, Algoritmo de Dijkstra, págs. 595–601.
- ^ Cormen y col. 2001, pág. 966.
- ^ Skiena (2009) , p. 469.
- ^ Al-Mutawa, HA; Dietrich, J .; Marsland, S .; McCartin, C. (2014), "Sobre la forma de las dependencias circulares en los programas Java", 23a Conferencia Australiana de Ingeniería de Software , IEEE, págs. 48–57, doi : 10.1109 / ASWEC.2014.15 , ISBN 978-1-4799-3149-1, S2CID 17570052.
- ^ a b Gross, Jonathan L .; Yellen, Jay; Zhang, Ping (2013), Manual de teoría de gráficos (2ª ed.), CRC Press, p. 1181, ISBN 978-1-4398-8018-0.
- ^ Srikant, YN; Shankar, Priti (2007), The Compiler Design Handbook: Optimizations and Machine Code Generation (2ª ed.), CRC Press, págs. 19–39, ISBN 978-1-4200-4383-9.
- ^ Wang, John X. (2002), Lo que todo ingeniero debe saber sobre la toma de decisiones en condiciones de incertidumbre , CRC Press, p. 160, ISBN 978-0-8247-4373-4.
- ^ Sapatnekar, Sachin (2004), Timing , Springer, pág. 133, ISBN 978-1-4020-7671-8.
- ^ Dennis, Jack B. (1974), "Primera versión de un lenguaje de procedimiento de flujo de datos", Simposio de programación , Lecture Notes in Computer Science, 19 , págs. 362–376, doi : 10.1007 / 3-540-06859-7_145 , ISBN 978-3-540-06859-4.
- ^ Touati, Sid; de Dinechin, Benoit (2014), Optimización avanzada de backend , John Wiley & Sons, p. 123, ISBN 978-1-118-64894-0.
- ^ Garland, Jeff; Anthony, Richard (2003), Arquitectura de software a gran escala: una guía práctica con UML , John Wiley & Sons, p. 215, ISBN 9780470856383.
- ^ Gopnik, Alison; Schulz, Laura (2007), Causal Learning , Oxford University Press, pág. 4, ISBN 978-0-19-803928-0.
- ^ Shmulevich, Ilya; Dougherty, Edward R. (2010), Redes booleanas probabilísticas: el modelado y control de redes reguladoras de genes , Sociedad de Matemáticas Industriales y Aplicadas, p. 58, ISBN 978-0-89871-692-4.
- ^ Cowell, Robert G .; Dawid, A. Philip ; Lauritzen, Steffen L .; Spiegelhalter, David J. (1999), "3.2.1 Moralización", Redes probabilísticas y sistemas expertos , Springer, págs. 31-33, ISBN 978-0-387-98767-5.
- ^ Dorf, Richard C. (1998), The Technology Management Handbook , CRC Press, pág. 9-7, ISBN 978-0-8493-8577-3.
- ^ Boslaugh, Sarah (2008), Enciclopedia de Epidemiología, Volumen 1 , SAGE, p. 255, ISBN 978-1-4129-2816-8.
- ^ Pearl, Judea (1995), "Diagramas causales para la investigación empírica" , Biometrika , 82 (4): 669–709, doi : 10.1093 / biomet / 82.4.669.
- ^ Kirkpatrick, Bonnie B. (abril de 2011), "Haplotipos versus genotipos en genealogías", Algoritmos de biología molecular , 6 (10): 10, doi : 10.1186 / 1748-7188-6-10 , PMC 3102622 , PMID 21504603.
- ^ McGuffin, MJ; Balakrishnan, R. (2005), "Visualización interactiva de gráficos genealógicos" (PDF) , Simposio IEEE sobre visualización de información (INFOVIS 2005) , págs. 16–23, doi : 10.1109 / INFVIS.2005.1532124 , ISBN 978-0-7803-9464-3.
- ^ Bender, Michael A .; Pemmasani, Giridhar; Skiena, Steven; Sumazin, Pavel (2001), "Encontrar los ancestros menos comunes en gráficos acíclicos dirigidos" , Actas del duodécimo simposio anual ACM-SIAM sobre algoritmos discretos (SODA '01) , Filadelfia, PA, EE. UU.: Sociedad de Matemáticas Industriales y Aplicadas, págs. . 845–854, ISBN 978-0-89871-490-6.
- ^ Bartlang, Udo (2010), Arquitectura y métodos para la gestión de contenido flexible en sistemas Peer-to-Peer , Springer, p. 59, Bibcode : 2010aamf.book ..... B , ISBN 978-3-8348-9645-2.
- ^ Pach, János ; Sharir, Micha , geometría combinatoria y sus aplicaciones algorítmicas: las conferencias de Alcalá , estudios y monografías matemáticas, 152 , American Mathematical Society, págs. 93–94, ISBN 978-0-8218-7533-9.
- ^ Price, Derek J. de Solla (30 de julio de 1965), "Networks of Scientific Papers" (PDF) , Science , 149 (3683): 510–515, Bibcode : 1965Sci ... 149..510D , doi : 10.1126 / ciencia.149.3683.510 , PMID 14325149.
- ^ Price, Derek J. de Solla (1976), "Una teoría general de los procesos bibliométricos y de otras ventajas acumulativas", J.Amer.Soc.Inform.Sci. , 27 (5): 292–306, doi : 10.1002 / asi.4630270505.
- ^ Clough, James R .; Gollings, Jamie; Loach, Tamar V .; Evans, Tim S. (2015), "Reducción transitiva de las redes de citas", Journal of Complex Networks , 3 (2): 189-203, arXiv : 1310.8224 , doi : 10.1093 / comnet / cnu039 , S2CID 10228152.
- ^ Evans, TS; Calmon, L .; Vasiliauskaite, V. (2020), "The Longest Path in the Price Model", Scientific Reports , 10 (1): 10503, arXiv : 1903.03667 , Bibcode : 2020NatSR..1010503E , doi : 10.1038 / s41598-020-67421-8 , PMC 7324613 , PMID 32601403
- ^ Crochemore, Maxime; Vérin, Renaud (1997), "Construcción directa de gráficos de palabras acíclicos dirigidos compactos", Coincidencia de patrones combinatorios , Lecture Notes in Computer Science, 1264 , Springer, pp. 116-129, CiteSeerX 10.1.1.53.6273 , doi : 10.1007 / 3 -540-63220-4_55 , ISBN 978-3-540-63220-7.
- ^ Lothaire, M. (2005), Combinatoria aplicada en palabras , Enciclopedia de las matemáticas y sus aplicaciones, 105 , Cambridge University Press, p. 18, ISBN 9780521848022.
- ^ Lee, CY (1959), "Representación de circuitos de conmutación mediante programas de decisión binaria", Bell System Technical Journal , 38 (4): 985–999, doi : 10.1002 / j.1538-7305.1959.tb01585.x.
- ^ Akers, Sheldon B. (1978), "Diagramas de decisión binaria", IEEE Transactions on Computers , C-27 (6): 509–516, doi : 10.1109 / TC.1978.1675141 , S2CID 21028055.
- ^ Friedman, SJ; Supowit, KJ (1987), "Encontrar el orden óptimo de variables para diagramas de decisión binarios", Proc. 24.a Conferencia ACM / IEEE Design Automation (DAC '87) , Nueva York, NY, EE. UU .: ACM, págs. 348–356, doi : 10.1145 / 37888.37941 , ISBN 978-0-8186-0781-3, S2CID 14796451.
enlaces externos
- Weisstein, Eric W. , "Acyclic Digraph" , MathWorld
- DAGitty : una herramienta en línea para crear DAG