SlideShare uma empresa Scribd logo
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?

Mais conteúdo relacionado

Mais procurados

Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)
Alex Camargo
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
Carlos Henrique Martins da Silva
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
Fernando Palma
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
thomasdacosta
 
Logica programacao python-slides
Logica programacao python-slidesLogica programacao python-slides
Logica programacao python-slides
ronaldo ramos
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
Felipe J. R. Vieira
 
03 FTI Hardware e Software-atualizado.pptx
03 FTI Hardware e Software-atualizado.pptx03 FTI Hardware e Software-atualizado.pptx
03 FTI Hardware e Software-atualizado.pptx
EduardoHernandes9
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
Clayton de Almeida Souza
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Gercélia Ramos
 
Aula 01 fundamentos da informática
Aula 01   fundamentos da informáticaAula 01   fundamentos da informática
Aula 01 fundamentos da informáticaGilberto Campos
 
Auditoria de sistemas de informação
Auditoria de sistemas de informaçãoAuditoria de sistemas de informação
Auditoria de sistemas de informação
Silvino Neto
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
vini_campos
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
Guilherme
 
Seguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - NovoSeguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - NovoLuiz Arthur
 
Aula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de InformaçãoAula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de Informação
Daniel Brandão
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Pacc UAB
 
Data science
Data scienceData science
Data science
Nauber Gois
 
Sistemas de Apoio à Decisão
Sistemas de Apoio à DecisãoSistemas de Apoio à Decisão
Sistemas de Apoio à Decisão
Rogério Fernandes da Costa
 

Mais procurados (20)

Javascript (parte 1)
Javascript (parte 1)Javascript (parte 1)
Javascript (parte 1)
 
Aula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da InformaçãoAula 1 - Introdução a Segurança da Informação
Aula 1 - Introdução a Segurança da Informação
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Introdução à Aprendizagem de Máquina
Introdução à Aprendizagem de MáquinaIntrodução à Aprendizagem de Máquina
Introdução à Aprendizagem de Máquina
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Logica programacao python-slides
Logica programacao python-slidesLogica programacao python-slides
Logica programacao python-slides
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
03 FTI Hardware e Software-atualizado.pptx
03 FTI Hardware e Software-atualizado.pptx03 FTI Hardware e Software-atualizado.pptx
03 FTI Hardware e Software-atualizado.pptx
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
Pseudocódigo - Estrutura de Repetição (Lógica de Programação)
 
Aula 01 fundamentos da informática
Aula 01   fundamentos da informáticaAula 01   fundamentos da informática
Aula 01 fundamentos da informática
 
Auditoria de sistemas de informação
Auditoria de sistemas de informaçãoAuditoria de sistemas de informação
Auditoria de sistemas de informação
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Análise e Projeto de Sistemas
Análise e Projeto de SistemasAnálise e Projeto de Sistemas
Análise e Projeto de Sistemas
 
Seguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - NovoSeguranca da Informação - Introdução - Novo
Seguranca da Informação - Introdução - Novo
 
Aula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de InformaçãoAula 01 - Introdução ao Sistema de Informação
Aula 01 - Introdução ao Sistema de Informação
 
Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1Aula 5 - Estruturas de seleção simples e composta - parte 1
Aula 5 - Estruturas de seleção simples e composta - parte 1
 
Data science
Data scienceData science
Data science
 
Sistemas de Apoio à Decisão
Sistemas de Apoio à DecisãoSistemas de Apoio à Decisão
Sistemas de Apoio à Decisão
 

Semelhante a Análise da complexidade 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
ssuserd654cb1
 
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
ssuserd654cb1
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
ItaloRainier1
 
Metódos de Pesquisa em C
Metódos de Pesquisa em CMetódos de Pesquisa em C
Metódos de Pesquisa em C
rodolfoeyalana
 
Sequencias e-series
Sequencias e-seriesSequencias e-series
Sequencias e-series
jhujha
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
Pablo Silva
 
Estatistica regular 8
Estatistica regular 8Estatistica regular 8
Estatistica regular 8J M
 
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
SimoneSantos16595
 
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
LukasBernardo
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmostuelocg
 
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
Flávio Freitas
 
Cálculo Numérico
Cálculo NuméricoCálculo Numérico
Cálculo NuméricoSandro Lima
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracaoRicardo Bolanho
 
Python
PythonPython

Semelhante a Análise da complexidade de algoritmos (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
 
Relações de recorrência
Relações de recorrênciaRelações de recorrência
Relações de recorrência
 
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
 

Mais de Pablo Silva

Agilidade, times e outras coisas mais
Agilidade, times e outras coisas maisAgilidade, times e outras coisas mais
Agilidade, times e outras coisas mais
Pablo Silva
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performance
Pablo Silva
 
Times de produto de alta performance
Times de produto de alta performanceTimes de produto de alta performance
Times de produto de alta performance
Pablo Silva
 
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...
Pablo Silva
 
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?
Pablo Silva
 
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...
Pablo Silva
 
As próximas ondas da tecnologia
As próximas ondas da tecnologiaAs próximas ondas da tecnologia
As próximas ondas da tecnologia
Pablo Silva
 
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
Pablo Silva
 
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
Pablo Silva
 
Lets talk about OKRs
Lets talk about OKRsLets talk about OKRs
Lets talk about OKRs
Pablo Silva
 
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
Pablo Silva
 
Á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!
Pablo Silva
 
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...
Pablo Silva
 
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)
Pablo Silva
 
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)
Pablo Silva
 
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
Pablo Silva
 
Revisão sobre ponteiros em C
Revisão sobre ponteiros em CRevisão sobre ponteiros em C
Revisão sobre ponteiros em C
Pablo Silva
 
Structs em C
Structs em CStructs em C
Structs em C
Pablo Silva
 
Recursividade
RecursividadeRecursividade
Recursividade
Pablo Silva
 
Funções em C
Funções em CFunções em C
Funções em C
Pablo Silva
 

Mais de Pablo Silva (20)

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
 
Recursividade
RecursividadeRecursividade
Recursividade
 
Funções em C
Funções em CFunções em C
Funções em C
 

Último

Aula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptxAula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptx
kdn15710
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
enpfilosofiaufu
 
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdfCADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
NatySousa3
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
Martin M Flynn
 
ptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultosptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultos
Escola Municipal Jesus Cristo
 
História Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco LeiteHistória Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco Leite
profesfrancleite
 
Memorial do convento slides- português 2023
Memorial do convento slides- português 2023Memorial do convento slides- português 2023
Memorial do convento slides- português 2023
MatildeBrites
 
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdfAPOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
RenanSilva991968
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Mary Alvarenga
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
RafaelNeves651350
 
O autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdfO autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdf
Letícia Butterfield
 
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxSlides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
LuizHenriquedeAlmeid6
 
Caça-palavras ortografia M antes de P e B.
Caça-palavras    ortografia M antes de P e B.Caça-palavras    ortografia M antes de P e B.
Caça-palavras ortografia M antes de P e B.
Mary Alvarenga
 
Unificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da AlemanhaUnificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da Alemanha
Acrópole - História & Educação
 
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
CrislaineSouzaSantos
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Bibliotecas Infante D. Henrique
 
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
Roteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptxRoteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptx
pamellaaraujo10
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
Mary Alvarenga
 

Último (20)

Aula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptxAula01 - ensino médio - (Filosofia).pptx
Aula01 - ensino médio - (Filosofia).pptx
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
 
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdfCADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
 
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptxMÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
MÁRTIRES DE UGANDA Convertem-se ao Cristianismo - 1885-1887.pptx
 
ptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultosptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultos
 
História Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco LeiteHistória Do Assaré - Prof. Francisco Leite
História Do Assaré - Prof. Francisco Leite
 
Memorial do convento slides- português 2023
Memorial do convento slides- português 2023Memorial do convento slides- português 2023
Memorial do convento slides- português 2023
 
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdfAPOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
APOSTILA DE TEXTOS CURTOS E INTERPRETAÇÃO.pdf
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
 
O autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdfO autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdf
 
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxSlides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
 
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxSlides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptx
 
Caça-palavras ortografia M antes de P e B.
Caça-palavras    ortografia M antes de P e B.Caça-palavras    ortografia M antes de P e B.
Caça-palavras ortografia M antes de P e B.
 
Unificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da AlemanhaUnificação da Itália e a formação da Alemanha
Unificação da Itália e a formação da Alemanha
 
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
 
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
 
Roteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptxRoteiro para análise do Livro Didático .pptx
Roteiro para análise do Livro Didático .pptx
 
Sinais de pontuação
Sinais de pontuaçãoSinais de pontuação
Sinais de pontuação
 

Análise da complexidade de algoritmos

  • 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!