¿Cuál es la complejidad temporal de encontrar el diámetro de un gráfico ?
El diámetro de un gráfico es el máximo del conjunto de distancias de camino más cortas entre todos los pares de vértices en un gráfico.
No tengo idea de qué hacer al respecto, necesito un análisis completo sobre cómo resolver un problema como este.
Respuestas:
Actualizar:
Esta solución no es correcta.
Lamentablemente, la solución solo es cierta (y directa) para los árboles Encontrar el diámetro de un árbol ni siquiera necesita esto. Aquí hay un contraejemplo para gráficos (el diámetro es 4, el algoritmo devuelve 3 si elige este ):v
Si el gráfico está dirigido, esto es bastante complejo, aquí hay un documento que afirma resultados más rápidos en el caso denso que el uso de algoritmos para las rutas más cortas de todos los pares.
Sin embargo, mi punto principal es sobre el caso de que el gráfico no esté dirigido y con pesos no negativos, escuché sobre un buen truco varias veces:
Su complejidad es la misma que la de las dos primeras búsquedas de amplitud sucesivas¹, es decir, si el gráfico está conectado².O(|E|)
Parecía folklore pero en este momento, todavía estoy luchando por obtener una referencia o probar su corrección. Actualizaré cuando logre uno de estos objetivos. Parece tan simple que publico mi respuesta ahora mismo, tal vez alguien la reciba más rápido.
¹ si el gráfico está ponderado, Wikipedia parece decir pero solo estoy seguro acerca de .O ( | E | log | V | )O(|E|+|V|log|V|) O(|E|log|V|)
² Si el gráfico no está conectado, obtienes pero es posible que agregar para elegir un elemento de cada componente conectado. No estoy seguro de si esto es necesario y, de todos modos, puede decidir que el diámetro es infinito en este caso.O(|V|+|E|) O(α(|V|))
fuente
Supongo que significa el diámetro de que es el más largo del camino más corto encontrado en .G G
Se puede encontrar el diámetro encontrando primero todos los pares de caminos más cortos y determinando la longitud máxima encontrada. El algoritmo Floyd-Warshall hace esto en tiempo . El algoritmo de Johnson se puede implementar para alcanzar el tiempo .Θ(|V|3) O(|V|2log|V|+|V|⋅|E|)
Parece difícil lograr un límite de tiempo de ejecución más pequeño en el peor de los casos, ya que hay distancias a considerar y calcular esa distancia en tiempo sublineal (amortizado) cada una será difícil; ver aquí para un enlace relacionado. Tenga en cuenta este documento que utiliza un enfoque diferente y obtiene un algoritmo (ligeramente) más rápido.O(|V|2)
fuente
También puede considerar un enfoque teórico de gráfico algebraico. El diámetro es el menor entero st la matriz tiene la propiedad de que todas las entradas de son distintas de cero. Puede encontrar por iteraciones de multiplicación de matrices. El algoritmo de diámetro requiere entonces el tiempo , donde es el límite para la multiplicación de matrices. Por ejemplo, con la generalización del algoritmo Coppersmith-Winograd por Vassilevska Williams, el algoritmo de diámetro se ejecutaría en . Para una introducción rápida, vea el Capítulo 3 en el libro de Fan Chung aquí .diam(G) t M=I+A Mt t O(logn) O(M(n)logn) M(n) O(n2.3727logn)
Si restringe su atención a una clase de gráfico adecuada, puede resolver el problema de APSP en un tiempo óptimo . Estas clases incluyen al menos gráficos de intervalo, gráficos de arco circular, gráficos de permutación, gráficos de permutación bipartitos, gráficos fuertemente cordales, gráficos bipartitos cordales, gráficos hereditarios de distancia y gráficos doblemente cordales. Por ejemplo, ver Dragan, FF (2005). Estimación de todos los pares de rutas más cortas en familias de gráficos restringidos: un enfoque unificado. Journal of Algorithms, 57 (1), 1-21 y sus referencias.O(n2)
fuente
Suposiciones:
1. El gráfico no está ponderado
2. El gráfico está dirigido
O (| V || E |) complejidad de tiempo.
Algoritmo:
Explicación:
Verificamos el ciclo. si el gráfico contiene un ciclo, seguimos moviéndonos en el bucle, por lo que tendremos una distancia infinita. Verificamos la conexión. Si el gráfico no está conectado, eso significa vértice u desde G1 al vértice v en G2. Donde G1 y G2 son dos sub-gráficos que no están conectados. Entonces volveremos a tener una distancia infinita. Usaremos BFS para calcular la distancia máxima entre un nodo dado (u) a todos los demás nodos (v) a los que se puede acceder desde u. Luego tomaremos el máximo del diámetro previamente calculado y el resultado será devuelto por BFS. Entonces tendremos el diámetro máximo actual.
Análisis del tiempo de ejecución:
Tiempo total = O (| v || E |) + O (| E |) + O (| E |)
Desde | V || E | > | E |
entonces tenemos tiempo de ejecución como O (| v || E |).
BFS
DFS
Nota: Esta no es una solución elegante para este problema.
fuente