◼ Ementa abordada:
❑ Conceitos básicos.
❑ Dominação assintótica.
Completo e NP-Difícil.
❑ Classes de problemas.
Introduction To Algorithms
LEISERSON, CHARLES E., RIVEST, RONALD L., CORMEN, THOMAS H.
MIT PRESS.
ISBN: 0262033844.
3ª Edição - 2009
http://www.eng.unt.edu/ian/books/free/lnoa.pdf
Algorithm Design
GOODRICH, MICHAEL T., TAMASSIA, R.
IE-WILEY. ISBN: 0471383651. 1ª Edição - 2001
◼ O que é um algortimo?
❑ Entrada -> processamento (sequencia finita) -> saída
❑ Formado por regras não ambiguas!
◼ Tudo pode ser “resolvido” por um algoritmo?
❑ (computabilidade)
◼ Tudo que é resolvido por um algoritmo é
aceitável?
❑ Complexidade: simplificadamente, a quantidade de
trabalho requerido para solucionar o problema
Aquecendo....
◼ piso(x)
❑ O único inteiro i tal que i ≤ x < i+1. A notação correta
para piso(x) é:
└x┘
Aquecendo....
Aquecendo....
Aquecendo....
Aquecendo....
Aquecendo....
Aquecendo....
Aquecendo....
Prova Matemática
Estratégia:
◼ especificar (definir propriedades)
◼ Tipos de Complexidade
❑ Espacial
◼ Este tipo de complexidade representa, por exemplo,
o espaço de memória usado para executar o
algoritmo.
❑ Temporal
◼ Este tipo de complexidade é o mais usado podendo
dividir-se em dois grupos:
❑ Tempo (real) necessário à execução do algoritmo.
(como podemos medir?)
❑ Número de instruções necessárias à execução.
Análise de Algoritmos
Para avaliar e comparar o desempenho de dois algoritmos:
◼ executar ambos (muitas vezes) para ver qual é mais rápido fornece
indicações sobre o desempenho e informação sobre como efetuar
uma análise mais profunda.
◼ Medidas de Análise
❑ Devem ser independentes da tecnologia
(hardware/software)
❑ Modelos Matemáticos simplificados baseados nos
fatores relevantes:
◼ Tempo de Execução
Uma função que relaciona o tempo de execução com o tamanho de
entrada:
t = F(n)
❑ Conjunto de operações a serem executadas.
❑ Custo associado à execução de cada operação.
◼ Ocupação de Espaço em Memória
Complexidade
◼ Exemplo
❑ Sejam 5 algoritmos A1 a A5 para resolver um mesmo problema, de
complexidades diferentes. (Supomos que uma operação leva 1 ms para ser
efetuada.)
❑ Tk(n) é a complexidade ou seja o número de operações que o algoritmo efetua
para n entradas
n A1 A2 A3 A4 A5
T1(n)= n T2(n)=nlog n T3 (n)=n2 T4 (n)=n3 T5(n)=2n
arrayMax(A, n):
Entrada: array A com n>=1 elementos inteiros
Saida: o maior elemento em A
ORDENA-POR-INSERÇÃO (A, n)
1 para j ← 2 até (*) faça
2 chave ← A[j]
3 i←j−1
4 enquanto i ≥ 1 e A[i] > chave faça
5 A[i+1] ← A[i]
6 i←i−1
7 A[i+1] ← chave