Você está na página 1de 14

Análise e Sistemas de Algoritmos

Sidnei Cruz
Departamento de Engenharias e Ciências do Mar
Uni-CV

2013/2014

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 1 / 14


Classicação de Algoritmos
Para além da classe de complexidade e das propriedades de correcção, os
algoritmos podem também ser estudados - e classicados - relativamente à
categoria de problemas a que dizem respeito:

Pesquisa

Ordenação

Problemas de grafos

Problemas combinatoriais

Problemas de cálculo numérico.

···

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 2 / 14


Classicação de Algoritmos (cont.)
Uma outra forma de classicar os algoritmos é de acordo com a estratégia
que utilizam para alcançar uma solução:

Incremental (iterativa) - exemplo o insertion sort.

Divisão e Conquista (divide-and-conquer ) - exemplos os algoritmos


mergesort e quicksort.

Algoritmos Gananciosos (greedy) - Um algoritmo diz-se greedy quando


a cada passo escolhe a melhor opção segundo um determinado critério
local. É usado para resolver muitos problemas de optimização(i.e.,
minimizar ou maximizar qualquer coisa).
veremos alguns algoritmos de grafos e.g. Minimum Spanning Tree
(Árvore Geradora Mínima).

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 3 / 14


Classicação de Algoritmos (cont.)

Programação Dinâmica - Uma forma de resolver problemas recursivo


de maneira a evitar o cálculo repetido de valores. Consiste em calcular
os valores de baixo para cima (button - top) e utilizar uma sequência
para manter os valores entretanto calculados.
veremos o algoritmo de grafos All-Pairs-Shortest-Path (Todos os pares
de caminhos mais curtos).

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 4 / 14


Divisão e Conquista

Dividir o problema original em um determinado número de


subproblemas independentes

Conquistar os subproblemas, resolvendo-os recursivamente até obter o


caso base

Combinar as soluções dadas aos subproblemas, a m de formar a


solução do problema original.

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 5 / 14


Recorrências

Utilizada no cálculo do tempo de execução dos algoritmos recursivos.


Uma recorrência é uma equação ou desigualdade que descreve uma
função em termos de seu valor em entradas menores.

Exemplo Simples
Factorial(n)
if n = 0
return 1
else
return n x Factorial(n-1)

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 6 / 14


Métodos de Resolução de Recorrências

Método de Substituição método mais geral, mas é necessário


advinhar a forma da solução.

Método de Expansão da Árvore de Recorrência método pouco


formal, mas bastante intuitivo.

Teorema Mestre cobre bastante casos, mas não todos.

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 7 / 14


Método de Substituição

O método da substituição envolve duas etapas:

1 pressupõe-se um limite hipotético.

2 usa-se indução matemática para provar que a suposição está correta.

Aplica-se este método em casos que é fácil pressupor a forma de


resposta.

Pode ser usado para estabelecer limites superiores ou inferiores.

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 8 / 14


Método de Substituição

Exemplo
T (n) = 4T ( n2 ) + n

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 9 / 14


Método de Expansão da Árvore de Recorrência

Uma árvore de recorência apresenta uma forma bem intuitiva para a análise
de complexidade de algoritmos recursivos.
É normalmente usado para adivinharmos a solução (que depois provamos
pelo método de substituição).

Numa árvore de recorrência cada nó representa o custo de um único


subproblema da respectiva chamada recursiva

Somam-se os custos de todos os nós de um mesmo nível, para obter o


custo daquele nível

Somam-se os custos de todos os níveis para obter o custo da árvore

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 10 / 14


Método de Expansão da Árvore de Recorrência

Exemplo
Θ(1), se n=1

T (n ) = 2T (n/2) + Θ(n), se n>1

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 11 / 14


Método de Expansão da Árvore de Recorrência

Resumindo o Método
Desenha a árvore de recursão
Determina:
I o número de níveis
I o número de nós e o custo por nível
I o número de folhas

Soma os custos dos níveis e o custo das folhas


(Eventualmente) Verica por substituição

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 12 / 14


Teorema de Mestre
Permite resolver recorrências da forma T (n) = aT ( bn ) + f (n), a ≥ 1, b ≥ 1
e f(n) é uma função assimptoticamente positiva
a subproblemas, cada um com dimensão bn
Denição (Teorema Mestre)
Sejam a ≥ 1, b ≥ 1 constantes, seja f (n) uma função e seja T(n) denido
por T (n) = aT ( bn ) + f (n). Então T(n) é limitado assimptoticamente da
seguinte forma:
1 Se f (n) = O (nlogb a− ) para  > 0, então T(n) = Θ(nlogb a )
2 Se f (n) = Θ(nlogb a ), então T(n) = Θ(nlogb a lgn)
3 Se f (n) = Ω(nlogb a+ ) para  > 0, e a.f( bn ) < c.f(n) para alguma
constante c < 1 e n sucientemente grande, então T(n) = Θ(f (n))

Nos casos 1 e 3 f(n) deve ser polinomialmente menor, resp. maior que
nlogb a , ou seja, f(n) difere assimptoticamente por um fator n para um
 > 0.
Os três casos não abrangem todas as possibilidades.
S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 13 / 14
Teorema de Mestre - Exemplos

1 T(n) = 9T(n/3) + n

2 T(n) = T(2n/3) + 1

3 T(n) = 3T(n/3) + n2

S.Cruz (DECM/Uni-CV) Análise e Sistemas de Algoritmos (ASA) 2013/2014 14 / 14

Você também pode gostar