Top Banner
Algoritmos Elementares Leandro G. M. Alvim
40

Algoritmos Elementares NAO

Nov 15, 2015

Download

Documents

adjacicx

algoritmos
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Algoritmos Elementares

    Leandro G. M. Alvim

  • Busca em Largura

    Caminho Mnimo s at todos os outros Grafo com pesos unitrios

  • Busca em Largura

    r s t u

    v w x y

    0 s

    0

  • Busca em Largura

    w r1 1

    r s t u

    v w x y

    01

    1

  • Busca em Largura

    xr21

    r s t u

    v w x y

    01

    1

    t2

    2

    2

  • Busca em Largura

    x2

    r s t u

    v w x y

    01

    1

    t2

    v2

    2

    2

    2

  • Busca em Largura

    v2

    r s t u

    v w x y

    01

    1

    x2

    u3

    2

    2

    2

    3

  • Busca em Largura

    u3

    r s t u

    v w x y

    01

    1

    v2

    y3

    2

    2

    2

    3

    3

  • Busca em Largura

    u3

    r s t u

    v w x y

    01

    1

    y3

    2

    2

    2

    3

    3

  • Busca em Largura

    r s t u

    v w x y

    01

    1

    y3

    2

    2

    2

    3

    3

  • Busca em Largura

    r s t u

    v w x y

    01

    1 2

    2

    2

    3

    3

    rvore de Busca em Largura

  • rvore de Busca em Largura

    Gpred = (Vpred,Epred), Vpred = {v e V | pred[v] nil} u {s} Epred = {(pred[v],v) | v e Vpred - {s}}

  • Para cada u e V[G] - {s} faa

    cor[u] = branca

    dist[u] = inf

    pred[u] = nil

    cor[s] = azul

    dist[s] = 0

    pred[s] = nil

    fila = {s}

    Enquanto fila != {} Faa

    u = cabea(fila)

    Para cada v e Adj[u] Faa

    If cor[v] == branca Ento

    cor[v] = cinza

    d[v] = d[u] + 1

    pred[v] = u

    enfila(fila,v)

    desenfila(fila)

    cor[u] = azul

    Caminho Mnimo

  • Imprime_caminho(G,s,v)

    Se v = s ento

    imprimir s

    Seno Se pred[v] = nil ento

    imprimir Sem caminho de ,s, para , v

    Seno

    imprime_caminho(G,s,pred[v])

    imprimir v

    Imprimindo Caminho Mnimo

  • Anlise de Desempenho

    Inicializao Marcar os vrtices O(|V|)

    Fila Enfilar, Desenfilar O(1)

    Vizinhos Estrutura de Adjacncia O(|E|) Matriz de Adjacncia O(|V|^2)

  • Estrutura de Adjacncia O(|V|+|E|) Matriz de Adjacncia O(|V|^2)

    Anlise de Desempenho

  • Problemas

    Componente conexa pertencente a v Caminho Mnimo (pesos unitrios) Busca por chave

  • Busca em Profundidade

    u v w

    x y z

    u

    1/

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/

    v

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/

    v

    3/

    y

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/

    v

    3/

    y

    4/

    x

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/

    v

    3/

    y

    4/5

    B

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/

    v

    3/64/5

    B

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/7

    3/64/5

    B

  • Busca em Profundidade

    u v w

    x y z

    u

    1/ 2/7

    3/64/5

    BF

  • Busca em Profundidade

    u v w

    x y z

    1/8 2/7

    3/64/5

    BF

  • Busca em Profundidade

    u v w

    x y z

    1/8 2/7

    3/64/5

    B

    w

    9/

    F

  • Busca em Profundidade

    u v w

    x y z

    1/8 2/7

    3/64/5

    B

    w

    9/

    CF

  • Busca em Profundidade

    u v w

    x y z

    1/8 2/7

    3/64/5

    B

    w

    9/

    C

    10/

    z

    F

  • Busca em Profundidade

    u v w

    x y z

    1/8 2/7

    3/64/5

    B

    w

    9/

    C

    10/11

    F

  • Busca em Profundidade

    u v w

    x y z

    1/8 2/7

    3/64/5

    B

    9/12

    C

    10/11

    Floresta

    F

  • Busca em Profundidade

    Floresta

    Gpred = (V,Epred), Epred = {(pred[v],v) e V | pred[v] nil}

  • Busca em Profundidade

    Arestas Forward (F) Arestas que conectam v a um descendente

    da rvore

    Back (B) Arestas que conectam v a um ancestral da

    rvore

  • Busca em Profundidade

    Arestas

    Tree (T) Arestas que pertencem a floresta

    Cross (C) Demais arestas

  • Busca em Profundidade Aplicao Um grafo sem ciclos aquele que no

    possui arestas do tipo B

  • Busca em Profundidade Aplicaes Estrutura de parnteses Tempo de descoberta e tempo final

    Ordenao topolgica Deteco de ciclos Busca

  • Busca em Profundidade

    busca_profundidade(G)Para cada u e G.v faa

    cor[u] = branco

    pred[u] = nil

    tempo = 0

    Para cada u e G.v faa

    Se cor[u] = branco ento

    visita(G,u)

  • Busca em Profundidadevisita(G,u)

    tempo = tempo +1

    d[u] = tempo

    cor[u] = cinza

    Para cada v e G.Adj[v] faa

    Se cor[v] = branco ento

    pred[v] = u

    visita(G,v)

    cor[u] = preto

    tempo = tempo + 1

    f[u] = tempo

  • Anlise de Desempenho

    Inicializao Marcar os vrtices O(|V|)

    Vizinhos Estrutura de Adjacncia O(|E|) Matriz de Adjacncia O(|V|^2)

  • Estrutura de Adjacncia O(|V|+|E|) Matriz de Adjacncia O(|V|^2)

    Anlise de Desempenho