Beruflich Dokumente
Kultur Dokumente
Algoritmos
O que so algoritmos ?
So procedimentos computacionais bem definidos que toma um ou um conjunto de valores como entrada retorna como sada um valor ou um conjunto de valores como sada. [Cormen, 2012] Qual o papel deles na computao ?
Algortimos
Consideraes
Um algoritmo dito correto se, para cada instncia de entrada, ele pra com a sada correta. Dizemos que um algoritmo correto resolve o problema computacional dado.
Algoritmos
Exemplos:
Algoritmos
Exemplos
Conceitos bsicos
Instncia
Consiste na entrada (que satisfaz a quaisquer restries impostas no enunciado do problema) necessria para se calcular uma soluo para o problema . [Cormen, 2012]
Estrutura de dados
Uma estrutura de dados um meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificaes. Nenhuma estrutura de dados nica funciona bem para todos os propsitos, e assim importante conhecer os pontos fortes e as limitaes de vrias delas.
Conceitos bsicos
Percorre um vetor de elementos da esquerda para a direita deixando os elementos mais a esquerda ordenados. Toma-se um arranjo de tamanho n que deve ser ordenado com base em um critrio pr-definido.
Tomares como exemplificao o algortimo insertionsort. Ordenar o conjunto A =(5,2,4,6,1,3).
Conceitos bsicos
Conceitos bsicos
Anlise de Algoritmos
Estuda o comportamento de algoritmos para soluo de certos problemas computacionais recorrentes em uma grande variedade de aplicaes.
Dois aspectos so considerados importantes:
Tempo de execuo
Espao ocupado
Eficcia x Eficicia
Eficcia x Eficicia
Eficincia
Relao entre os resultados obtidos e os recursos empregados no processo Um algoritmo eficiente atinge os objetivos da melhor forma possvel (Performance, Desempenho)
Custo de execuo
Um algoritmo mais eficiente que outro quando apresenta um menor custo computacional de execuo levando-se em considerao os fatores crticos do problema.
Custos computacionais tpicos:
Tempo de Execuo Utilizao de Memria Principal Utilizao de Armazenamento de Massa
Custo de execuo
Vrios fatores podem aumentar ou diminuir os custos computacionais de um algoritmo, impactando diretamente em seu desempenho (eficincia)
Por exemplo: No problema da ordenao Qual a quantidade de nmeros a ordenar? (Tamanho da Entrada ou Tamanho da Instncia) Em que extenso esses nmeros j esto ordenados? Onde esses nmeros esto armazenados? E onde sero manipulados?
Custo de execuo
Tamanho da entrada
Um dos principais fatores que afetam o desempenho de um algoritmo, uma vez que um computador possui capacidade de processamento limitada O tamanho da instncia (n) de um problema a quantidade de dados necessria para descrever a instncia Permite estimar o quanto um determinado problema desafiador em termos de custos computacionais
Anlise de complexidade
Quando estudamos os custos computacionais de execuo de um algoritmo ou de uma classe de algoritmos, para determinar seu desempenho, dizemos que estamos analisando a complexidade desse algoritmo, ou dessa classe de algoritmos.
Dois tipos de Anlise de Complexidade
Complexidade Temporal depende do tempo para executar um algoritmo de tamanho n Complexidade Espacial quantidade de memria necessria para executar o algoritmo de tamanho n.
Anlise de complexidade
Ex: Considere algoritmo para encontrar o maior elemento de um vetor de inteiro , v[n] onde n o tamanho do vetor.
Sua funo de complexidade denotada por :
f(n)= n -1, para n > 0
A funo de complexidade calcula o nmero de vezes que uma determinada operao executada.
Anlise de complexidade
Ex:
public classe Max{
}
}
Anlise de complexidade
O teorema nos diz que, se o nmero de comparaes for utilizado como medida de custa, ento o mtodo max da classe Max timo.
Consideraes O tamanho da entrada pode afetar o custo de execuo Precisamos distinguir trs cenrios: melhor caso, pior caso e caso mdio.
Anlise de complexidade
O melhor caso
Corresponde ao menor tempo de execuo sobre todas as possveis entradas.
O pior caso
Corresponde ao maior tempo de execuo sobre todas as entradas de tamanho n
Anlise de complexidade
Anlise de complexidade
Seja f uma funo de complexidade tal que f(n) nmero de registros consultados no arquivo, isto , nmero de vezes que a chave de consulta comparada com a chave de cada registro.
Melhor caso : f(n) = 1
Anlise de complexidade
Encontrar o maior e o menor elementos de um vetor de inteiros v[n]. Representado pela funo:
f(n) = 2(n-1), para n > 0.
Anlise de complexidade
Encontrar o maior e o menor elementos de um vetor de inteiros v[n]. Representado pela funo:
f(n) = 2(n-1), para n > 0.
Anlise de complexidade