Click here to load reader

Algoritmos Elementares NAO

  • View
    219

  • Download
    0

Embed Size (px)

DESCRIPTION

algoritmos

Text of Algoritmos Elementares NAO

  • 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