Algoritmos em Grafos (Parte 2)

Slides:



Advertisements
Apresentações semelhantes
Árvores 2010/1 Teoria dos Grafos (INF 5037/INF2781)
Advertisements

Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
HASHING Katia Guimarães julho/2002
Antonio Dirceu Rabelo de Vasconcelos Filho
Gustavo Sant´Anna Ferreira Rodrigo Ribeiro de Souza
Grafos - Caminhos Caminhos Máximo / Mínimo:
Python: Recursão Claudio Esperança.
Celso C. Ribeiro Caroline T. Rocha
Fluxo em Redes Prof. Ricardo R. Santos.
ALINHAMENTOS LOCAIS E SEMI-GLOBAIS
Katia S. Guimarães QUICKSORT Katia S. Guimarães
Grafos Introdução
Exercícios PAA- Grafos
Exercícios PAA- Grafos
Pontes Seja (G) o número de componentes conexas de G. Uma ponte é uma aresta a tal que (G - a) > (G)
UFES CC/EC/Mestrado Teoria dos Grafos Árvores. UFES CC/EC/Mestrado Teoria dos Grafos Árvores Grafo Acíclico: não possui ciclos.
Problemas de fluxo numa rede
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Teoria dos Grafos – Aula 3 Árvores
Árvores.
Busca Cega (Exaustiva)
SEMINÁRIO DE ALGORITMOS
Qualiti Courses :: Documento de Requisitos. {icc2, jmmn, mmc2, CIn-UFPE Equipe Ivan Cordeiro Cardim Julio Maravitch Maurício.
Árvore Geradora de Peso Mínimo
Ronaldo Celso Messias Correia –
Pesquisa Operacional - Profa Úrsula L. F. Ribeiro
Complexidade de Computação Para avaliar a qualidade de um algoritmo usamos como critério o espaço e o tempo de execução. Ao.
Introdução à NP-completude
Backtracking Katia Guimarães.
Árvore Geradora Mínima
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Silogística Tudo o que os artistas fazem é arte.
Caminhos e caminhamentos em Grafos
Algoritmos em Grafos.
Grafos Árvores Geradoras.
Intr. à Biologia Computacional
Intr. à Biologia Computacional ALINHAMENTO DE SEQÜÊNCIAS.
Exercícios: Alg Gulosos Eduardo Laber. Cap 4-Exercício 2 a)Verdadeiro, já que trocando cada elemento pelo seu quadrado não altera a ordem das arestas.
Caminhamento em Grafos: Busca em Largura e Busca em Profundidade
Exercícios PAA- Grafos
FABER Cirurgia & Implantes.
O problema do emparelhamento máximo
Introdução e Busca Cega
ALINHAMENTOS LOCAIS E SEMI-GLOBAIS
Listas, Filas e Pilhas Katia Guimarães.
Introdução à NP-completude Katia S. Guimarães
Algoritmos Gulosos em Grafos
Katia S. Guimarães Busca em Grafos Katia S. Guimarães
Abordagens para problemas NP-completos
Árvores Binárias e Encaminhamentos
Katia S. Guimarães Heaps Katia S. Guimarães
Remoção e Inserção em Heaps
Katia S. Guimarães Heapsort Katia S. Guimarães
Ferramentas de Planejamento
ÁRVORES Def.: Um grafo é acíclico se não possui ciclos.
Inteligência Artificial
Disciplina Análise de Algoritmos Bacharelado em CC
Msc. Daniele Carvalho Oliveira
Algoritmos para Obtenção de Árvore Geradora Mínima
Katia S. Guimarães Busca em Grafos Katia S. Guimarães

Problema MST Método Genérico Guloso usando Estratégia do Corte
Exercícios de Fluxo em Redes
Celso C. Ribeiro Caroline T. Rocha
Heaps Katia S. Guimarães
Grafos Prof. Miguel Gabriel Prazeres de Carvalho.
© Copyright 2003 Algoritmos e Estruturas de Dados - Todos os direitos reservados Busca Gulosa em Grafos IF672 - Algoritmos e Estruturas de Dados CIn -
Abordagens para Problemas Intratáveis Katia S. Guimarães
Transcrição da apresentação:

Algoritmos em Grafos (Parte 2) Katia S. Guimarães katia@cin.ufpe.br maio/2000 katia@cin.ufpe.br

Busca em Profundidade Exemplo: 1 A partir do grafo abaixo, obtemos a árvore: 6 4 6 5 1 2 Aresta de Árvore 3 7 4 3 Aresta de Retorno 2 7 5 maio/2000 katia@cin.ufpe.br

Busca em Profundidade Qual o custo de fazer busca em um grafo com n vértices e m arestas? Dentro do procedimento P, cada aresta na lista de incidências do vértice v é visitada, tomando um tempo (grau(v)). Sobre todas as chamadas de um grafo conexo, temos:  grau(v), vV.  grau(v) = 2.|E|. maio/2000 katia@cin.ufpe.br

Variações de Busca em Profundidade O algoritmo de busca em profundidade pode ser alterado para muitas aplicações em tempo linear. Ex. Base de Ciclos, isto é, um conjunto de ciclos a partir do qual todos os ciclos do grafo podem ser expressos. Ex. C1 = (1, 4 , 2, 3, 5, 1) C2 = (4, 2, 3, 4) C3 = C1  C2 = (1, 4, 3, 5, 1) 1 6 4 2 3 7 5 maio/2000 katia@cin.ufpe.br

Base de Ciclos P(v, pai) Insira v na pilha Q. Marque v como visitado Para toda aresta (v, w) incidente a v faça: Se w não marcado então P(w) /* aresta de árvore */ senão se w  pai então /* aresta de retorno */ Se nível[v] > nível[w] então /* primeira vez que acha (v, w) */ Imprima (w, Q[topo], Q[topo-1], ..., Q[?] = w) senão nada senão /* aresta de árvore */ Remova v da pilha Q maio/2000 katia@cin.ufpe.br

Custo de Base de Ciclos Note que o algoritmo dado encontra a base de ciclos do grafo em tempo linear. No entanto, a impressão dos ciclos pode tomar tempo quadrático. Isso pode ser corrigido “lembrando” o nível das arestas de retorno que incidem em cada nó da árvore, e verificando qual o melhor (menor) ciclo a imprimir em caso de escolha. maio/2000 katia@cin.ufpe.br

Exercícios 1. Fazer uma implementação linear para o problema de Bases de Ciclos. 2. Dado um grafo G(V, E) não direcionado que contém exatamente um ciclo, direcionar as arestas de G de forma que todo vértice em V tenha grau  1. 3. Dado um grafo G(V, E) não direcionado, encontrar os componentes biconexos de G. maio/2000 katia@cin.ufpe.br

Busca em Largura Tome um vértice qualquer v. Coloque v na fila F. Enquanto F não for vazia faça v  Primeiro elemento da fila F Para toda aresta (v, w) incidente a v faça Se w não marcado então Inclua w em F /* aresta de árvore */ senão se w = pai então /* aresta de árvore */ senão /* aresta de cruzamento */ maio/2000 katia@cin.ufpe.br

Busca em Largura A busca em largura biparticiona as arestas do grafo em arestas de árvore e arestas de cruzamento. 1 6 5 6 4 5 1 3 7 2 3 4 2 7 maio/2000 katia@cin.ufpe.br

Algoritmo Distâncias Se (v, w) é uma aresta em G, então |nível(v) - nível(w)|  1 na árvore de busca em largura. 1 6 4 5 D(v, w) é o menor número de arestas num caminho de v a w. A distância do vértice inicial a qualquer outro vértice na árvore é a distância entre estes vértices no grafo G. 2 3 7 maio/2000 katia@cin.ufpe.br

Algoritmo Distâncias com Pesos Quando o grafo tem peso nas arestas, D(v, w) é a menor soma dos pesos das arestas num caminho de v a w. Note que, nessas circunstâncias, o algoritmo de busca em largura já não resolve. 1 2 5 3 6 4 5 9 3 5 2 3 4 6 7 maio/2000 katia@cin.ufpe.br

Algoritmo Distâncias com Pesos Abordagem Algoritmo Guloso (Indução) - Inicialmente, só é conhecida uma solução trivial, para 0 ou 1 elemento do conjunto (no caso,D(v, v)). Marcar v. - A cada iteração, um elemento não marcado w é escolhido, baseado numa solução mínima local. w é marcado e incluído no conjunto dos elementos para os quais a solução é conhecida. maio/2000 katia@cin.ufpe.br

Algoritmo Distâncias com Pesos Abordagem Algoritmo Guloso (Indução) - Para todo v V faça { Desmarcar v; D[v] =  } - D[s] = 0 /* Base da indução */ - Enquanto  vértice não marcado faça /* Passo */ Seja v o vértice não marcado com D[v] mínimo (mínima local) Marque v; Para todo w  Adj(v) faça Se D[v] + custo (v,w) < D[w] então D[w]  D[v] + custo (v,w) maio/2000 katia@cin.ufpe.br

Algoritmo Distâncias com Pesos Abordagem Algoritmo Guloso (Indução) - Os vértices são marcados em ordem crescente de distância com relação ao vértice s. - É construída uma árvore, chamada Árvore de Distâncias de s, onde aparecem apenas as arestas que constituem os menores caminhos de s a cada um dos vértices do grafo. maio/2000 katia@cin.ufpe.br

Distâncias com Pesos - Implementação Para selecionar o mínimo D, usar um heap. Cada operação de inclusão/remoção custará (log |E|). Ter o cuidado de não fazer remoção no heap quando um novo custo for associado a um vértice. Para representar a árvore de distâncias, guardar, para cada vértice v, apenas a última aresta do caminho mínimo de s a v. maio/2000 katia@cin.ufpe.br

Distâncias com Pesos -Análise do Custo Operações de inclusão/remoção do heap Cada operação de inclusão/remoção custará (log |E|). O laço enquanto é executado |V| vezes, no entanto, como o heap vai conter elementos que não são candidatos de fato, a seleção do mínimo custará no total (|E| . log |E|). No total, o laço para todo será executado (|E|) vezes. maio/2000 katia@cin.ufpe.br

Árvore Geradora de Peso Mínimo Abordagem Algoritmo Guloso (Indução) OBJETIVO: Construir uma árvore de forma a manter o grafo conexo (há um caminho entre quaisquer dois vértices) porém a um custo mínimo. - Inicialmente, tomamos um vértice v qualquer. Marcar v. - A cada iteração, um elemento não marcado w é escolhido, baseado numa solução mínima local (mínimo custo de agregar um vértice à árvore corrente). maio/2000 katia@cin.ufpe.br

Algoritmo AGPM Abordagem Algoritmo Guloso (Indução) - Para todo v V faça { Desmarcar v; D[v] =  } - D[s] = 0 /* Base da indução */ - Enquanto  vértice não marcado faça /* Passo */ Seja v o vértice não marcado com D[v] mínimo (mínima local) Marque v; Para todo w  Adj(v) faça Se custo (v,w) < D[w] então D[w]  custo (v,w) maio/2000 katia@cin.ufpe.br

Problema Fluxo em Rede Def: Uma rede é um grafo direcionado com capacidades (de transmissão) nas arestas. OBJETIVO: Dados - Uma rede D (V, E, C), - Uma fonte s, e um destino t, definir um fluxo f máximo de s a t, obedecendo aos critérios:  fin (v) =  fout (v); fin (s) = 0; fout (t) = 0 f(v,w)  c(v,w) maio/2000 katia@cin.ufpe.br

Problema Fluxo em Rede PERGUNTA: Algoritmo Guloso funciona? maio/2000 katia@cin.ufpe.br