Algoritmos em Grafos Parte 2 Katia S Guimares

  • Slides: 9
Download presentation
Algoritmos em Grafos (Parte 2) Katia S. Guimarães katia@cin. ufpe. br maio/2000 katia@cin. ufpe.

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

Algoritmo Distâncias com Pesos Quando o grafo tem peso nas arestas, D(v, w) é

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. 1 5 4 6 maio/2000 katia@cin. ufpe. br 5 9 3 Note que, nessas circunstâncias, o algoritmo de busca em largura já não resolve. 2 3 2 5 3 4 6 7 2

Algoritmo Distâncias com Pesos Abordagem Algoritmo Guloso (Indução) - Inicialmente, só é conhecida uma

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 3

Algoritmo Distâncias com Pesos Abordagem Algoritmo Guloso (Indução) - Para todo v V faça

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 4

Algoritmo Distâncias com Pesos Abordagem Algoritmo Guloso (Indução) - Os vértices são marcados em

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 5

Distâncias com Pesos - Implementação Para selecionar o mínimo D, usar um heap. Cada

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 6

Distâncias com Pesos -Análise do Custo Operações de inclusão/remoção do heap Cada operação de

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 7

Árvore Geradora de Peso Mínimo Abordagem Algoritmo Guloso (Indução) OBJETIVO: Construir uma árvore de

Á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 8

Algoritmo AGPM Abordagem Algoritmo Guloso (Indução) - Para todo v V faça { Desmarcar

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 9