Vous êtes sur la page 1sur 24

Complexidade de Algoritmos

Edson Prestes

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Idias bsicas
Um algoritmo guloso seleciona, a cada passo, o melhor elemento pertencente a entrada. Verifica se ele vivel - vindo a fazer parte da soluo ou no. Aps uma seqncia de decises, a soluo do problema alcanada.

Na seqncia de decises, nenhum elemento examinado mais de uma vez: ou ele far parte da sada, ou ser descartado. No caso da intercalao, verifica sempre o par de listas de menor custo!

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos

Estrutura geral do mtodo guloso

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
A estratgia gulosa possui a seguinte estrutura geral Inicializao ; Iterao ; Finalizao.
A Inicializao prepara a entrada (muitas vezes a entrada classificada) e

inicializa a sada.

A Iterao
seleciona um elemento conforme uma funo gulosa, marca-o para no consider-lo novamente no futuro, atualiza a entrada, examina o elemento selecionado quanto sua viabilidade e decide a sua participao ou no na soluo.

A finalizao recupera a sada.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
A estrutura algortmica do mtodo guloso dada pelo seguinte programa abstrato.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Intercalao tima de listas x Algoritmo Guloso

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
A rvore geradora (ou de espalhamento) mnima

Uma rvore geradora (ou de espalhamento) de um grafo G um subgrafo acclico que contm todos os vrtices do grafo. Usando as idias bsicas do mtodo guloso Inicialmente, as arestas so ordenadas em ordem crescente de seus custos; e cada vrtice considerado uma rvore distinta. Isto gera uma floresta de rvores. A cada passo, seleciona-se uma aresta de custo mnimo (ainda no examinada). Se a incluso desta aresta na configurao de rvores corrente criar um ciclo, ela descartada; caso contrrio, ela includa nesta configurao de tal forma que ligue duas rvores da floresta.

1.

2. 3.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Considere um grafo no orientado G = < V, E > com - V = { a, b, c, d, e, f }; - E={( a, b ),( a, e ), ( a, f ), ( b, c ), ( b, d ), ( b, f ), ( c, d ), ( d, e ), ( d, f ), ( e, f )};

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
A construo da rvore espalhada mnima para G como segue
Custo(b,c)=5 Custo(b,d)=6 Custo(a,e)=9 Custo(c,d)=10 Custo(b,f)=11 Custo(d,f)=14 Custo(a,b)=16 Custo(d,e)=18 Custo(a,f)=21 Custo(e,f)=33

C=({a},{b},{c},{d},{e},{f})

C=({a},{b,c},{d},{e},{f})

C=({a},{b,c,d},{e},{f})

C=({a,e},{b,c,d},{f})

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Custo(b,c)=5 Custo(b,d)=6 Custo(a,e)=9 Custo(c,d)=10 Custo(b,f)=11 Custo(d,f)=14 Custo(a,b)=16 Custo(d,e)=18 Custo(a,f)=21 Custo(e,f)=33

C=({a,e},{b,c,d},{e},{f})

C=({a,e},{b,c,d,f})

C=({a,e},{b,c,d,f})

C=({a,b,c,d,e,f})

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos

Inicializao

Iterao

Finalizao

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Caminhos de custo mnimo em grafo orientado
Este problema consiste em determinar um caminho de custo mnimo a partir de um vrtice fonte a cada vrtice do grafo. Considere um grafo orientado G = < V, E > com 5 vrtices: V = {a, b, c, d, e} e 6 arestas com a seguinte matriz de custos:

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
O algoritmo constri incrementalmente um conjunto I de vrtices intermedirios e o usa para calcular os caminhos de custo mnimo a partir do vrtice fonte. A cada passo, seleciona-se um novo vrtice intermedirio cuja distncia em relao ao vrtice fonte seja mnima.

Este novo vrtice utilizado para atualizar o custo associado aos demais vrtices em relao ao vrtice fonte.

Quando I contiver todos os vrtices do grafo ento teremos calculados todos os caminhos com custo mnimo a partir do vrtice fonte.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Considere que o vrtice fonte o vrtice a Inicialmente, o conjunto I de vrtices intermedirios vazio e o vetor de distncias inicializado com a primeira linha da matriz de custos. A cada passo, seleciona-se um vrtice que tenha a menor distncia em relao a fonte. Em seguida, atualiza-se a distncia deste vrtice em relao aos demais.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Algoritmo: Custo mnimo de caminhos a partir de fonte em grafo orientado Inicializao

[v0,vi]

Iterao

Finalizao

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Complexidade de intercalao tima de listas

O algoritmo efetua operaes sobre o multiconjunto L, portanto a complexidade do algoritmo pode variar conforme a estrutura de dados escolhida para representar L. O multiconjunto L uma lista encadeada, em que cada elemento guarda tanto uma lista quanto seu tamanho. Assumiremos que para determinar as duas menores listas, a L percorrida, com complexidade O(n); para remoo a complexidade O(n); para a incluso a complexidade constante.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Complexidade: Intercalao tima de Listas

Inicializao

Iterao

Finalizao

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
O Algoritmo recebe como entrada n listas (com seus comprimentos)

fornece como sada o par (intercalao das n listas em L, nmero mnimo de comparaes).

A operao fundamental a comparao entre elementos das listas e o tamanho da entrada o par formado pelo tamanho n do multiconjunto L e pelo comprimento m da maior lista em L.

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
O desempenho do algoritmo tem contribuies dadas por suas componentes: Inicializao, Iterao e Finalizao.

Inicializao

Como a inicializao e a finalizao no envolvem comparaes. Logo, desemp[ Inicializao] = 0 desemp[ Finalizaco] = 0.

Finalizao

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
A cada iterao As duas menores listas em L so substitudas por sua intercalao O tamanho de L diminui de 1.
Iterao

A iterao executada para | L | variando de n a 1

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
No nicio da i-sima iterao, | Li | = n - i +1. Portanto temos

Sendo m'i e m"i os tamanhos das duas listas selecionadas na i-sima iterao, temos

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
O desempenho da iterao

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
Tomando m como o mximo dos comprimentos das n listas em L, temos

Pq ?

Complexidade de Algoritmos
Projeto e Anlise de Algoritmos
O desempenho de Interc_Suc_Lst

Vous aimerez peut-être aussi