aula35. grafos iii busca em largura

8
11/12/2008 10:42 AM 1 1 Estruturas de Dados Grafos III: Busca em Largura Prof. Ricardo J. G. B. Campello Parte deste material é baseado em adaptações e extensões de slides disponíveis em http://ww3.datastructures.net (Goodrich & Tamassia). 2 Organização Definição e Motivação Algoritmo BFS Exemplo de Execução BFS Pseudo-código Propriedades do Percurso BFS Algumas Aplicações de BFS Caminhos com número mínimo de arestas Busca de ciclos Análise de Complexidade do Algoritmo BFS

Upload: danillo-azevedo

Post on 15-Nov-2015

231 views

Category:

Documents


0 download

DESCRIPTION

Aulas de grafos

TRANSCRIPT

  • 11/12/2008 10:42 AM

    1

    1

    Estruturas de Dados

    Grafos III:Busca em Largura

    Prof. Ricardo J. G. B. Campello

    Parte deste material baseado em adaptaes e extenses de slidesdisponveis em http://ww3.datastructures.net (Goodrich & Tamassia).

    2

    OrganizaoDefinio e Motivao

    Algoritmo BFS Exemplo de Execuo BFS

    Pseudo-cdigo

    Propriedades do Percurso BFS

    Algumas Aplicaes de BFS Caminhos com nmero mnimo de arestas

    Busca de ciclos

    Anlise de Complexidade do Algoritmo BFS

  • 11/12/2008 10:42 AM

    2

    3

    Busca em LarguraBusca em Largura (BFS) uma estratgia geral de percurso em grafos

    BFS em um grafo G: Descobre o componente conexo

    de G que contm o vrtice de partida da busca

    logo, se G conexo ou no

    Visita todos os vrtices e arestas de G se este for conexo

    Para percorrer todo um grafo no conexo, BFS deve ser executada mltiplas vezes, sempre a partir de um vrtice no visitado nas anteriores

    BFS pode ser estendida para resolver outros problemas em grafos:

    Encontrar um caminho entre um dado par de vrtices, com a menor quantidade de arestas, caso exista

    Encontrar um ciclo simples, caso exista

    Encontrar uma rvore geradora de G conexo

    4

    Busca em LarguraAlternativamente, pode-se marcar apenas os vrtices, como no descobertos, descobertos e explorados

    vide pseudo-cdigo

    CB

    A

    E

    D

    F

    Um algoritmo do tipo BFS usa marcadores para direcionar o percurso (caminhamento)

    A forma mais geral marcar ambos vrtices e arestas

    As arestas so marcadas como de descoberta ou cruzamento

    Arestas de descoberta levam a vrtices no descobertos

    so tambm chamadas arestas de rvore (tree edges)

    Arestas de cruzamento so as demais arestas

  • 11/12/2008 10:42 AM

    3

    5

    Exemplo de Execuo

    65

    1

    4

    2

    aresta de descobertaaresta de cruzamento

    vrtice descobertovrtice no descoberto

    aresta inexplorada

    3

    65

    1

    4

    2

    3

    65

    1

    4

    2

    3

    vrtice explorado

    6

    65

    1

    4

    2

    3

    65

    1

    4

    2

    3

    65

    1

    4

    2

    3

    65

    1

    4

    2

    3

    Exemplo de Execuo (cont.)

  • 11/12/2008 10:42 AM

    4

    7

    65

    1

    4

    2

    3

    65

    1

    4

    2

    3

    Exemplo de Execuo (cont.)

    65

    1

    4

    2

    3

    0 0 1 6 5 1 1

    0 1 2 3 4 5 6

    parent

    8

    Algoritmo BFS(G, v)Q nova fila vaziaenqueue(Q, v)v.label DESCOBERTOenquanto ( no empty(Q) )

    v dequeue(Q)process_vertex(v)v.label EXPLORADOpara todo e incidentEdges(G, v)

    y opposite(G, v, e)se y.label = NO-DESCOBERTO

    enqueue(Q, y)y.label DESCOBERTOy.parent v

    se ( no y.label = EXPLORADO )process_edge(e)

    Assume-se que inicialmente os vrtices de G so rotulados como no-descobertos.

    Algoritmo BFSGarante que cada arestaser processada apenas umavez, no duas (uma paracada vrtice adjacente).

  • 11/12/2008 10:42 AM

    5

    9

    PropriedadesNotao:

    Gv: componente conexo que contm v.

    Propriedade 1:

    BFS(G, v) explora todos os vrtices e arestas de Gv.

    Propriedade 2:

    As arestas de descoberta formam uma rvore geradora de Gv.

    Propriedade 3:

    Qualquer vrtice s v a um no. mnimo de i arestas de v ser descoberto por um vrtice a um no. mnimo de i 1 arestas de v.

    65

    1

    4

    2

    3

    65

    1

    4

    2

    3

    10

    Caminhos Mnimos

    A propriedade 3 garante que a sucesso de descobertas produz caminhos com no. mnimo de arestas da origem v at s v .Nota: Caminhos no so nicos.

    11561006543210

    parent

    65

    1

    4

    2

    3

    Idia de Algoritmo Recursivo:

    Caminho mnimo entre o vrtice vde incio da busca e um vrtice squalquer dado por:

    caminho entre seu antecessor e s via aresta

    incidente aos dois

    caminho mnimo entre v e o antecessor (pai) de s na sucesso de descobertas

    +

  • 11/12/2008 10:42 AM

    6

    11

    CiclosComo as arestas de descoberta formam uma rvore geradora, qualquer aresta de cruzamento fecha um ciclo.

    O ciclo dado pela aresta de cruzamento em questo mais os caminhos mais curtos a partir do ltimo antecessor comum dos seus vrtices adjacentes no parentesco de descobertas.

    Exemplo:

    aresta (4,6)

    Antecessor comum: vrtice 2

    45

    2

    6

    3

    7

    1

    45

    2

    6

    3

    7

    1

    AnliseA rotulao de um vrtice leva tempo O(1). Cada um dos n vrtices rotulado trs vezes:

    NO DESCOBERTO DESCOBERTO EXPLORADO O(n).Inserir ou remover um vrtice da fila leva tempo O(1). Cada vrtice inserido e removido uma vez da fila Q O(n).

    Para cada vrtice, cada uma de suas arestas incidentes e orespectivo vrtice adjacente verificado:

    Para um vrtice v tem-se que isso leva tempo O(deg(v))*. Logo, lembrando que vG deg(v) = 2m, tem-se O(m) no total.

    Portanto, assumindo que process_vertex(v) e process_edge(v) executamem tempo O(1), tem-se que BFS executa em tempo O(n+m).

    * PS. Esse tempo vlido para as implementaes de grafos em lista de adjacncias e estrutura alternativa.

  • 11/12/2008 10:42 AM

    7

    13

    Exerccios1. O teorema das quatro cores declara que qualquer mapa

    planar pode ser colorido utilizando apenas quatro cores sem que qualquer regio seja colorida com a mesma cor de uma regio vizinha. Aps permanecer aberto como uma conjectura por mais de 100 anos, esse teorema foi provado em 1976 com a ajuda de um computador. Um problema mais simples que este determinar se um grafo qualquer que seja no direcionado, simples e conexo pode ser bicolorido, isto , ter seus vrtices pintados com duas cores sem que vrtices adjacentes sejam pintados com uma mesma cor. Explique como resolver esse problema com BFS e modifique o pseudo-cdigo BFS para tal.

    14

    Exerccios2. Ilustre graficamente, conforme o exemplo dado em aula, as execues

    passo a passo do algoritmo BFS com incio em cada um dos vrtices do grafo abaixo. Nota: Destaque, em cada execuo, quais as arestas de cruzamento, as arestas de descoberta, a rvore geradora resultante e a relao (vetor) de parentesco entre os vrtices:

    3. Elabore outros grafos e repita o Exerccio 3 para exercitar a busca BFS.

    1 2

    3

    4

    5

    6

    a

    b

    c

    d

    eg

    fh

  • 11/12/2008 10:42 AM

    8

    15

    Exerccios4. Considere que a matriz abaixo represente as conexes areas bilaterais existentes (x) ou

    no (em branco) entre um dado conjunto de 16 cidades. Aplique BFS para descobrir as rotas com o menor nmero de conexes ligando a cidade 1 s demais cidades e apresente as 15 rotas. Dica: Visualize o grafo como um grid 4 x 4, sendo a cidade 1 na posio (1,1), a cidade 2 na posio (1,2), etc, at a cidade 16 na posio (4,4).

    x x x

    x x x

    x x x

    x x x

    x x x

    x x x x

    x x x x x

    x x

    x x x x x

    x x x

    x x x x

    x x x

    x x

    x x x

    x x

    x x

    1

    2

    3

    ...

    16

    16

    BibliografiaM. T. Goodrich and R. Tamassia, Data Structures and Algorithms in C++/Java, John Wiley & Sons, 2002/2005.

    N. Ziviani, Projeto de Algoritmos, Thomson, 2a. Edio, 2004.

    T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to Algorithms, MIT Press, 2nd Edition, 2001.

    S. Skiena e M. Revilla, Programming Challenges: The Programming Contest Training Manual, Springer-Verlag, 2003.