Estruturas de Dados para Conjuntos Disjuntos:...
Transcript of Estruturas de Dados para Conjuntos Disjuntos:...
![Page 1: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/1.jpg)
Estruturas de Dados para ConjuntosDisjuntos: Union-find
Letícia Rodrigues Bueno
UFABC
![Page 2: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/2.jpg)
Estruturas de Dados para Conjuntos Disjuntos: Introdução
![Page 3: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/3.jpg)
Estruturas de Dados para Conjuntos Disjuntos: Introdução
• Aplicações que envolvem agrupamento de n elementosdistintos em uma coleção de conjuntos disjuntos;
![Page 4: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/4.jpg)
Estruturas de Dados para Conjuntos Disjuntos: Introdução
• Aplicações que envolvem agrupamento de n elementosdistintos em uma coleção de conjuntos disjuntos;
• Operações importantes:
![Page 5: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/5.jpg)
Estruturas de Dados para Conjuntos Disjuntos: Introdução
• Aplicações que envolvem agrupamento de n elementosdistintos em uma coleção de conjuntos disjuntos;
• Operações importantes:1. encontrar o conjunto a que pertence um elemento (“find” );
![Page 6: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/6.jpg)
Estruturas de Dados para Conjuntos Disjuntos: Introdução
• Aplicações que envolvem agrupamento de n elementosdistintos em uma coleção de conjuntos disjuntos;
• Operações importantes:1. encontrar o conjunto a que pertence um elemento (“find” );2. unir dois conjuntos (“union” ).
![Page 7: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/7.jpg)
Operações de Conjuntos Disjuntos
![Page 8: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/8.jpg)
Operações de Conjuntos Disjuntos
• Coleção de conjuntos dinâmicos disjuntos:S = {s1, s2, . . . , sk};
![Page 9: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/9.jpg)
Operações de Conjuntos Disjuntos
• Coleção de conjuntos dinâmicos disjuntos:S = {s1, s2, . . . , sk};
• Cada conjunto é identificado por um representante (umelemento do conjunto);
![Page 10: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/10.jpg)
Operações de Conjuntos Disjuntos
• Coleção de conjuntos dinâmicos disjuntos:S = {s1, s2, . . . , sk};
• Cada conjunto é identificado por um representante (umelemento do conjunto);
• Operações desejáveis:
![Page 11: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/11.jpg)
Operações de Conjuntos Disjuntos
• Coleção de conjuntos dinâmicos disjuntos:S = {s1, s2, . . . , sk};
• Cada conjunto é identificado por um representante (umelemento do conjunto);
• Operações desejáveis:1. makeSet (x): cria conjuntos de único elemento x
(representante é o próprio x );
![Page 12: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/12.jpg)
Operações de Conjuntos Disjuntos
• Coleção de conjuntos dinâmicos disjuntos:S = {s1, s2, . . . , sk};
• Cada conjunto é identificado por um representante (umelemento do conjunto);
• Operações desejáveis:1. makeSet (x): cria conjuntos de único elemento x
(representante é o próprio x );2. union (x, y): une conjuntos dinâmicos Sx e Sy .
Representante é escolhido para novo conjunto;
![Page 13: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/13.jpg)
Operações de Conjuntos Disjuntos
• Coleção de conjuntos dinâmicos disjuntos:S = {s1, s2, . . . , sk};
• Cada conjunto é identificado por um representante (umelemento do conjunto);
• Operações desejáveis:1. makeSet (x): cria conjuntos de único elemento x
(representante é o próprio x );2. union (x, y): une conjuntos dinâmicos Sx e Sy .
Representante é escolhido para novo conjunto;3. findSet (x): retorna representante do conjunto que contém
x ;
![Page 14: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/14.jpg)
Implementação através de Listas Encadeadas
![Page 15: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/15.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
![Page 16: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/16.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;
![Page 17: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/17.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
![Page 18: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/18.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;
![Page 19: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/19.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;2. ponteiro para próximo nó;
![Page 20: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/20.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;2. ponteiro para próximo nó;3. ponteiro para o representante;
![Page 21: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/21.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;2. ponteiro para próximo nó;3. ponteiro para o representante;
• makeSet (x): tempo O(1);
![Page 22: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/22.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;2. ponteiro para próximo nó;3. ponteiro para o representante;
• makeSet (x): tempo O(1);
• findSet (x): tempo O(1);
![Page 23: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/23.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;2. ponteiro para próximo nó;3. ponteiro para o representante;
• makeSet (x): tempo O(1);
• findSet (x): tempo O(1);
• union (x, y):
![Page 24: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/24.jpg)
Implementação através de Listas Encadeadas
• cada conjunto é representado por um lista simplesmenteencadeada;
• primeiro objeto na lista é o representante;• cada nó contém:
1. um elemento do conjunto;2. ponteiro para próximo nó;3. ponteiro para o representante;
• makeSet (x): tempo O(1);
• findSet (x): tempo O(1);
• union (x, y): ??????
![Page 25: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/25.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):
![Page 26: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/26.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• lista de x anexada ao final da lista de y ;
![Page 27: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/27.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• lista de x anexada ao final da lista de y ;
• representante da nova lista é y ;
![Page 28: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/28.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• lista de x anexada ao final da lista de y ;
• representante da nova lista é y ;
• nós de x devem apontar para representante y : custacomprimento da lista de x ;
![Page 29: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/29.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• lista de x anexada ao final da lista de y ;
• representante da nova lista é y ;
• nós de x devem apontar para representante y : custacomprimento da lista de x ;
c h e b
![Page 30: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/30.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• lista de x anexada ao final da lista de y ;
• representante da nova lista é y ;
• nós de x devem apontar para representante y : custacomprimento da lista de x ;
c h e b
f g d
![Page 31: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/31.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• lista de x anexada ao final da lista de y ;
• representante da nova lista é y ;
• nós de x devem apontar para representante y : custacomprimento da lista de x ;
c h e b
f g d
f g d c h e b
![Page 32: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/32.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):
![Page 33: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/33.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• usando heurística de união ponderada:
![Page 34: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/34.jpg)
Implementação através de Listas Encadeadas
Implementação de union (x, y):• usando heurística de união ponderada: anexa lista
menor à maior;
![Page 35: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/35.jpg)
Implementação por Florestas de Conjuntos Disjuntos
![Page 36: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/36.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
![Page 37: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/37.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
• estrutura de dados de conjuntos disjuntosassintoticamente mais rápida conhecida;
![Page 38: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/38.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
• estrutura de dados de conjuntos disjuntosassintoticamente mais rápida conhecida;
• conjuntos representados por árvores enraizadas:
![Page 39: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/39.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
• estrutura de dados de conjuntos disjuntosassintoticamente mais rápida conhecida;
• conjuntos representados por árvores enraizadas:1. cada nó contém um elemento;
![Page 40: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/40.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
• estrutura de dados de conjuntos disjuntosassintoticamente mais rápida conhecida;
• conjuntos representados por árvores enraizadas:1. cada nó contém um elemento;2. cada nó aponta somente para seu pai;
![Page 41: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/41.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
• estrutura de dados de conjuntos disjuntosassintoticamente mais rápida conhecida;
• conjuntos representados por árvores enraizadas:1. cada nó contém um elemento;2. cada nó aponta somente para seu pai;3. cada árvore representa um conjunto;
![Page 42: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/42.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• Implementação mais rápida que por listas encadeadas;
• estrutura de dados de conjuntos disjuntosassintoticamente mais rápida conhecida;
• conjuntos representados por árvores enraizadas:1. cada nó contém um elemento;2. cada nó aponta somente para seu pai;3. cada árvore representa um conjunto;4. representante do conjunto : raiz da árvore;
![Page 43: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/43.jpg)
Implementação por Florestas de Conjuntos Disjuntos
![Page 44: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/44.jpg)
Implementação por Florestas de Conjuntos Disjuntos
c h e b
f g d
f g d c h e b
![Page 45: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/45.jpg)
Implementação por Florestas de Conjuntos Disjuntos
c h e b
f g d
f g d c h e b
c
h
b
e
f
d
g
f
c
h
b
e
d
g
![Page 46: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/46.jpg)
Implementação por Florestas de Conjuntos Disjuntos
![Page 47: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/47.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
![Page 48: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/48.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
• union (x, y): raiz da árvore de x aponta para a raiz daárvore de y ;
![Page 49: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/49.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
• union (x, y): raiz da árvore de x aponta para a raiz daárvore de y ;
• findSet (x): segue ponteiros de pais até encontrar a raizda árvore;
![Page 50: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/50.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
• union (x, y): raiz da árvore de x aponta para a raiz daárvore de y ;
• findSet (x): segue ponteiros de pais até encontrar a raizda árvore;
• sequência de n − 1 operações union (x, y) pode criarárvore que é lista;
![Page 51: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/51.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
• union (x, y): raiz da árvore de x aponta para a raiz daárvore de y ;
• findSet (x): segue ponteiros de pais até encontrar a raizda árvore;
• sequência de n − 1 operações union (x, y) pode criarárvore que é lista;
• uso de duas heurísticas para melhorar desempenho:
![Page 52: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/52.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
• union (x, y): raiz da árvore de x aponta para a raiz daárvore de y ;
• findSet (x): segue ponteiros de pais até encontrar a raizda árvore;
• sequência de n − 1 operações union (x, y) pode criarárvore que é lista;
• uso de duas heurísticas para melhorar desempenho:1. união por ordenação : raiz da menor árvore aponta para
raiz da maior árvore;
![Page 53: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/53.jpg)
Implementação por Florestas de Conjuntos Disjuntos
• makeSet (x): cria árvore com um nó contendo x ;
• union (x, y): raiz da árvore de x aponta para a raiz daárvore de y ;
• findSet (x): segue ponteiros de pais até encontrar a raizda árvore;
• sequência de n − 1 operações union (x, y) pode criarárvore que é lista;
• uso de duas heurísticas para melhorar desempenho:1. união por ordenação : raiz da menor árvore aponta para
raiz da maior árvore;2. compressão de caminho : cada nó aponta diretamente
para a raiz;
![Page 54: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/54.jpg)
Aplicação: árvore geradora mínima
![Page 55: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/55.jpg)
Aplicação: árvore geradora mínima
• projeto de circuitos eletrônicos: tornar pinos decomponentes eletricamente equivalentes juntando a fiaçãode todos eles.
![Page 56: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/56.jpg)
Aplicação: árvore geradora mínima
• projeto de circuitos eletrônicos: tornar pinos decomponentes eletricamente equivalentes juntando a fiaçãode todos eles.
• problema: queremos minimizar a quantidade de fios;
![Page 57: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/57.jpg)
Aplicação: árvore geradora mínima
• projeto de circuitos eletrônicos: tornar pinos decomponentes eletricamente equivalentes juntando a fiaçãode todos eles.
• problema: queremos minimizar a quantidade de fios;
• problema modelado por grafos: árvore geradoramínima;
![Page 58: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/58.jpg)
Aplicação: árvore geradora mínima
• projeto de circuitos eletrônicos: tornar pinos decomponentes eletricamente equivalentes juntando a fiaçãode todos eles.
• problema: queremos minimizar a quantidade de fios;
• problema modelado por grafos: árvore geradoramínima;
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 59: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/59.jpg)
Aplicação: árvore geradora mínima
• projeto de circuitos eletrônicos: tornar pinos decomponentes eletricamente equivalentes juntando a fiaçãode todos eles.
• problema: queremos minimizar a quantidade de fios;
• problema modelado por grafos: árvore geradoramínima;
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
peso: 37
![Page 60: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/60.jpg)
Aplicação: árvore geradora mínima
• projeto de circuitos eletrônicos: tornar pinos decomponentes eletricamente equivalentes juntando a fiaçãode todos eles.
• problema: queremos minimizar a quantidade de fios;
• problema modelado por grafos: árvore geradoramínima;
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
peso: 37
![Page 61: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/61.jpg)
Árvore geradora mínima: algoritmo geral
![Page 62: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/62.jpg)
Árvore geradora mínima: algoritmo geral
Estratégia gulosa:
![Page 63: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/63.jpg)
Árvore geradora mínima: algoritmo geral
Estratégia gulosa:
1 generico(G):2 A← ∅3 enquanto A não é árvore geradora faça4 encontre aresta (u, v) segura para A5 A← A ∪ {(u, v)}6 retorne A
![Page 64: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/64.jpg)
Árvore geradora mínima: algoritmo geral
Estratégia gulosa:
1 generico(G):2 A← ∅3 enquanto A não é árvore geradora faça4 encontre aresta (u, v) segura para A5 A← A ∪ {(u, v)}6 retorne A
Aresta segura: não cria ciclo em A
![Page 65: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/65.jpg)
Árvore geradora mínima: algoritmo geral
![Page 66: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/66.jpg)
Árvore geradora mínima: algoritmo geral
Aresta leve: aresta de menor peso que atravessa um corte
![Page 67: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/67.jpg)
Árvore geradora mínima: algoritmo geral
Aresta leve: aresta de menor peso que atravessa um corte
h
i
c
g
48 7
9
1021
8
117
2
6
4 14
b
a
d
e
f
![Page 68: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/68.jpg)
Árvore geradora mínima: algoritmo geral
Aresta leve: aresta de menor peso que atravessa um corte
h
i
c
g
48 7
9
1021
8
117
2
6
4 14
b
a
d
e
f
![Page 69: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/69.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 70: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/70.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 71: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/71.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 72: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/72.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 73: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/73.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 74: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/74.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 75: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/75.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 76: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/76.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 77: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/77.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 78: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/78.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 79: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/79.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 80: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/80.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 81: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/81.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 82: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/82.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 83: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/83.jpg)
Árvore geradora mínima: exemplo
b
a
h
i
c d
fg
e4
8 79
1021
8
117
2
6
4 14
![Page 84: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/84.jpg)
Árvore geradora mínima: algoritmo de Kruskal
![Page 85: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/85.jpg)
Árvore geradora mínima: algoritmo de Kruskal
Implementação usando union-find:
![Page 86: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/86.jpg)
Árvore geradora mínima: algoritmo de Kruskal
Implementação usando union-find:
1 kruskal(G):2 A← ∅3 para cada vértice v ∈ V (G) faça4 makeSet(v)5 ordene arestas de E por peso w crescente6 para cada aresta (u, v) ∈ E(G) em ordem crescente faça7 se findSet(u) 6= findSet(v) então8 union(u, v)9 retorne A
![Page 87: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/87.jpg)
Exercícios
1. Escreva o pseudocódigo para makeSet (x), union (x, y) efindSet (x) usando a representação de lista ligada e aheurística de união ponderada Suponha que cada objeto xtenha um atributo rep apontando para o representante doconjunto que contém x , e que cada conjunto S tematributos inicio, fim e tamanho (que é igual aocomprimento da lista).
2. A árvore fornecida pelo algoritmo de Kruskal é única, ouseja, o algoritmo sempre fornecerá a mesma árvoregeradora mínima?
![Page 88: Estruturas de Dados para Conjuntos Disjuntos: Union-findprofessor.ufabc.edu.br/~leticia.bueno/classes/aed2/materiais/union... · Estruturas de Dados para Conjuntos Disjuntos: Introdução](https://reader033.fdocument.pub/reader033/viewer/2022051603/5c2f8b2509d3f2ef0b8d51f4/html5/thumbnails/88.jpg)
Bibliografia
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C.Introduction to Algorithms, 3a edição, MIT Press, 2009.
ZIVIANI, N. Projeto de Algoritmos: com implementações em Java eC++, 1a edição, Cengage Learning, 2009.