El algoritmo Union-Find mantiene una estructura de datos para representar conjuntos disjuntos y realizar operaciones de unión y búsqueda. La operación de unión combina conjuntos conectados, mientras que la operación de búsqueda determina si los elementos pertenecen al mismo conjunto. El algoritmo se usa comúnmente para detectar componentes conectados en grafos.
0 calificaciones0% encontró este documento útil (0 votos)
19 vistas9 páginas
El algoritmo Union-Find mantiene una estructura de datos para representar conjuntos disjuntos y realizar operaciones de unión y búsqueda. La operación de unión combina conjuntos conectados, mientras que la operación de búsqueda determina si los elementos pertenecen al mismo conjunto. El algoritmo se usa comúnmente para detectar componentes conectados en grafos.
El algoritmo Union-Find mantiene una estructura de datos para representar conjuntos disjuntos y realizar operaciones de unión y búsqueda. La operación de unión combina conjuntos conectados, mientras que la operación de búsqueda determina si los elementos pertenecen al mismo conjunto. El algoritmo se usa comúnmente para detectar componentes conectados en grafos.
El algoritmo Union-Find mantiene una estructura de datos para representar conjuntos disjuntos y realizar operaciones de unión y búsqueda. La operación de unión combina conjuntos conectados, mientras que la operación de búsqueda determina si los elementos pertenecen al mismo conjunto. El algoritmo se usa comúnmente para detectar componentes conectados en grafos.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 9
UNION FIND ALGORITHM
YURANI TUQUERRES ANDRADE
UNIVERSIDAD DEL CAUCA
FACULTAD DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES PROGRAMA INGENIERIA ELECTRONICA Y TELECOMUNICACIONES POPAYAN - CAUCA 2023 UNION FIND ALGORITHM
YURANI TUQUERRES ANDRADE
CONSULTA
WEYMAR ANDRES ASTAIZA SULEZ
UNIVERSIDAD DEL CAUCA
FACULTAD DE INGENIERIA ELECTRONICA Y TELECOMUNICACIONES PROGRAMA INGENIERIA ELECTRONICA Y TELECOMUNICACIONES POPAYAN - CAUCA 2023 INTRODUCCION
El algoritmo Union-Find, también conocido como estructura de datos
Disjoint-Set, es una poderosa herramienta utilizada en muchas áreas de la informática, incluida la teoría de grafos, la optimización y la visión por computadora. El algoritmo nos permite mantener eficientemente una partición de un conjunto en subconjuntos disjuntos y realizar operaciones como fusionar dos subconjuntos o encontrar el subconjunto al que pertenece un elemento.
En este trabajo, exploraremos el algoritmo Union-Find, sus propiedades
y sus diversas aplicaciones en informática. Comenzaremos con una breve introducción al algoritmo y luego profundizaremos en su implementación, complejidad y casos de uso. A través de ejemplos y fragmentos de código, demostraremos cómo se puede aplicar el algoritmo Union-Find para resolver una amplia gama de problemas en informática. UNION FIND ALGORITHM
Un algoritmo de búsqueda de unión es un algoritmo que realiza dos
operaciones útiles en una estructura de datos:
• Buscar: determina en qué subconjunto se encuentra el
elemento que buscamos. Esto se puede usar para determinar si dos elementos están en el mismo subconjunto. • Unión: une dos subconjuntos en un solo subconjunto. Aquí primero tenemos que verificar si los dos subconjuntos pertenecen al mismo conjunto. Si no, entonces no podemos realizar la unión.
• El conjunto disjunto, es un grupo de conjuntos donde ningún
elemento puede estar en más de un conjunto. Admite otra operación importante llamada MakeSet, que crea un conjunto que contiene solo un elemento.
• Make- set crea un nuevo conjunto cuyo único miembro (y por lo
tanto representante) es x Dado que los conjuntos son disjuntos, requerimos que x no esté ya en algún otro lugar.
Este algoritmo funciona, de tal manera que podemos determinar si dos
elementos están en el mismo subconjunto comparando el resultado de dos operaciones. Si los dos elementos están en el mismo conjunto, tienen la misma representación; de lo contrario, pertenecen a conjuntos diferentes. Si se llama a la unión de dos elementos, fusiona los dos subconjuntos a los que pertenecen los dos elementos.
Hay varias implementaciones diferentes del algoritmo Union-Find, pero
una de las más comunes es la implementación de "unión por rango y compresión de camino". En esta implementación, los componentes conectados se representan como árboles, y los vértices se representan como nodos en estos árboles. La operación de unión se realiza uniendo los dos árboles más pequeños, mientras que la operación de búsqueda se realiza al buscar el nodo raíz de cada árbol y comparar si son iguales.
En el caso de la unión por tamaño, un nodo almacena su tamaño, que
es simplemente su número de descendientes (incluido el propio nodo). Cuando los árboles con raíces x e y se fusionan, el nodo con más descendientes se convierte en el padre. Si los dos nodos tienen el mismo número de descendientes, cualquiera de ellos puede convertirse en el padre. En ambos casos, el tamaño del nuevo nodo principal se establece en su nuevo número total de descendientes.
Path compression: En este tipo de búsqueda, se comprime el camino
de la raíz a un nodo durante la búsqueda. Esto ayuda a reducir la altura del árbol y a mejorar la eficiencia de las operaciones de unión y búsqueda.
Weighted union with path compression: Este es el tipo más común de
unión en el algoritmo Union-Find. Combina las técnicas de union by size y path compression para lograr un equilibrio óptimo entre la eficiencia y la complejidad del algoritmo. Cada implementación de Union-Find puede utilizar uno o más de estos tipos de uniones para ajustarse mejor a las necesidades de la aplicación específica.
El algoritmo Union-Find es ampliamente utilizado en algoritmos de
grafos y estructuras de datos, y tiene muchas aplicaciones prácticas, como la detección de componentes conectados en redes sociales y la detección de ciclos en grafos.
El algoritmo mantiene una estructura de datos para representar los
componentes conectados, utilizando las operaciones principales: "unión" y "búsqueda". La operación de unión combina componentes posteriores conectados en un solo componente, pero la operación de búsqueda determina si los vértices posteriores están conectados en el mismo componente. Algunos ejemplos donde podemos utilizar el algoritmo Union Find, son:
• Detección de ciclos en un grafo: En un grafo no dirigido, el
algoritmo Union-Find puede utilizarse para detectar si hay ciclos en el grafo. Si unión entre dos nodos ya está en el mismo conjunto, eso significa que un camino existe entre ellos, y por lo tanto, se encontró un ciclo. • Componentes conexas: El algoritmo Union-Find puede utilizarse para encontrar todas las componentes conexas en un grafo no dirigido. Se puede comenzar con un conjunto por separado para cada vértice del grafo. Luego, para cada borde en el grafo, se unen los conjuntos que corresponden a los vértices extremos del borde. Al final, todos los vértices que están en el mismo conjunto pertenecen a la misma componente conexa. • Árboles de expansión mínima: El algoritmo Kruskal utiliza el algoritmo Union-Find para construir un árbol de expansión mínima en un grafo no dirigido. El proceso comienza con un conjunto por separado para cada vértice del grafo, luego se ordenan todos los bordes por peso y se procesan en orden ascendente. Para cada borde, se une el conjunto que corresponde a un vértice al conjunto que corresponde al otro vértice. • Seguimiento de grupos: El algoritmo Union-Find puede ser utilizado para seguimiento de grupos en una matriz. Por ejemplo, se puede utilizar para encontrar grupos de celdas adyacentes que contienen el mismo valor. EJEMPLO DE SOLUCION
Tenemos un numero de conjuntos que queremos administrar en
conjuntos disjuntos, donde ningún elemento puede estar en más de un conjunto, por lo que cada elemento puede pertenecer a un solo conjunto: por ejemplo, tenemos cinco conjuntos disjuntos S1 , S2 , S3 , S4 , y S5 representado por un árbol, como se muestra en el siguiente diagrama. Cada conjunto contiene inicialmente solo un elemento cada uno, por lo que su puntero principal apunta a sí mismo o NULL .
los Find operación en el elemento i regresará representante de S i, dónde 1 <= i <= 5 , es decir, Find (i) = i .
Sí lo hacemos Unión (S3, S4) , S3 y S4 se fusionarán en un conjunto
inconexo, S3 . Ahora, S1 = {1}, S2 = {2}, S3 = {3, 4} and S5 = {5} . Find (4) regresará representante del conjunto S3 , es decir, Find (4) = 3 Si lo hacemos Unión (S1, S2) , S1 y S2 se fusionarán en un conjunto inconexo, S1 . Ahora, S1 = {1, 2}, S3 = {3, 4} and S5 = {5} . Find (2) o Find (1) devolverá el representante del conjunto S1 , es decir, Find (2) = Find (1) = 1
Si lo hacemos Unión (S3, S1) , S3 y S1 se fusionarán en un conjunto