A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Análise de Algoritmo Profº Me. Jeferson Bussula Pinheiro

Apresentações semelhantes


Apresentação em tema: "Análise de Algoritmo Profº Me. Jeferson Bussula Pinheiro"— Transcrição da apresentação:

1 Análise de Algoritmo Profº Me. Jeferson Bussula Pinheiro
Kroton Educacional Universidade Anhanguera-UNIDERP (Unidade Matriz)

2 Introdução Técnica de Projeto de Algoritmos utilizada para Problemas de Otimização; Ideia: Quando é necessário fazer uma escolha durante o processo de otimização, escolher a opção que pareça ser a melhor no momento. Ou seja, fazer a escolha ótima local, esperando que isto leve à solução ótima global.

3 Técnicas de Projeto de Algoritmo
Existem muitas maneiras de Projetar um algoritmo: Abordagem Incremental; Abordagem Dividir para Conquistar; Abordagem Programação Dinâmica; Abordagem Algoritmos Gulosos; A abordagem Incremental foi utilizada para implementar o algoritmo de ordenação por inserção;

4 Abordagem Incremental
A análise de tempo considera a entrada, no caso o tamanho do vetor A que será ordenado pois estamos interessados no pior caso para cada n. Para cada "tamanho" n da "entrada", escolha um vetor A que force o algoritmo a consumir o máximo de tempo, que podemos identificar com f(n). Em outras palavras, para cada n fixo, o algoritmo consome tempo f(n) para algum A[1..n]. Resumindo... A abordagem Incremental foi utilizada para implementar o algoritmo de ordenação por inserção.

5 Abordagem Dividir para Conquistar
Enfoque Dividir o problema em várias partes menores e mais simples e então conquistá-lo(Resolve-lo), unindo a resolução de cada parte menor. Na maioria das situações, por exemplo problema de ordenação, apresenta uma complexidade menor, no pior caso, que a abordagem incremental.

6 Abordagem Dividir para Conquistar
Recursividade Técnica de desenvolvimento de algoritmo, em que um algoritmo chama a si próprio para resolver um problema. n n-1

7 Abordagem Programação Dinâmica
Programação Dinâmica resolve cada subproblema uma só vez e então grava sua resposta em uma tabela. Exemplo: A divisão de um problema de tamanho n resulte em n subproblemas de tamanho n-1. Uma solução utilizando Divisão e Conquista iria gastar um tempo absurdo (Exponencial). n n-1

8 Abordagem Programação Dinâmica
É tipicamente aplicada a problemas de otimização. Geralmente há várias soluções possíveis. Cada solução tem um valor, deve-se procurar a solução com o valor ótimo (mínimo ou máximo). Solução 1 Descobrir uma rota entre Campo Grande e Curitiba Solução 2 n soluções Solução 3 Solução 4

9 Algoritmos gulosos Para resolver um problema, um algoritmo guloso escolhe, em cada iteração, o objeto mais apetitoso que vê pela frente. (A definição de apetitoso é estabelecida a priori.)  O objeto escolhido passa a fazer parte da solução que o algoritmo constrói. Característica Não preocupa-se com as consequências que essas decisões terão no futuro. São muito rápidos Soluções gulosas são um tanto raros

10 Gula Vs Programação Dinâmica
Às vezes é difícil distinguir um algoritmo guloso de um algoritmo de programação dinâmica. A seguinte lista grosseira de características pode ajudar. Um algoritmo guloso.

11 Algoritmo guloso Abocanha a alternativa mais promissora (sem explorar as outras), É muito rápido, Nunca se arrepende de uma decisão já tomada, Não tem prova de correção simples. Um algoritmo de programação dinâmica Explora todas as alternativa (mas faz isso de maneira eficiente), É um tanto lento, A cada iteração pode se arrepender de decisões tomadas anteriormente (ou seja, pode rever o ótimo corrente), Tem prova de correção simples.

12 Jeferson Bussula Pinheiro
Obrigado!


Carregar ppt "Análise de Algoritmo Profº Me. Jeferson Bussula Pinheiro"

Apresentações semelhantes


Anúncios Google