SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
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?

Weitere ähnliche Inhalte

Was ist angesagt?

Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
Daniel Moura
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
Sidney Roberto
 

Was ist angesagt? (20)

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...
 
Visualg
VisualgVisualg
Visualg
 
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 6 - Constantes e variáveis
Aula 6 - Constantes e variáveisAula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveis
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Informática Básica - Aula 04 - Software
Informática Básica - Aula 04 - SoftwareInformática Básica - Aula 04 - Software
Informática Básica - Aula 04 - Software
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Lógica de programação em ppt
Lógica de programação em pptLógica de programação em ppt
Lógica de programação em ppt
 
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
Sistemas Operacionais - Aula 01 (Conceitos básicos de so)
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Aula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, InformaçãoAula 02 - Sistemas, Dados, Informação
Aula 02 - Sistemas, Dados, Informação
 
Aprendizado de máquina
Aprendizado de máquinaAprendizado de máquina
Aprendizado de máquina
 
Algoritmos - Pascal
Algoritmos - PascalAlgoritmos - Pascal
Algoritmos - Pascal
 
Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04Lógica e Matemática Computacional - Aula 04
Lógica e Matemática Computacional - Aula 04
 

Ähnlich wie Análise da complexidade de algoritmos

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
 

Ähnlich wie 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
 
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
 

Mehr von Pablo Silva

Mehr von 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
 

Kürzlich hochgeladen

Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
marlene54545
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 

Kürzlich hochgeladen (20)

EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVAEDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
EDUCAÇÃO ESPECIAL NA PERSPECTIVA INCLUSIVA
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
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
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
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...
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 

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!