30
. ATAL Prof Jorge Figueiredo 1 - Aula 1 2003.2 ATAL Análise e Técnicas de Algoritmos Prof. Jorge Figueiredo http://www.dsc.ufcg.edu.br/~abrantes/atal032.html

ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

  • Upload
    vocong

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 1

2003.2ATAL Análise e Técnicas de

Algoritmos

Prof. Jorge Figueiredohttp://www.dsc.ufcg.edu.br/~abrantes/atal032.html

Page 2: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 2

2003.2ATAL Agenda

• Apresentação do curso• Motivação • Introdução informal

Page 3: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 3

2003.2ATAL Apresentação do Curso

• Homepage (http://www.dsc.ufcg.edu.br/~abrantes/atal032.html)

• Lista de discussão ([email protected])• Pré-requisito• Horário e sala de aula• Comportamento do aluno• Referências• Avaliação• Horário de dúvidas

Page 4: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 4

2003.2ATAL Introdução Informal

• O nosso curso é sobre técnicas e análise de algoritmos (computacionais).

• Algoritmo:– Procedimento computacional que toma algum

valor (conjunto) como entrada e produz um valor (conjunto) como saída.

– Não é um programa.– Pode ser implementado de diferentes formas.

Page 5: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 5

2003.2ATAL

Que aspectos são importantes no desenvolvimento e estudo de programas computacionais?

• Modularidade• Desempenho• Corretude• Funcionalidade• Manutenção• Amigável

• Robustez• Simplicidade• Confiabilidade• Escalabilidade• Reuso• Portabilidade

Page 6: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 6

2003.2ATAL

• A análise de algoritmos permite o estudo teórico de programas computacionais:– Desempenho.– Utilização de recursos.– Corretude.

• Estudo de métodos, técnicas, idéias, dicas para desenvolver algoritmos (eficientes).

Page 7: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 7

2003.2ATAL

• Importância do estudo e análise de algoritmos:– Ajuda no entendimento de escalabilidade.– Permite definir o que é viável e o que é impossível.– A matemática utilizada serve como uma linguagem

para lidar com o comportamento de um programa.– Provê meios para comparar diferentes soluções

de um mesmo problema.

Page 8: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 8

2003.2ATAL Problemas Computacionais

• Especifica a relação entre a entrada e a saída desejada.OrdenaçãoEntrada: Uma seqüência de n números ‹a1, a2, ..., an›.Saída: Uma reordenação da seqûëncia de entrada ‹a'1, a'2, ..., a'n›, onde a'1 ≤ a'2 ≤ ... ≤ a'n.

Número PrimoEntrada: Uma número natural q.Saída: sim ou não, dependendo se q é primo.

Page 9: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 9

2003.2ATAL Problemas Computacionais

• Um instância de um problema computacional é um possível valor para a entrada.– ‹45, 7, 13, 23, 2› é uma instância para o problema da

ordenação.– 29 é uma instância para o problema dos números

primos.• Um algoritmo está correto se, para qualquer

instância, ele termina e retorna como saída o valor esperado.

Page 10: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 10

2003.2ATAL Como Descrever Algoritmos?

• Aspectos como precisão e facilidade de expressão são importantes.

• Três formas:– Linguagem natural (português ou inglês).– Pseudo-Código.– Linguagem de programação.

Sugestão: Usar as convenções definidas pelo Prof. Daltonhttp://www.dsc.ufcg.edu.br/~dalton/2002.2/edados/convencoes

Page 11: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 11

2003.2ATAL Insertion Sort

A:1 j n

ORDENADO chave

InsertionSort(A, n)for j← 2 to n do

chave ← A[j]► insere A[j] na parte ordenada A[1..j-1]i ← j – 1while i > 0 e A[i] > chave do

A[i + 1] ← A[i]i ← i – 1

A[i + 1] ← chave

Page 12: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 12

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

Page 13: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 13

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

Page 14: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 14

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

Page 15: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 15

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

Page 16: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 16

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

Page 17: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 17

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

Page 18: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 18

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

Page 19: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 19

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

Page 20: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 20

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

2 7 13 23 45

Page 21: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 21

2003.2ATAL Tempo de Execução

• O tempo de execução de um algoritmo depende da cara da entrada.

• Na análise do tempo de execução, a parametrização é baseada no tamanho da entrada.

• Na análise de algoritmos, é uma forma de definir eficiência.

Page 22: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 22

2003.2ATAL Tempo de Execução

• Tipos de análise:– Pior caso:

• Maior tempo de execução de um algoritmo para qualquer entrada de tamanho n.

• É o tipo mais utilizado. Todos gostam de garantia.

– Caso médio:• Tempo esperado de um algoritmo sobre todas as

entradas de tamanho n.• Necessidade de usar distribuição estatística.

– Melhor caso:• Raramente é feita.

Page 23: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 23

2003.2ATAL Independência de Máquina

• Para comparar os diferentes algoritmos, de forma justa, é necessário definir um modelo abstrato de máquina.

• Máquina de Acesso Aleatório:– Um único processador genérico.– Instruções executadas sequencialmente, sem

operações concorrentes.– Memória ilimitada.– Instrução básica toma uma unidade de tempo.

Page 24: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 24

2003.2ATAL Análise de Algoritmos

• Forma de fazer análise de tempo de execução é contar o número de instruções executadas.

• Na prática, em algoritmos reais, essa não é uma boa alternativa.

• Abordagem que estuda a ordem de crescimento de funções que identificam os algoritmos.

Análise AssintóticaAnálise Assintótica

Page 25: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 25

2003.2ATAL Análise do Insertion Sort

• Pior caso:– Entrada em ordem reversa.– O(n2)

• Caso médio:– O(n2)

• Pior caso:– Entrada ordenada.– O(n)

Page 26: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 26

2003.2ATAL Corretude de Algoritmos

• Provar corretude não é trivial.• Utilizamos o conceito de indução

matemática.• Em muitos casos, verificação através da

propriedade de invariante de laço:– Inicialização.– Manutenção.– Término.

Page 27: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 27

2003.2ATAL Corretude do Insertion Sort

• É um algoritmo não recursivo.• Verificação através do invariante de laço:

– Os elementos A[1, j-1] estão ordenados.

Page 28: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 28

2003.2ATAL Mais Objetivos do Curso

• Como expressar algoritmos.• Como analisar algoritmos.• Como validar algoritmos.• Como criar algoritmos.• Como reutilizar algoritmos.• Como aplicar algoritmos bastante

conhecidos

Page 29: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 29

2003.2ATAL Razões para o estudo de

Algoritmos• Evitar reinventar a roda:

– Existem bons algoritmos que solucionam problemas importantes.

• Ajudar no desenvolvimento de seus algoritmos:– Nem sempre existe um algoritmo de prateleira que

sirva para resolver o seu problema.– O conhecimento de algoritmos bem estabelecidos é

fonte de inspiração.– Muitos dos princípios de projetos de algoritmos são

úteis em todos os problemas de programação.

Page 30: ATAL Análise e Técnicas de - dsc.ufcg.edu.brabrantes/CursosAnteriores/ATAL032/Slides/Aula... · ATAL Razões para o estudo de Algoritmos •Evitar reinventar a roda: –Existem

– . ATAL Prof Jorge Figueiredo 1 - Aula 30

2003.2ATAL Razões para o estudo de

Algoritmos• Ajudar a entender ferramentas que utilizam

algoritmos particulares.– Por exemplo, ferramentas de compressão.

• Útil conhecer as técnicas de algoritmos empregadas para resolver determinadas classes de problemas.