Estruturas de Dados para Conjuntos Disjuntos:...

88
Estruturas de Dados para Conjuntos Disjuntos: Union-find Letícia Rodrigues Bueno UFABC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

Á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

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

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.