Está en la página 1de 7

1

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

3. Mientras haya más de un componente: El Gráfico se vería así:


• Encuentre la arista de peso mínimo que conecta este
componente con cualquier otro componente.
• Si esta arista no está en el árbol de expansión mínimo
S, se le agrega.
• Si solo queda un componente, hemos llegado al final
del árbol.
4. Retornar S.

Ahora veremos un ejemplo de la aplicación del


pseudocódigo sobre el grafo de la Fig. 1.

Fig. 2 El grafo con las aristas de la 2da columna de la TABLA 1


remarcadas

Debido a que todavía no todos los nodos están conectados


repetimos el paso 3:

TABLA II
COMPONENTES Y ARISTAS DE PESO MÁS PEQUEÑO 2

Componentes Arista de peso más pequeño Peso de la


que la conecta con otro arista
componente
{A, D, F} A-B 7
{B, E, C, G} B-A 7

El gráfico se vería así:

Fig. 1 Grafo que se usará para aplicar el algoritmo de Borůvka

Paso 1: Inicializaremos todos los nodos como componentes:


Componentes: {{A}, {B}, {C}, {D}, {E}, {F}, {G}}

Paso 2: Inicializamos el árbol de expansión mínima:


Árbol de expansión mínima: S = Ø

Paso 3: Mostramos la tabla de componentes y las aristas de


peso más pequeña que las conectan con otras componentes. Fig. 3 El grafo con las aristas de la 2da columna de la TABLA 2
remarcadas

TABLA I Paso 4: Devolvemos el árbol de expansión mínima (S):


COMPONENTES Y ARISTAS DE PESO MÁS PEQUEÑO 1

Componentes Arista de peso más pequeño Peso de la


que la conecta con otro arista
componente
{A} A-D 5
{B} B-E 6
{C} C-E 5
{D} D-A 5
{E} E-C 5
{F} F-D 6
{G} G-E 9 Fig. 4 Árbol de expansión mínima del grafo de la Fig. 1
3

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.

Conociendo su aplicación de este logaritmo, se puede llegar


a aplicar el logaritmo con el fin de aplicarlo para hallar la ruta
óptima, en donde se obtenga una ruta donde todos los vértices
están conectados; es decir, encontrar un MST (Árbol de
4

C. Aplicación del algoritmo en el problema TABLA III


RELACIÓN ENTRE EL NOMBRE DE UN NODO Y SU
IDENTIFICADOR
Con el fin de brindar solución a la problemática, se ha
considerado utilizar el Algoritmo de Boruvka en donde Indicador Lugar
primero se establecerá 26 vértices los cuales serán nombrados 0 FIIS
dependiendo de su cercanía con las facultades o principales 1 FIEE-FC
establecimientos de la Universidad Nacional de ingeniería y 2 ARUNI
31 aristas las cuales unirán los vértices del grafo basado en las 3 FIGMM1
pistas de la UNI, estas aristas nos indican la distancia en 4 FIGMM2
metros redondeado obtenido del famoso servidor de 5 FIEECS
aplicaciones de mapas, Google Maps. 6 FIC
7 CEPS
8 FIA
9 COLISEO1
10 COLISEO2
11 GIMNASIO
12 FIP1
13 FIP2
14 FIQT
15 FIM1
16 CAJA
17 PTA.5
18 ADMISION_UNI
19 PTA.4
20 FAUA
21 TEATRO1
Fig. 4. Creación de un grafo a partir de un mapa de la Universidad 22 TEATRO2
Nacional de Ingeniería. Elaboración propia 23 FIM2
24 FIM3
25 PTA.3

TABLA IV
DISTANCIAS ENTRE CADA PAR DE NODOS
CONECTADOS

Nodo A Nodo B Distancia


0 12 206 m
0 2 207 m
0 1 149 m
1 17 145 m
1 2 118 m
1 5 263 m
2 3 283 m
3 5 109 m
3 9 128 m
Fig. 5. Grafo de las pistas de la Universidad Nacional de Ingeniería. 5 6 126 m
Elaboración propia 5 18 161 m
6 19 135 m
6 9 114 m
6 7 144 m
7 20 77 m
Con el fin de la implementación de este grafo al 7 8 31 m
seudocódigo, se ha creado una tabla el cual relacionará el 8 21 97 m
8 13 85 m
nombre de cada nodo con un número, el cual será su 9 11 120 m
identificador. 9 10 89 m
10 4 102 m
10 11 132 m
11 8 142 m
11 14 170 m
13 22 88 m
13 15 126 m
14 15 30 m
14 23 124 m
15 16 61 m
16 25 40 m
16 24 226 m
5

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:

# Una función que hace la unión de dos if cheapest[set1] == -1


conjuntos de x e y or cheapest[set1][2] > w :
# (usa unión por rango) cheapest[set1] =
def union(self, parent, rank, x, y): [u,v,w]
xroot = self.find(parent, x)
yroot = self.find(parent, y) if cheapest[set2] == -1
or cheapest[set2][2] > w :
# Adjunte un árbol de rango más cheapest[set2] =
pequeño debajo de la raíz del árbol de [u,v,w]
rango alto
# (Unión por rango) for nodo in range(self.V):
if rank[xroot] < rank[yroot]:
parent[xroot] = yroot if cheapest[nodo] != -1:
elif rank[xroot] > rank[yroot]: u,v,w = cheapest[nodo]
6

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)

self.union(predecesores, distancia, set1, g.boruvkaMST()


set2)
print ("Nodo %d-%d #This code is contributed by Neelam Yadav
con distancia %d m. incluido en MST" %
(u,v,w))
Al ejecutar el programa, el algoritmo nos dará la siguiente
print () salida.
numArboles =
numArboles - 1 Nodo 0-1 con distancia 149 m. incluido en MST

#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.

Fig. 6. MST del grafo de las pistas de la Universidad Nacional de


Ingeniería. Elaboración propia

Gracias a este resultado, se puede estimar el mínimo


presupuesto con el que será suficiente para la implementación
de separadores de ciclovía para la seguridad de los ciclistas en
su recorrido por las diferentes facultades y principales
establecimientos de la UNI.

VI. CONCLUSIONES

Se concluye que el algoritmo de Boruvka ha podido dar


solución a la situación problemática planteada, gracias a que
se obtuvo el MST (Árbol de Expansión mínimo) de un grafo
basado en las pistas de la UNI, por el cual los ciclistas podían
ir a cualquier facultad de la UNI.

Gracias a que el algoritmo encuentra el MST de un grafo, se


puede aplicar en casos en los que se requiera rutas óptimas en
donde se busque el mínimo recorrido de un grafo por sus
nodos.

También podría gustarte