mc-202 noções de eficiência de algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • linha...
TRANSCRIPT
![Page 1: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/1.jpg)
MC-202Noções de Eficiência de Algoritmos
Rafael C. S. [email protected]
Universidade Estadual de Campinas
2º semestre/2019
![Page 2: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/2.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento
• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 3: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/3.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento
• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 4: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/4.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...
• do computador onde ele for rodado
– computador rápido vs lento
• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 5: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/5.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 6: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/6.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento
• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 7: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/7.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 8: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/8.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez
– no pior caso, a linha 4 é executada n vezes• do valor de n
– n = 10 vs n = 10.000
2
![Page 9: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/9.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 10: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/10.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 11: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/11.jpg)
Busca sequencial e consumo de tempoQuantos segundos demora para executar a seguinte função?
1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Depende...• do computador onde ele for rodado
– computador rápido vs lento• da posição de x no vetor
– no melhor caso, a linha 4 é executada 1 vez– no pior caso, a linha 4 é executada n vezes
• do valor de n
– n = 10 vs n = 10.000
2
![Page 12: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/12.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:
• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 13: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/13.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado
• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 14: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/14.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 15: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/15.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo
• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 16: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/16.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara
• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 17: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/17.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 18: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/18.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística
– Precisamos fazer suposições sobre os dados de entrada
3
![Page 19: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/19.jpg)
Busca sequencial e consumo de tempo
Queremos analisar algoritmos:• Independentemente do computador onde ele for rodado• Em função do valor de n (a quantidade de dados)
Em geral, queremos analisar o pior caso do algoritmo• A análise do melhor caso pode ser interesse, mas é rara• A análise do caso médio é mais difícil
– Normalmente é uma análise probabilística– Precisamos fazer suposições sobre os dados de entrada
3
![Page 20: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/20.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes
• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes
• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 21: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/21.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:
• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes
• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes
• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 22: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/22.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)
• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes
• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes
• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 23: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/23.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes
• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 24: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/24.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes
• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes
• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 25: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/25.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 26: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/26.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes
• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 27: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/27.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes• Linha 5: tempo c5 (acesso e return)
• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 28: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/28.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 29: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/29.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 30: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/30.jpg)
Busca sequencial e consumo de tempo1 int busca(int *v, int n, int x) {2 int i;3 for (i = 0; i < n; i++)4 if (v[i] == x)5 return i;6 return -1;7 }
Consumo de tempo por linha no pior caso:• Linha 2: tempo c2 (declaração de variável)• Linha 3: tempo c3 (atribuições, acessos e comparação)
– No pior caso, essa linha é executada n + 1 vezes• Linha 4: tempo c4 (acessos, comparação e if)
– No pior caso, essa linha é executada n vezes• Linha 5: tempo c5 (acesso e return)• Linha 6: tempo c6 (return)
O tempo de execução é menor ou igual ac2 + c3 · (n + 1) + c4 · n + c5 + c6
4
![Page 31: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/31.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 32: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/32.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador
• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 33: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/33.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 34: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/34.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 35: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/35.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 36: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/36.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
= c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 37: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/37.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 38: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/38.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n
≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 39: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/39.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n
= d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 40: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/40.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 41: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/41.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra
5
![Page 42: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/42.jpg)
Busca sequencial e consumo de tempoO tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6
Cada ci não depende de n, depende apenas do computador• Leva um tempo constante
Sejam a := c2 + c3 + c5 + c6, b := c3 + c4 e d := a + b
Se n ≥ 1, temos que o tempo de execução é menor ou igual a
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = c2 + c3 + c5 + c6 + (c3 + c4) · n
= a + b · n ≤ a · n + b · n = d · n
Isto é, o crescimento do tempo é linear em n
• Se n dobra, o tempo de execução praticamente dobra5
![Page 43: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/43.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...
6
![Page 44: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/44.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...
• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...
6
![Page 45: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/45.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...
6
![Page 46: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/46.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...
6
![Page 47: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/47.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...
6
![Page 48: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/48.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...
6
![Page 49: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/49.jpg)
Notação AssintóticaComo vimos, existe uma constante d tal que, para n ≥ 1,
c2 + c3 · (n + 1) + c4 · n + c5 + c6 ≤ dn
d não interessa tanto, depende apenas do computador...• Estamos preocupados em estimar
O tempo do algoritmo é da ordem de n
• A ordem de crescimento do tempo é igual a de f(n) = n
Dizemos que
c2 + c3 · (n + 1) + c4 · n + c5 + c6 = O(n)
Veremos uma definição formal de O(·) em breve...6
![Page 50: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/50.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n
• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 51: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/51.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?
• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n
• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 52: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/52.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n
• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n
• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 53: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/53.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n
• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 54: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/54.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 55: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/55.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n
• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 56: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/56.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 57: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/57.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 58: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/58.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:
• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 59: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/59.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 60: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/60.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct
≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 61: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/61.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct ≤ c + c lg n
≤ 2c lg n = O(lg n)
7
![Page 62: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/62.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct ≤ c + c lg n ≤ 2c lg n
= O(lg n)
7
![Page 63: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/63.jpg)
Busca Binária1 int busca_binaria(int *dados, int l, int r, int x) {2 int m = (l + r) / 2;3 if (l > r)4 return -1;5 if (dados[m] == x)6 return m;7 else if (dados[m] < x)8 return busca_binaria(dados, m + 1, r, x);9 else
10 return busca_binaria(dados, l, m - 1, x);11 }
Se realizarmos t chamadas, quanto vale t?• primeiro chamamos para n• depois para n/2, n/4, n/8, ..., n/2t−1
• no pior caso, só paramos quando n/2t < 1 ≤ n/2t−1
– Ou seja, t ≤ 1 + lg n• gastamos um tempo constante c em cada chamada
– operações aritméticas, comparações e return
Para n ≥ 1, o consumo de tempo é no máximo:• ct ≤ c + c lg n ≤ 2c lg n = O(lg n)
7
![Page 64: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/64.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo
• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos
– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 65: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/65.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos
– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 66: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/66.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)
– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos
– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 67: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/67.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos
– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 68: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/68.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos
– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 69: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/69.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos– Busca linear é O(n) e busca binária é O(lg n)
– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 70: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/70.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)
– Prova formal que um algoritmo é melhor que o outro
8
![Page 71: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/71.jpg)
Objetivos
Temos dois objetivos para analisar algoritmo• Entender o tempo de execução de um algoritmo
– Exemplo: busca linear é O(n)– Vamos dizer que o algoritmo é O(f(n))
• Comparar dois algoritmos– Busca linear é O(n) e busca binária é O(lg n)– Veremos que um algoritmo O(lg n) é melhor que um O(n)– Prova formal que um algoritmo é melhor que o outro
8
![Page 72: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/72.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 73: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/73.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 74: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/74.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 75: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/75.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 76: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/76.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 77: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/77.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 78: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/78.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos
• f(n) = dn e g(n) = c + c lg n
9
![Page 79: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/79.jpg)
Comparando funções
Queremos comparar duas funções f e g
• Queremos entender a velocidade de crescimento de f
• Queremos dizer que f cresce mais lentamente ou igual a g
f pode ser o tempo de execução do algoritmo e g uma funçãomais simples de entender
• f(n) = c2 + c3 · (n + 1) + c4 · n + c5 + c6 e g(n) = n
• f(n) = 3n2 + 10 lg n e g(n) = n2
f e g podem ser os tempos de execução de dois algoritmos• f(n) = dn e g(n) = c + c lg n
9
![Page 80: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/80.jpg)
Primeira IdeiaComparar funções verificando se f(n) ≤ g(n) para todo n
Problema: 10n > n2 para n < 10
0 10 20 300
200
400
600
800 10n
n2
Solução: Ao invés de comparar todo n, comparar apenas nsuficientemente grande
• Para todo n ≥ n0 para algum n0
10
![Page 81: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/81.jpg)
Primeira IdeiaComparar funções verificando se f(n) ≤ g(n) para todo n
Problema: 10n > n2 para n < 10
0 10 20 300
200
400
600
800 10n
n2
Solução: Ao invés de comparar todo n, comparar apenas nsuficientemente grande
• Para todo n ≥ n0 para algum n0
10
![Page 82: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/82.jpg)
Primeira IdeiaComparar funções verificando se f(n) ≤ g(n) para todo n
Problema: 10n > n2 para n < 10
0 10 20 300
200
400
600
800 10n
n2
Solução: Ao invés de comparar todo n, comparar apenas nsuficientemente grande
• Para todo n ≥ n0 para algum n0
10
![Page 83: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/83.jpg)
Primeira IdeiaComparar funções verificando se f(n) ≤ g(n) para todo n
Problema: 10n > n2 para n < 10
0 10 20 300
200
400
600
800 10n
n2
Solução: Ao invés de comparar todo n, comparar apenas nsuficientemente grande
• Para todo n ≥ n0 para algum n0
10
![Page 84: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/84.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n• Mas a velocidade de crescimento das funções é o mesmo• Constantes dependem da máquina onde executamos• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 85: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/85.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n
• Mas a velocidade de crescimento das funções é o mesmo• Constantes dependem da máquina onde executamos• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 86: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/86.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n• Mas a velocidade de crescimento das funções é o mesmo
• Constantes dependem da máquina onde executamos• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 87: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/87.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n• Mas a velocidade de crescimento das funções é o mesmo• Constantes dependem da máquina onde executamos
• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 88: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/88.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n• Mas a velocidade de crescimento das funções é o mesmo• Constantes dependem da máquina onde executamos• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 89: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/89.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n• Mas a velocidade de crescimento das funções é o mesmo• Constantes dependem da máquina onde executamos• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 90: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/90.jpg)
Segunda IdeiaComparar funções verificando se f(n) ≤ g(n) para n ≥ n0
Problema: n + 5 > n para todo n• Mas a velocidade de crescimento das funções é o mesmo• Constantes dependem da máquina onde executamos• Vamos ignorar constantes e termos menos importantes
0 10 20 300
10
20
30n + 5
n
5n/4
Solução: Ao invés de comparar f com g, comparar com c · g, ondec é uma constante
11
![Page 91: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/91.jpg)
Notação Assintótica
Dizemos que uma função f(n) = O(g(n)) se
• existe uma constante c
• existe uma constante n0
tal quef(n) ≤ c · g(n), para todo n ≥ n0
f(n) = O(g(n)) se, para todo n suficientemente grande, f(n) émenor ou igual a um múltiplo de g(n)
12
![Page 92: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/92.jpg)
Notação Assintótica
Dizemos que uma função f(n) = O(g(n)) se• existe uma constante c
• existe uma constante n0
tal quef(n) ≤ c · g(n), para todo n ≥ n0
f(n) = O(g(n)) se, para todo n suficientemente grande, f(n) émenor ou igual a um múltiplo de g(n)
12
![Page 93: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/93.jpg)
Notação Assintótica
Dizemos que uma função f(n) = O(g(n)) se• existe uma constante c
• existe uma constante n0
tal quef(n) ≤ c · g(n), para todo n ≥ n0
f(n) = O(g(n)) se, para todo n suficientemente grande, f(n) émenor ou igual a um múltiplo de g(n)
12
![Page 94: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/94.jpg)
Notação Assintótica
Dizemos que uma função f(n) = O(g(n)) se• existe uma constante c
• existe uma constante n0
tal que
f(n) ≤ c · g(n), para todo n ≥ n0
f(n) = O(g(n)) se, para todo n suficientemente grande, f(n) émenor ou igual a um múltiplo de g(n)
12
![Page 95: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/95.jpg)
Notação Assintótica
Dizemos que uma função f(n) = O(g(n)) se• existe uma constante c
• existe uma constante n0
tal quef(n) ≤ c · g(n), para todo n ≥ n0
f(n) = O(g(n)) se, para todo n suficientemente grande, f(n) émenor ou igual a um múltiplo de g(n)
12
![Page 96: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/96.jpg)
Notação Assintótica
Dizemos que uma função f(n) = O(g(n)) se• existe uma constante c
• existe uma constante n0
tal quef(n) ≤ c · g(n), para todo n ≥ n0
f(n) = O(g(n)) se, para todo n suficientemente grande, f(n) émenor ou igual a um múltiplo de g(n)
12
![Page 97: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/97.jpg)
Exemplo: 2n + 120 = O(n)
Basta escolher, por exemplo, c = 10 e n0 = 15
0 5 10 15 20 25 300
100
200
30010n
2n + 120
13
![Page 98: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/98.jpg)
Exemplo: 2n + 120 = O(n)Basta escolher, por exemplo, c = 10 e n0 = 15
0 5 10 15 20 25 300
100
200
30010n
2n + 120
13
![Page 99: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/99.jpg)
Exemplo: 3n2 + n + 5 = O(n2)
Basta escolher, por exemplo, c = 4 e n0 = 4
0 2 4 6 8 100
100
200
300
4004n2
3n2 + n + 5
14
![Page 100: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/100.jpg)
Exemplo: 3n2 + n + 5 = O(n2)Basta escolher, por exemplo, c = 4 e n0 = 4
0 2 4 6 8 100
100
200
300
4004n2
3n2 + n + 5
14
![Page 101: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/101.jpg)
Outros exemplos
1 = O(1)
1.000.000 = O(1)
5n + 2 = O(n)
5n2 + 5n + 2 = O(n2)
log2 n = O(log10 n)
log10 n = O(log2 n)
15
![Page 102: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/102.jpg)
Outros exemplos
1 = O(1)
1.000.000 = O(1)
5n + 2 = O(n)
5n2 + 5n + 2 = O(n2)
log2 n = O(log10 n)
log10 n = O(log2 n)
15
![Page 103: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/103.jpg)
Outros exemplos
1 = O(1)
1.000.000 = O(1)
5n + 2 = O(n)
5n2 + 5n + 2 = O(n2)
log2 n = O(log10 n)
log10 n = O(log2 n)
15
![Page 104: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/104.jpg)
Outros exemplos
1 = O(1)
1.000.000 = O(1)
5n + 2 = O(n)
5n2 + 5n + 2 = O(n2)
log2 n = O(log10 n)
log10 n = O(log2 n)
15
![Page 105: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/105.jpg)
Outros exemplos
1 = O(1)
1.000.000 = O(1)
5n + 2 = O(n)
5n2 + 5n + 2 = O(n2)
log2 n = O(log10 n)
log10 n = O(log2 n)
15
![Page 106: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/106.jpg)
Outros exemplos
1 = O(1)
1.000.000 = O(1)
5n + 2 = O(n)
5n2 + 5n + 2 = O(n2)
log2 n = O(log10 n)
log10 n = O(log2 n)
15
![Page 107: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/107.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante
– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 108: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/108.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n
– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 109: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/109.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável
– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 110: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/110.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /
– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 111: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/111.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)
– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 112: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/112.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)
– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 113: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/113.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 114: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/114.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico
– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 115: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/115.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico– lg indica log2
– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 116: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/116.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico– lg indica log2– quando n dobra, o tempo aumenta em uma constante
– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 117: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/117.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária
– Outros exemplos durante o curso
16
![Page 118: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/118.jpg)
Nomenclatura e consumo de tempo
• O(1): tempo constante– não depende de n– Ex: atribuição e leitura de uma variável– Ex: operações aritméticas: +, -, *, /– Ex: comparações (<, <=, ==, >=, >, !=)– Ex: operadores booleanos (&&, &, ||, |, !)– Ex: acesso a uma posição de um vetor
• O(lg n): logarítmico– lg indica log2– quando n dobra, o tempo aumenta em uma constante– Ex: Busca binária– Outros exemplos durante o curso
16
![Page 119: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/119.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):
– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 120: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/120.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra
– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):
– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 121: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/121.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear
– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):
– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 122: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/122.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor
– Ex: Produto interno de dois vetores
• O(n lg n):
– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 123: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/123.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):
– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 124: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/124.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):
– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 125: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/125.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra
– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 126: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/126.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 127: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/127.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático
– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 128: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/128.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático– quando n dobra, o tempo quadriplica
– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 129: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/129.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 130: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/130.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico
– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 131: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/131.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico– quando n dobra, o tempo octuplica
– Ex: multiplicação de matrizes n × n
17
![Page 132: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/132.jpg)
Nomenclatura e consumo de tempo• O(n): linear
– quando n dobra, o tempo dobra– Ex: Busca linear– Ex: Encontrar o máximo/mínimo de um vetor– Ex: Produto interno de dois vetores
• O(n lg n):– quando n dobra, o tempo um pouco mais que dobra– Ex: algoritmos de ordenação que veremos
• O(n2): quadrático– quando n dobra, o tempo quadriplica– Ex: BubbleSort, SelectionSort e InsertionSort
• O(n3): cúbico– quando n dobra, o tempo octuplica– Ex: multiplicação de matrizes n × n
17
![Page 133: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/133.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 134: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/134.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)
• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 135: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/135.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 136: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/136.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...
• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 137: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/137.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...
• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 138: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/138.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 139: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/139.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”
• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 140: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/140.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 141: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/141.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”
• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 142: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/142.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)
• mas não precisamos desse formalismo em MC202
18
![Page 143: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/143.jpg)
Um cuidadoO que significa dizer que o tempo de um algoritmo é O(n3)?
• Para instâncias grandes (n ≥ n0)• O tempo é menor ou igual a um múltiplo de n3
Pode ser que o tempo do algoritmo seja 2n2...• 2n2 = O(n3), mas...• 2n2 = O(n2)
Ou seja, podemos ter feito uma análise “folgada”• achamos que o algoritmo é muito pior do que é realmente
No curso, não faremos análises “folgadas”• existe uma maneira formal de lidar com isso (notação Θ)• mas não precisamos desse formalismo em MC202
18
![Page 144: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/144.jpg)
Exercício
1. Mostre que n + lg n = O(n)
2. Mostre que 15n = O(n lg n) mas que n lg n ̸= O(n)
– Essa análise é folgada, já que 15n = O(n)
3. Mostre que 42n = O(n2) mas que n2 ̸= O(42n)
– Essa análise é folgada, já que 42n = O(n)
19
![Page 145: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/145.jpg)
Exercício
1. Mostre que n + lg n = O(n)2. Mostre que 15n = O(n lg n) mas que n lg n ̸= O(n)
– Essa análise é folgada, já que 15n = O(n)3. Mostre que 42n = O(n2) mas que n2 ̸= O(42n)
– Essa análise é folgada, já que 42n = O(n)
19
![Page 146: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/146.jpg)
Exercício
1. Mostre que n + lg n = O(n)2. Mostre que 15n = O(n lg n) mas que n lg n ̸= O(n)
– Essa análise é folgada, já que 15n = O(n)
3. Mostre que 42n = O(n2) mas que n2 ̸= O(42n)
– Essa análise é folgada, já que 42n = O(n)
19
![Page 147: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/147.jpg)
Exercício
1. Mostre que n + lg n = O(n)2. Mostre que 15n = O(n lg n) mas que n lg n ̸= O(n)
– Essa análise é folgada, já que 15n = O(n)3. Mostre que 42n = O(n2) mas que n2 ̸= O(42n)
– Essa análise é folgada, já que 42n = O(n)
19
![Page 148: MC-202 Noções de Eficiência de Algoritmosrafael/cursos/2s2019/mc202/slides/unid… · • Linha 2: tempo c2 (declaração de variável) • Linha 3: tempo c3 (atribuições, acessos](https://reader035.vdocuments.pub/reader035/viewer/2022063003/5f65c5b33e6ef01d651a3aa1/html5/thumbnails/148.jpg)
Exercício
1. Mostre que n + lg n = O(n)2. Mostre que 15n = O(n lg n) mas que n lg n ̸= O(n)
– Essa análise é folgada, já que 15n = O(n)3. Mostre que 42n = O(n2) mas que n2 ̸= O(42n)
– Essa análise é folgada, já que 42n = O(n)
19