Conjuntos disjuntos dinâmicos

Documentos relacionados
AULA 22. Algoritmos p.793/823

Aula 19 Conjuntos disjuntos (Union-find)

Estruturas de Dados para Conjuntos Disjuntos. Estruturas de dados para conjuntos disjuntos

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

Árvores de Suporte de Custo Mínimo

AULA 24. Algoritmos p.856/905

CAL ( ) MIEIC/FEUP Estruturas de Dados ( )

Conjuntos disjuntos. Relações de equivalência

Grafos. Exemplo de árvore geradora mínima. Notas. Notas. Notas. Notas. Árvores espalhadas mínimas. Como construir uma árvore geradora miníma

Árvores: Conceitos Básicos e Árvore Geradora

Análise amortizada CLRS 17. Algoritmos p. 1

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

CI065 CI755 Algoritmos e Teoria dos Grafos

Teoria dos Grafos. Edson Prestes

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

Grafos: componentes fortemente conexos, árvores geradoras mínimas

Teoria dos Grafos. Edson Prestes

1.3 Isomorfismo 12 CAP. 1 CONCEITOS BÁSICOS

AULA 20. Algoritmos p.725/759

Grafos: árvores geradoras mínimas. Graça Nunes

Árvores Binárias e Busca. Jeane Melo

Introdução à Teoria dos Grafos

INF1010 Lista de Exercícios 2

ICET CURSO: Ciência da Computação e Sistemas de Informação (Estrutura de Dados) Estudos Disciplinares Campus: Data: / / Nome:

Otimização em Grafos

Problema da Árvore Geradora Mínima

ANÁLISE DE ALGORITMOS

IME º DIA MATEMÁTICA BERNOULLI COLÉGIO E PRÉ-VESTIBULAR

O grau de saída d + (v) de um vértice v é o número de arcos que tem

Coloração de intervalos

BCC204 - Teoria dos Grafos

MA13 Geometria AV2 2014

Matemática Discreta - Exercícios de Grafos

Ordenação em tempo linear

a média de gols da primeira rodada, M G a média de gols das duas primeiras rodadas e x o número de gols da segunda rodada, tem-se 15 + x 15 M G

Teoria dos Grafos Aula 5

AULA 13. Algoritmos p.526/582

Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

Grafos - Introdução. Pedro Ribeiro 2014/2015 DCC/FCUP. Pedro Ribeiro (DCC/FCUP) Grafos - Introdução 2014/ / 32

NOTAÇÕES. : inversa da matriz M : produto das matrizes M e N : segmento de reta de extremidades nos pontos A e B

Árvores & Árvores Binárias

ESTRUTURA DE DADOS. Arvore Binária Jose. Arvore Ternaria Direção

Teoria dos Grafos Aula 18

Teoria dos Grafos. Edson Prestes

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

2. (Fuvest 2005) A base ABCD da pirâmide ABCDE é um retângulo de lados AB = 4 e BC = 3.

LISTA EXTRA DE EXERCÍCIOS MAT /I

Emparelhamentos Máximos em Grafos Bipartidos

Módulo de Elementos básicos de geometria plana. Condição de alinhamentos de três pontos e a desigualdade triangular. Oitavo Ano

Algoritimos e Estruturas de Dados III CIC210

30's Volume 22 Matemática

Questão 1 Questão 2. Resposta. Resposta

Grafos. Notas. Notas. Notas. Notas. Caminhos mais curtos de única origem. Subestrutura ótima. Propriedades de caminhos mais curtos

Estruturas de Dados. Cristina Gomes Fernandes. Estruturas de Dados p. 1

Grafos: aplicações. Grafos: árvore geradora mínima

Projeto Jovem Nota 10 Áreas de Figuras Planas Lista 4 Professor Marco Costa

Otimização em Grafos

Algoritmos de ordenação Heapsort

Complexidade de Algoritmos. Edson Prestes

Geometria Computacional: Triangulação

Gabarito - Matemática - Grupos I/J

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

Matemática: Geometria Plana Vestibulares UNICAMP

Análise de Algoritmos

a) 6% b) 7% c) 70% d) 600% e) 700%

CONCEITOS BÁSICOS EM GRAFOS

ANÁLISE DE ALGORITMOS (INF 1721)

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Introdução à Teoria dos Grafos (MAC-5770) IME-USP Depto CC Profa. Yoshiko. Capítulo 3

Aula 10: Tratabilidade

Matemática Discreta 10

CONCEITO DE ÁRVORE CES-11. A raiz é o único nó que não possui ancestrais. As folhas são os nós sem filhos. Exemplos:

Online Survivable Network Design

Controle do Professor

5COP096 TeoriadaComputação

n. 15 ÁREA DE UM TRIÂNGULO Logo, a área do triângulo é obtida calculando-se a metade da área do S = 1 2

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

Ciclos hamiltonianos e o problema do caixeiro viajante

Universidade Federal do Rio de Janeiro INSTITUTO DE MATEMÁTICA Departamento de Métodos Matemáticos

Geometria Computacional

3. São dadas as coordenadas de u e v em relação a uma base ortonormal fixada. Calcule a medida angular entre u e v.

Análise de algoritmos

Doutorado em Ciência da Computação. Algoritmos e Grafos. Raimundo Macêdo LaSiD/DCC/UFBA

Grupo 1 - PIC OBMEP 2011 Módulo 2 - Geometria. Resumo do Encontro 6, 22 de setembro de Questões de geometria das provas da OBMEP

Teoria dos Grafos Aula 2

Algoritmos de Ordenação: HeapSort

PROVA DE MATEMÁTICA QUESTÃO 31 QUESTÃO 32. Sejam a, b e c números reais e positivos tais que. c. Então, é CORRETO afirmar que. A) a 2 = b 2 + c 2

Teoria dos Grafos Aula 6

Uma forma de classificação

(A) a 2 + b 2 c 2 = 0 (B) a 2 b 2 c 2 = 0 (C) a 2 + b 2 + c 2 = 0 (D) a 2 b 2 + c 2 = 0 (E) a 2 = b 2 = c 2 (A) 25. (B) 50. (C) 100. (D) 250. (E) 500.

MAT VETORES E GEOMETRIA - IF/IME 1 o SEMESTRE 2015

Cortes (cut sets) 2010/2 Teoria dos Grafos (INF 5037/INF2781) CC/EC/UFES

Ponto q está no polígono?

RESOLUÇÀO DA PROVA DE MATEMÁTICA VESTIBULAR DA FUVEST_2007_ 2A FASE. RESOLUÇÃO PELA PROFA. MARIA ANTÔNIA CONCEIÇÃO GOUVEIA

a) Falsa. Dois ou mais pontos podem ser coincidentes, por exemplo. b) Falsa. Os três pontos não podem ser colineares.

TIPO DE PROVA: A. Questão 3. Questão 1. Questão 4. Questão 2. alternativa D. alternativa E. alternativa D. alternativa D

Endereçamento Aberto

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

O B. Podemos decompor a pirâmide ABCDE em quatro tetraedros congruentes ao tetraedro BCEO. ABCDE tem volume igual a V = a2.oe

Transcrição:

Conjuntos disjuntos dinâmicos CLRS 21 Algoritmos p. 1

Conjuntos disjuntos Seja S = {S 1,S 2,...,S n } uma coleção de conjuntos disjuntos, ou seja, S i S j = para todo i j. Algoritmos p. 2

Conjuntos disjuntos Seja S = {S 1,S 2,...,S n } uma coleção de conjuntos disjuntos, ou seja, S i S j = para todo i j. Exemplo de coleção disjunta de conjuntos: componentes conexos de um grafo a b e f h j G c d g i componentes = conjuntos disjuntos de vértices {a,b,c,d} {e,f,g} {h,i} {j} Algoritmos p. 2

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta componentes {a} {b} {c} {d} {e} {f} {g} {h} {i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (b,d) componentes {a} {b,d} {c} {e} {f} {g} {h} {i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (e,g) componentes {a} {b,d} {c} {e,g} {f} {h} {i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (a,c) componentes {a,c} {b,d} {e,g} {f} {h} {i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (h,i) componentes {a,c} {b,d} {e,g} {f} {h,i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (a,b) componentes {a,b,c,d} {e,g} {f} {h,i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (e,f) componentes {a,b,c,d} {e,f,g} {h,i} {j} Algoritmos p. 3

Coleção disjunta dinâmica Conjuntos são modificados ao longo do tempo Exemplo: grafo dinâmico a b e f h j G c d g i aresta (b,c) componentes {a,b,c,d} {e,g} {f} {h,i} {j} Algoritmos p. 3

Operações básicas S coleção de conjuntos disjuntos. Cada conjunto tem um representante. MAKESET (x): UNION (x, y): FINDSET (x): x é elemento novo S S {x} x e y em conjuntos diferentes S S {S x,s y } {S x S y } x está em S x e y está em Sy devolve representante do conjunto que contém x Algoritmos p. 4

Connected-Components Recebe um grafo G e contrói uma representação dos componentes conexos. CONNECTED-COMPONENTS (G) 1 para cada vértice v de G faça 2 MAKESET (v) 3 para cada aresta (u,v) de G faça 4 se FINDSET (u) FINDSET (v) 5 então UNION (u, v) Algoritmos p. 5

Consumo de tempo n := número de vértices do grafo m := número de arestas do grafo Algoritmos p. 6

Consumo de tempo n := número de vértices do grafo m := número de arestas do grafo linha consumo de todas as execuções da linha 1 = Θ(n) 2 = n consumo de tempo MAKESET 3 = Θ(m) 4 = 2m consumo de tempo FINDSET 5 n consumo de tempo UNION total Θ(n + m) + n consumo de tempo MAKESET +2m consumo de tempo FINDSET +n consumo de tempo UNION Algoritmos p. 6

Same-Component Decide se u e v estão no mesmo componente: SAME-COMPONENT (u, v) 1 se FINDSET (u) = FINDSET (v) 2 então devolva SIM 3 senão devolva NÃO Algoritmos p. 7

Algoritmo de Kruskal Encontra uma árvore geradora mínima (CLRS 23). MST-KRUSKAL (G, w) G conexo 1 A 2 para cada vértice v faça 3 MAKESET (v) 4 coloque arestas em ordem crescente de w 5 para cada aresta uv em ordem crescente de w faça 6 se FINDSET (u) FINDSET (v) 7 então A A {uv} 8 UNION (u, v) 9 devolva A Algoritmos p. 8

Conjuntos disjuntos dinâmicos Seqüência de operações MAKESET, UNION, FINDSET M M M U F U U F U F F F U F } {{ } } n {{ } m Que estrutura de dados usar? Compromissos (trade-off s) Algoritmos p. 9

Algumas possibilidades (a) cada conjunto é representado por uma lista ligada circular (b) cada conjunto é representado por uma árvore enraizada de altura 1. Algoritmos p. 10

Algumas possibilidades (a) cada conjunto é representado por uma lista ligada circular (b) cada conjunto é representado por uma árvore enraizada de altura 1. Consumo de tempo (a) (b) MAKESET Θ(1) Θ(1) UNION/LINK O(n)/O(1) O(n) FINDSET O(n) Θ(1) Algoritmos p. 10

Algumas possibilidades (a) cada conjunto é representado por uma lista ligada circular (b) cada conjunto é representado por uma árvore enraizada de altura 1. Consumo de tempo (a) (b) MAKESET Θ(1) Θ(1) UNION/LINK O(n)/O(1) O(n) FINDSET O(n) Θ(1) Uma seqüência de m operações consume tempo Θ(m 2 ) no pior caso. Consumo de tempo amortizado por operação é O(m). Algoritmos p. 10

Melhoramento: weighted-union Na segunda opção, armazene adicionalmente o tamanho de cada conjunto. Algoritmos p. 11

Melhoramento: weighted-union Na segunda opção, armazene adicionalmente o tamanho de cada conjunto. Na união, altera-se os apontadores para o representante de cada elemento do conjunto menor. Algoritmos p. 11

Melhoramento: weighted-union Na segunda opção, armazene adicionalmente o tamanho de cada conjunto. Na união, altera-se os apontadores para o representante de cada elemento do conjunto menor. O custo de pior caso de cada operação não se altera, mas o custo amortizado melhora. Algoritmos p. 11

Melhoramento: weighted-union Na segunda opção, armazene adicionalmente o tamanho de cada conjunto. Na união, altera-se os apontadores para o representante de cada elemento do conjunto menor. O custo de pior caso de cada operação não se altera, mas o custo amortizado melhora. Como fazer esta análise? Algoritmos p. 11

Melhoramento: weighted-union Na segunda opção, armazene adicionalmente o tamanho de cada conjunto. Na união, altera-se os apontadores para o representante de cada elemento do conjunto menor. O custo de pior caso de cada operação não se altera, mas o custo amortizado melhora. O apontador para o representante de cada elemento x pode ser alterado no máximo lg n vezes, pois o tamanho do conjunto que contém x dobra a cada alteração. Algoritmos p. 11

Melhoramento: weighted-union Na segunda opção, armazene adicionalmente o tamanho de cada conjunto. Na união, altera-se os apontadores para o representante de cada elemento do conjunto menor. O custo de pior caso de cada operação não se altera, mas o custo amortizado melhora. O apontador para o representante de cada elemento x pode ser alterado no máximo lg n vezes, pois o tamanho do conjunto que contém x dobra a cada alteração. Conclusão: uma seqüência de m operações MAKESET, UNION e FINDSET, sendo que n são MAKESET, consome tempo O(m + n lg n). Algoritmos p. 11

Estrutura disjoint-set forest a b e f h j G c d g i cada conjunto tem uma raiz, que é o seu representate cada nó x tem um pai pai[x] = x se e só se x é uma raiz Algoritmos p. 12

Estrutura disjoint-set forest b e h j a d g f i c cada conjunto tem uma raiz cada nó x tem um pai pai[x] = x se e só se x é uma raiz Algoritmos p. 12

MakeSet 0 e FindSet 0 b e h j a d g f i c MAKESET 0 (x) 1 pai[x] x FINDSET 0 (x) 1 enquanto pai[x] x faça 2 x pai[x] 3 devolva x Algoritmos p. 13

FindSet 1 b e h j a d g f i c FINDSET 1 (x) 1 se pai[x] = x 2 então devolva x 3 senão devolva FINDSET 1 (pai[x]) Algoritmos p. 14

Union 0 b e h j a d g f i c UNION 0 (x,y) 1 x FINDSET 0 (x) 2 y FINDSET 0 (y) 3 pai[y ] x Algoritmos p. 15

Union 0 b x UNION 0 (a,f) h j a d e y i c g f UNION 0 (x,y) 1 x FINDSET 0 (x) 2 y FINDSET 0 (y) 3 pai[y ] x Algoritmos p. 15

Union 0 b x UNION 0 (a,f) h j a d e y i c g f UNION 0 (x,y) 1 x FINDSET 0 (x) 2 y FINDSET 0 (y) 3 pai[y ] x Algoritmos p. 15

MakeSet 0, Union 0 e FindSet 1 MAKESET 0 (x) 1 pai[x] x UNION 0 (x,y) 1 x FINDSET 0 (x) 2 y FINDSET 0 (y) 3 pai[y ] x FINDSET 1 (x) 1 se pai[x] = x 2 então devolva x 3 senão devolva FINDSET 1 (pai[x]) Algoritmos p. 16

Consumo de tempo MAKESET 0 UNION 0 FINDSET 0 Θ(1) O(n) O(n) M M M U F U U F U F F F U F } {{ } } n {{ } m Custo total da seqüência: n Θ(1) + n O(n) + m O(n) = O(mn) Algoritmos p. 17

Melhoramento 1: union by rank 2 1 1 0 1 0 0 0 0 0 rank[x] = posto do nó x MAKESET (x) 1 pai[x] x 2 rank[x] 0 Algoritmos p. 18

Melhoramento 1: union by rank 2 x UNION (x,y) 1 0 1 0 1 y 0 0 0 0 rank[x] = posto do nó x MAKESET (x) 1 pai[x] x 2 rank[x] 0 Algoritmos p. 19

Melhoramento 1: union by rank 2 x UNION (x,y) 1 0 1 0 1 y 0 0 0 0 rank[x] = posto do nó x MAKESET (x) 1 pai[x] x 2 rank[x] 0 Algoritmos p. 20

Melhoramento 1: union by rank rank[x] > rank[y] rank[x] rank[y] rank[x] = rank[y] rank[x] + 1 rank[y] Algoritmos p. 21

Melhoramento 1: union by rank UNION (x,y) com union by rank 1 x FINDSET (x) 2 y FINDSET (y) supõe que x y 3 se rank[x ] > rank[y ] 4 então pai[y ] x 5 senão pai[x ] y 6 se rank[x ] = rank[y ] 7 então rank[y ] rank[y ] + 1 Algoritmos p. 22

Melhoramento 1: estrutura rank[x] < rank[pai[x]] para cada nó x rank[x] = rank[pai[x]] se e só se x é raiz rank[pai[x]] é uma função não-decrescente do tempo número de nós de uma árvore de raiz x é 2 rank[x]. número de nós de posto k é n/2 k. altura(x) = rank[x] lg n para cada nó x altura(x) := comprimento do mais longo caminho que vai de x até uma folha Algoritmos p. 23

Melhoramento 1: custo Seqüência de operações MAKESET, UNION, FINDSET M M M }{{} U F U U F U F F F U F n }{{} m altura(x) lg n para cada nó x Consumos de tempo: MAKESET Θ(1) UNION O(lg n) FINDSET O(lg n) Consumo de tempo total da seqüência: O(m lg n) Algoritmos p. 24

Melhoramento 2: path compression e d c b x FINDSET(x) Algoritmos p. 25

Melhoramento 2: path compression e a b c d FINDSET(x) Algoritmos p. 25

Melhoramento 2: path compression FINDSET (x) com path compression 1 se x pai[x] 2 então pai[x] FINDSET (pai[x]) 3 devolva pai[x] rank[x] < rank[pai[x]] para cada nó x rank[x] = rank[pai[x]] se e só se x é raiz rank[pai[x]] é uma função não-decrescente do tempo número de nós de uma árvore de raiz x é 2 rank[x] número de nós de posto k é n/2 k altura(x) rank[x] lg n para cada nó x Algoritmos p. 26

lg n é o menor k tal que lg lg... lg }{{} k Função log-estrela n 1 n lg n 1 0 2 1 3 2 4 2 5 3.. 15 3 16 3.. 65535 4 65536 4. 100000000000000000 000000000000 }{{} 80.. 5. Algoritmos p. 27

Tempo amortizado Se conjuntos disjuntos são representados através de disjoint-set forest com union by rank e path compression, então uma seqüência de m operações MAKESET, UNION e FINDSET, sendo que n são MAKESET, consome tempo O(m lg n). Algoritmos p. 28

Exercícios Exercício 24.A [CLRS 21.1-3] Quando CONNECTED-COMPONENTS é aplicado a um grafo G = (V, E) com k componentes, quantas vezes FINDSET é chamado? Quantas vezes UNION é chamado? Dê respostas em termos de k, V e E. Exercício 24.B [CLRS 21.3-1] Faça uma figura da floresta produzida pela seguinte seqüência de operacões: 01 para i 1 até16 02 faça MAKESET(x i ) 03 para i 1 até15 em passos de 2 04 faça UNION (x i, x i+1 ) 05 para i 1 até 13 em passos de 4 06 faça UNION (x i, x i+2 ) 07 UNION (x 1, x 5 ) 08 UNION (x 11, x 13 ) 09 UNION (x 1, x 10 ) 10 FINDSET (x 2 ) 11 FINDSET (x 9 ) Algoritmos p. 29

Mais exercícios Exercício 24.C [CLRS 21.3-2] Escreva uma versão iterativa de FINDSET com path compression. Exercício 24.D [CLRS 21.3-3] Dê uma seqüência de m MAKESET, UNION e FINDSET 0, n das quais são MAKESET, que consome Ω(m lg n). Exercício 24.E Digamos que h[x] é a altura do nó x (= comprimento do mais longo caminho que vai de x até uma folha) na estrutura disjoint-set forest. Mostre que rank[x] h[x]. Mostre que UNION (x, y) nem sempre pendura a árvore mais baixa na mais alta. Exercício 24.F [CLRS 21.4-2] Mostre que o pôsto de cada nó na estrutura disjoint-set forest é no máximo lg n ou seja, que rank[x] lg n. (Sugestão: Mostre inicialmente que para cada raiz x temos 2 rank[x] n x, onde n x é o número de nós na árvore que contém x.) Algoritmos p. 30

Mais um exercício Exercício 24.G [CLRS 21.4-4] Considere uma versão simplificada da estrutura disjoint-set forest que usa a heurística union by rank mas não usa a heurística path compression. (Em outras palavras, usa as operações MAKESET, UNION e FINDSET 0.) Mostre que essa simplificação consome tempo O(m lg n). Como de hábito, m é o número total de operações e n é o número de operações MAKESET. (Sugestão: Use o exercício CLRS 21.4-2.) Algoritmos p. 31