An lise e s ntese de algoritmos
Download
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