SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
Lucas Bernardo de Souza Nascimento
Análise
de Complexidade em
Algoritmos
Introdução
Ela é importante porque torna possível implementar
analisar fatores que não são possíveis empiricamente,
como a comparação entre vários algoritmos que
realizam uma determinada tarefa, ou a previsão de um
comportamento ou do seu provável custo quando
mudado algum parâmetro, ou para um novo ambiente.
A IMPORTÂNCIA DA ANÁLISE
MATEMÁTICA
Contando Instruções
Podemos analisar o
número de instruções
segundo alguns cenários
esperados, como no pior
caso onde executa o
número
máximo de instruções e no
melhor caso onde se
executa o número mínimo
de instruções.
Deste modo para analise de
complexidade do
algoritmo mais comumente
usada, se utiliza o número
de instruções no pior caso,
porque esse é ser o caso
onde é possível cobrir todas
as possibilidades e
comparar os algoritmos em
valores de n grandes.
Comportamentoassintótico
O parâmetro N expressa uma medida de complexidade de um
problema, e consequentemente do tempo que se é gasto para
resolve-lo.
Formalmente o conceito que é mais utilizado é o de Dominação Assintótica
que diz que “Uma função f(n) domina assintoticamente outra função g(n) se
existem duas constantes positivas c e m tais que, para n ≥ m , temos
|g(n)| ≤ c|f(n)|”.
Tipos de análise assintótica
NOTAÇÃO O
Formalmente é definida como
g(n) = O(f(n)), onde isso
significa que f(n) domina
assintoticamente g(n). Ela
descreve o limite assintótico
superior, e é utilizada para
analisar o “pior caso” do
determinado algoritmo.
NOTAÇÃO Ω
Uma função g(n) é Ω(f(n)) se g(n)
domina assintoticamente f(n). A
notação Ômega define o limite
inferior. Desta maneira a notação
Ômega permite demonstrar o
valor do limite inferior da função
complexidade. E assim é utilizada
para analisar o “melhor caso” do
algoritmo.
NOTAÇÃO Θ
Essa notação é utilizada na
definição do chamado limite
assintótico firme. Ela analisa
simultaneamente o limite
inferior e superior desse
algoritmo. Então a definição
formal é que uma função g(n) é
Θ(f(n)) se g(n) e f(n) dominam
assintoticamente uma à outra.
Classes de problemas
f(n) = O (1)
Algoritmos
complexidade
constante, ele é
definido por um
custo
constante não
dependente dos
valores da variável n.
f(n) = O (log n)
Algoritmos de
complexidade
logarítmica, ele
definido por
algoritmos que
resolvem um
problema o
dividindo em
problemas menores.
f (n) = O (n)
Algoritmos de
complexidade
linear, são
caraterizados por
realizar um
pequeno trabalho
para cada dado de
entrada, ou seja,
para cada valor
de n.
f (n) = O (n log n)
Algoritmos de
complexidade log
linear, são
algoritmos que realizam
divisões dos problemas.
Essas divisões resolvem
os problemas de forma
independente e depois
os unifica em uma só
resposta.
f (n) = O (n^2)
Algoritmo de
complexidade
quadrática. O
processamento do
problema é realizado
aos pares. Sempre
que o valor de n
dobra o tempo de
execução é
multiplicado por 4.
Classes de problemas
f (n) = O (n^3)
Definido
como um algoritmo de
complexidade cúbica. Mesmo
para um n não muito grande esta
classe de competividade já é
muito custosa. Quando o valor
de n é 100, o número
de operações é da já é da ordem
de 1 milhão.
ƒ(n) = O (2^n)
Chamado de algoritmo de
complexidade exponencial.
Não são
uteis de forma prática,
porque mesmo para valores
de n relativamente
pequenos o
número de operações já
passada dos milhões.
CONSIDERAÇÕES
FINAIS E OBRIGADO!
CONCLUSÃO

Mais conteúdo relacionado

Semelhante a Análise de Complexidade em Algoritmos.pdf

Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintóticaPablo Silva
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmosPablo Silva
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação DinâmicaOrlando Junior
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
Classes de Problemas P e NP
Classes de Problemas P e NPClasses de Problemas P e NP
Classes de Problemas P e NPOrlando Junior
 
Algorítmo estruturado
Algorítmo estruturadoAlgorítmo estruturado
Algorítmo estruturadoNaldo Falaschi
 
Tutorial aed iii 005 - algoritmo de ordenação quicksort
Tutorial aed iii   005 - algoritmo de ordenação quicksortTutorial aed iii   005 - algoritmo de ordenação quicksort
Tutorial aed iii 005 - algoritmo de ordenação quicksortFlávio Freitas
 
Programacao Funcional em Java, Expressoes Lambda
Programacao Funcional em Java, Expressoes LambdaProgramacao Funcional em Java, Expressoes Lambda
Programacao Funcional em Java, Expressoes LambdaJuvncio1
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionaisDérick Platini
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em PascalPepe Rocker
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Universidade de São Paulo
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de ProgramaçãoAdao Chiavelli
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
 

Semelhante a Análise de Complexidade em Algoritmos.pdf (20)

Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Programação Dinâmica
Programação DinâmicaProgramação Dinâmica
Programação Dinâmica
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Classes de Problemas P e NP
Classes de Problemas P e NPClasses de Problemas P e NP
Classes de Problemas P e NP
 
Algorítmo estruturado
Algorítmo estruturadoAlgorítmo estruturado
Algorítmo estruturado
 
Cap1
Cap1Cap1
Cap1
 
Tutorial aed iii 005 - algoritmo de ordenação quicksort
Tutorial aed iii   005 - algoritmo de ordenação quicksortTutorial aed iii   005 - algoritmo de ordenação quicksort
Tutorial aed iii 005 - algoritmo de ordenação quicksort
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
Complexidade algoritmos
Complexidade algoritmosComplexidade algoritmos
Complexidade algoritmos
 
Programacao Funcional em Java, Expressoes Lambda
Programacao Funcional em Java, Expressoes LambdaProgramacao Funcional em Java, Expressoes Lambda
Programacao Funcional em Java, Expressoes Lambda
 
Algoritmo maxmin
Algoritmo maxminAlgoritmo maxmin
Algoritmo maxmin
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionais
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
Complexidade de Algoritmos, Notação assintótica, Algoritmos polinomiais e in...
 
Cap04
Cap04Cap04
Cap04
 
Cap04
Cap04Cap04
Cap04
 
Cap04
Cap04Cap04
Cap04
 
Lógica de Programação
Lógica de ProgramaçãoLógica de Programação
Lógica de Programação
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
 

Último

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (6)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Análise de Complexidade em Algoritmos.pdf

  • 1. Lucas Bernardo de Souza Nascimento Análise de Complexidade em Algoritmos
  • 2. Introdução Ela é importante porque torna possível implementar analisar fatores que não são possíveis empiricamente, como a comparação entre vários algoritmos que realizam uma determinada tarefa, ou a previsão de um comportamento ou do seu provável custo quando mudado algum parâmetro, ou para um novo ambiente. A IMPORTÂNCIA DA ANÁLISE MATEMÁTICA
  • 3. Contando Instruções Podemos analisar o número de instruções segundo alguns cenários esperados, como no pior caso onde executa o número máximo de instruções e no melhor caso onde se executa o número mínimo de instruções. Deste modo para analise de complexidade do algoritmo mais comumente usada, se utiliza o número de instruções no pior caso, porque esse é ser o caso onde é possível cobrir todas as possibilidades e comparar os algoritmos em valores de n grandes.
  • 4. Comportamentoassintótico O parâmetro N expressa uma medida de complexidade de um problema, e consequentemente do tempo que se é gasto para resolve-lo. Formalmente o conceito que é mais utilizado é o de Dominação Assintótica que diz que “Uma função f(n) domina assintoticamente outra função g(n) se existem duas constantes positivas c e m tais que, para n ≥ m , temos |g(n)| ≤ c|f(n)|”.
  • 5. Tipos de análise assintótica NOTAÇÃO O Formalmente é definida como g(n) = O(f(n)), onde isso significa que f(n) domina assintoticamente g(n). Ela descreve o limite assintótico superior, e é utilizada para analisar o “pior caso” do determinado algoritmo. NOTAÇÃO Ω Uma função g(n) é Ω(f(n)) se g(n) domina assintoticamente f(n). A notação Ômega define o limite inferior. Desta maneira a notação Ômega permite demonstrar o valor do limite inferior da função complexidade. E assim é utilizada para analisar o “melhor caso” do algoritmo. NOTAÇÃO Θ Essa notação é utilizada na definição do chamado limite assintótico firme. Ela analisa simultaneamente o limite inferior e superior desse algoritmo. Então a definição formal é que uma função g(n) é Θ(f(n)) se g(n) e f(n) dominam assintoticamente uma à outra.
  • 6. Classes de problemas f(n) = O (1) Algoritmos complexidade constante, ele é definido por um custo constante não dependente dos valores da variável n. f(n) = O (log n) Algoritmos de complexidade logarítmica, ele definido por algoritmos que resolvem um problema o dividindo em problemas menores. f (n) = O (n) Algoritmos de complexidade linear, são caraterizados por realizar um pequeno trabalho para cada dado de entrada, ou seja, para cada valor de n. f (n) = O (n log n) Algoritmos de complexidade log linear, são algoritmos que realizam divisões dos problemas. Essas divisões resolvem os problemas de forma independente e depois os unifica em uma só resposta. f (n) = O (n^2) Algoritmo de complexidade quadrática. O processamento do problema é realizado aos pares. Sempre que o valor de n dobra o tempo de execução é multiplicado por 4.
  • 7. Classes de problemas f (n) = O (n^3) Definido como um algoritmo de complexidade cúbica. Mesmo para um n não muito grande esta classe de competividade já é muito custosa. Quando o valor de n é 100, o número de operações é da já é da ordem de 1 milhão. ƒ(n) = O (2^n) Chamado de algoritmo de complexidade exponencial. Não são uteis de forma prática, porque mesmo para valores de n relativamente pequenos o número de operações já passada dos milhões.