Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ALGORITMO DE BORUVKA
E. Fidel, S. Yupanqui, A. Pacahuala y D. Sotelo
investigación.
Resumen - El objetivo del presente artículo es explicar
el funcionamiento del algoritmo de Boruvka, que busca II. ANTECEDENTES
encontrar el árbol generador de peso mínimo en un grafo
ponderado (MST), este método tiene múltiples aplicaciones en
sistemas de geolocalización, urbanismo e implementación de
redes en general. En particular en el presente trabajo se aplicará Ante la necesidad de encontrar una optimización combinatoria
este algoritmo para la implementación de delineadores en ciclo y explorar en regiones factible e infectables se buscó encontrar
vías en las pistas de la Universidad Nacional de Ingeniería, en un algoritmo que mecanicé y amplié el panorama conceptual
donde se logre optimizar la mayor cantidad de recursos
económicos y de espacio en su implementación. de estos.
Índice de términos: Algoritmo de Boruvka, árbol de expansión Es así como Otakar Boruvka en 1926 formuló el algoritmo
mínima (MST), vértices, nodos, peso, optimización. de Boruvka, por la necesidad de construir una red eléctrica que
optimice recursos económicos y que logre conectar todas las
ciudades en el sur de Moldavia.
I. INTRODUCCIÓN
Debido a su gran velocidad de convergencia, siendo
bastante eficiente fue ideal para su implementación en otras
E
l algoritmo de Boruvka que basa su funcionamiento ramas. Posteriormente el Algoritmo fue redescubierto por
mediante el cálculo de un árbol recubridor mínimo Choquet en 1938, en donde aplicó dicho algoritmo en el
en un grafo ponderado, es aplicado en distintas áreas análisis funcional, topología y teoría de medidas. También fue
de sistemas complejos de redes y caminos tales como en la utilizado por Florek y Lukasiewicz en donde lograron
construcción de rutas de transporte urbano, desarrollo de implementar dicho algoritmo en el análisis matemático y
planos en ciudades, redes de distribución energética y de teoría de probabilidades recurrentes en campos discretos.
telecomunicaciones. [1]
Actualmente el algoritmo de Boruvka complementado con
En el presente artículo se buscará obtener el árbol de otros algoritmos como Prim, Seleccionado, Kruskal, Dijkstra y
expansión mínima (MST) con respecto al plano del campus Sollin son utilizados en la formulación de redes sistémicas de
universitario de la Universidad Nacional de Ingeniería para la unión y optimización cuyas aplicaciones son múltiples en
implementación de delineadores de ciclovías dentro de la casos reales. [2]
universidad, esto se hará mediante el análisis estructural del
plano de la universidad e implementando cada dato recopilado
en la utilización del algoritmo de Boruvka.
III. ALGORITMO DE BORUVKA
Lo mencionado se logrará planteando en el capítulo II los El algoritmo de Borůvka se utiliza para encontrar el árbol
antecedentes que ayudaron al desarrollo del algoritmo de de expansión mínima en un gráfico conexo, ponderado y no
Boruvka, después en el capítulo III se definirá el Algoritmo de dirigido, recordemos que un gráfico es conexo cuando existe
Boruvka, detallando su utilización y los pasos a seguir en su un camino entre cualquiera de sus nodos, no dirigido cuando
implementación; consiguientemente en el capítulo IV se los bordes son bidireccionales y ponderado cuando a cada
pondrá en conocimiento las diversas aplicaciones prácticas en arista se le asigna un número (peso) que puede representar una
la realidad que usan en su funcionamiento el algoritmo de distancia, capacidad, precio, etc.
Boruvka aunado a otros algoritmos complementarios;
posteriormente en el capítulo V se desarrollará la aplicación El pseudocódigo del algoritmo de Borůvka según [3] sería
práctica que consistirá en la implementación de delineadores así:
en la ciclovias de la UNI, detallando el pseudocódigo 1. Inicializamos todos los nodos como componentes
utilizado, los datos recopilados y la cuantificación de estos individuales.
para lograr así dicha red, finalmente en el capítulo VI se 2. Inicializamos el árbol de expansión mínima S como
detallaran las conclusiones obtenidas en el presente trabajo de un conjunto vacío que contendrá la solución.
2
TABLA II
COMPONENTES Y ARISTAS DE PESO MÁS PEQUEÑO 2
IV. APLICACIONES DEL ALGORITMO DE BUROVKA expansión mínima) en un grafo ponderado dado en donde sus
arcos tengan pesos distintos siendo este algoritmo muy usado
Sabiendo que el algoritmo de Boruvka genera un árbol de como un método eficiente para el diseño de redes de
expansión mínimo, se puede entender que sus aplicaciones telecomunicaciones, sistemas distribuidos y otros.
están relacionadas a los procesos que requieren de los árboles
de expansión mínima, estos procesos se vuelven mucho más El problema planteado para esta investigación es el
eficaces gracias a este algoritmo, como ejemplo tenemos a los siguiente. En la Universidad Nacional de Ingeniería, se está
siguientes procesos y protocolos [4]. tratando de implementar proyectos eco amigables con el fin
que tanto como la institución como los estudiantes adopten
El diseño de redes, tales como las de hábitos que ayuden a proteger el medio ambiente, tales como
telecomunicaciones, transporte, abastecimiento de un incremente notable de tachos de basura con indicadores
agua y saneamiento y redes eléctricas. para el reciclaje de este, la implementación de tachos para
reciclaje de botellas en forma de osos polares con el fin de
Internet, al ser una mega red, requiere de incentivar y concientizar a la gente a el cuidado del ambiente y
árboles de expansión mínima para evitar bucles, esto también estaciones de bicicletas.
es igual para las redes ethernet.
El problema viene a ser que a pesar de que la institución ha
ido progresivamente implementando estaciones de bicicletas,
En el modelamiento de mercados
no existe una separación o separador en las pistas de la
financieros, estos pueden ser entendidos como un
Universidad Nacional de Ingeniería el cual delimite un carril
conjunto de redes complejas y, dada la efectividad
para los automóviles y para los ciclistas, siendo este esencial
del algoritmo de Boruvka, este puede ser utilizado
para la seguridad de los ciclistas dentro de la UNI. Con la
para representarlos. aplicación del Algoritmo de Boruvka, se buscará obtener una
ruta óptima en el cual un ciclista puede ir hacia cualquier
Solución de caminos máximos y para hallar facultad y principales establecimientos dentro de la UNI por
cuellos de botella en un sistema de transporte, de una ruta el cual no demande un alto presupuesto puesto que se
producción o en varios otros. buscará obtener el MST a partir de un grafo basado de la
Universidad Nacional de Ingeniería.
Registro de imágenes por computador, el
reconocimiento facial se basa en la búsqueda de
B. Objetivos
patrones que conforman un grafo y el árbol de
expansión mínimo como forma de iniciar un proceso
de detección. Objetivo general:
Se busca obtener el MST a partir de un grafo basado
de la Universidad Nacional de Ingeniería con el fin
Solucionar problemas de optimización de
de la implementación de delineadores de ciclovías en
caminos en grafos usando diferentes computadores, las pistas el cual no demande un alto presupuesto,
sistema conocido como computadores paralelos. pero que los ciclistas tengan acceso a todas facultades
y principales establecimientos de la UNI.
Objetivos específicos:
V. PLANTEAMIENTO DEL PROBLEMA - Obtener el MST de un grafo basado en las pistas
de la Universidad Nacional de Ingeniería
aplicando el algoritmo de Boruvka
A. Situación problemática
- Establecer puntos en todas las facultades de la
Al encontrar las relaciones de menor peso entre datos UNI y principales establecimientos con el fin de
contenidos en vértices que conforman un grafo, el Algoritmo establecerlos como vértices del MST.
de Boruvka puede utilizarse para diseñar rutas de recorridos en
sistemas de carreteras o itinerario de rutas aéreas para que las - Obtener las distancias entre los establecimientos
rutas planificadas sean más eficientes, puesto que este de la UNI para la obtención del MST a través del
algoritmo da nacimiento a lo que conocemos como árbol de algoritmo de Boruvka.
expansión de peso mínimo.
TABLA IV
DISTANCIAS ENTRE CADA PAR DE NODOS
CONECTADOS
parent[yroot] = xroot
El algoritmo de Boruvka se desarrollará en el lenguaje de #Si los rangos son los mismos, haga
programación Python. A continuación, se muestra el algoritmo
uno como raíz e incremente
y las entradas necesarias en el código [5].
# su rango por uno
# Algoritmo de Boruvka para encontrar la else :
amplitud mínima parent[yroot] = xroot
# Árbol de un grafo conexo, no dirigido y rank[xroot] += 1
ponderado dado
# La función principal para construir
from collections import defaultdict MST usando el algoritmo de Kruskal
def boruvkaMST(self):
#Class to represent a graph predecesores = []; distancia = [];
class Graph:
cheapest =[]
def __init__(self,vertices):
self.V= vertices #No. de vertices numArboles = self.V
self.grafo = [] #Diccionario MST = 0.0
predeterminado para almacenar el gráfico
# Crear subconjuntos V con
elementos individuales
# función para agregar un borde al for nodo in range(self.V):
gráfico predecesores.append(nodo)
def addEdge(self,u,v,w): distancia.append(0)
self.grafo.append([u,v,w]) cheapest =[-1] * self.V
while numArboles > 1:
# Una función de utilidad para for i in
encontrar el conjunto de un elemento i range(len(self.grafo)):
# (utiliza la técnica de compresión de u,v,w = self.grafo[i]
ruta) set1 =
def find(self, parent, i): self.find(predecesores, u)
if parent[i] == i: set2 =
return i self.find(predecesores ,v)
return self.find(parent, parent[i]) if set1 != set2:
set1 = g.addEdge(13,22,88)
self.find(predecesores, u) g.addEdge(13,15,126)
set2 = g.addEdge(14,15,30)
self.find(predecesores ,v) g.addEdge(14,23,124)
g.addEdge(15,16,61)
if set1 != set2 : g.addEdge(16,25,40)
MST += w g.addEdge(16,24,226)
#se restablece la matriz Nodo 1-2 con distancia 118 m. incluido en MST
cheapest =[-1] * self.V
Nodo 3-5 con distancia 109 m. incluido en MST
print ("El peso de MST es %d" % Nodo 10-4 con distancia 102 m. incluido en MST
MST)
Nodo 6-9 con distancia 114 m. incluido en MST
g = Graph(26)
Nodo 7-8 con distancia 31 m. incluido en MST
g.addEdge(0,12,206)
g.addEdge(0,2,207) Nodo 9-10 con distancia 89 m. incluido en MST
g.addEdge(0,1,149)
g.addEdge(1,17,145) Nodo 9-11 con distancia 120 m. incluido en MST
g.addEdge(1,2,118)
Nodo 0-12 con distancia 206 m. incluido en MST
g.addEdge(1,5,263)
g.addEdge(2,3,283) Nodo 8-13 con distancia 85 m. incluido en MST
g.addEdge(3,5,109)
g.addEdge(3,9,128) Nodo 14-15 con distancia 30 m. incluido en MST
g.addEdge(5,6,126)
g.addEdge(5,18,161) Nodo 16-25 con distancia 40 m. incluido en MST
g.addEdge(6,19,135)
Nodo 1-17 con distancia 145 m. incluido en MST
g.addEdge(6,9,114)
g.addEdge(6,7,144) Nodo 5-18 con distancia 161 m. incluido en MST
g.addEdge(7,20,77)
g.addEdge(7,8,31) Nodo 6-19 con distancia 135 m. incluido en MST
g.addEdge(8,21,97)
Nodo 7-20 con distancia 77 m. incluido en MST
g.addEdge(8,13,85)
g.addEdge(9,11,120) Nodo 8-21 con distancia 97 m. incluido en MST
g.addEdge(9,10,89)
g.addEdge(10,4,102) Nodo 13-22 con distancia 88 m. incluido en MST
g.addEdge(10,11,132)
Nodo 14-23 con distancia 124 m. incluido en MST
g.addEdge(11,8,142)
g.addEdge(11,14,170) Nodo 16-24 con distancia 226 m. incluido en MST
7
REFERENCIAS
Nodo 1-5 con distancia 263 m. incluido en MST [1] P. Mojica “Teoría de grafos aplicada en la restauración del servicio en
redes de distribución de media tensión considerando prioridad de carga”,
Universidad de La Salle, Bogotá, Colombia, 2017. [En Línea].
Nodo 5-6 con distancia 126 m. incluido en MST
Disponible: https://ciencia.lasalle.edu.co/ing_electrica/112
[2] M. Díaz “Diseño e Implementación de Algoritmos de Grafos para
Nodo 13-15 con distancia 126 m. incluido en MST Apache Giraph”, Computación Civil, pp. 38-46, agosto de 2017. [En
Línea]. Disponible:
http://dspace.utalca.cl/bitstream/1950/12129/3/tutcur-20170004.pdf
Nodo 15-16 con distancia 61 m. incluido en MST [3] D. Landup, D. Stamenic y J. Ninkovic (2022, Mayo). Minimum
Spanning Trees- Borůvka’s Algorithm [Online]. Avaliable:
Nodo 11-8 con distancia 142 m. incluido en MST https://stackabuse.com/courses/graphs-in-python-theory-and-
implementation/lessons/minimum-spanning-trees-boruvkas-algorithm/
[4] R. Mayta. “Algoritmo evolutivo para el problema de
El peso de MST es 2964 Árbol de Expansión Mínima (MST)”, Universidad Nacional Mayor de
San Marcos, Lima, Perú, 2002. [En línea]. Disponible:
https://sisbib.unmsm.edu.pe/bibvirtual/publicaciones/indata/v05_n2/algo
El resultado nos hará referencia a los nodos que están rit_evo.htm
incluidos en el Árbol de expansión mínima, los cuales al [5] N. Yadav. “Boruvka’s algorithm”. GeeksforGeeks, 2022. [En línea].
sumar sus distancias nos indicará que son 2964 metros de pista Disponible: https://www.geeksforgeeks.org/boruvkas-algorithm-greedy-
algo-9/
los cuales de verá implementar separadores de ciclovía.
VI. CONCLUSIONES