Cómo encontrar un árbol de expansión T con el mínimo peso máximo de trayectoria para 2 vértices en G

Para responder a esta pregunta, supondré que cada borde tiene un peso de 1.

Para cada L comprobaremos si existe un árbol de expansión T, de modo que todas las rutas entre 2 vértices tengan una longitud de L como máximo, es decir, el costo (T) <= L (*). Por lo tanto, la respuesta es mínima L donde existe T. Para encontrar L, simplemente verifique cada número en el rango [1, N-1] donde N es el número de vértices en G, o haga una búsqueda binaria para un tiempo de ejecución más rápido.

Considere un árbol de expansión con costo (T) = L. Entonces, T tiene una ruta con la longitud más larga L. Para una ruta, conecte 2 vértices u y v con longitud L en T, su punto medio M divide la ruta en 2 rutas con la misma la longitud si L es par o la longitud de una ruta es 1 unidad mayor que la otra ruta si L es impar.

Cuando L es par. En este caso, cada camino (en T) desde M hasta cualquier otro vértice debe tener una longitud menor o igual a L / 2. Si no es así, entonces T contiene otra ruta con una longitud mayor que L. Por otro lado, si existe un vértice M tal que la longitud de la ruta más corta (en G) desde ella a otras sea menor o igual a L / 2, entonces existe un árbol de expansión T en G tal que cuesta (T) <= L. Así podemos responder (*) fácilmente cuando L es par.

Cuando L es impar. En este caso, el punto medio M divide la ruta más larga en 2 rutas, una es de longitud L / 2 y otra es de longitud L / 2 + 1 (división entera). Fije M como la raíz del árbol de expansión T. La ruta (en el árbol de expansión T) desde M hasta cualquier otro vértice debe tener una longitud menor o igual a L / 2 + 1 y aquellos a una distancia L / 2 + 1 a M deben misma rama, eso significa que todos los caminos desde M hasta ellos deben pasar por el mismo vértice inmediatamente después de M. Lo contrario también es cierto. Considere M tal que la longitud del camino más corto (en G) desde M hasta cualquier otro vértice sea menor o igual a L / 2 + 1. Sea v_1, v_2, …, v_k los vértices cuya distancia más corta desde M hasta M es exacta L / 2 + 1. Si existe un vértice U adyacente a M tal que cualquier distancia más corta desde U a cualquier v_i (1 <= i <= k) es L / 2 (es decir, existe una ruta desde M a cualquier v_i que atraviesa U) , entonces G contiene un árbol de expansión T con costo (T) <= L. Ahora (*) se puede responder cuando L es impar.

More Interesting

¿Hay algún caso donde alguien de alguna manera descifró el algoritmo y engañó en el IITJEE?

¿Qué debe saber todo programador sobre tablas hash y funciones hash?

¿Cuál es la solución eficiente para SPOJ CCROSSX?

¿Hay algún modelo físico o fenómeno que permita resolver rápidamente los problemas NP-hard?

¿Cuál es el mejor algoritmo para elegir para la tarea de aprendizaje automático de agrupar una base de datos de listados de casas con sus propiedades (algunos de los cuales son binarios y otros son numéricos y preferiblemente con la primera imagen)?

Mis ubicaciones están por venir, así que he estado implementando estructuras de datos y algoritmos en Python, pero llegué a saber que muchas empresas no tienen Python instalado en sus estaciones de trabajo. ¿Es verdad? Y si es así, ¿estaría bien cambiar de Python a Java, que no recuerdo mucho?

Dado un gráfico no dirigido y dos conjuntos de nodos, ¿cuál es el mejor algoritmo para verificar que cada elemento del primer conjunto sea adyacente a cada elemento del segundo conjunto?

¿Qué algoritmo se utiliza en los puntos de calificación para las clasificaciones de cricket ICC?

¿Cuáles son los algoritmos importantes que todo desarrollador de software graduado debe saber?

¿Cuál es la complejidad del tiempo para una solución iterativa de la serie Fibonacci?

Cómo organizar y buscar un árbol de búsqueda binario donde cada nodo tiene más de un campo de datos

¿Es posible heapify un árbol binario a un montón sin usar array?

¿Cuál es la mejor función hash que está disponible para identificar cadenas de forma exclusiva?

Cómo hacer un horario para aprender DS y algoritmos en un mes

¿Por qué la complejidad del algoritmo O (logN) significa que los datos disminuyen a la mitad?