Análise e Síntese de Algoritmos Estruturas de Dados p/ Conjuntos DisjuntosCLRS, Cap. 21.

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Antonio Dirceu Rabelo de Vasconcelos Filho
Exercícios PAA- Grafos
Exercícios PAA- Grafos
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Algoritmo polinomial para geração de uma Árvore Geradora Mínima
Análise e Síntese de Algoritmos
Grafos Grafo G = (V, E) V — conjunto de vértices
Pesquisa em profundidade
Problemas de fluxo numa rede
Grafos Grafo G = (V, E) V — conjunto de vértices
Conjuntos disjuntos Objectivo
Árvores Equilibradas Sumário Splay B-tree Vermelho-Preto AA e BB
Algoritmos e Estrutura de Dados I
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Árvores.

Coleta de resíduos. Sumário Resíduos Coleta de resíduos Contador de referências Marcação e varredura Parada e cópia Marcação e compactação Gerenciamento.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Árvores Digitais
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
Pesquisa em Memória Primária – Árvores de Busca
Árvore Geradora de Peso Mínimo
Árvores Introdução e Aplicações Árvores de Busca Binária Fundamentos
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Pesquisa em Memória Primária (cont.)
Listas com Ponteiros Listas encadeadas Listas circulares.
Listas Encadeadas.
Árvore Geradora Mínima
Listas Simplesmente Encadeadas
Algoritmos em Grafos.
Árvores binárias de pesquisa com balanceamento
Exercícios PAA- Grafos
Prova AA.
Árvores Binárias de Pesquisa
Algorítmos e estrutura de dados III
Operações com grafos União Exemplo
Análise e Síntese de Algoritmos
1. Se este nó é raiz de uma árvore QuasiEquilibrada de ordem k, e
Algoritmos Gulosos em Grafos
© Copyright 2007 Algoritmos e Estruturas de Dados - Todos os direitos reservados Átila Valgueiro Malta Moreira Juliana Medeiros de Lucena Rafael Alberto.
Árvore Binária de Busca
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Estruturas de Dados Aula 15: Árvores
Análise e Síntese de Algoritmos
Disciplina Análise de Algoritmos Bacharelado em CC
Prof. Hilton Cardoso Marins Junior
Conjuntos Algoritmos e Estruturas de Dados - IF672
Resolução de Problemas de Busca
1 Introdução aos Agentes Inteligentes Resolução de Problemas de Busca Flávia Barros.
Heaps Binomiais Rômulo de Almeida Bruno Mestrando em Ciência da Computação Professora Liliane Salgado Disciplina - Algoritmos.
Análise e Síntese de Algoritmos
Análise e Síntese de Algoritmos
Conjuntos - 1 Conjuntos disjuntos Objectivo ° resolver eficientemente o problema da equivalência ° estrutura de dados simples (vector) ° implementação.
Análise e Síntese de Algoritmos
Análise e Síntese de Algoritmos
Análise e Síntese de Algoritmos
AVL Árvores Equilibradas Sumário AVL Splay B Vermelho-Preto AA e BB Multidimensionais quaternárias k-d [Pesquisa Lexicográfica tries multivia tries binárias.
Análise e Síntese de Algoritmos
Análise e Síntese de Algoritmos Algoritmos GreedyCLRS, Cap. 16.
Folha de Cálculo Professor: Pedro Lopes Ano Lectivo 2010/2011.
Prof. Daniel Morais dos Reis
Árvores Binárias e Árvores AVL Katia Guimarães. Árvores Binárias e Árvores AVL Katia S. Guimarães
Estrutura de Dados Prof. André Cypriano M. Costa
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
UNIVERSIDADE FEDERAL DE MINAS GERAIS Árvores Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Análise e Síntese de Algoritmos Estruturas de Dados p/ Conjuntos DisjuntosCLRS, Cap. 21

2003/2004Análise e Síntese de Algoritmos2 Resumo Estruturas de dados para conjuntos disjuntos

2003/2004Análise e Síntese de Algoritmos3 Estruturas de Dados para Conjuntos Disjuntos Resumo –Definições Operações –Estruturas baseadas em listas –Estruturas baseadas em árvores –Aplicações

2003/2004Análise e Síntese de Algoritmos4 Definições Estrutura de Dados para Conjuntos Disjuntos: –Permite manter uma colecção de conjuntos dinâmicos disjuntos Cada conjunto caracterizado por representante, um elemento do conjunto Representante não alterado devido a consultas à estrutura de dados

2003/2004Análise e Síntese de Algoritmos5 Operações Sobre Conjuntos Disjuntos Cada elemento da estrutura é representado por objecto x Make-Set(x) –Cria novo conjunto que apenas inclui elemento apontado por x x aponta para único elemento do conjunto, o representante do conjunto Union(x,y) –Realiza a união dos conjuntos que contêm x e y, S x e S y : Novo conjunto criado: S x  S y S x e S y eliminados (conjuntos disjuntos) Find-Set(x) –Retorna apontador para o representante do conjunto que contém x

2003/2004Análise e Síntese de Algoritmos6 Exemplo Algoritmo de Kruskal (CLRS, Cap. 23): –Make-Set: Cria cada conjunto (disjunto) que representa conjunto de vértices –Find-Set: Identifica conjunto a que pertence um dado vértice –Union: Coloca conjuntos de vértices num mesmo conjunto

2003/2004Análise e Síntese de Algoritmos7 Exemplo Elementos ligados de um grafo não dirigido G = (V,E): Connected-Components(G) for v  V[G] Make-Set(v) for (u,v)  E[G] if Find-Set(u)  Find-Set(v) Union(u,v) Same-Component(u,v) if Find-Set(u) = Find-Set(v) return TRUE else return FALSE

2003/2004Análise e Síntese de Algoritmos8 Utilização de Lista Ligada Organização: –Elementos de cada conjunto em lista (simplesmente) ligada –Primeiro elemento é o representante do conjunto –Todos os elementos incluem apontador para o representante do conjunto rst

2003/2004Análise e Síntese de Algoritmos9 Tempos de Execução Sequência de m operações é O(m 2 ) Union(x,y): –Colocar elementos de x no fim da lista de y Operações: (n =  m/2  + 1; q =  m/2  -1; m = n + q) –n operações Make-Set –Sequência de q operações Union(x i-1,x i ), para i = 2, …, q Cada operação Union(x i-1,x i ) actualiza i-1 elementos Custo de q operações:  (q 2 ) –Tempo total de m operações é  (n+q 2 ), o que representa  (m 2 )

2003/2004Análise e Síntese de Algoritmos10 Heurística União Pesada A cada conjunto associar o número de elementos Para cada operação Union: –Juntar lista com menor número de elementos à lista com maior número de elementos Custo total de m operações é melhorado

2003/2004Análise e Síntese de Algoritmos11 Tempos de Execução (com Heurística) Sequência de m operações (que incluem n operações Union) é: O(m + n lg n) Prova: –Para cada objecto num conjunto com n elementos, calcular limite superior do número de vezes que ponteiro para representante é actualizado

2003/2004Análise e Síntese de Algoritmos12 Tempo de Execução (Cont.) –Sempre que ponteiro de x é actualizado, x encontra-se em conjunto com menor número de elementos Da 1ª vez, conjunto resultante com pelo menos 2 elementos Da 2ª vez, conjunto resultante com pelo menos 4 elementos … Após representante de x ter sido actualizado  lg k  vezes, conjunto resultante tem pelo menos k elementos –Maior conjunto tem n elementos Cada ponteiro actualizado não mais do que  lg n  vezes –Tempo total para actualizar n objectos é O(n lg n) –Make-Set e Find-Set têm tempos de execução O(1) –Tempo total para m operações (com n Union) é O(m + n lg n)

2003/2004Análise e Síntese de Algoritmos13 Utilização de Árvores Organização: –Cada conjunto representado por uma árvore –Cada elemento aponta apenas para antecessor –Representante da árvore é a raiz Antecessor da raiz é a própria raiz Find-Set: Percorrer antecessores até raiz ser encontrada Union: Raiz de uma árvore aponta para raiz da outra árvore Complexidade: sequência de O(m) operações é O(m n) –Uma árvore que é apenas lista dos n elementos

2003/2004Análise e Síntese de Algoritmos14 Heurística - União por Categoria Numa união de dois conjuntos, colocar árvore com menos elementos a apontar para árvore com mais elementos –Utilizar estimativa do número de elementos em cada sub- árvore categoria (rank): aproxima logaritmo do tamanho da sub- árvore e é um limite superior na altura da sub-árvore facilita análise dos tempos de execução –Numa união, raiz da árvore com menor rank aponta para raiz da árvore com maior rank

2003/2004Análise e Síntese de Algoritmos15 Heurística - Compressão de Caminhos Em cada operação Find-Set coloca cada nó visitado a apontar directamente para a raiz da árvore (representante do conjunto) y x w z yxw z

2003/2004Análise e Síntese de Algoritmos16 Pseudo Código Make-Set(x) p[x] = x rank[x] = 0 Union(x,y) Link(Find-Set(x), Find-Set(y)) Link(x,y) if rank[x] > rank[y] p[y] = x else p[x] = y if rank[x] = rank[y] rank[y] = rank[y] + 1 Find-Set(x) if x  p[x] p[x] = Find-Set(p[x]) return p[x] path compression union by rank

2003/2004Análise e Síntese de Algoritmos17 Tempos de Execução Execução de m operações sobre n elementos: –O(m  (n)) –Onde:

2003/2004Análise e Síntese de Algoritmos18 Tempos de Execução (Cont.)

2003/2004Análise e Síntese de Algoritmos19 Revisão Estruturas de dados para conjuntos disjuntos