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

description

Aulas de grafos

Transcript of Aula35. Grafos III Busca Em Largura

  • 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.