SlideShare a Scribd company logo
1 of 34
Download to read offline
Tutoria AEDSI
Pablo Silva
Recordar
é viver
• Definição de algoritmo
• Definição de tipo de dado
• Definição de TAD
• Análise de algoritmos
Hoje
• Análise da complexidade de
algoritmos
• Resolver exercícios
Mas antes...
Uma definição mais simples do que é tipo de dado
(pra responder na prova se cair!!!):
• Em linguagens de programação o tipo de dado de uma variável,
constante ou função define o conjunto de valores que a variável,
constante ou função pode assumir.
• Ex.: variável boolean pode assumir valores true ou false.
Portanto true e false é o conjunto de valores de uma variável
booleana.
Por que analisar um algoritmo?
Depois que decidimos qual o problema que
queremos resolver (Ex. encontrar um elemento
num conjunto de valores), precisamos ter certeza
que o algoritmo escolhido para o nosso problema,
irá resolvê-lo em um espaço de tempo e consumir
memória, num intervalo de tempo e quantidade
de memória gastas aceitáveis para nosso cliente.
Por que analisar um algoritmo?
Nenhum cliente vai querer um programa que
demora 10 minutos para encontrar um elemento
dentro de um conjunto de valores!
Isso é perda de dinheiro e tempo, uma vez que
deve existir um algoritmo que faça isso em poucos
milissegundos!
Por que analisar um algoritmo?
No final, o que vai importar na análise é qual o
caso médio que tal algoritmo demora para nos dar
a saída do problema!
Passos para analisar um algoritmo
e decidir os três casos
1. Entenda o problema: sem entender o
problema é praticamente impossível
determinar os três casos corretamente.
Entendendo o problema
Se temos o problema de encontrar um elemento num conjunto
de valores, entender o problema significa:
Talvez o elemento procurado esteja na primeira posição
buscada, ou talvez esteja na última. Mas ele pode também
estar no meio ou próximo de lá.
Dessa maneira já sabemos qual os nossos melhor caso, pior
caso e caso médio respectivamente. Agora só precisamos
encontrar uma maneira de representa-los matematicamente.
Passos para analisar um algoritmo
e decidir os três casos
2. Encontre no algoritmo loops e estruturas
condicionais. ESQUEÇA O RESTO!
Encontre loops e condicionais
Encontre loops e condicionais
Passos para analisar um algoritmo
e decidir os três casos
3. Decida quantas vezes o condicional irá executar
baseado na quantidade de vezes que o loop
executa.
*É preciso olhar para o condicional, pois o custo de
acesso a memória vem dele!
Encontre loops e condicionais
Se tamanho = n, então o for
executará n vezes, uma vez
que vai de 0 até (n – 1).
Para visualizar o número de
vezes que o for executa,
pode-se fazer o seguinte:
Por exemplo, se n = 2, i
começa em 0 (i = 0) e 0 < 2.
Na segunda iteração, i recebe
1 (i = 1) e 1 < 2. A terceira
iteração nos dá que i será
igual a 2 (i = 2) e 2 < 2 é falso
e o loop não será executado
novamente.Logo, o loop executou somente 2 vezes, uma vez que a terceira
iteração não foi executada. Veja que 2 é o número de elementos que
temos, pois n = 2 e então o loop rodou n vezes.
Passos para analisar um algoritmo
e decidir os três casos
3. Seja f(n) uma função de complexidade, decida
f(n) para o melhor e pior caso e caso médio,
utilizando seu conhecimento sobre o problema.
Decida quantas vezes será executado
Melhor caso: 𝑓 𝑛 = 1
O if foi acessado somente
uma vez, pois o elemento
estava na primeira posição
acessada.
Pior caso: 𝑓 𝑛 = 𝑛
O if foi acessado todas as
vezes que o loop executou,
pois o elemento procurado
estava na última posição
acessada ou não estava no
vetor.
Seja 𝑓 𝑛 uma função de complexidade definida pelo número de elementos consultados no arquivo.
Decida quantas vezes será executado
Caso médio: 𝑓 𝑛 =
𝑛+1
2
O caso médio é dado por:
𝑃𝑖𝑜𝑟 𝑐𝑎𝑠𝑜 + 𝑀𝑒𝑙ℎ𝑜𝑟 𝑐𝑎𝑠𝑜
2
É o mesmo que dizer que o
elemento está no meio ou
próximo dele!
Seja 𝑓 𝑛 uma função de complexidade definida pelo número de elementos consultados no arquivo.
Análise assintótica
Para a análise de algoritmos só vai importar
mesmo, quando temos valores enormes de n. Isso
é necessário, porque até mesmo o pior dos
algoritmos pode resolver algum problema quando
n é suficientemente pequeno.
Análise assintótica
O tipo de matemática que está interessado em
valores enormes de n, é chamado de assintótico, e
as funções aqui definidas serão classificadas em
“ordens” (como as ordens religiosas da Idade
Média), onde todas as funções de uma mesma
ordem são equivalentes.
Análise assintótica
Por exemplo, sejam as funções:
n2 , (3/2)n2 , 9999n2 , n2/1000 , n2+100n , etc.
Elas crescem todas na mesma velocidade e
portanto são todas “equivalentes” e desse modo
de mesma “ordem”.
Análise assintótica
Por exemplo, sejam as funções:
n2 , (3/2)n2 , 9999n2 , n2/1000 , n2+100n , etc.
Nesse caso é fácil de perceber que todas crescem
na mesma velocidade. Todas as funções dadas são
quadráticas. Olhem para os gráficos á seguir:
Análise assintótica
As proporções são diferentes, mas as curvas tem o
mesmo comportamento! (comportamento é o
mesmo que dizer crescimento)
Aqui, vamos nos concentrar na primeira ordem, a
Ordem O.
Dominação assintótica
Se pudermos provar que f(n)
domina assintoticamente g(n) a
partir de um ponto m quando n->
infinito, então o caso ao lado não
pode ser verdadeiro!
A partir de agora, passaremos a representar os algoritmos através de funções de
complexidade de variável n onde essa função é sempre maior que zero.
Para o nosso contexto, vamos definir que uma função f(n) domina
assintoticamente outra função g(n) se quando n -> infinito, a curva de g(n) nunca
crescerá mais rápido que a curva de f(n) a partir de um ponto m (n0).
Ordem O
Definição: Dadas funções assintoticamente não negativas f(n) e g(n),
dizemos que g(n) está na ordem O de f(n) e escrevemos
para expressar que f(n) domina assintoticamente g(n). Isso significa
dizer que se o tempo de execução de um programa fosse
representado por g(n), ele seria da ordem de no máximo f(n).
Ordem O
Se afirmamos que então estamos dizendo que é
possível encontrar duas constantes positivas c e m tais que, para
𝑛 ≥ 𝑚 temos 𝑔 𝑛 ≤ 𝑐 ∗ |𝑓 𝑛 |.
No gráfico ao lado, f(n) só domina
assintoticamente g(n) a partir de m e quando
encontramos uma constante c apropriada!
Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
Pela definição isso será verdade quando
𝑛 + 1 2 ≤ 𝑐𝑛2 𝑝𝑎𝑟𝑎 𝑛 ≥ 𝑚
Cada problema tem uma forma mais prático que outro para encontrarmos a constante c. Para esse caso precisamos
abrir g(n) ficando com:
𝑛2
+ 2𝑛 + 1
A estratégia aqui é igualar os graus em todos os elementos acima com f(n), que possui o maior grau quadrático (2).
Logo, sabemos então que:
𝑛2
+ 2𝑛 + 1 ≤ 𝑛2
+ 2𝑛2
+ 1𝑛2
Para algum 𝑛 ≥ 0 que ainda não sabemos qual é (esse será nosso m!)
Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
𝑛2 + 2𝑛 + 1 ≤ 𝑛2 + 2𝑛2 + 1𝑛2
Somando todos os termos do lado direito temos que:
𝑛2 + 2𝑛 + 1 ≤ 4𝑛2 (1)
Comparando com a nossa situação inicial:
𝑛 + 1 2
= 𝑛2
+ 2𝑛 + 1 ≤ 𝑐𝑛2
Podemos perceber que c = 4. Vamos achar nosso m. Se n = 0, substituindo em (1):
1 ≤ 0 𝑜 𝑞𝑢𝑒 𝑛ã𝑜 é 𝑣𝑒𝑟𝑑𝑎𝑑𝑒!
Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
𝑛2
+ 2𝑛 + 1 ≤ 𝑛2
+ 2𝑛2
+ 1𝑛2
Somando todos os termos do lado direito temos que:
𝑛2
+ 2𝑛 + 1 ≤ 4𝑛2
(1)
Se n = 1, substituindo em (1):
4 ≤ 4 𝑜 𝑞𝑢𝑒 é 𝑣𝑒𝑟𝑑𝑎𝑑𝑒!
Como já determinamos nosso c, então o primeiro valor de n que torna a inequação verdadeira será o nosso n!
Ordem O
Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2
𝑒 𝑓 𝑛 = 𝑛2
podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ?
Logo 𝑔 𝑛 = 𝑂 𝑓 𝑛 é uma afirmação válida quando definimos c = 4 e m = 1.
É importante notar que nem sempre se conseguirá
resolver o problema utilizando esta abordagem e
precisamos de outras estratégias para encontrar as duas
constantes que vão provar a nossa afirmação!
Perguntas?

More Related Content

What's hot

Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
licardino
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)
Faculdade Mater Christi
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
Mauro Pereira
 

What's hot (20)

Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Manual de portugol
Manual de portugolManual de portugol
Manual de portugol
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
ICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicionalICC - Aula 05 - Estrutura de controle, sequencial e condicional
ICC - Aula 05 - Estrutura de controle, sequencial e condicional
 
1ª aula sistema operacional
1ª aula  sistema operacional1ª aula  sistema operacional
1ª aula sistema operacional
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UML
 
Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)Gerenciamento de memória cap 03 (ii unidade)
Gerenciamento de memória cap 03 (ii unidade)
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
aula 04 - Logica de programacao
aula 04 - Logica de programacaoaula 04 - Logica de programacao
aula 04 - Logica de programacao
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
5- Modelo entidade Relacionamento - Cardinalidade - Profª Cristiane Fidelix
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 

Viewers also liked

CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
Juan Basso
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
khjhjhjh
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
elliando dias
 

Viewers also liked (20)

Assembly para pc-25paginas
Assembly para pc-25paginasAssembly para pc-25paginas
Assembly para pc-25paginas
 
PROGRAMAS QBASIC
PROGRAMAS QBASICPROGRAMAS QBASIC
PROGRAMAS QBASIC
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Glosario de qbasic liliana
Glosario de qbasic lilianaGlosario de qbasic liliana
Glosario de qbasic liliana
 
Introdução ao PHP
Introdução ao PHPIntrodução ao PHP
Introdução ao PHP
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Dicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHPDicas para aumentar a performance de um software PHP
Dicas para aumentar a performance de um software PHP
 
Conceitos básicos de AEDS
Conceitos básicos de AEDSConceitos básicos de AEDS
Conceitos básicos de AEDS
 
Funções em C
Funções em CFunções em C
Funções em C
 
Apostila cobol
Apostila cobolApostila cobol
Apostila cobol
 
Linguagem C - Uniões
Linguagem C - UniõesLinguagem C - Uniões
Linguagem C - Uniões
 
CakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro boloCakePHP - Aprendendo a fazer o primeiro bolo
CakePHP - Aprendendo a fazer o primeiro bolo
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
CakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápidoCakePHP e o desenvolvimento rápido
CakePHP e o desenvolvimento rápido
 
Trabalho cobol e basic
Trabalho cobol e basicTrabalho cobol e basic
Trabalho cobol e basic
 
Pilha dinâmica
Pilha dinâmicaPilha dinâmica
Pilha dinâmica
 

Similar to Análise assintótica

13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
Ricardo Bolanho
 
Estatistica regular 8
Estatistica regular 8Estatistica regular 8
Estatistica regular 8
J M
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
tuelocg
 
Cálculo Numérico
Cálculo NuméricoCálculo Numérico
Cálculo Numérico
Sandro Lima
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracao
Ricardo Bolanho
 
Formulas para numeros primos 1ed - eric campos bastos guedes
Formulas para numeros primos 1ed - eric campos bastos guedesFormulas para numeros primos 1ed - eric campos bastos guedes
Formulas para numeros primos 1ed - eric campos bastos guedes
ericbaymarketconectrio
 

Similar to Análise assintótica (20)

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
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em C
 
Sequencias e-series
Sequencias e-seriesSequencias e-series
Sequencias e-series
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
4 groebner danton4 dissertacao
4 groebner danton4 dissertacao4 groebner danton4 dissertacao
4 groebner danton4 dissertacao
 
Estatistica regular 8
Estatistica regular 8Estatistica regular 8
Estatistica regular 8
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 
Cal i a02
Cal i a02Cal i a02
Cal i a02
 
06 complexidade de problemas
06   complexidade de problemas06   complexidade de problemas
06 complexidade de problemas
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Análise de Complexidade em Algoritmos.pdf
Análise de Complexidade em Algoritmos.pdfAnálise de Complexidade em Algoritmos.pdf
Análise de Complexidade em Algoritmos.pdf
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
Cálculo Numérico
Cálculo NuméricoCálculo Numérico
Cálculo Numérico
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracao
 
Python
PythonPython
Python
 
Formulas para numeros primos 1ed - eric campos bastos guedes
Formulas para numeros primos 1ed - eric campos bastos guedesFormulas para numeros primos 1ed - eric campos bastos guedes
Formulas para numeros primos 1ed - eric campos bastos guedes
 

More from Pablo Silva

More from Pablo Silva (18)

Agilidade, times e outras coisas mais
Agilidade, times e outras coisas maisAgilidade, times e outras coisas mais
Agilidade, times e outras coisas mais
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performance
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performance
 
Transformação Digital: Criando uma empresa financeiramente estratégica para o...
Transformação Digital: Criando uma empresa financeiramente estratégica para o...Transformação Digital: Criando uma empresa financeiramente estratégica para o...
Transformação Digital: Criando uma empresa financeiramente estratégica para o...
 
OKR is the new black: porque esse framework está tão na moda?
OKR is the new black: porque esse framework está tão na moda?OKR is the new black: porque esse framework está tão na moda?
OKR is the new black: porque esse framework está tão na moda?
 
Transformando times de desenvolvimento mercenários em times de produto missio...
Transformando times de desenvolvimento mercenários em times de produto missio...Transformando times de desenvolvimento mercenários em times de produto missio...
Transformando times de desenvolvimento mercenários em times de produto missio...
 
As próximas ondas da tecnologia
As próximas ondas da tecnologiaAs próximas ondas da tecnologia
As próximas ondas da tecnologia
 
Carreira Dev: dicas pra você que vai chegar na semana que vem
Carreira Dev: dicas pra você que vai chegar na semana que vemCarreira Dev: dicas pra você que vai chegar na semana que vem
Carreira Dev: dicas pra você que vai chegar na semana que vem
 
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
Dual Track Agile - A integração da tecnologia, experiência do usuário e negócio
 
Lets talk about OKRs
Lets talk about OKRsLets talk about OKRs
Lets talk about OKRs
 
2 anos usando OKRs: adeus achismo-driven
2 anos usando OKRs: adeus achismo-driven2 anos usando OKRs: adeus achismo-driven
2 anos usando OKRs: adeus achismo-driven
 
Ágil nao é mais tendência, é sobrevivência!
Ágil nao é mais tendência, é sobrevivência!Ágil nao é mais tendência, é sobrevivência!
Ágil nao é mais tendência, é sobrevivência!
 
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
Dual Track Agile - PO, UX e Marketing no seu pipelane de desenvolvimento de p...
 
Nem só de codigo vive homem (Management version)
Nem só de codigo vive homem (Management version)Nem só de codigo vive homem (Management version)
Nem só de codigo vive homem (Management version)
 
Nem só de código vive o homem (Versão para desenvolvedores)
Nem só de código vive o homem (Versão para desenvolvedores)Nem só de código vive o homem (Versão para desenvolvedores)
Nem só de código vive o homem (Versão para desenvolvedores)
 
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimentoDual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
Dual track Agile - Incluindo o PO e UX em seu pipeline de desenvolvimento
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
 
Structs em C
Structs em CStructs em C
Structs em C
 

Recently uploaded

Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Recently uploaded (20)

apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...apostila filosofia 1 ano  1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
apostila filosofia 1 ano 1s (1).pdf 1 ANO DO ENSINO MEDIO . CONCEITOSE CARAC...
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024Historia de Portugal - Quarto Ano - 2024
Historia de Portugal - Quarto Ano - 2024
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
tensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptxtensoes-etnicas-na-europa-template-1.pptx
tensoes-etnicas-na-europa-template-1.pptx
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 

Análise assintótica

  • 3. • Definição de algoritmo • Definição de tipo de dado • Definição de TAD • Análise de algoritmos
  • 4. Hoje • Análise da complexidade de algoritmos • Resolver exercícios
  • 5. Mas antes... Uma definição mais simples do que é tipo de dado (pra responder na prova se cair!!!): • Em linguagens de programação o tipo de dado de uma variável, constante ou função define o conjunto de valores que a variável, constante ou função pode assumir. • Ex.: variável boolean pode assumir valores true ou false. Portanto true e false é o conjunto de valores de uma variável booleana.
  • 6. Por que analisar um algoritmo? Depois que decidimos qual o problema que queremos resolver (Ex. encontrar um elemento num conjunto de valores), precisamos ter certeza que o algoritmo escolhido para o nosso problema, irá resolvê-lo em um espaço de tempo e consumir memória, num intervalo de tempo e quantidade de memória gastas aceitáveis para nosso cliente.
  • 7. Por que analisar um algoritmo? Nenhum cliente vai querer um programa que demora 10 minutos para encontrar um elemento dentro de um conjunto de valores! Isso é perda de dinheiro e tempo, uma vez que deve existir um algoritmo que faça isso em poucos milissegundos!
  • 8. Por que analisar um algoritmo? No final, o que vai importar na análise é qual o caso médio que tal algoritmo demora para nos dar a saída do problema!
  • 9. Passos para analisar um algoritmo e decidir os três casos 1. Entenda o problema: sem entender o problema é praticamente impossível determinar os três casos corretamente.
  • 10. Entendendo o problema Se temos o problema de encontrar um elemento num conjunto de valores, entender o problema significa: Talvez o elemento procurado esteja na primeira posição buscada, ou talvez esteja na última. Mas ele pode também estar no meio ou próximo de lá. Dessa maneira já sabemos qual os nossos melhor caso, pior caso e caso médio respectivamente. Agora só precisamos encontrar uma maneira de representa-los matematicamente.
  • 11. Passos para analisar um algoritmo e decidir os três casos 2. Encontre no algoritmo loops e estruturas condicionais. ESQUEÇA O RESTO!
  • 12. Encontre loops e condicionais
  • 13. Encontre loops e condicionais
  • 14. Passos para analisar um algoritmo e decidir os três casos 3. Decida quantas vezes o condicional irá executar baseado na quantidade de vezes que o loop executa. *É preciso olhar para o condicional, pois o custo de acesso a memória vem dele!
  • 15. Encontre loops e condicionais Se tamanho = n, então o for executará n vezes, uma vez que vai de 0 até (n – 1). Para visualizar o número de vezes que o for executa, pode-se fazer o seguinte: Por exemplo, se n = 2, i começa em 0 (i = 0) e 0 < 2. Na segunda iteração, i recebe 1 (i = 1) e 1 < 2. A terceira iteração nos dá que i será igual a 2 (i = 2) e 2 < 2 é falso e o loop não será executado novamente.Logo, o loop executou somente 2 vezes, uma vez que a terceira iteração não foi executada. Veja que 2 é o número de elementos que temos, pois n = 2 e então o loop rodou n vezes.
  • 16. Passos para analisar um algoritmo e decidir os três casos 3. Seja f(n) uma função de complexidade, decida f(n) para o melhor e pior caso e caso médio, utilizando seu conhecimento sobre o problema.
  • 17. Decida quantas vezes será executado Melhor caso: 𝑓 𝑛 = 1 O if foi acessado somente uma vez, pois o elemento estava na primeira posição acessada. Pior caso: 𝑓 𝑛 = 𝑛 O if foi acessado todas as vezes que o loop executou, pois o elemento procurado estava na última posição acessada ou não estava no vetor. Seja 𝑓 𝑛 uma função de complexidade definida pelo número de elementos consultados no arquivo.
  • 18. Decida quantas vezes será executado Caso médio: 𝑓 𝑛 = 𝑛+1 2 O caso médio é dado por: 𝑃𝑖𝑜𝑟 𝑐𝑎𝑠𝑜 + 𝑀𝑒𝑙ℎ𝑜𝑟 𝑐𝑎𝑠𝑜 2 É o mesmo que dizer que o elemento está no meio ou próximo dele! Seja 𝑓 𝑛 uma função de complexidade definida pelo número de elementos consultados no arquivo.
  • 19. Análise assintótica Para a análise de algoritmos só vai importar mesmo, quando temos valores enormes de n. Isso é necessário, porque até mesmo o pior dos algoritmos pode resolver algum problema quando n é suficientemente pequeno.
  • 20. Análise assintótica O tipo de matemática que está interessado em valores enormes de n, é chamado de assintótico, e as funções aqui definidas serão classificadas em “ordens” (como as ordens religiosas da Idade Média), onde todas as funções de uma mesma ordem são equivalentes.
  • 21. Análise assintótica Por exemplo, sejam as funções: n2 , (3/2)n2 , 9999n2 , n2/1000 , n2+100n , etc. Elas crescem todas na mesma velocidade e portanto são todas “equivalentes” e desse modo de mesma “ordem”.
  • 22. Análise assintótica Por exemplo, sejam as funções: n2 , (3/2)n2 , 9999n2 , n2/1000 , n2+100n , etc. Nesse caso é fácil de perceber que todas crescem na mesma velocidade. Todas as funções dadas são quadráticas. Olhem para os gráficos á seguir:
  • 23.
  • 24.
  • 25.
  • 26. Análise assintótica As proporções são diferentes, mas as curvas tem o mesmo comportamento! (comportamento é o mesmo que dizer crescimento) Aqui, vamos nos concentrar na primeira ordem, a Ordem O.
  • 27. Dominação assintótica Se pudermos provar que f(n) domina assintoticamente g(n) a partir de um ponto m quando n-> infinito, então o caso ao lado não pode ser verdadeiro! A partir de agora, passaremos a representar os algoritmos através de funções de complexidade de variável n onde essa função é sempre maior que zero. Para o nosso contexto, vamos definir que uma função f(n) domina assintoticamente outra função g(n) se quando n -> infinito, a curva de g(n) nunca crescerá mais rápido que a curva de f(n) a partir de um ponto m (n0).
  • 28. Ordem O Definição: Dadas funções assintoticamente não negativas f(n) e g(n), dizemos que g(n) está na ordem O de f(n) e escrevemos para expressar que f(n) domina assintoticamente g(n). Isso significa dizer que se o tempo de execução de um programa fosse representado por g(n), ele seria da ordem de no máximo f(n).
  • 29. Ordem O Se afirmamos que então estamos dizendo que é possível encontrar duas constantes positivas c e m tais que, para 𝑛 ≥ 𝑚 temos 𝑔 𝑛 ≤ 𝑐 ∗ |𝑓 𝑛 |. No gráfico ao lado, f(n) só domina assintoticamente g(n) a partir de m e quando encontramos uma constante c apropriada!
  • 30. Ordem O Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2 𝑒 𝑓 𝑛 = 𝑛2 podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ? Pela definição isso será verdade quando 𝑛 + 1 2 ≤ 𝑐𝑛2 𝑝𝑎𝑟𝑎 𝑛 ≥ 𝑚 Cada problema tem uma forma mais prático que outro para encontrarmos a constante c. Para esse caso precisamos abrir g(n) ficando com: 𝑛2 + 2𝑛 + 1 A estratégia aqui é igualar os graus em todos os elementos acima com f(n), que possui o maior grau quadrático (2). Logo, sabemos então que: 𝑛2 + 2𝑛 + 1 ≤ 𝑛2 + 2𝑛2 + 1𝑛2 Para algum 𝑛 ≥ 0 que ainda não sabemos qual é (esse será nosso m!)
  • 31. Ordem O Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2 𝑒 𝑓 𝑛 = 𝑛2 podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ? 𝑛2 + 2𝑛 + 1 ≤ 𝑛2 + 2𝑛2 + 1𝑛2 Somando todos os termos do lado direito temos que: 𝑛2 + 2𝑛 + 1 ≤ 4𝑛2 (1) Comparando com a nossa situação inicial: 𝑛 + 1 2 = 𝑛2 + 2𝑛 + 1 ≤ 𝑐𝑛2 Podemos perceber que c = 4. Vamos achar nosso m. Se n = 0, substituindo em (1): 1 ≤ 0 𝑜 𝑞𝑢𝑒 𝑛ã𝑜 é 𝑣𝑒𝑟𝑑𝑎𝑑𝑒!
  • 32. Ordem O Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2 𝑒 𝑓 𝑛 = 𝑛2 podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ? 𝑛2 + 2𝑛 + 1 ≤ 𝑛2 + 2𝑛2 + 1𝑛2 Somando todos os termos do lado direito temos que: 𝑛2 + 2𝑛 + 1 ≤ 4𝑛2 (1) Se n = 1, substituindo em (1): 4 ≤ 4 𝑜 𝑞𝑢𝑒 é 𝑣𝑒𝑟𝑑𝑎𝑑𝑒! Como já determinamos nosso c, então o primeiro valor de n que torna a inequação verdadeira será o nosso n!
  • 33. Ordem O Exemplo: Seja 𝑔 𝑛 = 𝑛 + 1 2 𝑒 𝑓 𝑛 = 𝑛2 podemos afirmar que 𝑔 𝑛 = 𝑂 𝑓 𝑛 ? Logo 𝑔 𝑛 = 𝑂 𝑓 𝑛 é uma afirmação válida quando definimos c = 4 e m = 1. É importante notar que nem sempre se conseguirá resolver o problema utilizando esta abordagem e precisamos de outras estratégias para encontrar as duas constantes que vão provar a nossa afirmação!