Que le den un conjunto de Dirigido acíclicos gráficos G 1 , G 2 , . . . , G n sobre el mismo conjunto de vértices . También se le da una permutación del conjunto de vértices . ¿Cuál es el mejor algoritmo que podría identificar los gráficos entre que tienen como un tipo topológico? ¿Podría alguien probar si es una especie topológica de un DAG sobre en tiempo sub-lineal? V ( v 1 , v 2 , . . . , v m ) G 1 , G 2 , . . . , G n ( v 1 , v 2 , . . . , V m ) ( v 1 , v 2 , . . . , V m ) G V
ds.algorithms
graph-algorithms
directed-acyclic-graph
Hsien-Chih Chang 張顯 之
fuente
fuente
Respuestas:
Esto se puede hacer en un tiempo casi lineal.
Deje que la permutación sea , y deje que k = k ( π ) sea el número de pasos necesarios para verificar una sola arista ( u , v ) contra π . Entonces es suficiente verificar que cada uno de los bordes M i de G i sea compatible con π , lo que se puede hacer en el tiempo O ( k M i ) u O ( k ∑π= ( v1, ... , vmetro) k = k ( π) ( u , v ) π METROyo solyo π O ( k Myo) general.O ( k ∑ Myo)
Al preprocesar se puede reducir k a dos búsquedas en una matriz que contiene m entradas cada una de logπ k metro tamaño m , y una comparación entre dosentradas ( log m ) -bit en la matriz; el elemento de matriz a [ w ] contiene el índice de w en π considerado como una lista ordenada. Esto significa que k = O ( logIniciar sesiónmetro ( registro m ) a [ w ] w π produciendo O ( ( logk = O ( logm ) tiempo total para el límite superior.O ( ( logm ) ∑ Myo)
Como @mjqxxxx señala, cada borde de cada gráfico puede ser relevante. Esto crea un límite inferior de pasos de , donde KΩ ( K∑ Myo) K es la menor cantidad de trabajo que debe hacerse para cada borde del gráfico; es posible que algunos enfoques puedan amortizar el costo para que . Esto todavía va a ser Ω ( ∑ M i )K= o ( logm ) Ω ( ∑ Myo) en el mejor de los casos, por lo que no queda mucho espacio.
fuente
Método trivial
No es tan rápido como quieras. Pero resuelve un problema de que "puede haber múltiples ordenamientos topológicos válidos de DAG". Y encontrarlos a todos no es una buena idea.
fuente