¿Cuál es el propósito de construir un árbol de expansión mínimo?

Imagina que tienes N puntos y debes conectar todos estos N puntos con un solo hilo. El único criterio aquí es que la longitud del hilo que está utilizando para conectar todos los puntos debe ser lo más mínima posible.

La forma más fácil de resolver esto es comenzar desde la fuente, busque el siguiente punto más corto que pueda alcanzar. Repita el mismo proceso en cada punto que alcance. En pocas palabras, lo que estamos buscando es la suma más corta de distancias.

El error común que comete la gente aquí es asumir que encontrar la menor distancia desde la fuente a cada uno de los puntos dará la respuesta correcta. Ese no es el caso. Hay otro nombre para este algoritmo: Dijkstra. Si aún no está convencido, use el algoritmo de dijkstra y encuentre el camino más corto desde el origen hasta todos los demás puntos. Hay una buena posibilidad de que la suma de estos caminos más cortos sea mayor que el algoritmo mencionado anteriormente.

En cuanto al propósito práctico, reemplace el hilo con una red y los puntos con enrutadores: obtiene la ruta más pequeña para enviar datos a través de un conjunto particular de enrutadores. Voila!

Digamos que tiene una computadora paralela con miles de procesadores, y un procesador tiene información que debe ir a todos los demás. Puede dejar que envíe algunos miles de mensajes, pero eso es realmente lento. También puede organizar sus procesadores (virtualmente) en una estructura de árbol y usarlos para enviar la información de forma recursiva.

En este caso, puede obtener algunas complicaciones extra divertidas porque es posible que su árbol virtual deba integrarse en una red física, o tal vez sus enlaces de red sean de diferentes tipos.

Ejercicio para el lector: suponga que tiene procesadores [matemáticos] P = 2 ^ p [/ matemáticos] conectados linealmente. Considere sus números como cadenas de bits y suponga que el procesador cero inicia la transmisión del árbol. Se enviará a un procesador con un número un poco diferente. (Y luego continúas recursivamente.) ¿El proceso cero primero se envía al proceso 1 o al proceso [matemático] 2 ^ {p-1} [/ matemático], es decir, el primer o el último bit es diferente? Los dos árboles diferentes corresponden a un comportamiento de rendimiento muy diferente.

More Interesting

Un hombre llega a su oficina en 2 horas y regresa en 3 horas. La ruta a su oficina incluye un sendero inclinado hacia arriba, 8 km y senderos inclinados hacia abajo. Cada vez que viaja hacia arriba, su velocidad es de 60 km / h, mientras que en un plano de 80 km / h, y cubre hacia abajo a una velocidad de 100 km / h. ¿A qué distancia está su oficina?

¿Hay algún patrón abstracto para medir qué tan bueno eres en algoritmos?

Dada una serie de dígitos, ¿cómo los clasifica con la complejidad temporal o (n)?

¿Qué tan rápido irá un bote de semi desplazamiento de 24.5 m LWL x 6.4 m con una viga de 80 t con 1200 hp? ¿Tiene actualmente 2700 hp y pesa 85 t y va a 34 kts?

Cómo encontrar el enésimo número de Ulam rápidamente

¿Debo aprender el concepto profundo del aprendizaje automático como el curso de Andrew Ng o es suficiente para saber qué algoritmo se utiliza cuando?

Cómo usar el código VHDL para generar el seno de un ángulo dado usando el algoritmo CORDIC

Después de que termina el programa de programación (estructuras de datos y algoritmo), ¿qué se les enseña a los estudiantes en CSE después de eso?

¿Cuál es la forma más eficiente de agregar 2 enteros?

¿Cuáles son las ventajas de los algoritmos SVM?

¿Por qué hay diferentes tipos de clasificación en C?

¿Cuál es la complejidad de esta recursividad F (1, n)?

¿Cuál es la mejor manera de depurar un algoritmo recursivo?

Cómo usar la primera búsqueda en profundidad en un laberinto

¿Cuáles son algunos algoritmos interesantes que se han encontrado en la naturaleza?