SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
AULA 2 - TEÓRICA
Professor MSc Cloves Rocha
Jaboatão dos Guararapes
Agosto 2018.2
(PIE) ANÁLISE DE ALGORITMOS - CCO 8 NA
AGENDA
❏ DESEMPENHO;
❏ INTRODUÇÃO;
❏ COMPLEXIDADE DE ALGORITMOS;
❏ Princípios de Análise de Algoritmo ~> Análise Empírica
❏ Princípios de Análise de Algoritmo ~> Análise Matemática
❏ Princípios de Análise de Algoritmo ~> Exemplo 1
❏ Princípios de Análise de Algoritmo ~> Exemplo 2
❏ Princípios de Análise de Algoritmo ~> Exemplo 3
❏ Princípios de Análise de Algoritmo ~> Exemplo 4
❏ Princípios de Análise de Algoritmo ~> Exercício
❏ Princípios de Análise de Algoritmo ~> Exercício 5: Recursividade
❏ DÚVIDAS?
❏ BIBLIOGRAFIA BÁSICA
Introdução
Algoritmo é um processo sistemático para a resolução de um problema.
● Estudo de algoritmos envolve 2 aspectos básicos: correção e
análise.
○ Correção: exatidão do método empregado (prova matemática).
○ Análise: avaliar a eficiência do algoritmo em termos dos
recursos (memória e tempo de execução) utilizados.
Algoritmo: Entrada (dados) ~> Processamento ~> Saída
Os princípios básicos de Complexidade é uma ferramenta útil para escolha
e/ou desenvolvimento do melhor algoritmo a ser utilizado para resolver
determinado problema.
Introdução
De uma forma mais genérica devemos identificar critérios para medir a
qualidade de um software:
● Lado do usuário ou cliente:
○ Interface
○ Robustez
○ Compatibilidade
○ Desempenho (velocidade)
○ Consumo de recursos (ex. memória)
● Lado do desenvolvedor ou fornecedor:
○ Portabilidade
○ Clareza
○ Reuso
A análise de algoritmos (ou análise de complexidade) é um mecanismo
para entender e avaliar um algoritmo em relação aos critérios
destadados, bem como saber aplica-los à problemas práticos.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Análise Empírica
Desafios da análise empírica:
● Desenvolver uma implementação correta e completa.
● Determinar a natureza dos dados de entrada e de outros fatores que
têm influenciado no experimento.
Tipicamente temos 3 escolhas básicas de dados:
● Reais: Similar as entradas normais para o algoritmo; realmente mede o custo do
programa em uso.
● Randômicos: Gerados aleatoriamente sem se preocupar se são dados reais; testa o
algoritmo em si.
● Problemáticos: Dados manipulados para simular situações Anômalas; garante que o
programa sabe lidar com qualquer entrada.
Uma das formas mais simples de avaliar um algoritmo é através da análise
empírica: rodar 2 ou mais algoritmos e verificar qual o mais rápido.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Análise Empírica
É necessário levar em consideração algumas variáveis na hora de comparar
algoritmos empiricamente: máquinas, compiladores, sistemas e entradas
problemáticas.
Contudo em alguns casos a análise matemática é necessária:
● Se a análise experimental começar a consumar uma quantidade
significando de tempo então é o caso de realizar análise matemática.
● É necessário alguma indicação de eficiência antes de qualquer
investimento de desenvolvimento.
Um dos possíveis problemas em se comparar algoritmos empiricamente é
que uma implementação pode ter sido realizada com mais cuidado
(otimizada) do que a outra.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Análise Matemática
Análise Matemática é uma forma de avaliar um algoritmo que pode ser mais
informativa e menos cara de se executar.
Razões para realizar análise matemática:
● Comparação de diferentes algoritmos para a mesma tarefa.
● Previsão de performance em um novo ambiente.
● Configurar valores de parâmetros para algoritmos.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Análise Matemática
A maioria dos algoritmos possui um parâmetro primário N, que afeta o tempo
de execução significativamente. Normalmente N é diretamente proporcional ao
tamanho dos dados a serem processados.
O objetivo da análise matemática é expressar a necessidade de recursos de um
programa (ex. tempo de execução) em termos de N, usando fórmulas
matemáticas mais simples possíveis, mas que são precisas para valores
elevados de N.
A ideia é oferecer uma análise independente da máquina, compilador ou
sistema.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Análise Matemática
Algumas simplificações são necessárias para facilitar o processo de análise:
● Quantidades de dados manipulados pelos algoritmos será suficientemente
grande ( avaliação do comportamento assintótico (no limite))
● Não serão consideradas constantes aditivas ou multiplicativas na
expressão matemática obtida.
● Termos de menor grau são desprezados.
A análise de um algoritmo leva em consideração:
● Um algoritmo pode ser dividido em etapas elementares ou passos.
● Cada passo envolve um número fixo de operações básicas cujos
tempos de execução são considerados constantes.
● A operação básica de maior frequências é a operação dominante.
● Devido a simplificação mencionado anteriormente o número de passos
do algoritmo será o número de execuções da operação dominante.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exemplo 1
Algumas simplificações são necessárias para facilitar o processo de análise:
1. Função acesso ( v: Vetor(N) Inteiro; i,N: Inteiro ) : Inteiro
2. Se i > N então
3. erro("Acesso fora dos limites do vetor!");
4. Senão
5. retorne v[i];
6. Fim-Se.
O tempo de execução é limitado por número constante de operações, independente do
tamanho da entrada.
Portanto a complexidade é dita constante.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exemplo 2
Algoritmo para achar o máximo elemente de um vetor:
1. Função máximo (v: Vetor(N) Inteiro; N: Inteiro ) : Inteiro
2. Var i, max: Inteiro;
3. Início
4. Se N = 0 Então % c1
5. Erro (“máximo chamado com vetor vazio!”);
6. Senão
7. max := v[1]; % c2
8. Para i := 2 Até N Faça % c3
9. Se v[i] > max Então % c4
10. max := v [i]; % c5
11. Fim-Para
12. Fim-Se
13. Retorne max; % c6
14. Fim.
SE LIGA AÍ...
● O tempo T de execução seria:
T ≤ (c1 + c2) + (n − 1)(c3 + c4 + c5) + c6 )
T ≤ n(c3 + c4 + c5) + (c1 + c2 − c3 − c4 − c5 + c6)
• T ≤ c * n, onde c é uma constante que depende do sistema.
• Portanto a complexidade do algoritmo máximo é linear.
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exemplo 3
Algoritmo para achar o máximo elemente de um vetor:
1. for (i = 0; i < n; i++) {
2. for ( j = 1, sum = a [0]; j<= i; j++ )
3. sum += a [j];
4. cout << “A soma do sub-vetores de 0 até “ << i <<” é << sum << endl;
5. }
O que ele faz?
imprime a soma de todas os sub-vetores iniciados na posição 0.
• Analisando o programa:
• Antes do laço externo (linha 1) ser executado o i é inicializado.
• O laço externo é acionado n vezes e em cada iteração são executados: o laço interno (linha 2), um comando de
impressão e atribuições para i, j e sum.
• O laço mais interno é executado i vezes para cada i ε {1, . . . , n − 1} com duas
atribuições em cada iteração: sum e j
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exemplo 4
Nem sempre a análise é trivial, pois o número de iterações de laços depende
dos de entrada
1. int A[]={ 1, 8, 1, 2, 5, 0, 11, 12 };
2. int n=8;
3. int i=0, k=0, length=0, idxStart=0, idxEnd=0;
4. for ( i=0, length=1; i < n-1; i++ ) {
for ( idxStart = idxEnd = k = i; k < n-1 && A[k]<A[k+1]; k++, idxEnd++ );
5. if ( length < (idxEnd - idxStart + 1) )
6. length = idxEnd - idxStart + 1;
7. }
8. cout « ”n Comprimento do maior sub-vetor ordenado: ” « length « endl;
Considere o seguinte trecho de um programa que dado um vetor A, determina o
comprimento do maior sub-vetor ordenado:
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exemplo 4
Se A estiver em ordem decrescente o laço externo é executado n − 1 vezes, mas
em cada iteração o laço interno é executado apenas 1 vez -> O(n) ou linear
R: laço externo é executado n − 1 vezes, e o laço interno é executado i
vezes para cada i 2 ε {n − 1, . . . , 1} ) -> O(n^2) ou quadrático
1. int A[]={ 1, 8, 1, 2, 5, 0, 11, 12 };
2. int n=8;
3. int i=0, k=0, length=0, idxStart=0, idxEnd=0;
4. for ( i=0, length=1; i < n-1; i++ ) {
for ( idxStart = idxEnd = k = i; k < n-1 && A[k]<A[k+1]; k++, idxEnd++ );
if ( length < (idxEnd - idxStart + 1) )
5. length = idxEnd - idxStart + 1;
6. }
7. cout « ”n Comprimento do maior sub-vetor ordenado: ” « length « endl;
O algoritmo é menos eficiente se A estiver em ordem crescente; por que?
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exercício
Desenvolver um algoritmo para transpor uma matriz quadrada M. Os parâmetros do algoritmo são
a matriz M, de tamanho n × n. Não utilize matriz ou vetor auxiliar na solução.
01: Função transpor(M: Ref Matriz[n,n] Inteiro; n: Inteiro)
02: Var aux, i, j: Inteiro;
03: Início
04: Para i := 1 Até n-1 Faça % c1
05: Para j := i+1 Até n Faça % c2
06: aux := M[i][j]; % c3
07: M[i][j] := M[j][i]; % c4
08: M[j][i] := aux; % c5
09: Fim-Para
10: Fim-Para
11: Fim.
Determinar a complexidade do algoritmo em função de n.
SE LIGA AÍ...
T = (n - 1)(c1 + L), onde L = (n - j)(c2 + c3 + c4 + c5).
Desenvolvendo teremos: T = k2n^2 + k1n + k3 -> 0(n^2)
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exercício 5: Recursividade
Algoritmo para somar os elementos de uma lista.
1. Função soma(L: Ref Vetor(N) Inteiro; N: Inteiro) : inteiro
2. Var resposta: Inteiro;
3. Início
4. Se N = 0 Então % c1
5. resposta := 0; % c2
6. Senão
7. resposta := (L[1] + soma(L[2..N], N-1)); % c3
8. Fim-Se
9. Retorne resposta; % c4
10. Fim.
SE LIGA AÍ...
● Cada chamada recursiva da soma decrementa o
tamanho da lista. Exceção quando a lista é zero
(caso base da recursão).
● Se N é o tamanho inicial, então o número total de
chamadas será N + 1.
● Custo de cada chamada é: c1 + c2 + c4 (última
chamada) e (c1 + c3 + c4) (demais chamadas).
● O tempo total T = N · (c1 +c3 +c4)+c1 +c2 +c4, ou
seja, T N · c, onde c é constante -> a complexidade é
dita linear
Complexidade de Algoritmos
~> Princípios de Análise de Algoritmo ~> Exercício 5: Recursividade
Para avaliar a complexidade em relação a memória necessária, é preciso compreender
como a memória de microprocessadores é organizada.
SE LIGA AÍ...
● Portanto a complexidade espacial é
uma função quadrática da entrada N
Cada chamada de função ocupa existem ocupa um espaço na pilha de execução, onde é
reservado espaço para variáveis locais e parâmetros da função chamada.
No caso do exemplo existem N + 1 chamadas de função. Portanto o consumo de memória é
o somatório do comprimento das listas.
símbolo de um
somatório.
Obrigado! Thank you!
Dúvidas??? <?php
print("ACESSO AO MATERIAL");
<?php
print("http://slideshare.net/ClovesRocha");
BIBLIOGRAFIA BÁSICA
● CORMEN, Thomas H., Algoritmos. Rio de Janeiro: Elsevier, 2012.
● TOSCANI, Laira Vieira., Complexidade de Algoritmos [recurso
eletrônico, Minha Biblioteca]. Porto Alegre, Bookman, 2012. 3a ed.
● DOBRUSHKIN, Vladimir A., Métodos para Análise de Algoritmos
[recurso eletrônico, Minha Biblioteca]. Rio de Janeiro: LTC, 2012.

Mais conteúdo relacionado

Mais procurados

53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009starley lobo
 
Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Júlio Rocha
 
Algoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoAlgoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoElaine Cecília Gatto
 
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoOrlando Junior
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoGustavo Carvalho
 
Aula02 condicionais
Aula02   condicionaisAula02   condicionais
Aula02 condicionaisYuri Passos
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenaçãoDaiana de Ávila
 
Aula 04 estruturas de repetição
Aula 04   estruturas de repetiçãoAula 04   estruturas de repetição
Aula 04 estruturas de repetiçãoTácito Graça
 
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Tiago Oliveira Weber
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de RepetiçãoAula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de RepetiçãoAndré Constantino da Silva
 
Pesquisa e ordenação recursividade
Pesquisa e ordenação   recursividadePesquisa e ordenação   recursividade
Pesquisa e ordenação recursividadeMauricio Wieler
 

Mais procurados (20)

Construcao de Algoritmos - Aula 05
Construcao de Algoritmos - Aula 05Construcao de Algoritmos - Aula 05
Construcao de Algoritmos - Aula 05
 
53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.Complexidade de algoritmos insertion, selection e bubble sort.
Complexidade de algoritmos insertion, selection e bubble sort.
 
Construcao de Algoritmos - Aula 12
Construcao de Algoritmos - Aula 12Construcao de Algoritmos - Aula 12
Construcao de Algoritmos - Aula 12
 
Construcao de Algoritmos - Aula 06
Construcao de Algoritmos - Aula 06Construcao de Algoritmos - Aula 06
Construcao de Algoritmos - Aula 06
 
Procedures
ProceduresProcedures
Procedures
 
Algoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoAlgoritmos - Comandos de Repetição
Algoritmos - Comandos de Repetição
 
Análise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenaçãoAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação
 
Análise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenaçãoAnálise de desempenho de algoritmos de ordenação
Análise de desempenho de algoritmos de ordenação
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos Aula 08
Algoritmos Aula 08Algoritmos Aula 08
Algoritmos Aula 08
 
Aula02 condicionais
Aula02   condicionaisAula02   condicionais
Aula02 condicionais
 
Trabalho métodos de ordenação
Trabalho métodos de ordenaçãoTrabalho métodos de ordenação
Trabalho métodos de ordenação
 
Aula 04 estruturas de repetição
Aula 04   estruturas de repetiçãoAula 04   estruturas de repetição
Aula 04 estruturas de repetição
 
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
Course in GNU Octave / Matlab and Applications for Engineers (in Portuguese: ...
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de RepetiçãoAula 10 - Comando de Decisão Múltipla e Comandos de Repetição
Aula 10 - Comando de Decisão Múltipla e Comandos de Repetição
 
Estudos de Controle - Aula 3: Modelagem (1)
Estudos de Controle - Aula 3: Modelagem (1)Estudos de Controle - Aula 3: Modelagem (1)
Estudos de Controle - Aula 3: Modelagem (1)
 
Pesquisa e ordenação recursividade
Pesquisa e ordenação   recursividadePesquisa e ordenação   recursividade
Pesquisa e ordenação recursividade
 

Semelhante a Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA

Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptssuserd654cb1
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptssuserd654cb1
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascalangelicamenegassi
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Alex Camargo
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)Sandro Lopes
 
Estratégias e Técnicas de Testes - Parte 2
Estratégias e Técnicas de Testes - Parte 2Estratégias e Técnicas de Testes - Parte 2
Estratégias e Técnicas de Testes - Parte 2Lorena Caldas
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxPaulo Cardoso
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosRodrigo Kiyoshi Saito
 

Semelhante a Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA (20)

0001
00010001
0001
 
000003 complexidade
000003 complexidade000003 complexidade
000003 complexidade
 
Análise de Algoritmos
Análise de AlgoritmosAnálise de Algoritmos
Análise de Algoritmos
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
Algoritmos e linguagem pascal
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Aula 3-lógica.pptx
Aula 3-lógica.pptxAula 3-lógica.pptx
Aula 3-lógica.pptx
 
Algoritmo aula 01-f
Algoritmo   aula 01-fAlgoritmo   aula 01-f
Algoritmo aula 01-f
 
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
Algoritmos e Programação: Funcionamento do computador. Conceito e definição d...
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Aula2
Aula2Aula2
Aula2
 
Aula algoritmo
Aula algoritmoAula algoritmo
Aula algoritmo
 
Algoritmia (Conceitos)
Algoritmia (Conceitos)Algoritmia (Conceitos)
Algoritmia (Conceitos)
 
Estratégias e Técnicas de Testes - Parte 2
Estratégias e Técnicas de Testes - Parte 2Estratégias e Técnicas de Testes - Parte 2
Estratégias e Técnicas de Testes - Parte 2
 
Introdução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptxIntrodução aos algoritmos e à algoritmia.pptx
Introdução aos algoritmos e à algoritmia.pptx
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmos
 

Mais de Cloves da Rocha

Mineração de Dados Um Estudo de Caso Real.pdf
Mineração de Dados Um Estudo de Caso Real.pdfMineração de Dados Um Estudo de Caso Real.pdf
Mineração de Dados Um Estudo de Caso Real.pdfCloves da Rocha
 
Live: Inteligência Artificial (IA) para pequenas e médias empresas
Live: Inteligência Artificial (IA) para pequenas e médias empresasLive: Inteligência Artificial (IA) para pequenas e médias empresas
Live: Inteligência Artificial (IA) para pequenas e médias empresasCloves da Rocha
 
Introdução a Machine Learning na Prática
Introdução a Machine Learning na PráticaIntrodução a Machine Learning na Prática
Introdução a Machine Learning na PráticaCloves da Rocha
 
II JEDI 2019 - OUP e OPS
II JEDI 2019 - OUP e OPS II JEDI 2019 - OUP e OPS
II JEDI 2019 - OUP e OPS Cloves da Rocha
 
Café.COM - OUP | Observatório de Projetos de Software (OPS) com ênfase em da...
Café.COM - OUP | Observatório de Projetos de Software (OPS)  com ênfase em da...Café.COM - OUP | Observatório de Projetos de Software (OPS)  com ênfase em da...
Café.COM - OUP | Observatório de Projetos de Software (OPS) com ênfase em da...Cloves da Rocha
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareCloves da Rocha
 
Observatório de Projetos de Software com ênfase em dados abertos
Observatório de Projetos de Software com ênfase em dados abertosObservatório de Projetos de Software com ênfase em dados abertos
Observatório de Projetos de Software com ênfase em dados abertosCloves da Rocha
 
Gestão de Riscos em Processos de Negócios
Gestão de Riscos em Processos de NegóciosGestão de Riscos em Processos de Negócios
Gestão de Riscos em Processos de NegóciosCloves da Rocha
 
Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...
Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...
Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...Cloves da Rocha
 
Aula 04 - Estudo de Caso Atacadão
Aula 04 - Estudo de Caso AtacadãoAula 04 - Estudo de Caso Atacadão
Aula 04 - Estudo de Caso AtacadãoCloves da Rocha
 
Café com André Menelau
Café com André MenelauCafé com André Menelau
Café com André MenelauCloves da Rocha
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de RequisitosCloves da Rocha
 
APRESENTAÇÃO DO PROFESSOR - By Prof. Cloves Rocha
APRESENTAÇÃO DO PROFESSOR - By Prof. Cloves RochaAPRESENTAÇÃO DO PROFESSOR - By Prof. Cloves Rocha
APRESENTAÇÃO DO PROFESSOR - By Prof. Cloves RochaCloves da Rocha
 
Principais Certificações em TIC - ITIL
Principais Certificações em TIC - ITILPrincipais Certificações em TIC - ITIL
Principais Certificações em TIC - ITILCloves da Rocha
 
Principais Certificações em TIC
Principais Certificações em TIC Principais Certificações em TIC
Principais Certificações em TIC Cloves da Rocha
 
I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21
I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21
I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21Cloves da Rocha
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreCloves da Rocha
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosCloves da Rocha
 
XI Café e CODE - Provocações do Mestre
XI Café e CODE - Provocações do MestreXI Café e CODE - Provocações do Mestre
XI Café e CODE - Provocações do MestreCloves da Rocha
 

Mais de Cloves da Rocha (20)

Mineração de Dados Um Estudo de Caso Real.pdf
Mineração de Dados Um Estudo de Caso Real.pdfMineração de Dados Um Estudo de Caso Real.pdf
Mineração de Dados Um Estudo de Caso Real.pdf
 
Live: Inteligência Artificial (IA) para pequenas e médias empresas
Live: Inteligência Artificial (IA) para pequenas e médias empresasLive: Inteligência Artificial (IA) para pequenas e médias empresas
Live: Inteligência Artificial (IA) para pequenas e médias empresas
 
Introdução a Machine Learning na Prática
Introdução a Machine Learning na PráticaIntrodução a Machine Learning na Prática
Introdução a Machine Learning na Prática
 
II JEDI 2019 - OUP e OPS
II JEDI 2019 - OUP e OPS II JEDI 2019 - OUP e OPS
II JEDI 2019 - OUP e OPS
 
Café.COM - OUP | Observatório de Projetos de Software (OPS) com ênfase em da...
Café.COM - OUP | Observatório de Projetos de Software (OPS)  com ênfase em da...Café.COM - OUP | Observatório de Projetos de Software (OPS)  com ênfase em da...
Café.COM - OUP | Observatório de Projetos de Software (OPS) com ênfase em da...
 
Introdução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de SoftwareIntrodução à Engenharia de Testes de Software
Introdução à Engenharia de Testes de Software
 
Observatório de Projetos de Software com ênfase em dados abertos
Observatório de Projetos de Software com ênfase em dados abertosObservatório de Projetos de Software com ênfase em dados abertos
Observatório de Projetos de Software com ênfase em dados abertos
 
Gestão de Riscos em Processos de Negócios
Gestão de Riscos em Processos de NegóciosGestão de Riscos em Processos de Negócios
Gestão de Riscos em Processos de Negócios
 
Palestra GEOMARKETING
Palestra GEOMARKETINGPalestra GEOMARKETING
Palestra GEOMARKETING
 
Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...
Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...
Utilização de Ferramenta Para Monitoração de Desempenho Baseada em Métodos Ág...
 
Aula 04 - Estudo de Caso Atacadão
Aula 04 - Estudo de Caso AtacadãoAula 04 - Estudo de Caso Atacadão
Aula 04 - Estudo de Caso Atacadão
 
Café com André Menelau
Café com André MenelauCafé com André Menelau
Café com André Menelau
 
Engenharia de Requisitos
Engenharia de RequisitosEngenharia de Requisitos
Engenharia de Requisitos
 
APRESENTAÇÃO DO PROFESSOR - By Prof. Cloves Rocha
APRESENTAÇÃO DO PROFESSOR - By Prof. Cloves RochaAPRESENTAÇÃO DO PROFESSOR - By Prof. Cloves Rocha
APRESENTAÇÃO DO PROFESSOR - By Prof. Cloves Rocha
 
Principais Certificações em TIC - ITIL
Principais Certificações em TIC - ITILPrincipais Certificações em TIC - ITIL
Principais Certificações em TIC - ITIL
 
Principais Certificações em TIC
Principais Certificações em TIC Principais Certificações em TIC
Principais Certificações em TIC
 
I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21
I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21
I Café ETE PORTO DIGITAL | EDUCAÇÃO PARA O SÉCULO 21
 
XII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do MestreXII Café e CODE - Provocações do Mestre
XII Café e CODE - Provocações do Mestre
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
XI Café e CODE - Provocações do Mestre
XI Café e CODE - Provocações do MestreXI Café e CODE - Provocações do Mestre
XI Café e CODE - Provocações do Mestre
 

Último

Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfWagnerCamposCEA
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividadeMary Alvarenga
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 

Último (20)

Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdfReta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
Música Meu Abrigo - Texto e atividade
Música   Meu   Abrigo  -   Texto e atividadeMúsica   Meu   Abrigo  -   Texto e atividade
Música Meu Abrigo - Texto e atividade
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
CINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULACINEMATICA DE LOS MATERIALES Y PARTICULA
CINEMATICA DE LOS MATERIALES Y PARTICULA
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 

Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA

  • 1. AULA 2 - TEÓRICA Professor MSc Cloves Rocha Jaboatão dos Guararapes Agosto 2018.2 (PIE) ANÁLISE DE ALGORITMOS - CCO 8 NA
  • 2. AGENDA ❏ DESEMPENHO; ❏ INTRODUÇÃO; ❏ COMPLEXIDADE DE ALGORITMOS; ❏ Princípios de Análise de Algoritmo ~> Análise Empírica ❏ Princípios de Análise de Algoritmo ~> Análise Matemática ❏ Princípios de Análise de Algoritmo ~> Exemplo 1 ❏ Princípios de Análise de Algoritmo ~> Exemplo 2 ❏ Princípios de Análise de Algoritmo ~> Exemplo 3 ❏ Princípios de Análise de Algoritmo ~> Exemplo 4 ❏ Princípios de Análise de Algoritmo ~> Exercício ❏ Princípios de Análise de Algoritmo ~> Exercício 5: Recursividade ❏ DÚVIDAS? ❏ BIBLIOGRAFIA BÁSICA
  • 3.
  • 4. Introdução Algoritmo é um processo sistemático para a resolução de um problema. ● Estudo de algoritmos envolve 2 aspectos básicos: correção e análise. ○ Correção: exatidão do método empregado (prova matemática). ○ Análise: avaliar a eficiência do algoritmo em termos dos recursos (memória e tempo de execução) utilizados. Algoritmo: Entrada (dados) ~> Processamento ~> Saída Os princípios básicos de Complexidade é uma ferramenta útil para escolha e/ou desenvolvimento do melhor algoritmo a ser utilizado para resolver determinado problema.
  • 5. Introdução De uma forma mais genérica devemos identificar critérios para medir a qualidade de um software: ● Lado do usuário ou cliente: ○ Interface ○ Robustez ○ Compatibilidade ○ Desempenho (velocidade) ○ Consumo de recursos (ex. memória) ● Lado do desenvolvedor ou fornecedor: ○ Portabilidade ○ Clareza ○ Reuso A análise de algoritmos (ou análise de complexidade) é um mecanismo para entender e avaliar um algoritmo em relação aos critérios destadados, bem como saber aplica-los à problemas práticos.
  • 6. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Análise Empírica Desafios da análise empírica: ● Desenvolver uma implementação correta e completa. ● Determinar a natureza dos dados de entrada e de outros fatores que têm influenciado no experimento. Tipicamente temos 3 escolhas básicas de dados: ● Reais: Similar as entradas normais para o algoritmo; realmente mede o custo do programa em uso. ● Randômicos: Gerados aleatoriamente sem se preocupar se são dados reais; testa o algoritmo em si. ● Problemáticos: Dados manipulados para simular situações Anômalas; garante que o programa sabe lidar com qualquer entrada. Uma das formas mais simples de avaliar um algoritmo é através da análise empírica: rodar 2 ou mais algoritmos e verificar qual o mais rápido.
  • 7. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Análise Empírica É necessário levar em consideração algumas variáveis na hora de comparar algoritmos empiricamente: máquinas, compiladores, sistemas e entradas problemáticas. Contudo em alguns casos a análise matemática é necessária: ● Se a análise experimental começar a consumar uma quantidade significando de tempo então é o caso de realizar análise matemática. ● É necessário alguma indicação de eficiência antes de qualquer investimento de desenvolvimento. Um dos possíveis problemas em se comparar algoritmos empiricamente é que uma implementação pode ter sido realizada com mais cuidado (otimizada) do que a outra.
  • 8. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Análise Matemática Análise Matemática é uma forma de avaliar um algoritmo que pode ser mais informativa e menos cara de se executar. Razões para realizar análise matemática: ● Comparação de diferentes algoritmos para a mesma tarefa. ● Previsão de performance em um novo ambiente. ● Configurar valores de parâmetros para algoritmos.
  • 9. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Análise Matemática A maioria dos algoritmos possui um parâmetro primário N, que afeta o tempo de execução significativamente. Normalmente N é diretamente proporcional ao tamanho dos dados a serem processados. O objetivo da análise matemática é expressar a necessidade de recursos de um programa (ex. tempo de execução) em termos de N, usando fórmulas matemáticas mais simples possíveis, mas que são precisas para valores elevados de N. A ideia é oferecer uma análise independente da máquina, compilador ou sistema.
  • 10. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Análise Matemática Algumas simplificações são necessárias para facilitar o processo de análise: ● Quantidades de dados manipulados pelos algoritmos será suficientemente grande ( avaliação do comportamento assintótico (no limite)) ● Não serão consideradas constantes aditivas ou multiplicativas na expressão matemática obtida. ● Termos de menor grau são desprezados. A análise de um algoritmo leva em consideração: ● Um algoritmo pode ser dividido em etapas elementares ou passos. ● Cada passo envolve um número fixo de operações básicas cujos tempos de execução são considerados constantes. ● A operação básica de maior frequências é a operação dominante. ● Devido a simplificação mencionado anteriormente o número de passos do algoritmo será o número de execuções da operação dominante.
  • 11. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exemplo 1 Algumas simplificações são necessárias para facilitar o processo de análise: 1. Função acesso ( v: Vetor(N) Inteiro; i,N: Inteiro ) : Inteiro 2. Se i > N então 3. erro("Acesso fora dos limites do vetor!"); 4. Senão 5. retorne v[i]; 6. Fim-Se. O tempo de execução é limitado por número constante de operações, independente do tamanho da entrada. Portanto a complexidade é dita constante.
  • 12. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exemplo 2 Algoritmo para achar o máximo elemente de um vetor: 1. Função máximo (v: Vetor(N) Inteiro; N: Inteiro ) : Inteiro 2. Var i, max: Inteiro; 3. Início 4. Se N = 0 Então % c1 5. Erro (“máximo chamado com vetor vazio!”); 6. Senão 7. max := v[1]; % c2 8. Para i := 2 Até N Faça % c3 9. Se v[i] > max Então % c4 10. max := v [i]; % c5 11. Fim-Para 12. Fim-Se 13. Retorne max; % c6 14. Fim. SE LIGA AÍ... ● O tempo T de execução seria: T ≤ (c1 + c2) + (n − 1)(c3 + c4 + c5) + c6 ) T ≤ n(c3 + c4 + c5) + (c1 + c2 − c3 − c4 − c5 + c6) • T ≤ c * n, onde c é uma constante que depende do sistema. • Portanto a complexidade do algoritmo máximo é linear.
  • 13. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exemplo 3 Algoritmo para achar o máximo elemente de um vetor: 1. for (i = 0; i < n; i++) { 2. for ( j = 1, sum = a [0]; j<= i; j++ ) 3. sum += a [j]; 4. cout << “A soma do sub-vetores de 0 até “ << i <<” é << sum << endl; 5. } O que ele faz? imprime a soma de todas os sub-vetores iniciados na posição 0. • Analisando o programa: • Antes do laço externo (linha 1) ser executado o i é inicializado. • O laço externo é acionado n vezes e em cada iteração são executados: o laço interno (linha 2), um comando de impressão e atribuições para i, j e sum. • O laço mais interno é executado i vezes para cada i ε {1, . . . , n − 1} com duas atribuições em cada iteração: sum e j
  • 14. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exemplo 4 Nem sempre a análise é trivial, pois o número de iterações de laços depende dos de entrada 1. int A[]={ 1, 8, 1, 2, 5, 0, 11, 12 }; 2. int n=8; 3. int i=0, k=0, length=0, idxStart=0, idxEnd=0; 4. for ( i=0, length=1; i < n-1; i++ ) { for ( idxStart = idxEnd = k = i; k < n-1 && A[k]<A[k+1]; k++, idxEnd++ ); 5. if ( length < (idxEnd - idxStart + 1) ) 6. length = idxEnd - idxStart + 1; 7. } 8. cout « ”n Comprimento do maior sub-vetor ordenado: ” « length « endl; Considere o seguinte trecho de um programa que dado um vetor A, determina o comprimento do maior sub-vetor ordenado:
  • 15. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exemplo 4 Se A estiver em ordem decrescente o laço externo é executado n − 1 vezes, mas em cada iteração o laço interno é executado apenas 1 vez -> O(n) ou linear R: laço externo é executado n − 1 vezes, e o laço interno é executado i vezes para cada i 2 ε {n − 1, . . . , 1} ) -> O(n^2) ou quadrático 1. int A[]={ 1, 8, 1, 2, 5, 0, 11, 12 }; 2. int n=8; 3. int i=0, k=0, length=0, idxStart=0, idxEnd=0; 4. for ( i=0, length=1; i < n-1; i++ ) { for ( idxStart = idxEnd = k = i; k < n-1 && A[k]<A[k+1]; k++, idxEnd++ ); if ( length < (idxEnd - idxStart + 1) ) 5. length = idxEnd - idxStart + 1; 6. } 7. cout « ”n Comprimento do maior sub-vetor ordenado: ” « length « endl; O algoritmo é menos eficiente se A estiver em ordem crescente; por que?
  • 16. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exercício Desenvolver um algoritmo para transpor uma matriz quadrada M. Os parâmetros do algoritmo são a matriz M, de tamanho n × n. Não utilize matriz ou vetor auxiliar na solução. 01: Função transpor(M: Ref Matriz[n,n] Inteiro; n: Inteiro) 02: Var aux, i, j: Inteiro; 03: Início 04: Para i := 1 Até n-1 Faça % c1 05: Para j := i+1 Até n Faça % c2 06: aux := M[i][j]; % c3 07: M[i][j] := M[j][i]; % c4 08: M[j][i] := aux; % c5 09: Fim-Para 10: Fim-Para 11: Fim. Determinar a complexidade do algoritmo em função de n. SE LIGA AÍ... T = (n - 1)(c1 + L), onde L = (n - j)(c2 + c3 + c4 + c5). Desenvolvendo teremos: T = k2n^2 + k1n + k3 -> 0(n^2)
  • 17. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exercício 5: Recursividade Algoritmo para somar os elementos de uma lista. 1. Função soma(L: Ref Vetor(N) Inteiro; N: Inteiro) : inteiro 2. Var resposta: Inteiro; 3. Início 4. Se N = 0 Então % c1 5. resposta := 0; % c2 6. Senão 7. resposta := (L[1] + soma(L[2..N], N-1)); % c3 8. Fim-Se 9. Retorne resposta; % c4 10. Fim. SE LIGA AÍ... ● Cada chamada recursiva da soma decrementa o tamanho da lista. Exceção quando a lista é zero (caso base da recursão). ● Se N é o tamanho inicial, então o número total de chamadas será N + 1. ● Custo de cada chamada é: c1 + c2 + c4 (última chamada) e (c1 + c3 + c4) (demais chamadas). ● O tempo total T = N · (c1 +c3 +c4)+c1 +c2 +c4, ou seja, T N · c, onde c é constante -> a complexidade é dita linear
  • 18. Complexidade de Algoritmos ~> Princípios de Análise de Algoritmo ~> Exercício 5: Recursividade Para avaliar a complexidade em relação a memória necessária, é preciso compreender como a memória de microprocessadores é organizada. SE LIGA AÍ... ● Portanto a complexidade espacial é uma função quadrática da entrada N Cada chamada de função ocupa existem ocupa um espaço na pilha de execução, onde é reservado espaço para variáveis locais e parâmetros da função chamada. No caso do exemplo existem N + 1 chamadas de função. Portanto o consumo de memória é o somatório do comprimento das listas. símbolo de um somatório.
  • 19. Obrigado! Thank you! Dúvidas??? <?php print("ACESSO AO MATERIAL"); <?php print("http://slideshare.net/ClovesRocha");
  • 20. BIBLIOGRAFIA BÁSICA ● CORMEN, Thomas H., Algoritmos. Rio de Janeiro: Elsevier, 2012. ● TOSCANI, Laira Vieira., Complexidade de Algoritmos [recurso eletrônico, Minha Biblioteca]. Porto Alegre, Bookman, 2012. 3a ed. ● DOBRUSHKIN, Vladimir A., Métodos para Análise de Algoritmos [recurso eletrônico, Minha Biblioteca]. Rio de Janeiro: LTC, 2012.