Verificación de transitividad vs. cierre transitivo


9

¿Comprobar la transitividad de un dígrafo no es más fácil que (en términos de complejidad asintótica) tomar el cierre transitivo del dígrafo? ¿Conocemos algún límite inferior mejor que para determinar si un dígrafo es transitivo o no?Ω(n2)


1
Almacenar todo el cierre transitivo le costará espacio extra. Para algunos gráficos, debería poder enganchar y atajar la verificación de transitividad sin volver a visitar los bordes. Ver: Un algoritmo de conectividad paralela O(logn) , Y Shiloach, U Vishkin - Journal of Algorithms, 1982
Chad Brewbaker

1
Aquí, Siek tiene notas de implementación para la Boost Graph Library boost.org/doc/libs/1_54_0/libs/graph/doc/…
Chad Brewbaker

2
No estoy seguro de lo que quiere decir con n , pero un límite inferior de Ω(|V|2) es simple: considere Kn{e} para obtener alguna ventaja e . Cualquier algoritmo le pedirá que verifique si (u,v)E para todos u,vV , ya que de lo contrario el borde por el que no preguntó podría ser el que falta. O(|V||E|) es un límite superior, ya que este es el tiempo que lleva calcular un cierre transitivo.
RB

2
Considere un gráfico dirigido con vértices: vértices de origen , vértices intermedios que son sucesores inmediatos de cada , y vértices que son sucesores inmediatos de cada . El dígrafo es transitivo si cada uno de los arcos está presente en el gráfico. Esto requiere verificar bordes. Por otro lado, encontrar el cierre transitivo se puede hacer en el tiempo , donde es el exponente de la multiplicación de matrices. Estos son los límites más conocidos. s 1 , ... , s k t 1 , ... , t k s i u 1 , ... , u k t i ( s i , u j ) k 2 = ( n / 3 ) 2 = Ω ( n 2 ) O ( n ω ) ω < 2.373n=3ks1,,skt1,,tksiu1,,ukti(si,uj)k2=(n/3)2=Ω(n2)O(nω)ω<2.373
András Salamon

¿Es posible que su DAG tenga alguna estructura adicional o desea resultados totalmente generales?
Niel de Beaudrap

Respuestas:


9

A continuación, mostraré lo siguiente: si tiene un algoritmo de tiempo O ( ) para verificar si un gráfico es transitivo para cualquier , entonces tiene un O ( ) algoritmo de tiempo para detectar un triángulo en un gráfico de nodos, y por lo tanto (por un documento de FOCS'10 ) tendrías un algoritmo de tiempo O ( ) para multiplicar dos matrices booleanas y, por lo tanto, como resultado de Fischer y Meyer de los años 70 , esto también implica un algoritmo de tiempo O ( ) para el cierre transitivo. ε > 0n3εε>0 n n 3 - ε / 3 n × n n 3 - ε / 3n3εnn3ε/3n×nn3ε/3

Supongamos que se desea detectar un triángulo en un nodo . Ahora podemos crear el siguiente gráfico . es tripartito con particiones en nodos cada una. Aquí cada nodo de tiene copias en las partes . Para cada arista de agregue aristas dirigidas y . Para cada no borde de agregue el borde dirigido .G H H I , J , K n x G x I , x J , x K I , J , K ( u , v ) G ( u I , v J ) ( u J , v K ) ( u , v ) G ( u I , v K )nGHHyo,J,KnorteXsolXyo,XJ,XKyo,J,K(u,v)G(uI,vJ)(uJ,vK)(u,v)G(uI,vK)

Primero, si contiene un triángulo , entonces no es transitivo. Esto se debe a que los bordes están en pero no lo está. En segundo lugar, si no es transitivo, entonces no debe existir algún camino dirigido desde algún nodo a algún nodo en tal que no es un borde dirigido en . Sin embargo, las rutas más largas en tienen aristas, por lo que dicha ruta debe tener la forma y no está enu , v , w H ( u I , v J ) , ( v J , w K ) H ( u I , w K ) H s t H ( s , t ) H H 2 ( u I , v J ) , ( v J , w K ) ( u I ,Gu,v,wH(uI,vJ),(vJ,wK)H(uI,wK)HstH(s,t)HH2(uI,vJ),(vJ,wK)H u , v , w sol(uI,wK)H , por lo tanto, forma un triángulo en .u,v,wG


1
Encontrar el cierre transitivo es esencialmente lo mismo que la multiplicación de matrices. La pregunta es si el exponente en el límite inferior puede elevarse desde 2, o el exponente en el límite superior puede reducirse desde 2.373. La cadena de razonamiento que demuestra muestra que incluso un algoritmo óptimo de para verificar la transitividad solo produciría un algoritmo de tiempo para el cierre transitivo, pero ya tenemos un algoritmo de tiempo. O ( nO(n2)O(n2.667)O(n2.373)
András Salamon

El punto es que existen reducciones de caja negra. El algoritmo de tiempo O ( ) está lejos de ser práctico. Sin embargo, un algoritmo práctico de comprobación de transitividad que se ejecuta en tiempo subcúbico, mediante las reducciones anteriores, también implica uno práctico para BMM y, por lo tanto, para el cierre transitivo. Además, incluso si no le interesan los algoritmos prácticos, es muy posible que la pérdida en el exponente del documento FOCS'10 no sea necesaria, y la detección de triángulos es probablemente equivalente a BMM. n2.373
virgi

Ah, y por supuesto, podríamos basar la dureza del problema de transitividad solo en la presunta dureza de la detección de triángulos. Tenga en cuenta que no hay límites inferiores conocidos mejores que para la detección de triángulos, y el mejor límite superior es . O ( n ω )n2O(nω)
virgi

Ya tenemos un algoritmo práctico subcúbico, mediante el uso de cualquier método de multiplicación de matriz rápida: ver por ejemplo cacm.acm.org/magazines/2014/2/…
András Salamon

2
El artículo de Ballard et al que usted cita habla sobre el algoritmo de Strassen en particular. Por lo que sé, ninguno de los algoritmos de multiplicación de matrices que usan el rango de borde es práctico. En particular, no conozco algoritmos prácticos para ningún límite en inferior a . 2.78ω2.78
virgi

7

Parece que es el límite inferior más conocido, ya que cualquier límite inferior implica un límite inferior para la multiplicación de matriz booleana. Sabemos que la verificación de transitividad se puede lograr usando una multiplicación de matriz booleana, es decir, es transitiva si y solo si .Ω(n2)GG=G2


4

Calcular si un DAG es transitivo es tan difícil como decidir si un dígrafo general es transitivo (lo que nos lleva de vuelta a su pregunta anterior :)).

Suponga que tiene un algoritmo ejecutándose en el tiempo para decidir si un DAG es transitivo.O(f(n))

Dado un gráfico dirigido , puede usar el siguiente algoritmo aleatorio para decidir si G es transitivo en el tiempo O ( f ( n ) log ( 1GGy probabilidad de errorδ:O(f(n)log(1δ))δ

 1. for $O(\log{\frac{1}{\delta}})$ iterations:

   1.1. Compute a random permutation on $V$. Denote the result by $<v_1,v_2,...,v_n>$.

   1.2. Set $G'=(V,E\cup \{(v_i,v_j)|i<j\})$ (i.e. compute a random acyclic orientation).

   1.3. If $G'$ (which is acyclic) is not transitive return false.

 2. return true.

Ahora es obvio que si fue transitivo, este algoritmo devuelve verdadero.G

Ahora suponga que no era transitivo. Sea e 1 = ( v i , v j ) , e 2 = ( v j , v k ) E tal que ( v i , v k ) E (tiene que haber bordes como G no sea transitivo). La probabilidad de que e 1 , e 2G es 1Ge1=(vi,vj),e2=(vj,vk)E(vi,vk)EGe1,e2G , por lo tanto, en cada iteración, la probabilidad de que el algoritmo descubra queGno era transitivo es116G y después de lasiteracionesO(log(δ))la probabilidad de falla es como máximoδ.16O(log(δ))δ


1
Gracias por la respuesta. Suponga que tengo un algoritmo para decidir si un DAG es transitivo en tal f ( n ) = Ω ( n 2 ) . Entonces, puedo decidir si un gráfico dirigido G es transitivo en O ( f ( n ) ) -tiempo como; 1) Obtenga un dígrafo fuertemente conectado en O ( n 2 ) -tiempo. 2) Verifique si cada componente está completo en O ( n 2 )O(f(n))f(n)=Ω(n2)O(f(n))O(n2)O(n2)-hora. 3) Verifique si cada par de componentes, para los cuales hay un borde en el dígrafo del componente, es bi-completo, es decir, hay un borde desde cada vértice de un componente a cada vértice del segundo componente en -hora. 4) Compruebe si el componente dígrafo transitivo en O ( f ( n ) ) -tiempo. O(n2)O(f(n))
ekayaaslan

1

Creo que esto debería ser factible en tiempo lineal, es decir, donde n es el número de vértices ym el número de aristas. ¿Tal vez adaptando algún esquema transversal del gráfico a la configuración dirigida? Un punto de partida podría ser el LexBFS / LexDFS descrito aquí ; para los gráficos dirigidos, parece que deberíamos usar la clasificación topológica en lugar de DFS, ¿entonces tal vez sea posible descubrir algún algoritmo LexTSA ?O(n+m)nm


2
Esta es una OMI improbable, ya que daría un algoritmo de tiempo lineal probabilístico para la verificación de transitividad en los dígrafos generales, vea mi respuesta.
RB

0

Con respecto a la respuesta anterior, aquí hay una manera simple de definir dicho algoritmo. Asigne a cada vértice un índice i ( x ) , inicializado a 0 . Para cada x , supongamos que M ( x ) denota el conjunto múltiple de índices de sus vecinos. Simulamos una ordenación topológica manteniendo un conjunto R de vértices inexplorados, inicializados en todo el conjunto. En cada paso, hacemos lo siguiente:xi(x)0xM(x)R

  1. Elija un vértice cuyo multiset M ( x ) es mínimo (en el orden multiset);xRM(x)

  2. Actualización de a los actuales de control del bucle y quitar x de R .i(x)xR

¿Se puede usar este algoritmo para su problema o para alguna otra aplicación?


Esto sería más apropiado como comentario.
Suresh Venkat
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.