aula 20 exercícios de custos de um...
TRANSCRIPT
![Page 1: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/1.jpg)
1
Aula 20
Exercícios de custos de um algoritmo
MCTA028 – Programação Estruturada
Prof. João Henrique Kleinschmidt
Material elaborado pelo prof. Jesús P. Mena-Chalco
3Q-2018
![Page 2: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/2.jpg)
2
Estudo de algoritmos
O projeto de algoritmos é influenciado pelo estudo de seus
comportamentos.
Os algoritmos podem ser estudados considerando, entre
outros, dois aspectos:
Tempo de execução.
Espaço ocupado (quantidade de memória).
![Page 3: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/3.jpg)
3
Atividade em aula: Ordem de crescimento
![Page 4: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/4.jpg)
4
Atividade em aula: Ordem de crescimento
Linear G1(N) <= 2N-1 Linear G2(N) <= 2N-1 Linearithmic G3(N) <= N(lg(N)+1)
![Page 5: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/5.jpg)
5
G1
Linear G1(N) <= 2N-1
![Page 6: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/6.jpg)
6
G2
Linear G2(N) <= 2N-1
![Page 7: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/7.jpg)
7
G3
Linearithmic G3(N) <= N(lg(N)+1)
![Page 8: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/8.jpg)
8
log(N) , N , N*log(N)
log(n)
n
n*log(n)
![Page 9: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/9.jpg)
9
log(N) , N , N*log(N), N²
n²
![Page 10: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/10.jpg)
10
log(N) , N , N*log(N), N², N³
n³
![Page 11: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/11.jpg)
11 (*) Fonte: http://algs4.cs.princeton.edu/14analysis/
![Page 12: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/12.jpg)
12
N², N , N³
n³
2.8074
n²
n 2.8074
![Page 13: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/13.jpg)
13
Função de complexidade
![Page 14: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/14.jpg)
14
Função de complexidade
Para medir o custo de execução de um algoritmo, é comum
definir uma função de custo ou função de complexidade f.
Função de complexidade de tempo:
mede o tempo necessário para executar um algoritmo
para um problema de tamanho n.
Função de complexidade de espaço:
mede a memória necessária para executar um algoritmo
para um problema de tamanho n.
Utilizaremos f para denotar uma função de complexidade de tempo daqui para frente.
Na realidade, f não representa tempo diretamente, mas o número de vezes que
determinada operação (considerada relevante) é realizada.
![Page 15: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/15.jpg)
15
Exemplo: Maior elemento
Considere o algoritmo para encontrar o maior elemento de
um vetor de inteiros A[0...n-1], para n>=1
![Page 16: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/16.jpg)
16
Exemplo: Maior elemento
![Page 17: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/17.jpg)
17
Exemplo: Maior elemento
Seja f uma função de complexidade tal que f(n) é o
número de comparações entre os elementos de A.
Logo:
![Page 18: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/18.jpg)
18
Exemplo: Maior elemento
![Page 19: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/19.jpg)
19
Tamanho da entrada de dados
A medida do custo de execução de um algoritmo depende
principalmente do tamanho de entrada dos dados.
É comum considerar o tempo de execução de um programa
como uma função do tamanho de entrada.
→ No caso da função para determinar o máximo, o custo é
unifome (n-1) sobre todos os problemas de tamanho n.
→ Já para um algoritmos de ordenação isso não ocorre: se
os dados de entrada estiverem quase ordenados, então o
algoritmo pode ter que trabalhar menos.
![Page 20: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/20.jpg)
20
Melhor caso, pior caso e caso médio
Melhor caso:
Menor tempo de execução sobre todas as entradas de
tamanho n.
Pior caso:
Maior tempo de execução sobre todas as entradas de tamanho
n.
Caso médio (caso esperado):
Média dos tempos de execução de todas as entradas de
tamanho n.
Aqui supõe-se uma distribuição de probabilidades sobre o conjunto de entradas de
tamanho n.
Introdução baseada nas aulas do Prof. Antonio A. F. Loureiro (UFMG)
![Page 21: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/21.jpg)
21
Exemplo: Busca de um elemento
![Page 22: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/22.jpg)
22
Exemplo: Busca de um registro
Seja f uma função de complexidade tal que f(n) é o número
de registros consultados.
Melhor caso:
Pior caso:
Caso médio:
Quando o elemento procurado é o primeiro consultado
Quando o elemento procurado é o último consultado
![Page 23: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/23.jpg)
23
Exemplo: Busca de um registro (caso médio)
Consideremos que toda pesquisa recupera um elemento.
Para recuperar o i-ésimo elemento são necessárias i
comparações.
![Page 24: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/24.jpg)
24
Maior e Menor elementos
Consideremos diferentes versões para o maior e o menor
elemento de um vetor de n inteiros, para n>=1.
A:=
0 1 2 3 4 5 6
![Page 25: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/25.jpg)
25
Maior e Menor elementos (versão 1)
Identifique a função de complexidade f(n) para o vetor A de n elementos:
- Melhor caso:
- Pior caso:
- Caso médio:
![Page 26: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/26.jpg)
26
Maior e Menor elementos (versão 1)
Identifique a função de complexidade f(n) para o vetor A de n elementos:
- Melhor caso:
- Pior caso:
- Caso médio:
![Page 27: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/27.jpg)
27
Maior e Menor elementos (versão 2)
Identifique a função de complexidade f(n) para o vetor A de n elementos:
- Melhor caso:
- Pior caso:
- Caso médio:
![Page 28: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/28.jpg)
28
Maior e Menor elementos (versão 2)
Identifique a função de complexidade f(n) para o vetor A de n elementos:
- Melhor caso:
- Pior caso:
- Caso médio:
Quando os elementos estão em ordem crescente.
![Page 29: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/29.jpg)
29
Maior e Menor elementos (versão 2)
Identifique a função de complexidade f(n) para o vetor A de n elementos:
- Melhor caso:
- Pior caso:
- Caso médio:
Quando os elementos estão em ordem crescente.
Quando os elementos estão em ordem decrescente.
![Page 30: Aula 20 Exercícios de custos de um algoritmoprofessor.ufabc.edu.br/~joao.kleinschmidt/aulas/prog2018/...A medida do custo de execução de um algoritmo depende principalmente do tamanho](https://reader034.vdocuments.mx/reader034/viewer/2022042711/5f6f7c37f298f9370c118d8b/html5/thumbnails/30.jpg)
30
Maior e Menor elementos (versão 2)
Identifique a função de complexidade f(n) para o vetor A de n elementos:
- Melhor caso:
- Pior caso:
- Caso médio:
Quando os elementos estão em ordem crescente.
Quando os elementos estão em ordem decrescente.
Quando metade das vezes max>=A[i]