an lise e s ntese de algoritmos
Download
Skip this Video
Download Presentation
Análise e Síntese de Algoritmos

Loading in 2 Seconds...

play fullscreen
1 / 19

Análise e Síntese de Algoritmos - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on

Análise e Síntese de Algoritmos. Estruturas de Dados p/ Conjuntos Disjuntos CLRS, Cap. 21. Resumo. Estruturas de dados para conjuntos disjuntos. Estruturas de Dados para Conjuntos Disjuntos. Resumo Definições Operações Estruturas baseadas em listas Estruturas baseadas em árvores

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Análise e Síntese de Algoritmos' - lily


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
an lise e s ntese de algoritmos

Análise e Síntese de Algoritmos

Estruturas de Dados p/ Conjuntos Disjuntos CLRS, Cap. 21

resumo
Resumo
  • Estruturas de dados para conjuntos disjuntos

Análise e Síntese de Algoritmos

estruturas de dados para conjuntos disjuntos
Estruturas de Dados para Conjuntos Disjuntos
  • Resumo
    • Definições
      • Operações
    • Estruturas baseadas em listas
    • Estruturas baseadas em árvores
    • Aplicações

Análise e Síntese de Algoritmos

defini es
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

Análise e Síntese de Algoritmos

opera es sobre conjuntos disjuntos
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, Sx e Sy:
      • Novo conjunto criado: Sx Sy
      • Sx e Sy eliminados (conjuntos disjuntos)
  • Find-Set(x)
    • Retorna apontador para o representante do conjunto que contém x

Análise e Síntese de Algoritmos

exemplo
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

Análise e Síntese de Algoritmos

exemplo1
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

Análise e Síntese de Algoritmos

utiliza o de lista ligada

r

s

t

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

Análise e Síntese de Algoritmos

tempos de execu o
Tempos de Execução
  • Sequência de m operações é O(m2)
  • 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(xi-1,xi), para i = 2, …, q
      • Cada operação Union(xi-1,xi) actualiza i-1 elementos
      • Custo de q operações: (q2)
    • Tempo total de m operações é (n+q2), o que representa (m2)

Análise e Síntese de Algoritmos

heur stica uni o pesada
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

Análise e Síntese de Algoritmos

tempos de execu o com heur stica
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

Análise e Síntese de Algoritmos

tempo de execu o cont
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)

Análise e Síntese de Algoritmos

utiliza o de rvores
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

Análise e Síntese de Algoritmos

heur stica uni o por categoria
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

Análise e Síntese de Algoritmos

heur stica compress o de caminhos

y

x

w

z

y

x

w

z

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)

Análise e Síntese de Algoritmos

pseudo c digo
Pseudo Código

Make-Set(x)

p[x] = x

rank[x] = 0

Find-Set(x)

if x  p[x]

p[x] = Find-Set(p[x])

return p[x]

path compression

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

union by rank

Análise e Síntese de Algoritmos

tempos de execu o1
Tempos de Execução
  • Execução de m operações sobre n elementos:
    • O(m (n))
    • Onde:

Análise e Síntese de Algoritmos

tempos de execu o cont
Tempos de Execução (Cont.)

Análise e Síntese de Algoritmos

revis o
Revisão
  • Estruturas de dados para conjuntos disjuntos

Análise e Síntese de Algoritmos

ad