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

Documentos relacionados
Grafos Msc. Daniele Carvalho Oliveira. Doutoranda em Computação UFU Mestre em Computação - UFU Bacharel em Computação - UFJF 1

Árvores de Suporte de Custo Mínimo

2006/2007 Análise e Síntese de Algoritmos 2

5COP096 TeoriadaComputação

Árvores. ! utilizada em muitas aplicações. ! modela uma hierarquia entre elementos. ! O conceito de árvores está diretamente ligado à recursão

Complexidade de Algoritmos. Edson Prestes

Sobre o Professor Dr. Sylvio Barbon Junior

BCC204 - Teoria dos Grafos

BCC402 Algoritmos e Programação Avançada. Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

26/08/2013. Árvore. Árvore. Árvore. Floresta :: Exemplo. Floresta ÁRVORES

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Árvores UFES. Teoria dos Grafos. CC/EC/Mestrado

Ata da resolução de exercício

Árvores Binárias e Busca. Jeane Melo

Fundamentos de Bancos de Dados 3 a Prova Caderno de Questões

Problema do Caixeiro Viajante Aplicado ao Roteamento de Veículos numa Malha Viária. José Luiz Machado Morais

FATEC Zona Leste. Teoria dos Gráfos. Métodos Quantitativos de Gestão MQG

Subconjuntos Especiais

Inteligência Artificial

Matemática Discreta - 08

Árvores B* Letícia Rodrigues Bueno

Curso de Formação de Oficiais Conhecimentos Específicos ENGENHARIA DE COMPUTAÇÃO CADERNO DE QUESTÕES

Projeto e Análise de Algoritmos Projeto de Algoritmos Introdução. Prof. Humberto Brandão humberto@dcc.ufmg.br

Pesquisa em Memória Primária. Prof. Jonas Potros

Algoritmos e Estrutura de Dados II

ANÁLISE DE CIRCUITOS I ( AULA 03)

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Fluxo Máximo a Custo Mínimo

Arquivos Indexados por Chaves Secundárias. Vanessa Braganholo

Lista de Exercícios 5: Soluções Teoria dos Conjuntos

Algoritmos e Estruturas de Dados 2

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Grua-pórtico de alumínio, móvel sob carga, capacidades de carga de 1000 kg e 1500 kg

Estrutura de dados. Link do Google Drive: ED Apresentação Luiz Gonçalves Última revisão 8/12/14

Árvore - Introdução. Teoria dos Grafos. Árvore Livre. Árvore Enraizada. Algumas Definições. Algumas Definições

CRIAÇÃO DE TABELAS NO ACCESS. Criação de Tabelas no Access

Grua-pórtico de alumínio, versão fixa, com viga dupla, capacidades de carga de 1000 kg e 1500 kg

Arquitecturas de Software Enunciado de Projecto

Andrés Eduardo Coca Salazar Tutor: Prof. Dr. Zhao Liang

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Online Survivable Network Design

IFRN. Conexidade e Distância. Prof. Edmilson Campos

Algoritmos e Estrutura de Dados III. Árvores

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

Programação Dinâmica: Algoritmo de Bellman-Ford

Algoritmos para compressão de URLs

CAPÍTULO 2. Grafos e Redes

Optimização e Algoritmos (2004/2005)

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Matemática Discreta. Leandro Colombi Resendo. Matemática Discreta Bacharel em Sistemas de Informações

Programação Orientada a Objetos SANTOS, Rafael

Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

OBSERVAÇÕES: EXERCÍCIOS

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Aula de Exercícios - Teorema de Bayes

DK105 GROVE. Temperatura e Umidade. Radiuino

Universidade Federal do Vale do São Francisco. Estruturas de Dados. Professor: Marcelo Santos Linder

Lógica Computacional Descrição do Projeto

Ordenação e Pesquisa de Dados. Aula 07 Insertion Sort e Bubble Sort

BC-0506: Comunicação e Redes Algoritmos em Grafos

PESQUISA OPERACIONAL -PROGRAMAÇÃO LINEAR. Prof. Angelo Augusto Frozza, M.Sc.

Árvores. Algoritmos e Estruturas de Dados 2005/2006

FERRAMENTA PARA REPRESENTAÇÃO GRÁFICA DO FUNCIONAMENTO DE ALGORITMOS APLICADOS EM GRAFOS

People. Passion. Performance. Rompedores Hidráulicos Embarcados RX para os trabalhos mais difíceis

Motantagem de Contigs de sequências de genomas e Transcriptomas. Introdução

Árvores B + Prof Márcio Bueno. ed2tarde@marciobueno.com / ed2noite@marciobueno.com. Material da Prof a Ana Eliza Lopes Moura

NOME: Matrícula: Turma: Prof. : Importante: i. Nas cinco páginas seguintes contém problemas para serem resolvidos e entregues.

Sistemas Distribuídos

Fundamentos de Programação. Diagrama de blocos

Introdução ao Estudo sobre Árvore Geradora Mínima em Grafos com Parâmetros Fuzzy

Aprimorando os Conhecimentos de Mecânica Lista 1 Ordem de Grandeza

Problema da Árvore Geradora Mínima

Circuitos eléctricos Profª Helena Lança Ciências Físico-Química 9ºano

Modelo Relacional Normalização Diagramas E-R e Tabelas Originadas

INSTITUTO TECNOLÓGICO DE AERONÁUTICA DIVISÃO DE ENGENHARIA ELETRÔNICA DEPARTAMENTO DE ELETRÔNICA APLICADA TIMER 555

CAMPANHA NACIONAL DO COMBATE AO AVC DE OUTUBRO A 01 DE NOVEMBRO DIA MUNDIAL DO AVC, 29 DE OUTUBRO

Eleição de Líder. Alysson Neves Bessani Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Disciplina: Unidade III: Prof.: Período:

FÍSICA EXPERIMENTAL 3001

Exercício. Exercício

Faculdade de Medicina Veterinária e Zootecnia. desenvolvimento da marca

Estudo aponta influência do código de barras e da tecnologia na decisão de compra do consumidor e na estratégia do varejo

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Complexidade de Algoritmos

Algoritmos Indutores de Árvores de

CARGA E DESCARGA DE CAPACITORES

Prof. José Maurício S. Pinheiro - UGB

Programação para Web HTML - Parte 2

Plano de Trabalho Docente Ensino Técnico

Guião do Trabalho Laboratorial Nº 1 Criação do Modelo do Mundo no ABB RobotStudio

PERMUTAÇÃO, ARRANJO E COMBINAÇÃO Monitora Juliana

Estruturas de Dados Árvores

Banco de Dados I Unidade 3: Projeto de BD Relacional. Cláudio Baptista

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

Álgebra Linear Aplicada à Compressão de Imagens. Universidade de Lisboa Instituto Superior Técnico. Mestrado em Engenharia Aeroespacial

Teoria dos Grafos. Edson Prestes

Ficha da Unidade Curricular (UC)

Transcrição:

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

Estruturas de Dados para Conjuntos Disjuntos: Introdução

Estruturas de Dados para Conjuntos Disjuntos: Introdução Aplicações que envolvem agrupamento de n elementos distintos em uma coleção de conjuntos disjuntos;

Estruturas de Dados para Conjuntos Disjuntos: Introdução Aplicações que envolvem agrupamento de n elementos distintos em uma coleção de conjuntos disjuntos; Operações importantes:

Estruturas de Dados para Conjuntos Disjuntos: Introdução Aplicações que envolvem agrupamento de n elementos distintos em uma coleção de conjuntos disjuntos; Operações importantes: 1. encontrar o conjunto a que pertence um elemento ( find );

Estruturas de Dados para Conjuntos Disjuntos: Introdução Aplicações que envolvem agrupamento de n elementos distintos 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 ).

Operações de Conjuntos Disjuntos

Operações de Conjuntos Disjuntos Coleção de conjuntos dinâmicos disjuntos: S = {s 1, s 2,..., s k };

Operações de Conjuntos Disjuntos Coleção de conjuntos dinâmicos disjuntos: S = {s 1, s 2,..., s k }; Cada conjunto é identificado por um representante (um elemento do conjunto);

Operações de Conjuntos Disjuntos Coleção de conjuntos dinâmicos disjuntos: S = {s 1, s 2,..., s k }; Cada conjunto é identificado por um representante (um elemento do conjunto); Operações desejáveis:

Operações de Conjuntos Disjuntos Coleção de conjuntos dinâmicos disjuntos: S = {s 1, s 2,..., s k }; Cada conjunto é identificado por um representante (um elemento do conjunto); Operações desejáveis: 1. makeset(x): cria conjuntos de único elemento x (representante é o próprio x);

Operações de Conjuntos Disjuntos Coleção de conjuntos dinâmicos disjuntos: S = {s 1, s 2,..., s k }; Cada conjunto é identificado por um representante (um elemento 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 S x e S y. Representante é escolhido para novo conjunto;

Operações de Conjuntos Disjuntos Coleção de conjuntos dinâmicos disjuntos: S = {s 1, s 2,..., s k }; Cada conjunto é identificado por um representante (um elemento 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 S x e S y. Representante é escolhido para novo conjunto; 3. findset(x): retorna representante do conjunto que contém x;

Implementação através de Listas Encadeadas

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada;

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; primeiro objeto na lista é o representante;

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; primeiro objeto na lista é o representante; cada nó contém:

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; primeiro objeto na lista é o representante; cada nó contém: 1. um elemento do conjunto;

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; primeiro objeto na lista é o representante; cada nó contém: 1. um elemento do conjunto; 2. ponteiro para próximo nó;

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; 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;

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; 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);

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; 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);

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; 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):

Implementação através de Listas Encadeadas cada conjunto é representado por um lista simplesmente encadeada; 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):??????

Implementação através de Listas Encadeadas Implementação de union(x, y):

Implementação através de Listas Encadeadas Implementação de union(x, y): lista de x anexada ao final da lista de y;

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;

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: custa comprimento da lista de x;

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: custa comprimento da lista de x; c h e b

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: custa comprimento da lista de x; c h e b f g d

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: custa comprimento da lista de x; c h e b f g d f g d c h e b

Implementação através de Listas Encadeadas Implementação de union(x, y):

Implementação através de Listas Encadeadas Implementação de union(x, y): usando heurística de união ponderada:

Implementação através de Listas Encadeadas Implementação de union(x, y): usando heurística de união ponderada: anexa lista menor à maior;

Implementação por Florestas de Conjuntos Disjuntos

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas;

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas; estrutura de dados de conjuntos disjuntos assintoticamente mais rápida conhecida;

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas; estrutura de dados de conjuntos disjuntos assintoticamente mais rápida conhecida; conjuntos representados por árvores enraizadas:

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas; estrutura de dados de conjuntos disjuntos assintoticamente mais rápida conhecida; conjuntos representados por árvores enraizadas: 1. cada nó contém um elemento;

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas; estrutura de dados de conjuntos disjuntos assintoticamente mais rápida conhecida; conjuntos representados por árvores enraizadas: 1. cada nó contém um elemento; 2. cada nó aponta somente para seu pai;

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas; estrutura de dados de conjuntos disjuntos assintoticamente 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;

Implementação por Florestas de Conjuntos Disjuntos Implementação mais rápida que por listas encadeadas; estrutura de dados de conjuntos disjuntos assintoticamente 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;

Implementação por Florestas de Conjuntos Disjuntos

Implementação por Florestas de Conjuntos Disjuntos c h e b f g d f g d c h e b

Implementação por Florestas de Conjuntos Disjuntos c h e b f g d f g d c h e b c f f h e d c d b g h e g b

Implementação por Florestas de Conjuntos Disjuntos

Implementação por Florestas de Conjuntos Disjuntos makeset(x): cria árvore com um nó contendo x;

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;

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 raiz da árvore;

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 raiz da árvore; sequência de n 1 operações union(x, y) pode criar árvore que é lista;

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 raiz da árvore; sequência de n 1 operações union(x, y) pode criar árvore que é lista; uso de duas heurísticas para melhorar desempenho:

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 raiz da á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;

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 raiz da á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;

Aplicação: árvore geradora mínima

Aplicação: árvore geradora mínima projeto de circuitos eletrônicos: tornar pinos de componentes eletricamente equivalentes juntando a fiação de todos eles.

Aplicação: árvore geradora mínima projeto de circuitos eletrônicos: tornar pinos de componentes eletricamente equivalentes juntando a fiação de todos eles. problema: queremos minimizar a quantidade de fios;

Aplicação: árvore geradora mínima projeto de circuitos eletrônicos: tornar pinos de componentes eletricamente equivalentes juntando a fiação de todos eles. problema: queremos minimizar a quantidade de fios; problema modelado por grafos: árvore geradora mínima;

Aplicação: árvore geradora mínima projeto de circuitos eletrônicos: tornar pinos de componentes eletricamente equivalentes juntando a fiação de todos eles. problema: queremos minimizar a quantidade de fios; problema modelado por grafos: árvore geradora mínima; a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Aplicação: árvore geradora mínima projeto de circuitos eletrônicos: tornar pinos de componentes eletricamente equivalentes juntando a fiação de todos eles. problema: queremos minimizar a quantidade de fios; problema modelado por grafos: árvore geradora mínima; a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f peso: 37 e

Aplicação: árvore geradora mínima projeto de circuitos eletrônicos: tornar pinos de componentes eletricamente equivalentes juntando a fiação de todos eles. problema: queremos minimizar a quantidade de fios; problema modelado por grafos: árvore geradora mínima; a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f peso: 37 e

Árvore geradora mínima: algoritmo geral

Árvore geradora mínima: algoritmo geral Estratégia gulosa:

Árvore geradora mínima: algoritmo geral Estratégia gulosa: 1 generico(g): 2 A 3 enquanto A não é árvore geradora faça 4 encontre aresta (u, v) segura para A 5 A A {(u, v)} 6 retorne A

Árvore geradora mínima: algoritmo geral Estratégia gulosa: 1 generico(g): 2 A 3 enquanto A não é árvore geradora faça 4 encontre aresta (u, v) segura para A 5 A A {(u, v)} 6 retorne A Aresta segura: não cria ciclo em A

Árvore geradora mínima: algoritmo geral

Árvore geradora mínima: algoritmo geral Aresta leve: aresta de menor peso que atravessa um corte

Árvore geradora mínima: algoritmo geral Aresta leve: aresta de menor peso que atravessa um corte a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: algoritmo geral Aresta leve: aresta de menor peso que atravessa um corte a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: exemplo a 4 8 11 b h 7 c d 8 7 2 9 4 i 14 6 10 1 g 2 f e

Árvore geradora mínima: algoritmo de Kruskal

Árvore geradora mínima: algoritmo de Kruskal Implementação usando union-find:

Á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ça 4 makeset(v) 5 ordene arestas de E por peso w crescente 6 para cada aresta (u, v) E(G) em ordem crescente faça 7 se findset(u) findset(v) então 8 union(u, v) 9 retorne A

Exercícios 1. Escreva o pseudocódigo para makeset(x), union(x, y) e findset(x) usando a representação de lista ligada e a heurística de união ponderada Suponha que cada objeto x tenha um atributo rep apontando para o representante do conjunto que contém x, e que cada conjunto S tem atributos inicio, fim e tamanho (que é igual ao comprimento da lista). 2. A árvore fornecida pelo algoritmo de Kruskal é única, ou seja, o algoritmo sempre fornecerá a mesma árvore geradora mínima?

Bibliografia CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C. Introduction to Algorithms, 3 a edição, MIT Press, 2009. ZIVIANI, N. Projeto de Algoritmos: com implementações em Java e C++, 1a edição, Cengage Learning, 2009.