SlideShare une entreprise Scribd logo
1  sur  49
Télécharger pour lire hors ligne
Introdução a Análise e
Complexidade de
Algoritmos
Nécio de Lima Veras
Objetivo
Conhecer aspectos básicos sobre a análise e complexidade
de algoritmos.
Antes de qualquer coisa …
O que é mesmo um algoritmo?
Cormen (2002)
“Qualquer procedimento computacional bem
definido que toma algum valor ou conjunto de
valores como entrada e produz algum valor ou
conjunto de valores como saída”
Algoritmos
• Razões para estudar:

• Prática: 

• Devemos conhecer um conjunto de algoritmos de diferentes
áreas;

• Devemos ser capazes de projetar novos algoritmos e analisar
suas eficiências;

• Teóricas: 

• O estudo de algoritmos é a “pedra fundamental” da computação; 

• Desenvolver habilidades analíticas.
Algoritmos
Tipos importantes de
problemas
• Ordenação: reorganizar itens de uma estrutura seguindo
alguma ordem; 

• Busca: encontrar um dado valor chave em um dado
conjunto de valores; 

• Processamento de textos: buscar uma dada palavra em
um texto; avaliar similaridade entre cadeias de caracteres;
etc; 

• Problemas em grafos: planejamento de rotas; caminho
mais curto; ordenação topológica;
Tipos importantes de
problemas
• Problemas combinatoriais: encontrar um objeto
combinatória (permutações, combinações ou
subconjuntos) que satisfaça certas restrições e tenha
certas prioridades (maximizar um valor ou minimizar um
custo);

• Problemas geométricos: envolve objetos geométricos
como pontos, linhas ou polígonos; 

• Problemas numéricos: envolve objetos matemáticos de
natureza contínua: resolução de equações e sistemas de
equações; integrais definidas, etc.
Estratégias de projeto de
algoritmos
• Força bruta (brute force);

• Dividir para conquistar (divide and conquer); 

• Diminuir e conquistar (decrease and conquer); 

• Transformar e conquistar (transform and conquer); 

• Compromisso tempo-espaço (space and time tradeoffs); 

• Estratégia gulosa (greedy); 

• Programação dinâmica (dynamic programming); 

• Voltando atrás (bracktracing);

• Ramificar e limitar (branch and bound);
Análise de algoritmos
• Significa prever os recursos de que ele necessitará. 

• Em geral memória, largura de banda de comunicação ou hardware de
computação são as preocupações principais, mas frequentemente é o
tempo de computação que se deseja medir (Cormen, 2012).

• Basicamente temos dois tipos de análise:

• De um algoritmo particular - calcular o custo de um algoritmo
na resolução de um problema específico; 

• De uma classe de algoritmos - considerando um problema
específico, determinar o algoritmo de menor custo possível
para resolvê-lo.
Como calcular o custo
de um algoritmo?
Moleza!!!
Calculando a sua complexidade
:)
Complexidade computacional?
• Termo criado por Juris Hartmanis e Richard Stearns (1965) 

• Classificação de problemas de acordo com sua dificuldade

• Relação entre: tamanho do problema; o tempo e espaço
necessários para resolvê-lo; 

• Fundamental para projetar e analisar algoritmos.

• Leitura complementar: https://pt.wikipedia.org/wiki/Complexidade_computacional
Complexidade computacional?
• Termo criado por Juris Hartmanis e Richard Stearns (1965) 

• Classificação de problemas de acordo com sua dificuldade

• Relação entre: tamanho do problema; o tempo e espaço
necessários para resolvê-lo; 

• Fundamental para projetar e analisar algoritmos.

• Leitura complementar: https://pt.wikipedia.org/wiki/Complexidade_computacional
Complexidade de
algoritmos
• Complexidade Espacial:

• Quantidade de recursos utilizados para resolver o
problema

• Complexidade Temporal: 

• Quantidade de tempo utilizado, ou número de instruções
necessárias para resolver determinado problema 

• Medida de complexidade

• Parâmetro: tamanho do problema
Exemplos
• Ordenar n números

• Multiplicar duas matrizes quadradas n x n (cada uma com
n2 elementos) 

“Relação entre: tamanho do problema; o tempo e espaço
necessários para resolvê-lo”
Complexidade de
algoritmos
Espacial Temporal
Recursos (memória)
necessários
• Tempo

• Número de instruções
necessárias

• Perspectivas:

• Pior caso;

• Caso médio; 

• Melhor caso.
Complexidade de
algoritmos
Espacial Temporal
Recursos (memória)
necessários
• Tempo

• Número de instruções
necessárias

• Perspectivas:

• Pior caso;

• Caso médio; 

• Melhor caso.
Como analisar por essas perspectivas?
Melhor caso
• Menor tempo de execução para uma entrada de tamanho n 

• É pouco usado, por ter aplicação em poucos casos 

• Exemplo: 

• Problema: encontrar um elemento em uma lista de n números

• Complexidade no melhor caso: 

• Assume-se que o número estaria logo na topo da lista 

T(n) = 1
(função T que determina a complexidade de tempo)
Pior caso
• Maior tempo de execução sobre entradas de tamanho n 

• É mais fácil de se obter

• Exemplo:

• Problema: encontrar um elemento em uma lista de n números 

• Complexidade no pior caso:

• Assume-se que, no pior caso, o número estaria no final da
lista 

T(n) = n
Caso médio
• Média dos tempos de execução de todas as entradas de tamanho n, ou
baseado em probabilidade de determinada condição ocorrer

• É mais difícil de se determinar

• Exemplo:

• Problema: encontrar um elemento em uma lista de n números 

• Complexidade no caso médio:

• Para encontrar o i-ésimo número são necessárias i comparações
com probabilidade pi de procurar pelo número. Dado por: 

T(n) = 1 . p1 + 2 . p2 + 3 . p3 + … + n . pn
Caso médio
• Desenvolvendo, temos:
Análise dos casos
• Então, determine T(n) quando o tamanho da lista n for:
n
Melhor caso
T(n) = 1
Caso médio
T(n) = (n + 1) / 2
Pior caso
T(n) = n
10
100
10000
1000000
Análise dos casos
• Então, determine T(n) quando o tamanho da lista n for:
n
Melhor caso
T(n) = 1
Caso médio
T(n) = (n + 1) / 2
Pior caso
T(n) = n
10 1 5,5 10
100 1 50,5 100
10000 1 5000,5 10000
1000000 1 500000,5 1000000
Análise dos casos
0
250000
500000
750000
1000000
n= 10 n = 100 n = 10000 n = 1000000
Pior caso Caso médio
Crescimento de funções
• Comportamento assintótico 

• Quando n tem valor muito grande (n >> ∞)

• Termos inferiores e constantes multiplicativas
contribuem pouco na comparação e podem ser
descartados 

• Exemplo: 

• Algoritmo 1: f1(n) = 2n2 + 5n operações 

• Algoritmo 2: f2(n) = 500n + 4000 operações
Crescimento de funções
• Comportamento assintótico 

• Quando n tem valor muito grande (n >> ∞)

• Termos inferiores e constantes multiplicativas contribuem pouco na
comparação e podem ser descartados 

• Exemplo: 

• Algoritmo 1: f1(n) = 2n2 + 5n operações 

• Algoritmo 2: f2(n) = 500n + 4000 operações 

Como crescem f1 e f2 ?
Qual o algoritmo mais eficiente?
Notação assintótica
• Define limites para o crescimento assintótico das
funções; 

• Preocupação principal:

• A maneira como o tempo de execução de um
algoritmo aumenta com o tamanho da entrada no
limite, à medida que o tamanho da entrada aumenta
indefinidamente (tendendo ao infinito).
A notação Ω (ômega)
• Oferece um limite inferior assintótico 

• Definição: Sejam f e g duas funções com domínio X.
Dizemos que a função f é Ω(g(n)) sse

(∃c ∈ R+)(∃n0 ∈ X)(∀n ≥ n0)(c.|g(n)| ≤ |f(n)|)
Notação Ω
• Então uma função f(n) é Ω(g(n)) se existem duas
constantes positivas c e n0 tais que:

c . g(n) ≤ f(n), para todo n ≥ n0
A notação O (ômicron)
• Oferece um limite superior assintótico

• Definição: Sejam f e g duas funções de domínio X.
Dizemos que a função f é O(g(n)) sse

(∃c ∈ R+)(∃ n0 ∈ X)(∀ n ≥ n0) (|f(n)| ≤ c.|g(n)|)
Notação O
• Então uma função f(n) é O(g(n)) se existem duas
constantes positivas c e n0 tais que:

f(n) ≤ c . g(n), para todo n ≥ n0
Exemplos (Notação O)
• 3n + 2 = O(n), pois 3n + 2 ≤ 4n para todo n ≥ 2

• 1000n2 + 100n – 6 = O(n2), pois 

• 1000n2 +100n – 6 ≤ 1001n2 para n ≥ 100 

• f(n) = amnm+...+a1n+a0 => f(n) = O(nm)
A notação θ (theta)
• Oferece limites assintóticos inferior e superior

• Definição: Sejam f e g duas funções de domínio X.
Dizemos que a função f é θ(g(n)) sse

(∃c1, c2 ∈ R+)(∃n0 ∈ X)(∀ n ≥ n0) (c1.|g(n)| ≤ |f(n)| ≤ c2.|g(n)|)
Notação θ
• Então uma função f(n) é θ(g(n)) se existem constantes
positivas c1 e c2 e n0 tais que:

0 ≤ c1 . g(n) ≤ f(n) ≤ c2 . g(n) para todo n ≥ n0
Algumas complexidades conhecidas
Exemplo - soma de vetores
Qual a complexidade no pior caso?
Exemplo - soma de matrizes
Qual a complexidade no pior caso?
Exemplo - multiplicação de matrizes
Qual a complexidade no pior caso?
Exemplo - multiplicação de matrizes
Torre de Hanoi
Torre de Hanoi - implementação
Torre de Hanoi - Análise de complexidade
Importância da análise de complexidade
Exercícios
Referências
• Notas de aula (prof. Valdísio Viana - UECE)

• Notas de aula (prof. José Maria - UFC)

• Algoritmos: Teoria e Prática - Cormen (3a. Edição -
Elsevier)

• Estrutura de dados: algoritmos, análise da complexidade
e implementações em Java e C/C++ - Ana Ascencio e
Graziela Araújo (Pearson)

Contenu connexe

Tendances

Tendances (20)

Lógica de Programação e Algoritmos
Lógica de Programação e AlgoritmosLógica de Programação e Algoritmos
Lógica de Programação e Algoritmos
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
 
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...
 
Segurança da informação
Segurança da informaçãoSegurança da informação
Segurança da informação
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Virus e antivirus
Virus e antivirusVirus e antivirus
Virus e antivirus
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Sistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - ApresentaçãoSistemas Computacionais - Aula 01 - Apresentação
Sistemas Computacionais - Aula 01 - Apresentação
 
Algoritmos e Programação
Algoritmos e ProgramaçãoAlgoritmos e Programação
Algoritmos e Programação
 
Curso completo COBIT 4.1
Curso completo COBIT 4.1Curso completo COBIT 4.1
Curso completo COBIT 4.1
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas Operacionais
 
Computacao Movel Ubiqua
Computacao Movel UbiquaComputacao Movel Ubiqua
Computacao Movel Ubiqua
 
Segurança da Informação
Segurança da InformaçãoSegurança da Informação
Segurança da Informação
 
Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }Lógica de programação { para iniciantes }
Lógica de programação { para iniciantes }
 
Criptografia
CriptografiaCriptografia
Criptografia
 
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
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Periféricos - Curso de Informática
Periféricos - Curso de InformáticaPeriféricos - Curso de Informática
Periféricos - Curso de Informática
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 

Similaire à Introdução à analise e 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
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
gjpbg
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
Leandro Lopes
 

Similaire à Introdução à analise e complexidade de algoritmos (20)

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
 
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
 
0001
00010001
0001
 
000003 complexidade
000003 complexidade000003 complexidade
000003 complexidade
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.ppt
 
Aula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).pptAula_07_Complexidade_de_Algoritmos (1).ppt
Aula_07_Complexidade_de_Algoritmos (1).ppt
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NAAula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
Aula 2 - TEÓRICA - Prof. MSc. Cloves Rocha - PIE - AA - (2018.2) CCO 8 NA
 
11-codigo-limpo-parte-4.pdf
11-codigo-limpo-parte-4.pdf11-codigo-limpo-parte-4.pdf
11-codigo-limpo-parte-4.pdf
 
Aula02
Aula02Aula02
Aula02
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Apostila estrutura de dados 2
Apostila estrutura de dados 2Apostila estrutura de dados 2
Apostila estrutura de dados 2
 
Math
MathMath
Math
 
Big data
Big dataBig data
Big data
 
Artigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdfArtigo sobre complexibilidade complexity.pdf
Artigo sobre complexibilidade complexity.pdf
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Cap1
Cap1Cap1
Cap1
 
Raciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
Raciocínio Lógico Aplicado a Resolução de Problemas MatemáticosRaciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
Raciocínio Lógico Aplicado a Resolução de Problemas Matemáticos
 

Plus de Nécio de Lima Veras

Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
Nécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
Nécio de Lima Veras
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
Nécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
Nécio de Lima Veras
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionais
Nécio de Lima Veras
 

Plus de Nécio de Lima Veras (20)

Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Java swing
Java swingJava swing
Java swing
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionais
 

Dernier

421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
LeloIurk1
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
CleidianeCarvalhoPer
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
LeloIurk1
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
azulassessoria9
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
TailsonSantos1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
HELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
azulassessoria9
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
LeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
Ana Lemos
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
azulassessoria9
 

Dernier (20)

421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para criançasJogo de Rimas - Para impressão em pdf a ser usado para crianças
Jogo de Rimas - Para impressão em pdf a ser usado para crianças
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 

Introdução à analise e complexidade de algoritmos

  • 1. Introdução a Análise e Complexidade de Algoritmos Nécio de Lima Veras
  • 2. Objetivo Conhecer aspectos básicos sobre a análise e complexidade de algoritmos.
  • 3. Antes de qualquer coisa … O que é mesmo um algoritmo?
  • 4. Cormen (2002) “Qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída”
  • 5.
  • 6. Algoritmos • Razões para estudar: • Prática: • Devemos conhecer um conjunto de algoritmos de diferentes áreas; • Devemos ser capazes de projetar novos algoritmos e analisar suas eficiências; • Teóricas: • O estudo de algoritmos é a “pedra fundamental” da computação; • Desenvolver habilidades analíticas.
  • 8. Tipos importantes de problemas • Ordenação: reorganizar itens de uma estrutura seguindo alguma ordem; • Busca: encontrar um dado valor chave em um dado conjunto de valores; • Processamento de textos: buscar uma dada palavra em um texto; avaliar similaridade entre cadeias de caracteres; etc; • Problemas em grafos: planejamento de rotas; caminho mais curto; ordenação topológica;
  • 9. Tipos importantes de problemas • Problemas combinatoriais: encontrar um objeto combinatória (permutações, combinações ou subconjuntos) que satisfaça certas restrições e tenha certas prioridades (maximizar um valor ou minimizar um custo); • Problemas geométricos: envolve objetos geométricos como pontos, linhas ou polígonos; • Problemas numéricos: envolve objetos matemáticos de natureza contínua: resolução de equações e sistemas de equações; integrais definidas, etc.
  • 10.
  • 11.
  • 12. Estratégias de projeto de algoritmos • Força bruta (brute force); • Dividir para conquistar (divide and conquer); • Diminuir e conquistar (decrease and conquer); • Transformar e conquistar (transform and conquer); • Compromisso tempo-espaço (space and time tradeoffs); • Estratégia gulosa (greedy); • Programação dinâmica (dynamic programming); • Voltando atrás (bracktracing); • Ramificar e limitar (branch and bound);
  • 13. Análise de algoritmos • Significa prever os recursos de que ele necessitará. • Em geral memória, largura de banda de comunicação ou hardware de computação são as preocupações principais, mas frequentemente é o tempo de computação que se deseja medir (Cormen, 2012). • Basicamente temos dois tipos de análise: • De um algoritmo particular - calcular o custo de um algoritmo na resolução de um problema específico; • De uma classe de algoritmos - considerando um problema específico, determinar o algoritmo de menor custo possível para resolvê-lo.
  • 14. Como calcular o custo de um algoritmo?
  • 15. Moleza!!! Calculando a sua complexidade :)
  • 16. Complexidade computacional? • Termo criado por Juris Hartmanis e Richard Stearns (1965) • Classificação de problemas de acordo com sua dificuldade • Relação entre: tamanho do problema; o tempo e espaço necessários para resolvê-lo; • Fundamental para projetar e analisar algoritmos. • Leitura complementar: https://pt.wikipedia.org/wiki/Complexidade_computacional
  • 17. Complexidade computacional? • Termo criado por Juris Hartmanis e Richard Stearns (1965) • Classificação de problemas de acordo com sua dificuldade • Relação entre: tamanho do problema; o tempo e espaço necessários para resolvê-lo; • Fundamental para projetar e analisar algoritmos. • Leitura complementar: https://pt.wikipedia.org/wiki/Complexidade_computacional
  • 18. Complexidade de algoritmos • Complexidade Espacial: • Quantidade de recursos utilizados para resolver o problema • Complexidade Temporal: • Quantidade de tempo utilizado, ou número de instruções necessárias para resolver determinado problema • Medida de complexidade • Parâmetro: tamanho do problema
  • 19. Exemplos • Ordenar n números • Multiplicar duas matrizes quadradas n x n (cada uma com n2 elementos) “Relação entre: tamanho do problema; o tempo e espaço necessários para resolvê-lo”
  • 20. Complexidade de algoritmos Espacial Temporal Recursos (memória) necessários • Tempo • Número de instruções necessárias • Perspectivas: • Pior caso; • Caso médio; • Melhor caso.
  • 21. Complexidade de algoritmos Espacial Temporal Recursos (memória) necessários • Tempo • Número de instruções necessárias • Perspectivas: • Pior caso; • Caso médio; • Melhor caso. Como analisar por essas perspectivas?
  • 22. Melhor caso • Menor tempo de execução para uma entrada de tamanho n • É pouco usado, por ter aplicação em poucos casos • Exemplo: • Problema: encontrar um elemento em uma lista de n números • Complexidade no melhor caso: • Assume-se que o número estaria logo na topo da lista T(n) = 1 (função T que determina a complexidade de tempo)
  • 23. Pior caso • Maior tempo de execução sobre entradas de tamanho n • É mais fácil de se obter • Exemplo: • Problema: encontrar um elemento em uma lista de n números • Complexidade no pior caso: • Assume-se que, no pior caso, o número estaria no final da lista T(n) = n
  • 24. Caso médio • Média dos tempos de execução de todas as entradas de tamanho n, ou baseado em probabilidade de determinada condição ocorrer • É mais difícil de se determinar • Exemplo: • Problema: encontrar um elemento em uma lista de n números • Complexidade no caso médio: • Para encontrar o i-ésimo número são necessárias i comparações com probabilidade pi de procurar pelo número. Dado por: T(n) = 1 . p1 + 2 . p2 + 3 . p3 + … + n . pn
  • 26. Análise dos casos • Então, determine T(n) quando o tamanho da lista n for: n Melhor caso T(n) = 1 Caso médio T(n) = (n + 1) / 2 Pior caso T(n) = n 10 100 10000 1000000
  • 27. Análise dos casos • Então, determine T(n) quando o tamanho da lista n for: n Melhor caso T(n) = 1 Caso médio T(n) = (n + 1) / 2 Pior caso T(n) = n 10 1 5,5 10 100 1 50,5 100 10000 1 5000,5 10000 1000000 1 500000,5 1000000
  • 28. Análise dos casos 0 250000 500000 750000 1000000 n= 10 n = 100 n = 10000 n = 1000000 Pior caso Caso médio
  • 29. Crescimento de funções • Comportamento assintótico • Quando n tem valor muito grande (n >> ∞) • Termos inferiores e constantes multiplicativas contribuem pouco na comparação e podem ser descartados • Exemplo: • Algoritmo 1: f1(n) = 2n2 + 5n operações • Algoritmo 2: f2(n) = 500n + 4000 operações
  • 30. Crescimento de funções • Comportamento assintótico • Quando n tem valor muito grande (n >> ∞) • Termos inferiores e constantes multiplicativas contribuem pouco na comparação e podem ser descartados • Exemplo: • Algoritmo 1: f1(n) = 2n2 + 5n operações • Algoritmo 2: f2(n) = 500n + 4000 operações Como crescem f1 e f2 ? Qual o algoritmo mais eficiente?
  • 31. Notação assintótica • Define limites para o crescimento assintótico das funções; • Preocupação principal: • A maneira como o tempo de execução de um algoritmo aumenta com o tamanho da entrada no limite, à medida que o tamanho da entrada aumenta indefinidamente (tendendo ao infinito).
  • 32. A notação Ω (ômega) • Oferece um limite inferior assintótico • Definição: Sejam f e g duas funções com domínio X. Dizemos que a função f é Ω(g(n)) sse (∃c ∈ R+)(∃n0 ∈ X)(∀n ≥ n0)(c.|g(n)| ≤ |f(n)|)
  • 33. Notação Ω • Então uma função f(n) é Ω(g(n)) se existem duas constantes positivas c e n0 tais que: c . g(n) ≤ f(n), para todo n ≥ n0
  • 34. A notação O (ômicron) • Oferece um limite superior assintótico • Definição: Sejam f e g duas funções de domínio X. Dizemos que a função f é O(g(n)) sse
 (∃c ∈ R+)(∃ n0 ∈ X)(∀ n ≥ n0) (|f(n)| ≤ c.|g(n)|)
  • 35. Notação O • Então uma função f(n) é O(g(n)) se existem duas constantes positivas c e n0 tais que: f(n) ≤ c . g(n), para todo n ≥ n0
  • 36. Exemplos (Notação O) • 3n + 2 = O(n), pois 3n + 2 ≤ 4n para todo n ≥ 2 • 1000n2 + 100n – 6 = O(n2), pois • 1000n2 +100n – 6 ≤ 1001n2 para n ≥ 100 • f(n) = amnm+...+a1n+a0 => f(n) = O(nm)
  • 37. A notação θ (theta) • Oferece limites assintóticos inferior e superior • Definição: Sejam f e g duas funções de domínio X. Dizemos que a função f é θ(g(n)) sse
 (∃c1, c2 ∈ R+)(∃n0 ∈ X)(∀ n ≥ n0) (c1.|g(n)| ≤ |f(n)| ≤ c2.|g(n)|)
  • 38. Notação θ • Então uma função f(n) é θ(g(n)) se existem constantes positivas c1 e c2 e n0 tais que: 0 ≤ c1 . g(n) ≤ f(n) ≤ c2 . g(n) para todo n ≥ n0
  • 40. Exemplo - soma de vetores Qual a complexidade no pior caso?
  • 41. Exemplo - soma de matrizes Qual a complexidade no pior caso?
  • 42. Exemplo - multiplicação de matrizes Qual a complexidade no pior caso?
  • 45. Torre de Hanoi - implementação
  • 46. Torre de Hanoi - Análise de complexidade
  • 47. Importância da análise de complexidade
  • 49. Referências • Notas de aula (prof. Valdísio Viana - UECE) • Notas de aula (prof. José Maria - UFC) • Algoritmos: Teoria e Prática - Cormen (3a. Edição - Elsevier) • Estrutura de dados: algoritmos, análise da complexidade e implementações em Java e C/C++ - Ana Ascencio e Graziela Araújo (Pearson)