SlideShare una empresa de Scribd logo
2
Lo más leído
6
Lo más leído
7
Lo más leído
ESCUELA PROFESIONAL: Ingeniería de Sistemas e Informática.
SEMESTRE: IV
CURSO:
Algoritmo y Programación II
DOCENTE:
Ing. Poccori Umeres, Godofredo.
INTEGRANTE:
Rodriguez Berna, Oscar Jesus.
Cruz Cruz, Yilmar Fran.
CUSCO-PERU
2025
UNIVERSIDAD TECNOLOGICA
DE LOS ANDES
ALGORITMO KRUSKAL.
Contenido
INTRODUCCION.........................................................................................................3
METODOLOGIA..........................................................................................................4
Descripción del Algoritmo de Kruskal..........................................................................6
Ejemplo del Algoritmo de Kruskal.............................................................................7
Pasos Detallados:......................................................................................................7
1. Ordenar las aristas............................................................................................7
2. Inicializar los conjuntos disjuntos:................................................................7
3. Recorrer las aristas:.......................................................................................7
4. Resultado Final:................................................................................................8
Complejidad del Algoritmo de Kruskal.....................................................................8
Aplicaciones del Algoritmo de Kruskal......................................................................9
HISTORIA...................................................................................................................10
Funcionamiento del Algoritmo de Kruskal.............................................................11
Desarrollo y Optimización.........................................................................................11
Ventajas y Desventajas del Algoritmo de Kruskal..................................................12
CODIGO:.....................................................................................................................12
COMPILACION:.....................................................................................................14
CONCLUSIONES.......................................................................................................15
INTRODUCCION.
En los años 90, las redes han revolucionado la forma en la que las personas y las
organizaciones intercambian información y coordinan sus actividades”. (Sanchis, 2007). Los
sistemas de monitoreo inalámbricos de bajo costo han adquirido gran importancia
actualmente, esto gracias a los avances tecnológicos en modulación digital y a las
necesidades de la industria en la adquisición de datos en línea, por estos motivos se han
desarrollado sistemas de sensores cada vez más económicos, de bajo consumo energético, y
se pueden instalar, controlar y monitorear de manera remota. Por lo cual el desarrollo de
Software ha tenido un gran crecimiento en los últimos años, lo que ha permitido la creación
de algoritmos y programas que ayuden en la resolución de problemas de diferente dominio
apoyándose en el procesamiento del computador, cabe recalcar que aunque varios algoritmos
resuelvan un mismo problema se debe tener en cuenta la eficacia que tiene cada uno de ellos
sobre la solución del problema esto quiere decir que su tiempo de ejecución sea menor al
igual que su complejidad e implementación haciendo uso y consumo de la menor cantidad de
recursos. Uno de los ejemplos clásicos de las ciencias de la computación consiste en la
búsqueda del árbol de cobertura de costo mínimo (MST, Mínimum Spanning Tree) de un
grafo conexo, no dirigido y aristas con peso G(V, E), en que V corresponde al conjunto de
nodos E al de aristas ( o arcos). A continuación, se analizará una posible solución para este
problema.
METODOLOGIA.
A. Conocimientos previos:
a.1.- Árbol de expansión. - compuestos por todos los vértices y algunas de las aristas
en el cual no existirán ciclos. ( Véase la figura 1.1).
a.2.-Árbol de expansión mínima. -Es en el cual no existirán ciclos en donde la suma de
sus aristas es la de menor peso. (Véase la figura 1.2) .
Algoritmo. - son una serie de normas o leyes específicas que hace posible la
ejecución de actividades, cumpliendo una serie de pasos continuos que no le originen dudas a
la persona que realice dicha actividad. Los algoritmos se pueden expresar de diversas formas:
lenguaje natural, lenguaje de programación y diagramas de Flujo.
El algoritmo de Kruskal es un algoritmo clásico utilizado para resolver el problema
del Árbol de Expansión Mínima (MST, por sus siglas en inglés) en un grafo ponderado y
no dirigido. Un árbol de expansión mínima es un subconjunto de las aristas de un grafo que
conecta todos los vértices del grafo sin ciclos y con el menor peso total posible.
Definición del Problema del Árbol de Expansión Mínima (MST).
En un grafo ponderado, cada arista tiene un peso asociado que puede representar una
distancia, un costo o algún otro valor. El problema del MST consiste en encontrar el
subconjunto de aristas que conecta todos los vértices del grafo de manera que el peso total de
las aristas seleccionadas sea el menor posible y que el grafo no contenga ciclos.
Pasos del Algoritmo de Kruskal.
El algoritmo de Kruskal se basa en el enfoque voraz o greedy. Esto significa que en cada
paso selecciona la arista de menor peso que no forme un ciclo con las aristas seleccionadas
previamente.Los pasos fundamentales del algoritmo de Kruskal son los siguientes:
1. Ordenar todas las aristas: Se ordenan todas las aristas del grafo en función
de su peso, de menor a mayor.
2. Inicializar el conjunto disjunto: Se crea un conjunto disjunto para cada
vértice. Un conjunto disjunto es una estructura que permite agrupar elementos
que pertenecen a un mismo conjunto y permite determinar si dos elementos
están en el mismo conjunto.
3. Recorrer las aristas ordenadas: A medida que se recorre el conjunto de
aristas ordenadas, se va añadiendo al árbol de expansión mínima aquellas
aristas que no formen un ciclo (es decir, que conecten dos componentes
diferentes del grafo). Para ello, se utiliza el conjunto disjunto para verificar si
los vértices de la arista seleccionada están en el mismo conjunto.
4. Detenerse cuando se haya seleccionado V−1V - 1V−1 aristas: El algoritmo
se detiene cuando el número de aristas seleccionadas es igual al número de
vértices del grafo menos uno (V−1V-1V−1), ya que un árbol de expansión
mínima siempre tendrá V−1V - 1V−1 aristas.
Descripción del Algoritmo de Kruskal
El algoritmo de Kruskal se puede describir formalmente de la siguiente manera:
1. Entradas:
 Un grafo G(V,E)G(V, E)G(V,E), donde VVV es el conjunto de vértices y EEE
es el conjunto de aristas, cada una con un peso asociado.
2. Inicialización:
 Crear un conjunto disjunto para los vértices.
 Ordenar todas las aristas en orden ascendente según su peso.
3. Proceso:
 Para cada arista (u,v)(u, v)(u,v) en el grafo, si los vértices uuu y vvv
pertenecen a diferentes conjuntos disjuntos, se añade la arista al MST y se
combinan los conjuntos de uuu y vvv.
 El algoritmo termina cuando se añaden V−1V-1V−1 aristas al MST.
4. Salida:
 El árbol de expansión mínima MST, que contiene las aristas seleccionadas.
Ejemplo del Algoritmo de Kruskal
Supongamos que tenemos el siguiente grafo ponderado:
El grafo tiene los siguientes vértices V={A,B,C,D}y las aristas E={(A,B,10),(A,C,6),
(B,D,15),(C,D,4),(B,C,7)}€
Pasos Detallados:
1. Ordenar las aristas por peso:
(C,D,4),(A,C,6),(B,C,7),(A,B,10),(B,D,15
2. Inicializar los conjuntos disjuntos:
Conjuntos iniciales: {A},{B},{C},{D}
3. Recorrer las aristas:
 Consideramos la arista (C,D,4):los vértices C y D están en conjuntos
diferentes, así que se añade la arista al MST. Se combinan los conjuntos de C
y D, lo que resulta en {C,D}.
 Consideramos la arista (A,C,6:los vértices A y C están en conjuntos diferentes,
así que se añade la arista al MST. Se combinan los conjuntos de A y C, lo que
resulta en {A,C,D}
 Consideramos la arista (B,C,7): los vértices B y C están en conjuntos
diferentes, así que se añade la arista al MST. Se combinan los conjuntos de B
y C, lo que resulta en {A,B,C,D}
 Las aristas (A,B,10) y (B,D,15) se descartan porque los vértices ya están en el
mismo conjunto.
4. Resultado Final: El MST es el siguiente:
 Aristas seleccionadas: (C,D,4),(A,C,6),(B,C,7)
 El peso total del MST es: 4+6+7=17
Complejidad del Algoritmo de Kruskal
El algoritmo de Kruskal es eficiente en términos de tiempo si se utilizan estructuras de
datos adecuadas, como los conjuntos disjuntos con compresión de caminos y unión por
rango. La complejidad temporal del algoritmo es la siguiente:
 Ordenar las aristas: O(Elog⁡
E)O(E log E)O(ElogE), donde EEE es el número
de aristas en el grafo.
 Operaciones de unión y búsqueda en los conjuntos disjuntos: O(α(V)), donde
α es la función inversa de Ackermann, que crece extremadamente lentamente,
por lo que se considera prácticamente constante.
Por lo tanto, la complejidad total del algoritmo de Kruskal es O(E log E), que es
mucho más eficiente que otros algoritmos de MST como el de Prim, especialmente cuando el
grafo es disperso (es decir, tiene muchas menos aristas que vértices).
Por lo tanto, la complejidad total del algoritmo de Kruskal es O( E log E), que es
mucho más eficiente que otros algoritmos de MST como el de Prim, especialmente cuando el
grafo es disperso (es decir, tiene muchas menos aristas que vértices).
Aplicaciones del Algoritmo de Kruskal
El algoritmo de Kruskal tiene varias aplicaciones prácticas en diversas áreas:
 Diseño de Redes de Comunicación:
Se utiliza para diseñar redes de comunicación, como redes telefónicas, de fibra óptica,
redes inalámbricas, etc., donde es necesario conectar un conjunto de puntos (estaciones) con
el menor costo posible.
 Diseño de Redes de Transporte:
Se emplea en el diseño de redes de carreteras, ferrocarriles y otras infraestructuras de
transporte, para asegurar que los puntos importantes estén conectados de la manera más
económica.
 Problemas de Distribución de Recursos:
El algoritmo también se aplica en problemas de distribución, donde el objetivo es
conectar varios puntos de distribución de recursos (agua, electricidad, etc.) con el menor
costo posible.
 Problemas de Planificación:
En ingeniería y planificación de proyectos, el algoritmo de Kruskal se puede usar para
conectar diferentes estaciones o centros de manera eficiente y económica.
 Computación Gráfica:
Se utiliza en algunas técnicas de computación gráfica, como el procesamiento de
imágenes o la creación de mallas en gráficos 3D.
HISTORIA.
El algoritmo de Kruskal fue propuesto por el matemático estadounidense Joseph
Kruskal en 1956. Este algoritmo es uno de los métodos más conocidos para resolver el
problema del Árbol de Expansión Mínima (MST), que busca conectar todos los vértices de
un grafo con el menor peso total de aristas posible, sin generar ciclos. En otras palabras, el
algoritmo busca crear un árbol que mantenga todas las conexiones necesarias entre los nodos
del grafo mientras minimiza el costo total de las conexiones.
Durante la década de 1950, los estudios sobre teoría de grafos y estructuras
matemáticas comenzaron a ser fundamentales en diversas ramas de la ciencia, la ingeniería y
la informática. La idea de representar redes de comunicación, rutas de transporte, o
conexiones entre estaciones de computadoras como grafos comenzó a ganar relevancia. El
problema del árbol de expansión mínima se presentó como uno de los problemas más
importantes en este campo.
Joseph Kruskal, mientras trabajaba en problemas de optimización y redes, se dio
cuenta de que existía la necesidad de encontrar una forma eficiente de conectar los nodos de
un grafo de forma que el costo total de la conexión fuera el más bajo posible, sin la
posibilidad de crear ciclos que redundaran en conexiones innecesarias.
El algoritmo de Kruskal se enmarca dentro de los llamados algoritmos voraces
(greedy), que se caracterizan por tomar decisiones óptimas en cada paso con el objetivo de
encontrar una solución global óptima. En el caso de Kruskal, el algoritmo selecciona en cada
paso la arista de menor peso, asegurándose de que no se forme un ciclo, hasta que se hayan
conectado todos los vértices del grafo.
Funcionamiento del Algoritmo de Kruskal.
El algoritmo de Kruskal comienza con la ordenación de las aristas del grafo en
orden ascendente según su peso. Luego, el algoritmo itera sobre estas aristas y, por cada
arista, verifica si los dos vértices que conecta ya están en el mismo conjunto o no. Si no están
conectados, es decir, pertenecen a conjuntos disjuntos, se agrega la arista al MST y se unen
los dos conjuntos. Esta verificación y unificación de conjuntos se realiza mediante una
estructura de datos llamada unión y búsqueda (union-find), que permite realizar
operaciones de forma eficiente.
Desarrollo y Optimización.
Aunque Kruskal propuso el algoritmo en 1956, los avances posteriores en las
estructuras de datos que se utilizan para implementarlo han hecho que su aplicación sea aún
más eficiente. En particular, el uso de estructuras como la compresión de caminos y la
unión por rango en la técnica de unión y búsqueda ha permitido que el algoritmo sea
escalable y eficiente, incluso en grafos grandes.
A medida que la teoría de grafos y la informática evolucionaban, el algoritmo de
Kruskal se convirtió en uno de los pilares fundamentales para resolver problemas de
optimización en redes, especialmente en aquellos problemas que involucran grafos
dispersos, donde el número de aristas es mucho menor que el número de vértices. Esto lo
hace adecuado para problemas de redes de comunicaciones, distribución de recursos y
planificación de infraestructuras.
Ventajas y Desventajas del Algoritmo de Kruskal.
El algoritmo de Kruskal tiene varias ventajas, entre las cuales se destacan su
simplicidad y su eficiencia en grafos dispersos. Al ordenar las aristas y procesarlas en orden,
el algoritmo es relativamente fácil de implementar y de entender. Además, dado que no
depende de la estructura del grafo (es decir, no necesita representar el grafo en una matriz de
adyacencia o lista de adyacencia), es especialmente útil para grafos dispersos.
Sin embargo, también tiene algunas desventajas. Uno de los inconvenientes es que la
ordenación de las aristas tiene una complejidad de O(E log E), lo que puede ser un cuello de
botella en grafos densos. Además, si el grafo es muy grande, el uso de estructuras de datos de
unión y búsqueda puede generar una sobrecarga de memoria.
CODIGO:
INGENIERIA DE SISTEMAS. ALGORITMO KRUSKAL.
COMPILACION:
CONCLUSIONES.
El algoritmo de Kruskal es especialmente eficiente en grafos dispersos, es decir,
aquellos con un número reducido de aristas en comparación con los vértices. Su diseño de
seleccionar las aristas más pequeñas de manera ordenada lo hace adecuado para redes con
pocas conexiones.
La implementación del algoritmo de Kruskal es relativamente simple en comparación
con otros algoritmos de optimización de grafos. Gracias a su estructura basada en ordenar las
aristas y unir conjuntos de vértices, su código es accesible tanto para estudiantes como para
profesionales, facilitando su uso en distintos tipos de proyectos.
Kruskal es un algoritmo voraz, lo que significa que toma decisiones locales óptimas
(seleccionar siempre la arista de menor peso) con la esperanza de encontrar una solución
global óptima. Aunque este enfoque no siempre funciona en otros tipos de problemas, en el
caso del árbol de expansión mínima, asegura la mejor solución.
Al encontrar la forma más eficiente de conectar todos los vértices en un grafo, el
algoritmo de Kruskal es muy útil en la optimización de costos en redes de comunicación,
transporte y otras infraestructuras. Permite construir redes que minimizan el uso de recursos
y, por ende, los costos operativos y de implementación.
Las aplicaciones del algoritmo de Kruskal son muy variadas y abarcan campos como
telecomunicaciones, transporte, energía, planificación de redes eléctricas y sistemas de
optimización. Su utilidad se extiende a problemas que involucran la conexión de nodos con
el menor costo posible y sin redundancias, como la interconexión de estaciones de
telecomunicaciones, la distribución de recursos, y la creación de sistemas eficientes de
transporte.
Si bien el algoritmo es muy eficiente en grafos dispersos, su desempeño puede verse
afectado cuando se aplican a grafos muy densos, es decir, aquellos con muchas aristas. En
este caso, puede ser necesario un enfoque alternativo, como el algoritmo de Prim, que es más
adecuado para grafos densos.
Aunque el algoritmo de Kruskal ha demostrado ser una herramienta eficaz en la
optimización de grafos, su eficiencia puede mejorarse aún más mediante el uso de técnicas
avanzadas de estructuras de datos, como la compresión de caminos y la unión por rango.
Estas mejoras permiten reducir la complejidad de las operaciones de unión y búsqueda, lo
que optimiza aún más el rendimiento en grafos de gran tamaño.

Más contenido relacionado

DOCX
Algoritmos
PPTX
Matematicas discretas
PPTX
Floyd Prim y Kruscal
PDF
Algoritmos de Johnson en Python
DOCX
EL ALGORITMO DE FLOYD-WARSHALL PARA GRAFOS
PDF
Algoritmo de Floyd-Warshall
DOCX
Investigación sobre el algoritmo de prim
PPTX
Presentación OR Problemas de Caminos Más Cortos
Algoritmos
Matematicas discretas
Floyd Prim y Kruscal
Algoritmos de Johnson en Python
EL ALGORITMO DE FLOYD-WARSHALL PARA GRAFOS
Algoritmo de Floyd-Warshall
Investigación sobre el algoritmo de prim
Presentación OR Problemas de Caminos Más Cortos

Similar a INGENIERIA DE SISTEMAS. ALGORITMO KRUSKAL. (20)

PDF
Algoritmo de kruskal
PDF
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
PPTX
Tema 5 diapositivas de la teoría de grafos.pptx
PPT
ANÁLISIS DE CLUSTERS (CLUSTERING)
PPTX
Algoritmos matematicos
DOCX
Slideshare nelson rodriguez
PPT
Clustering
PPT
Clustering
DOCX
Generación
PPTX
Mapa mental Grafos (Gaby Assouad)
PPTX
Actividad complementaria
PDF
Estructura de datos avanzada
PPTX
Programación 3: algoritmo de Prim y de Kruskal
PPTX
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
PPTX
Grafos 8.6 2016
PDF
grafosalgoritmosfundamentales-170507070811.pdf
DOCX
Análisis numérico (josé monsalve). (autoguardado)
PDF
Resumen de algoritmo
Algoritmo de kruskal
Proyecto PIBAP 03-295 Contrato #040 Informe Componente 1
Tema 5 diapositivas de la teoría de grafos.pptx
ANÁLISIS DE CLUSTERS (CLUSTERING)
Algoritmos matematicos
Slideshare nelson rodriguez
Clustering
Clustering
Generación
Mapa mental Grafos (Gaby Assouad)
Actividad complementaria
Estructura de datos avanzada
Programación 3: algoritmo de Prim y de Kruskal
Algoritmos de Dijkstra, Warshall, Ordenación Topológica.
Grafos 8.6 2016
grafosalgoritmosfundamentales-170507070811.pdf
Análisis numérico (josé monsalve). (autoguardado)
Resumen de algoritmo
Publicidad

Último (20)

PPTX
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
PDF
Presentación Ejecutiva Minimalista Azul.pdf
PPTX
diego universidad convergencia e información
DOCX
Cumplimiento normativo y realidad laboral
PDF
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
PPTX
Expo petroelo 2do ciclo.psssssssssssssptx
PPTX
DEBL Presentación PG 23.pptx [Autoguardado].pptx
PDF
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
PDF
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PDF
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PPTX
Electronica II, material basico de electronica II
PDF
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
PDF
TRABAJO DE ANÁLISIS DE RIESGOS EN PROYECTOS
PDF
alimentos de bebidas45rtrtytyurrrr 1.pdf
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
PPTX
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
TOPOGRAFÍA - INGENIERÍA CIVIL - PRESENTACIÓN
Presentación Ejecutiva Minimalista Azul.pdf
diego universidad convergencia e información
Cumplimiento normativo y realidad laboral
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
Expo petroelo 2do ciclo.psssssssssssssptx
DEBL Presentación PG 23.pptx [Autoguardado].pptx
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
LIBRO UNIVERSITARIO INTELIGENCIA ALGORITMICA BN.pdf
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
Electronica II, material basico de electronica II
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
TRABAJO DE ANÁLISIS DE RIESGOS EN PROYECTOS
alimentos de bebidas45rtrtytyurrrr 1.pdf
clase MICROCONTROLADORES ago-dic 2019.pptx
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
Publicidad

INGENIERIA DE SISTEMAS. ALGORITMO KRUSKAL.

  • 1. ESCUELA PROFESIONAL: Ingeniería de Sistemas e Informática. SEMESTRE: IV CURSO: Algoritmo y Programación II DOCENTE: Ing. Poccori Umeres, Godofredo. INTEGRANTE: Rodriguez Berna, Oscar Jesus. Cruz Cruz, Yilmar Fran. CUSCO-PERU 2025 UNIVERSIDAD TECNOLOGICA DE LOS ANDES ALGORITMO KRUSKAL.
  • 2. Contenido INTRODUCCION.........................................................................................................3 METODOLOGIA..........................................................................................................4 Descripción del Algoritmo de Kruskal..........................................................................6 Ejemplo del Algoritmo de Kruskal.............................................................................7 Pasos Detallados:......................................................................................................7 1. Ordenar las aristas............................................................................................7 2. Inicializar los conjuntos disjuntos:................................................................7 3. Recorrer las aristas:.......................................................................................7 4. Resultado Final:................................................................................................8 Complejidad del Algoritmo de Kruskal.....................................................................8 Aplicaciones del Algoritmo de Kruskal......................................................................9 HISTORIA...................................................................................................................10 Funcionamiento del Algoritmo de Kruskal.............................................................11 Desarrollo y Optimización.........................................................................................11 Ventajas y Desventajas del Algoritmo de Kruskal..................................................12 CODIGO:.....................................................................................................................12 COMPILACION:.....................................................................................................14 CONCLUSIONES.......................................................................................................15
  • 3. INTRODUCCION. En los años 90, las redes han revolucionado la forma en la que las personas y las organizaciones intercambian información y coordinan sus actividades”. (Sanchis, 2007). Los sistemas de monitoreo inalámbricos de bajo costo han adquirido gran importancia actualmente, esto gracias a los avances tecnológicos en modulación digital y a las necesidades de la industria en la adquisición de datos en línea, por estos motivos se han desarrollado sistemas de sensores cada vez más económicos, de bajo consumo energético, y se pueden instalar, controlar y monitorear de manera remota. Por lo cual el desarrollo de Software ha tenido un gran crecimiento en los últimos años, lo que ha permitido la creación de algoritmos y programas que ayuden en la resolución de problemas de diferente dominio apoyándose en el procesamiento del computador, cabe recalcar que aunque varios algoritmos resuelvan un mismo problema se debe tener en cuenta la eficacia que tiene cada uno de ellos sobre la solución del problema esto quiere decir que su tiempo de ejecución sea menor al igual que su complejidad e implementación haciendo uso y consumo de la menor cantidad de recursos. Uno de los ejemplos clásicos de las ciencias de la computación consiste en la búsqueda del árbol de cobertura de costo mínimo (MST, Mínimum Spanning Tree) de un grafo conexo, no dirigido y aristas con peso G(V, E), en que V corresponde al conjunto de nodos E al de aristas ( o arcos). A continuación, se analizará una posible solución para este problema.
  • 4. METODOLOGIA. A. Conocimientos previos: a.1.- Árbol de expansión. - compuestos por todos los vértices y algunas de las aristas en el cual no existirán ciclos. ( Véase la figura 1.1). a.2.-Árbol de expansión mínima. -Es en el cual no existirán ciclos en donde la suma de sus aristas es la de menor peso. (Véase la figura 1.2) .
  • 5. Algoritmo. - son una serie de normas o leyes específicas que hace posible la ejecución de actividades, cumpliendo una serie de pasos continuos que no le originen dudas a la persona que realice dicha actividad. Los algoritmos se pueden expresar de diversas formas: lenguaje natural, lenguaje de programación y diagramas de Flujo. El algoritmo de Kruskal es un algoritmo clásico utilizado para resolver el problema del Árbol de Expansión Mínima (MST, por sus siglas en inglés) en un grafo ponderado y no dirigido. Un árbol de expansión mínima es un subconjunto de las aristas de un grafo que conecta todos los vértices del grafo sin ciclos y con el menor peso total posible. Definición del Problema del Árbol de Expansión Mínima (MST). En un grafo ponderado, cada arista tiene un peso asociado que puede representar una distancia, un costo o algún otro valor. El problema del MST consiste en encontrar el subconjunto de aristas que conecta todos los vértices del grafo de manera que el peso total de las aristas seleccionadas sea el menor posible y que el grafo no contenga ciclos. Pasos del Algoritmo de Kruskal. El algoritmo de Kruskal se basa en el enfoque voraz o greedy. Esto significa que en cada paso selecciona la arista de menor peso que no forme un ciclo con las aristas seleccionadas previamente.Los pasos fundamentales del algoritmo de Kruskal son los siguientes: 1. Ordenar todas las aristas: Se ordenan todas las aristas del grafo en función de su peso, de menor a mayor. 2. Inicializar el conjunto disjunto: Se crea un conjunto disjunto para cada vértice. Un conjunto disjunto es una estructura que permite agrupar elementos que pertenecen a un mismo conjunto y permite determinar si dos elementos están en el mismo conjunto.
  • 6. 3. Recorrer las aristas ordenadas: A medida que se recorre el conjunto de aristas ordenadas, se va añadiendo al árbol de expansión mínima aquellas aristas que no formen un ciclo (es decir, que conecten dos componentes diferentes del grafo). Para ello, se utiliza el conjunto disjunto para verificar si los vértices de la arista seleccionada están en el mismo conjunto. 4. Detenerse cuando se haya seleccionado V−1V - 1V−1 aristas: El algoritmo se detiene cuando el número de aristas seleccionadas es igual al número de vértices del grafo menos uno (V−1V-1V−1), ya que un árbol de expansión mínima siempre tendrá V−1V - 1V−1 aristas. Descripción del Algoritmo de Kruskal El algoritmo de Kruskal se puede describir formalmente de la siguiente manera: 1. Entradas:  Un grafo G(V,E)G(V, E)G(V,E), donde VVV es el conjunto de vértices y EEE es el conjunto de aristas, cada una con un peso asociado. 2. Inicialización:  Crear un conjunto disjunto para los vértices.  Ordenar todas las aristas en orden ascendente según su peso. 3. Proceso:  Para cada arista (u,v)(u, v)(u,v) en el grafo, si los vértices uuu y vvv pertenecen a diferentes conjuntos disjuntos, se añade la arista al MST y se combinan los conjuntos de uuu y vvv.  El algoritmo termina cuando se añaden V−1V-1V−1 aristas al MST.
  • 7. 4. Salida:  El árbol de expansión mínima MST, que contiene las aristas seleccionadas. Ejemplo del Algoritmo de Kruskal Supongamos que tenemos el siguiente grafo ponderado: El grafo tiene los siguientes vértices V={A,B,C,D}y las aristas E={(A,B,10),(A,C,6), (B,D,15),(C,D,4),(B,C,7)}€ Pasos Detallados: 1. Ordenar las aristas por peso: (C,D,4),(A,C,6),(B,C,7),(A,B,10),(B,D,15 2. Inicializar los conjuntos disjuntos: Conjuntos iniciales: {A},{B},{C},{D} 3. Recorrer las aristas:  Consideramos la arista (C,D,4):los vértices C y D están en conjuntos diferentes, así que se añade la arista al MST. Se combinan los conjuntos de C y D, lo que resulta en {C,D}.
  • 8.  Consideramos la arista (A,C,6:los vértices A y C están en conjuntos diferentes, así que se añade la arista al MST. Se combinan los conjuntos de A y C, lo que resulta en {A,C,D}  Consideramos la arista (B,C,7): los vértices B y C están en conjuntos diferentes, así que se añade la arista al MST. Se combinan los conjuntos de B y C, lo que resulta en {A,B,C,D}  Las aristas (A,B,10) y (B,D,15) se descartan porque los vértices ya están en el mismo conjunto. 4. Resultado Final: El MST es el siguiente:  Aristas seleccionadas: (C,D,4),(A,C,6),(B,C,7)  El peso total del MST es: 4+6+7=17 Complejidad del Algoritmo de Kruskal El algoritmo de Kruskal es eficiente en términos de tiempo si se utilizan estructuras de datos adecuadas, como los conjuntos disjuntos con compresión de caminos y unión por rango. La complejidad temporal del algoritmo es la siguiente:  Ordenar las aristas: O(Elog⁡ E)O(E log E)O(ElogE), donde EEE es el número de aristas en el grafo.  Operaciones de unión y búsqueda en los conjuntos disjuntos: O(α(V)), donde α es la función inversa de Ackermann, que crece extremadamente lentamente, por lo que se considera prácticamente constante. Por lo tanto, la complejidad total del algoritmo de Kruskal es O(E log E), que es mucho más eficiente que otros algoritmos de MST como el de Prim, especialmente cuando el grafo es disperso (es decir, tiene muchas menos aristas que vértices).
  • 9. Por lo tanto, la complejidad total del algoritmo de Kruskal es O( E log E), que es mucho más eficiente que otros algoritmos de MST como el de Prim, especialmente cuando el grafo es disperso (es decir, tiene muchas menos aristas que vértices). Aplicaciones del Algoritmo de Kruskal El algoritmo de Kruskal tiene varias aplicaciones prácticas en diversas áreas:  Diseño de Redes de Comunicación: Se utiliza para diseñar redes de comunicación, como redes telefónicas, de fibra óptica, redes inalámbricas, etc., donde es necesario conectar un conjunto de puntos (estaciones) con el menor costo posible.  Diseño de Redes de Transporte: Se emplea en el diseño de redes de carreteras, ferrocarriles y otras infraestructuras de transporte, para asegurar que los puntos importantes estén conectados de la manera más económica.  Problemas de Distribución de Recursos: El algoritmo también se aplica en problemas de distribución, donde el objetivo es conectar varios puntos de distribución de recursos (agua, electricidad, etc.) con el menor costo posible.  Problemas de Planificación: En ingeniería y planificación de proyectos, el algoritmo de Kruskal se puede usar para conectar diferentes estaciones o centros de manera eficiente y económica.
  • 10.  Computación Gráfica: Se utiliza en algunas técnicas de computación gráfica, como el procesamiento de imágenes o la creación de mallas en gráficos 3D. HISTORIA. El algoritmo de Kruskal fue propuesto por el matemático estadounidense Joseph Kruskal en 1956. Este algoritmo es uno de los métodos más conocidos para resolver el problema del Árbol de Expansión Mínima (MST), que busca conectar todos los vértices de un grafo con el menor peso total de aristas posible, sin generar ciclos. En otras palabras, el algoritmo busca crear un árbol que mantenga todas las conexiones necesarias entre los nodos del grafo mientras minimiza el costo total de las conexiones. Durante la década de 1950, los estudios sobre teoría de grafos y estructuras matemáticas comenzaron a ser fundamentales en diversas ramas de la ciencia, la ingeniería y la informática. La idea de representar redes de comunicación, rutas de transporte, o conexiones entre estaciones de computadoras como grafos comenzó a ganar relevancia. El problema del árbol de expansión mínima se presentó como uno de los problemas más importantes en este campo. Joseph Kruskal, mientras trabajaba en problemas de optimización y redes, se dio cuenta de que existía la necesidad de encontrar una forma eficiente de conectar los nodos de un grafo de forma que el costo total de la conexión fuera el más bajo posible, sin la posibilidad de crear ciclos que redundaran en conexiones innecesarias. El algoritmo de Kruskal se enmarca dentro de los llamados algoritmos voraces (greedy), que se caracterizan por tomar decisiones óptimas en cada paso con el objetivo de encontrar una solución global óptima. En el caso de Kruskal, el algoritmo selecciona en cada
  • 11. paso la arista de menor peso, asegurándose de que no se forme un ciclo, hasta que se hayan conectado todos los vértices del grafo. Funcionamiento del Algoritmo de Kruskal. El algoritmo de Kruskal comienza con la ordenación de las aristas del grafo en orden ascendente según su peso. Luego, el algoritmo itera sobre estas aristas y, por cada arista, verifica si los dos vértices que conecta ya están en el mismo conjunto o no. Si no están conectados, es decir, pertenecen a conjuntos disjuntos, se agrega la arista al MST y se unen los dos conjuntos. Esta verificación y unificación de conjuntos se realiza mediante una estructura de datos llamada unión y búsqueda (union-find), que permite realizar operaciones de forma eficiente. Desarrollo y Optimización. Aunque Kruskal propuso el algoritmo en 1956, los avances posteriores en las estructuras de datos que se utilizan para implementarlo han hecho que su aplicación sea aún más eficiente. En particular, el uso de estructuras como la compresión de caminos y la unión por rango en la técnica de unión y búsqueda ha permitido que el algoritmo sea escalable y eficiente, incluso en grafos grandes. A medida que la teoría de grafos y la informática evolucionaban, el algoritmo de Kruskal se convirtió en uno de los pilares fundamentales para resolver problemas de optimización en redes, especialmente en aquellos problemas que involucran grafos dispersos, donde el número de aristas es mucho menor que el número de vértices. Esto lo hace adecuado para problemas de redes de comunicaciones, distribución de recursos y planificación de infraestructuras.
  • 12. Ventajas y Desventajas del Algoritmo de Kruskal. El algoritmo de Kruskal tiene varias ventajas, entre las cuales se destacan su simplicidad y su eficiencia en grafos dispersos. Al ordenar las aristas y procesarlas en orden, el algoritmo es relativamente fácil de implementar y de entender. Además, dado que no depende de la estructura del grafo (es decir, no necesita representar el grafo en una matriz de adyacencia o lista de adyacencia), es especialmente útil para grafos dispersos. Sin embargo, también tiene algunas desventajas. Uno de los inconvenientes es que la ordenación de las aristas tiene una complejidad de O(E log E), lo que puede ser un cuello de botella en grafos densos. Además, si el grafo es muy grande, el uso de estructuras de datos de unión y búsqueda puede generar una sobrecarga de memoria. CODIGO:
  • 15. CONCLUSIONES. El algoritmo de Kruskal es especialmente eficiente en grafos dispersos, es decir, aquellos con un número reducido de aristas en comparación con los vértices. Su diseño de seleccionar las aristas más pequeñas de manera ordenada lo hace adecuado para redes con pocas conexiones. La implementación del algoritmo de Kruskal es relativamente simple en comparación con otros algoritmos de optimización de grafos. Gracias a su estructura basada en ordenar las aristas y unir conjuntos de vértices, su código es accesible tanto para estudiantes como para profesionales, facilitando su uso en distintos tipos de proyectos. Kruskal es un algoritmo voraz, lo que significa que toma decisiones locales óptimas (seleccionar siempre la arista de menor peso) con la esperanza de encontrar una solución global óptima. Aunque este enfoque no siempre funciona en otros tipos de problemas, en el caso del árbol de expansión mínima, asegura la mejor solución. Al encontrar la forma más eficiente de conectar todos los vértices en un grafo, el algoritmo de Kruskal es muy útil en la optimización de costos en redes de comunicación, transporte y otras infraestructuras. Permite construir redes que minimizan el uso de recursos y, por ende, los costos operativos y de implementación. Las aplicaciones del algoritmo de Kruskal son muy variadas y abarcan campos como telecomunicaciones, transporte, energía, planificación de redes eléctricas y sistemas de optimización. Su utilidad se extiende a problemas que involucran la conexión de nodos con el menor costo posible y sin redundancias, como la interconexión de estaciones de
  • 16. telecomunicaciones, la distribución de recursos, y la creación de sistemas eficientes de transporte. Si bien el algoritmo es muy eficiente en grafos dispersos, su desempeño puede verse afectado cuando se aplican a grafos muy densos, es decir, aquellos con muchas aristas. En este caso, puede ser necesario un enfoque alternativo, como el algoritmo de Prim, que es más adecuado para grafos densos. Aunque el algoritmo de Kruskal ha demostrado ser una herramienta eficaz en la optimización de grafos, su eficiencia puede mejorarse aún más mediante el uso de técnicas avanzadas de estructuras de datos, como la compresión de caminos y la unión por rango. Estas mejoras permiten reducir la complejidad de las operaciones de unión y búsqueda, lo que optimiza aún más el rendimiento en grafos de gran tamaño.