stringtranslate.com

Gráfico Acíclico Dirigido

Ejemplo de gráfico acíclico dirigido

En matemáticas , particularmente en teoría de grafos e informática , un gráfico acíclico dirigido ( DAG ) es un gráfico dirigido sin 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 sea 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 las ciencias de la información (redes de citas) y la computación (programación).

Los gráficos acíclicos dirigidos a veces se denominan gráficos dirigidos acíclicos [1] o dígrafos acíclicos . [2]

Definiciones

Un grafo está formado por vértices y por 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 grafo dirigido , cada arista tiene una orientación, de un vértice a otro vértice. Una ruta en un gráfico dirigido es una secuencia de aristas que tienen la propiedad de que el vértice final de cada arista de la secuencia es el mismo que el vértice inicial de la siguiente arista de 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 un grafo dirigido es alcanzable desde otro vértice u cuando existe un camino que comienza en u y termina en v . Como caso especial, se considera que cada vértice es accesible desde sí mismo (por un camino con cero aristas). Si un vértice puede llegar a sí mismo a través de un camino no trivial (un camino con uno o más bordes), entonces ese camino es un ciclo, por lo que otra forma de definir grafos 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 matemáticas

Relación de alcanzabilidad, cierre transitivo y reducción transitiva.

La relación de accesibilidad de un DAG 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 ordenados como uv exactamente cuando existe una ruta dirigida de u a v en el DAG; es decir, cuando u puede alcanzar v (o v es alcanzable desde u ). [5] Sin embargo, diferentes DAG pueden dar lugar a la misma relación de alcanzabilidad y al mismo orden parcial. [6] Por ejemplo, un DAG con dos aristas uv y vw tiene la misma relación de accesibilidad que el DAG con tres aristas uv , vw y uw . Ambos DAG producen el mismo orden parcial, en el que los vértices están ordenados como uvw .

El cierre transitivo de un DAG es el gráfico con más aristas que tiene la misma relación de accesibilidad que el DAG. Tiene una arista uv para cada par de vértices ( u , v ) en la relación de alcanzabilidad del DAG y, por lo tanto, puede considerarse como una traducción directa de la relación de alcanzabilidad en términos de teoría de grafos. 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 elemento de S y una arista para cada par de elementos en es automáticamente un DAG cerrado y tiene ( S , ≤) como relación de accesibilidad. De esta forma, todo conjunto finito parcialmente ordenado puede representarse como un DAG.

Un diagrama de Hasse que representa el orden parcial de inclusión de conjuntos (⊆) entre los subconjuntos de un conjunto de tres elementos

La reducción transitiva de un DAG es el gráfico con menos aristas que tiene la misma relación de accesibilidad que el DAG. Tiene una arista uv para cada par de vértices ( u , v ) en la relación de cobertura de la relación de alcanzabilidad del DAG. Es un subgrafo del DAG, formado al descartar los bordes uv para los cuales el DAG también contiene una ruta dirigida más larga de u a v . Al igual que el cierre transitivo, la reducción transitiva se define únicamente para los DAG. Por el contrario, para un gráfico dirigido que no es acíclico, puede haber más de un subgrafo mínimo con la misma relación de accesibilidad. [7] Las reducciones transitivas son útiles para visualizar los órdenes parciales que representan, porque tienen menos aristas 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 arista se muestra colocando el vértice inicial de la arista en una posición más baja que su vértice final. [8]

Ordenamiento topológico

Un ordenamiento topológico de un gráfico dirigido es un ordenamiento de sus vértices en una secuencia, de modo que para cada arista, el vértice inicial de la arista ocurre antes en la secuencia que el vértice final de la arista. Un gráfico que tiene un orden topológico no puede tener ciclos, porque el borde del primer vértice de un ciclo tendría que estar orientado de manera incorrecta. Por tanto, todo grafo con un orden topológico es acíclico. Por el contrario, todo grafo acíclico dirigido tiene al menos un ordenamiento topológico. Por lo tanto, la existencia de un ordenamiento topológico se puede utilizar como una definición equivalente de gráficos acíclicos dirigidos: 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 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 alcanzabilidad para el DAG, [10] por lo que dos gráficos cualesquiera que representen el mismo orden parcial tienen el mismo conjunto de órdenes topológicos.

enumeración combinatoria

Robinson (1973) estudió el problema de enumeración de gráficos del conteo de gráficos acíclicos dirigidos. [11] El número de DAG en n vértices etiquetados, para n  = 0, 1, 2, 3,… (sin restricciones en el orden en que aparecen estos números en un ordenamiento topológico del DAG) es

1, 1, 3, 25, 543, 29281, 3781503,… (secuencia A003024 en el OEIS ).

Estos números pueden calcularse mediante la relación de recurrencia

[11]

Eric W. Weisstein hizo conjeturas [12] y McKay et al. (2004) demostraron que los mismos números cuentan las matrices (0,1) para las cuales 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 automáticos , 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 árbol múltiple (también llamado gráfico fuertemente inequívoco o manglar ) es un DAG en el que hay como máximo una ruta dirigida entre dos vértices cualesquiera. De manera equivalente, es un DAG en el que el subgrafo accesible desde cualquier vértice induce un árbol no dirigido . [14]

Un poliárbol (también llamado árbol dirigido ) es un multiárbol formado orientando los bordes de un árbol no dirigido. [15]

Una arborescencia es un poliárbol formado al orientar los bordes de un árbol no dirigido lejos de un vértice particular, llamado raíz de la arborescencia.

Problemas computacionales

Clasificación y reconocimiento topológico.

La clasificación topológica es el problema algorítmico de encontrar un ordenamiento topológico de un DAG determinado. Se puede resolver en tiempo lineal . [16] El algoritmo de Kahn para la clasificación topológica construye la ordenación de los 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 vértices sin ninguna arista entrante. Luego, agrega repetidamente un vértice de esta lista al final del ordenamiento topológico parcialmente construido y verifica si sus vecinos deben agregarse a la lista. El algoritmo finaliza cuando todos los vértices han sido procesados ​​de esta manera. [17] Alternativamente, se puede construir un orden topológico invirtiendo una numeración de postorden de un recorrido de gráfico de búsqueda en profundidad . [dieciséis]

También es posible verificar 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 ordenación topológica, verificando que el algoritmo ordena exitosamente todos los vértices sin cumplir una condición de error. [17]

Construcción a partir de gráficos cíclicos.

Cualquier gráfico no dirigido se puede convertir en un DAG eligiendo un orden total para sus vértices y dirigiendo cada borde desde el punto final anterior en el orden hacia el punto final posterior. La orientación resultante de los bordes se llama 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]

El gráfico acíclico dirigido en amarillo es la condensación del gráfico dirigido en azul. Se forma contrayendo cada componente fuertemente conectado del gráfico azul en un solo vértice amarillo.

Cualquier gráfico dirigido se puede convertir 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 es NP, difícil de encontrar. [20] Un gráfico dirigido arbitrario también se puede transformar en un DAG, llamado condensación , contrayendo cada uno de sus componentes fuertemente conectados en un solo supervértice. [21] Cuando el gráfico ya es acíclico, sus conjuntos de vértices de retroalimentación y arcos de retroalimentación más pequeños están vacíos y su condensación es el gráfico mismo.

Cierre transitivo y reducción transitiva.

El cierre transitivo de un DAG determinado, con n vértices y m aristas, se puede construir en el tiempo O ( mn ) utilizando una búsqueda en amplitud o en profundidad para probar la accesibilidad desde cada vértice. [22] Alternativamente, se puede resolver en el tiempo O ( n ω ) donde ω  < 2,373 es el exponente de los algoritmos de multiplicación de matrices ; ésta es una mejora teórica sobre el límite O ( mn ) para gráficos densos . [23]

En todos estos algoritmos de cierre transitivo, es posible distinguir pares de vértices a los que se puede acceder mediante al menos un camino de longitud dos o más de pares que sólo pueden conectarse mediante un camino de longitud uno. La reducción transitiva consta de aristas que forman caminos de longitud uno que son los únicos caminos que conectan sus puntos finales. Por lo tanto, la reducción transitiva se puede construir en los mismos límites de tiempo asintóticos que la clausura transitiva. [24]

Problema de cierre

El problema de cierre toma como entrada un gráfico acíclico dirigido ponderado por vértices y busca el peso mínimo (o máximo) de un cierre: un conjunto de vértices C , tal que ninguna arista salga de 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 sobre la condensación del grafo. Puede resolverse en tiempo polinómico utilizando un problema de reducción al 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, basándose en el principio de ordenamiento topológico. Por ejemplo, es posible encontrar las rutas más cortas y las rutas más largas desde un vértice inicial determinado 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 como la longitud mínima o máxima obtenida a través de cualquier de sus bordes entrantes. [26] Por el contrario, 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 pedidos parciales tienen muchas aplicaciones en la programación de sistemas de tareas con restricciones de pedido. [29] Una clase importante de problemas de este tipo se refiere a colecciones de objetos que necesitan ser actualizados, como las celdas de una hoja de cálculo después de que una de las celdas ha sido modificada, o los archivos objeto de un software de computadora después de su fuente. El código ha sido cambiado. En este contexto, un gráfico de dependencia es un gráfico que tiene un vértice para cada objeto que se actualizará y un borde que conecta dos objetos siempre que uno de ellos deba actualizarse antes que el otro. Un ciclo en este gráfico se denomina dependencia circular y generalmente no está permitido 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 utiliza debe recalcularse antes que la expresión que lo utiliza. Ordenar topológicamente el gráfico de dependencia y utilizar este orden topológico para programar las actualizaciones de las celdas permite actualizar toda la hoja de cálculo con una sola evaluación por celda. [31] Problemas similares de ordenación de tareas surgen en los archivos MAKE para la compilación de programas [31] y la programación de instrucciones para la optimización de programas informáticos de bajo nivel. [32]

Gráfico PERT para un proyecto con cinco hitos (etiquetados del 10 al 50) y seis tareas (etiquetadas de la A a la F). Hay dos caminos críticos, ADF y BC.

La técnica de evaluación y revisión de programas (PERT), un método para la gestión de grandes proyectos humanos que fue una de las primeras aplicaciones de los DAG, utiliza una formulación algo diferente de restricciones de programación basada en 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. Se pueden programar hitos individuales según la longitud de los caminos más largos que terminan en sus vértices. [33]

Redes de procesamiento de datos

Se puede utilizar 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 la 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, ya sea 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í 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 ser convenientes para describir tareas repetitivas de procesamiento de datos, en las que la misma colección de operaciones conectadas acíclicamente se aplica 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 para él. [35]

En los compiladores , el código de línea recta (es decir, secuencias de declaraciones sin bucles ni 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 sistema de software grande deben formar un gráfico acíclico dirigido. [37]

Las redes neuronales feedforward son otro ejemplo.

Estructuras causales

Los grafos en los que los vértices representan eventos que ocurren en un tiempo definido, y donde las aristas siempre apuntan desde el vértice temprano a un vértice tardío de la arista, 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 se sigue cualquier camino en el gráfico, por lo que nunca se puede regresar a un vértice en un camino. Esto refleja nuestra intuición natural de que la causalidad significa que los eventos sólo 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 de conjunto causal de la gravedad cuántica, aunque en este caso los gráficos considerados son transitivamente completos. En el siguiente ejemplo del historial de versiones, cada versión del software está asociada a una hora única, normalmente la hora en la que se guardó, confirmó o lanzó la versión. En los ejemplos de gráficos de citas a continuación, 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 tiempo físico específico. Siempre que los pares de eventos tengan una relación puramente causal, es decir, los bordes representen 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 casarse ), 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 hay una estructura causal, ya sea un orden o tiempo explícito en el ejemplo o un orden que puede derivarse de la estructura del gráfico. Esto se debe a que todos los grafos acíclicos dirigidos tienen un orden topológico, es decir, hay al menos una manera de poner los vértices en un orden tal que todas las aristas apunten en la misma dirección a lo largo de ese orden.

Genealogía e historial de versiones.

Árbol genealógico de la dinastía ptolemaica , con muchos matrimonios entre parientes cercanos que provocaron el colapso del pedigrí .

Los árboles genealógicos pueden verse como gráficos acíclicos dirigidos, con un vértice para cada miembro de la familia y una arista para cada relación padre-hijo. [44] A pesar del nombre, estos gráficos no son necesariamente árboles debido a la posibilidad de que los matrimonios entre parientes (por lo que un niño tiene un ancestro común tanto por parte de la madre como del padre) provoquen un colapso del pedigrí . [45] Los gráficos de ascendencia matrilineal (relaciones madre-hija) y de ascendencia patrilineal (relaciones padre-hijo) 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 en geometría computacional , el algoritmo mantiene un DAG histórico que representa el historial de versiones de una estructura geométrica en el transcurso 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 "inversión" que reemplazan pares de triángulos por un par de triángulos diferente. El DAG histórico de 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 responder de manera eficiente a las consultas de ubicación de puntos : para encontrar la ubicación de un punto de consulta q en la triangulación de Delaunay, siga una ruta en el historial DAG, moviéndose en cada paso al triángulo de reemplazo que contiene q . El último triángulo 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 única 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 "Networks of Scientific Papers" [49] de Derek J. de Solla Price, quien produjo el primer modelo de red de citas, el modelo 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 judiciales proporcionan otro ejemplo en el que los jueces sustentan sus conclusiones en un caso recordando otras decisiones tomadas en casos anteriores. Un último ejemplo lo proporcionan las patentes que deben hacer referencia a la técnica anterior , patentes anteriores que son relevantes para la reivindicación de patente actual. Al tener en cuenta las propiedades especiales de los gráficos acíclicos dirigidos, se pueden analizar redes de citas con técnicas que no están disponibles al analizar los gráficos generales considerados en muchos estudios que utilizan el análisis de redes . Por ejemplo, la reducción transitiva brinda nuevos conocimientos sobre 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 ruta principal , que rastrea los enlaces de citas y sugiere las cadenas de citas más significativas en un gráfico de citas determinado .

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 ellos se pueden encontrar utilizando resultados derivados de la versión no dirigida del modelo de Price , el modelo de 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 enésimo nodo agregado a la red hasta el primer nodo de la red, escala como [52] .

Compresión de datos

Los gráficos acíclicos dirigidos también se pueden utilizar como una representación compacta de una colección de secuencias. En este tipo de aplicación, se encuentra un DAG en el que las rutas 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 única fuente y con aristas etiquetadas por 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 cadenas se llama trie . Un gráfico de palabras acíclico dirigido ahorra espacio en un trie al permitir que los caminos diverjan y se vuelvan a unir, de modo que un conjunto de palabras con los mismos sufijos posibles se pueda representar mediante un solo vértice de árbol. [54]

La misma idea de usar un DAG para representar una familia de rutas ocurre en el diagrama de decisión binaria , [55] [56] una estructura de datos basada en DAG para representar funciones binarias. En un diagrama de decisión binaria, cada vértice que no es sumidero está etiquetado con el nombre de una variable binaria, y cada sumidero y cada arista están etiquetados con un 0 o un 1. El valor de la función para cualquier asignación de verdad a las variables es el valor en el sumidero encontrado siguiendo una ruta, comenzando desde el único vértice de origen, 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 las rutas se vuelvan a unir cuando coinciden en los resultados de todas las decisiones restantes. [57]

Referencias

  1. ^ ab Thulasiraman, K.; Swamy, MNS (1992), "5.7 Gráficos dirigidos acíclicos", Gráficos: teoría y algoritmos , John Wiley and Son, pág. 118, ISBN 978-0-471-51356-8.
  2. ^ abc Bang-Jensen, Jørgen (2008), "2.1 Digrafos acíclicos", Digrafos: teoría, algoritmos y aplicaciones , Springer Monographs in Mathematics (2ª ed.), Springer-Verlag, págs. 32-34, ISBN 978-1-84800-997-4.
  3. ^ Christofides, Nicos (1975), Teoría de grafos: un enfoque algorítmico , Academic Press, págs..
  4. ^ Mitrani, I. (1982), Técnicas de simulación para sistemas de eventos discretos, Cambridge Computer Science Texts, vol. 14, Cambridge University Press, pág. 27, ISBN 9780521282826.
  5. ^ 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.
  6. ^ 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.
  7. ^ 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.
  8. ^ Jungnickel, Dieter (2012), Gráficos, redes y algoritmos, algoritmos y computación en matemáticas, vol. 5, Springer, págs. 92–93, ISBN 978-3-642-32278-5.
  9. ^ 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.
  10. ^ Bender, Edward A.; Williamson, S. Gill (2005), "Ejemplo 26 (Extensiones lineales - tipos topológicos)", Un curso breve en matemáticas discretas, Dover Books on Computer Science, Courier Dover Publications, p. 142, ISBN 978-0-486-43946-4.
  11. ^ ab Robinson, RW (1973), "Contando dígrafos acíclicos etiquetados", en Harary, F. (ed.), New Directions in the Theory of Graphs , Academic Press, págs.. Véase también Harary, Frank ; Palmer, Edgar M. (1973), Enumeración gráfica , Academic Press , pág. 19, ISBN 978-0-12-324245-7.
  12. ^ Weisstein, Eric W. , "Conjetura de Weisstein", MathWorld
  13. ^ McKay, BD ; Royle, GF ; Wanless, IM; Oggier, FE ; Sloane, Nueva Jersey ; Wilf, H. (2004), "Dígrafos acíclicos y valores propios de (0,1) -matrices", Journal of Integer Sequences , 7 : 33, arXiv : math/0310423 , Bibcode : 2004JIntS...7...33M, Artículo 04.3.3.
  14. ^ Furnas, George W .; Zacks, Jeff (1994), "Multitrees: enriquecer y reutilizar 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.
  15. ^ Rebane, George; Pearl, Judea (1987), "La recuperación de poliárboles causales a partir de datos estadísticos", en Proc. Tercera Conferencia Anual sobre la Incertidumbre en la Inteligencia Artificial (UAI 1987), Seattle, WA, EE. UU., julio de 1987 (PDF) , págs..
  16. ^ ab 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.
  17. ^ ab Jungnickel (2012), págs.
  18. ^ Para el algoritmo 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; véase, por ejemplo, Skiena, Steven S. (2009), The Algorithm Design Manual, Springer, págs. 179–181, ISBN. 978-1-84800-070-4.
  19. ^ 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.
  20. ^ Garey, Michael R .; Johnson, David S. (1979). Computadoras e intratabilidad: una guía para la teoría de la integridad NP . Serie de libros de ciencias matemáticas (1ª ed.). Nueva York: WH Freeman and Company . ISBN 9780716710455. SEÑOR  0519066. OCLC  247570676., Problemas GT7 y GT8, págs. 191-192.
  21. ^ Harary, Frank ; Norman, Robert Z.; Cartwright, Dorwin (1965), Modelos estructurales: una introducción a la teoría de grafos dirigidos , John Wiley & Sons, p. 63.
  22. ^ Skiena (2009), pág. 495.
  23. ^ Skiena (2009), pág. 496.
  24. ^ Bang-Jensen y Gutin (2008), pág. 38.
  25. ^ 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.
  26. ^ Cormen et al. 2001, Sección 24.2, Caminos más cortos de fuente única en gráficos acíclicos dirigidos, págs.
  27. ^ Cormen et al. 2001, Secciones 24.1, El algoritmo de Bellman-Ford, págs. 588–592, y 24.3, Algoritmo de Dijkstra, págs. 595–601.
  28. ^ Cormen et al. 2001, pág. 966.
  29. ^ Skiena (2009), pág. 469.
  30. ^ Al-Mutawa, HA; Dietrich, J.; Marsland, S.; McCartin, C. (2014), "Sobre la forma de las dependencias circulares en los programas Java", 23ª 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.
  31. ^ ab Gross, Jonathan L.; Yellen, Jay; Zhang, Ping (2013), Manual de teoría de grafos (2ª ed.), CRC Press, pág. 1181, ISBN 978-1-4398-8018-0.
  32. ^ Srikant, YN; Shankar, Priti (2007), Manual de diseño del compilador: optimizaciones y generación de código máquina (2ª ed.), CRC Press, págs. 19–39, ISBN 978-1-4200-4383-9.
  33. ^ 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.
  34. ^ Sapatnekar, Sachin (2004), Sincronización, Springer, pág. 133, ISBN 978-1-4020-7671-8.
  35. ^ 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, vol. 19, págs. 362–376, doi :10.1007/3-540-06859-7_145, ISBN 978-3-540-06859-4.
  36. ^ Touati, Sid; de Dinechin, Benoit (2014), Optimización avanzada de backend, John Wiley & Sons, p. 123, ISBN 978-1-118-64894-0.
  37. ^ Guirnalda, Jeff; Anthony, Richard (2003), Arquitectura de software a gran escala: una guía práctica utilizando UML, John Wiley & Sons, p. 215, ISBN 9780470856383.
  38. ^ Gopnik, Alison ; Schulz, Laura (2007), Aprendizaje causal, Oxford University Press, pág. 4, ISBN 978-0-19-803928-0.
  39. ^ Shmulevich, Ilya; Dougherty, Edward R. (2010), Redes booleanas probabilísticas: modelado y control de redes reguladoras de genes, Sociedad de Matemáticas Industriales y Aplicadas, p. 58, ISBN 978-0-89871-692-4.
  40. ^ Cowell, Robert G.; David, A. Felipe ; 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.
  41. ^ Dorf, Richard C. (1998), Manual de gestión tecnológica, CRC Press, pág. 9-7, ISBN 978-0-8493-8577-3.
  42. ^ Boslaugh, Sarah (2008), Enciclopedia de epidemiología, volumen 1, SAGE, p. 255, ISBN 978-1-4129-2816-8.
  43. ^ Pearl, Judea (1995), "Diagramas causales para la investigación empírica", Biometrika , 82 (4): 669–709, doi :10.1093/biomet/82.4.669.
  44. ^ Kirkpatrick, Bonnie B. (abril de 2011), "Haplotipos versus genotipos en genealogías", Algoritmos para biología molecular , 6 (10): 10, doi : 10.1186/1748-7188-6-10 , PMC 3102622 , PMID  21504603 .
  45. ^ 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, S2CID  15449409.
  46. ^ 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.
  47. ^ Bartlang, Udo (2010), Arquitectura y métodos para la gestión de contenido flexible en sistemas peer-to-peer, Springer, p. 59, código Bib : 2010aamf.book.....B, ISBN 978-3-8348-9645-2.
  48. ^ Pach, János ; Sharir, Micha , Geometría combinatoria y sus aplicaciones algorítmicas: las conferencias de Alcalá, estudios y monografías matemáticas, vol. 152, Sociedad Estadounidense de Matemáticas, págs. 93–94, ISBN 978-0-8218-7533-9.
  49. ^ 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.
  50. ^ Price, Derek J. de Solla (1976), "Una teoría general de los procesos bibliométricos y otros procesos de ventaja acumulativa", Revista de la Sociedad Estadounidense de Ciencias de la Información , 27 (5): 292–306, doi :10.1002/asi.4630270505 , S2CID  8536863.
  51. ^ Clough, James R.; Gollings, Jamie; Loach, Tamar V.; Evans, Tim S. (2015), "Reducción transitiva de redes de citas", Journal of Complex Networks , 3 (2): 189–203, arXiv : 1310.8224 , doi :10.1093/comnet/cnu039, S2CID  10228152.
  52. ^ Evans, TS; Calmón, L.; Vasiliauskaite, V. (2020), "El camino más largo en el modelo de precios", Scientific Reports , 10 (1): 10503, arXiv : 1903.03667 , Bibcode :2020NatSR..1010503E, doi :10.1038/s41598-020-67421-8 , PMC 7324613 , PMID  32601403 
  53. ^ 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, vol. 1264, Springer, págs. 116-129, CiteSeerX 10.1.1.53.6273 , doi :10.1007/3-540-63220-4_55, ISBN  978-3-540-63220-7, S2CID  17045308.
  54. ^ Lothaire, M. (2005), Combinatoria aplicada a palabras, Enciclopedia de las matemáticas y sus aplicaciones, vol. 105, Cambridge University Press, pág. 18, ISBN 9780521848022.
  55. ^ 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.
  56. ^ 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.
  57. ^ Friedman, SJ; Supowit, KJ (1987), "Encontrar el orden óptimo de variables para diagramas de decisión binarios", Proc. 24.ª Conferencia de automatización de diseño ACM/IEEE (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