An lise e s ntese de algoritmos
This presentation is the property of its rightful owner.
Sponsored Links
1 / 19

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


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

Análise e Síntese de Algoritmos. Estruturas de Dados p/ Conjuntos DisjuntosCLRS, 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

Download Presentation

Análise e Síntese de Algoritmos

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 DisjuntosCLRS, 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


  • Login