2010-08-18 27 views
11

En términos de tiempo de ejecución, ¿cuál es el algoritmo de cierre transitivo más conocido para gráficos dirigidos?algoritmo de cierre transitivo más conocido para el gráfico

Actualmente estoy usando el algoritmo de Warshall pero es O (n^3). Aunque, debido a la representación gráfica, mi implementación mejora levemente (en lugar de verificar todos los bordes, solo comprueba todos los bordes). ¿Hay algún algoritmo de cierre transitivo que sea mejor que esto? En particular, ¿hay algo específicamente para las arquitecturas multiproceso de memoria compartida?

Gracias de antemano.

Raghava.

Respuesta

11

El Algorithm Design manual tiene algo de información útil. Puntos clave:

  • El cierre transitivo es tan difícil como la multiplicación de matrices; así que el límite más conocido es el Coppersmith–Winograd algorithm que se ejecuta en O (n^2.376), pero en la práctica probablemente no valga la pena usar algoritmos de multiplicación de matrices.
  • Para obtener una aceleración heurística, primero calcule los componentes fuertemente conectados.
+0

Gracias por la respuesta. Supongo que la aceleración heurística sería útil solo si hay muchos componentes fuertemente conectados en el gráfico. Necesito observar los gráficos generados por diferentes conjuntos de datos para ver si este es el caso. Pero si ese no es el caso, entonces el de Warshall es el mejor, ¿verdad? Pensé que podría haber algo más. – Raghava

+0

Creo que el enfoque mencionado en el primer punto del primer enlace es el camino a seguir. ¡También será relativamente fácil paralelizar! –

+0

@Tom: A partir de ahora, ya estoy usando una biblioteca de gráficos de múltiples hilos. Así que estoy usando su representación gráfica que no es una matriz. – Raghava

14

En este trabajo se analiza el rendimiento de varios algoritmos de cierre transitivo:

http://www.vldb.org/conf/1988/P382.PDF

Una idea interesante del papel es evitar recalcular todo el cierre como se cambia la gráfica.

También existe esta página por Esko Nuutila, que enumera un par de algoritmos más recientes:

http://www.cs.hut.fi/~enu/tc.html

Su tesis de doctorado que aparece en esa página puede ser el mejor lugar para empezar:

http://www.cs.hut.fi/~enu/thesis.html

Desde esa página:

Los experimentos también indican que con la representación de intervalo y los nuevos algoritmos, el cierre transitivo se puede calcular típicamente en el tiempo lineal al tamaño del gráfico de entrada.

Cuestiones relacionadas