algsgrafosbusca

28
1 Busca em Grafos Katia S. Guimarães [email protected]

Upload: tiago-dimas-nogueira

Post on 17-Sep-2015

218 views

Category:

Documents


2 download

DESCRIPTION

AlgsGrafosBusca

TRANSCRIPT

  • *Busca em GrafosKatia S. [email protected]

  • [email protected]*Busca em GrafosOBJETIVO: Visitar todos os vrtices e arestas do grafo de forma sistemtica, para evitar repeties e conseqente desperdcio.

    Se o grafo uma rvore enraizada, isto , uma rvore na qual os vrtices obedecem a uma hierarquia, a tarefa simples.

    [email protected]

  • [email protected]*Busca em rvores EnraizadasBusca em pr-ordem

    Raiz visitada antes dos descendentes

    A B C E F D

    [email protected]

  • [email protected]*Busca em rvores Enraizadas2. Busca em ps-ordem

    Raiz visitada depois dos descendentes B E F C D A

    [email protected]

  • [email protected]*Busca em rvores Enraizadas3. Busca em in-ordem Raiz visitada entre os descendentes

    S faz sentido para rvores binrias ou similares (2-3, B, etc.)

    (Applet)

    [email protected]

  • [email protected]*Algoritmo Pr-ordemAlgoritmo Pr-ordem(raiz) Se raiz no nula ento Visite (raiz)Pr-ordem (left.raiz)Pr-ordem (right.raiz)

    [email protected]

  • [email protected]*Algoritmo Ps-ordemAlgoritmo Ps-ordem(raiz) Se raiz no nula entoPs-ordem (left.raiz)Ps-ordem (right.raiz)Visite (raiz)

    [email protected]

  • [email protected]*Algoritmo In-ordemAlgoritmo In-ordem(raiz) Se raiz no nula ento In-ordem (left.raiz)Visite (raiz)In-ordem (right.raiz)

    [email protected]

  • [email protected]*Busca em Grafos com Ciclos Se o grafo contm ciclos, preciso cuidar para evitar que arestas sejam visitadas mais de uma vez.

    [email protected]

  • [email protected]*Busca em Grafos com CiclosExemplo: A partir do grafo abaixo obtemos

    [email protected]

  • [email protected]*Busca em Grafos com Ciclos Se o grafo no uma rvore, ns definimos um subgrafo dele que uma rvore, para servir de espinha dorsal.

    Algoritmo bsico:Tome um vrtice qualquer s. Marque s. Enquanto houver arestas no visitadas, tome uma aresta (v, w) incidente a algum vrtice j marcado. Marque (v, w) (explorada) e v, w (visitados).

    [email protected]

  • [email protected]*Busca em Grafos com CiclosH duas tcnicas principais para busca:

    Busca em Profundidade Tomar a aresta no marcada incidente ao vrtice visitado mais recentemente.

    Busca em Largura Tomar a aresta no marcada incidente ao vrtice visitado menos recentemente.

    [email protected]

  • [email protected]*Busca em Profundidade JAVA Applet para uma Busca em Profundidade

    JAVA Applet para Busca em grafo direcionado com pilha

    [email protected]

  • *Controle para Busca em Profundidade Main Procedure Inicialize pilha Q como vazia; Desmarque todos os vrtices e arestas; Tome um vrtice v qualquer; Inclua v em Q; P(v); Remova v de Q.

  • [email protected]*Algoritmo para Busca em ProfundidadeProcedimento P(v)Marque v como visitado (cinza);Para toda aresta (v, w) incidente a v faa: Se w no marcado ento /* aresta de rvore */ {d[w] time; time++; pred[w] v; P(w) fim[w] time; time++} seno se w pai(v) ento /* aresta de retorno */ seno /* aresta de rvore */

    [email protected]

  • *rvore de Busca em Profundidade A busca em profundidade biparticiona o conjunto de arestas em: - Arestasde rvore - Arestas de Retorno

  • *Teorema 23.6 (Teorema dos parnteses) Em qualquer busca em profundidade de um grafo (direcionado ou no direcionado) G = (V, E), para quaisquer dois vrtices u e v, exatamente uma das trs condies vale: - Os intervalos [d[u],f[u]] e [d[v], f[v]] so disjuntos, - O intervalo [d[u],f[u]] est contido no intervalo [d[v],f[v]], e u um descendente de v na rvore de busca em profundidade, ou - Vice-versa.

    *[email protected]

  • *Corolrio 23.7 (Nesting dos intervalos dos descendentes) Vrtice v um descendente prprio do vrtice u na floresta de busca em profundidade de um grafo G sse d[u] < d[v] < f[v] < f[u].

    *[email protected]

  • [email protected]*Variaes de Busca em ProfundidadeO algoritmo de Busca em Profundidade usado como controle para muitas aplicaes em tempo linear.Ex. Componentes Biconexos (Tolerncia a falhas em redes)

    Ex: No grafo ao lado, os seguintes subgrafos gerados permanecem conexos se cair um link qualquer:

    G{1, 6} G{3, 7} G{1, 2, 3, 4, 5}

    [email protected]

  • *Busca em Largura Cria um centro no vrtice inicial e forma nveis ou camadas a partir deste n. 37251461645237

  • 6*Vrtices Brancos, Cinza e Pretos - Brancos Valor inicial - Cinza Aps serem descobertos - Pretos Aps a descoberta de todos os adjacentes.16452371645237452371sss6

    *[email protected]

  • *Busca em Largura

    Applet para Busca em Largura

  • *Algoritmo para Busca em LarguraTome um vrtice qualquer v. Coloque v na fila F. Enquanto F no for vazia faav Primeiro elemento da fila FPara toda aresta (v, w) incidente a v faa Se w no marcado ento Inclua w em F /* aresta de rvore */ seno se v = pai (w) ento /* aresta de rvore */ seno /* aresta de cruzamento */

  • *Ao trmino de Busca em Largura A busca em largura biparticiona as arestas do grafo em arestas de rvore e arestas de cruzamento. 37251461645237

    *[email protected]

  • *Correo de Busca em Largura (BL) Teorema 23.4 (Correo de BL)

    Seja G = (V, E) um grafo direcionado ou no direcionado, e suponha que o algoritmo BL executado em G a partir de um dado vrtive s V. Ento, durante a sua execuo, BL descobre todo vrtice v V alcanvel a partir do n fonte s, e ao trmino, d[v] = distncia (s, v) para todo v V ...

  • *Busca em Largura vs. Distncias Teorema 23.4 (Correo de Busca em Largura) ...... Alm disso, para qualquer vrtice v s alcanvel a partir de s, um dos menores caminhos de compr. mnimo de s a v o caminho de s a pred(v) seguido pela aresta (pred(v), v).

  • *Variaes de Busca em LarguraO algoritmo de Busca em Largura tambm largamente usado como controle para aplicaes em tempo linear.

    Ex. Broadcast de mensagens em uma rede

    *[email protected]

  • *Referncia BibliogrficaLeiam o Captulo 23 do livro de Cormen, Leiserson, Rivest (Pgs. 465 a 497).

    No esqueam os problemas.

    *[email protected]