SlideShare uma empresa Scribd logo
An´alise de Algoritmos
Problemas, instâncias,
algoritmos e tempo
– p. 1/32
Análise de Algoritmos
A Análise de Algoritmos estuda problemas
computacionais recorrentes, ou seja, problemas
que aparecem, sob diversos disfarces, em uma
grande variedade de aplicações e contextos.
– p. 2/32
Análise de Algoritmos
A Análise de Algoritmos estuda problemas
computacionais recorrentes, ou seja, problemas
que aparecem, sob diversos disfarces, em uma
grande variedade de aplicações e contextos.
A análise de um algoritmo para um dado problema
trata de
provar que o algoritmo está correto, e
estimar o tempo de execução do algoritmo.
– p. 2/32
Análise de Algoritmos
Dados dois algoritmos para um mesmo problema,
a análise permite decidir qual dos dois é mais
eficiente.
– p. 3/32
Análise de Algoritmos
Dados dois algoritmos para um mesmo problema,
a análise permite decidir qual dos dois é mais
eficiente.
A estimativa do espaço de memória usado pelo
algoritmo também é importante em muitos casos.
– p. 3/32
Análise de Algoritmos
Pode-se dizer que a Análise de Algoritmos é uma
disciplina de engenharia, pois ela procura prever o
comportamento de um algoritmo antes que ele
seja efetivamente implementado e colocado “em
produção”.
– p. 4/32
Análise de Algoritmos
Num nível mais abstrato, a análise de algoritmos
procura identificar aspectos estruturais comuns
aos algoritmos e estudar paradigmas de projeto de
algoritmos (como divisão e conquista,
programação dinâmica, etc.)
– p. 5/32
Análise de Algoritmos
No restante desta introdução, faremos uma rápida
revisão de conceitos básicos e fixaremos a
notação e a terminologia empregadas no texto.
– p. 6/32
An´alise de Algoritmos
Problemas e suas instâncias
– p. 7/32
Instâncias
Todo problema computacional é uma coleção de
“casos particulares” que chamaremos instˆancias. A
palavra instância é empregada aqui no sentido de
exemplo, exemplar, espécime, amostra, ilustração.
– p. 8/32
Instâncias - Exemplos
Problema da multiplicac¸ ˜ao de n´umeros naturais:
dados números naturais x e y, determinar o
produto x.y.
– p. 9/32
Instâncias - Exemplos
Problema da multiplicac¸ ˜ao de n´umeros naturais:
dados números naturais x e y, determinar o
produto x.y.
Cada instância do problema é definida por
dois números naturais. Por exemplo, os
números 2 e 3 definem uma instância.
– p. 9/32
Instâncias
Problema da ordenac¸ ˜ao: rearranjar (ou seja,
permutar) os elementos de um vetor A[1 . . . n]
de números naturais de modo que ele se torne
crescente.
– p. 10/32
Instâncias
Problema da ordenac¸ ˜ao: rearranjar (ou seja,
permutar) os elementos de um vetor A[1 . . . n]
de números naturais de modo que ele se torne
crescente.
Cada instância do problema é definida por
um número natural n e um vetor A[1 . . . n].
Por exemplo, o número 5 e o vetor
(876, 145, 323, 112, 221) definem uma
instância do problema.
– p. 10/32
Instâncias
Problema do circuito hamiltoniano: encontrar um
circuito hamiltoniano em um grafo.
– p. 11/32
Instâncias
Problema do circuito hamiltoniano: encontrar um
circuito hamiltoniano em um grafo.
Cada instância do problema é definida por
um grafo.
– p. 11/32
Tamanho de uma instância
O tamanho de uma instância de um problema é a
quantidade de dados necessária para descrever a
instância, ou seja, é o “espaço” necessário para
especificar a instância. Em geral, o tamanho de
uma instância é descrito por um único número
natural, mas às vezes é mais conveniente usar um
par, um terno, etc., de números naturais.
– p. 12/32
Tamanho de uma instância
No problema da multiplicação de dois números
naturais, toda instância tem tamanho 2 (pois
consiste em dois números). Dependendo das
circunstâncias, entretanto, pode ser mais
apropriado dizer que o tamanho de uma
instância do problema é o número de
caracteres (ou de dígitos) necessário para
especificar os dois números.
– p. 13/32
Tamanho de uma instância
O tamanho de uma instância do problema de
ordenação é n. (Mas poderia também ser
definido como o número total de caracteres
necessário para escrever os valores dos
elementos de A[1 . . . n].)
– p. 14/32
Tamanho de uma instância
O tamanho de uma instância do problema de
ordenação é n. (Mas poderia também ser
definido como o número total de caracteres
necessário para escrever os valores dos
elementos de A[1 . . . n].)
O tamanho de uma instância do problema do
circuito hamiltoniano em um grafo com n
vértices e m arestas é um par (m, n).
– p. 14/32
Algoritmos para problemas
Dizemos que um algoritmo resolve um problema se,
ao receber qualquer instância do problema,
devolve uma solução da instância ou informa que a
instância não tem solução.
– p. 15/32
Tempo gasto
O tempo gasto (ou complexidade, ou consumo de
tempo) por um algoritmo é o número de operações
consideradas relevantes realizadas pelo algoritmo
e expressa-se esse número como uma função do
tamanho da entrada. Essas operações podem ser
comparações, operações aritméticas, movimento
de dados, etc.
– p. 16/32
Tempo gasto
O tempo gasto (ou complexidade, ou consumo de
tempo) por um algoritmo é o número de operações
consideradas relevantes realizadas pelo algoritmo
e expressa-se esse número como uma função do
tamanho da entrada. Essas operações podem ser
comparações, operações aritméticas, movimento
de dados, etc.
Estamos sempre mais interessados em medir o
tempo gasto pelos algoritmos no pior caso.
– p. 16/32
Consumo de tempo assintótico
Seja A um algoritmo para um problema P. O
tempo de relógio (minutos e segundos) que A
consome para processar uma dada instância de P
depende da máquina usada para executar A. Mas
o efeito da máquina se resume a uma constante
multiplicativa, ou seja, se A consome tempo t
numa determinada máquina, consumirá tempo 2t
numa máquina duas vezes mais lenta e t/2 numa
máquina duas vezes mais rápida.
– p. 17/32
Consumo de tempo assintótico
Para eliminar o efeito da máquina, discutiremos o
consumo de tempo de A a menos de constantes
multiplicativas. A notação assintótica (O, Ω, Θ) é
ideal para fazer isso.
– p. 18/32
An´alise de Algoritmos
Exemplos de algoritmos
– p. 19/32
Apresentação dos algoritmos
Instruc¸ ˜oes
i ← 1;
x ← y;
Se . . . então . . .
Se . . . então . . . senão . . .
Enquanto . . . faça . . .
Para i ← 1 até n faça . . .
– p. 20/32
Apresentação dos algoritmos
Algoritmo: . . .
Entrada: . . .
Saída: . . .
Início
instrução
...
instrução
Fim
– p. 21/32
An´alise de Algoritmos
Algoritmos de busca
– p. 22/32
Busca sequencial
Algoritmo: Busca sequencial
Entrada: Um vetor M1, M2, . . . , Mn e um elemento x
Saída: (“sim”, i) ou “não”
– p. 23/32
Busca sequencial
Algoritmo: Busca sequencial
Entrada: Um vetor M1, M2, . . . , Mn e um elemento x
Saída: (“sim”, i) ou “não”
Início
i ← 1;
Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1;
– p. 23/32
Busca sequencial
Algoritmo: Busca sequencial
Entrada: Um vetor M1, M2, . . . , Mn e um elemento x
Saída: (“sim”, i) ou “não”
Início
i ← 1;
Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1;
Se (i ≤ n) então imprima (“sim”, i) senão imprima “não”
Fim
– p. 23/32
Busca sequencial
Algoritmo: Busca sequencial
Entrada: Um vetor M1, M2, . . . , Mn e um elemento x
Saída: (“sim”, i) ou “não”
Início
i ← 1;
Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1;
Se (i ≤ n) então imprima (“sim”, i) senão imprima “não”
Fim
Qual o tempo (pior caso) gasto pelo algoritmo?
– p. 23/32
Busca sequencial
Algoritmo: Busca sequencial
Entrada: Um vetor M1, M2, . . . , Mn e um elemento x
Saída: (“sim”, i) ou “não”
Início
i ← 1;
Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1;
Se (i ≤ n) então imprima (“sim”, i) senão imprima “não”
Fim
Qual o tempo (pior caso) gasto pelo algoritmo?
Resposta: O(n)
– p. 23/32
Busca binária
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
Enquanto (l ≤ r) e (não achou) faça
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
Enquanto (l ≤ r) e (não achou) faça
k ← (l + r)/2 ;
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
Enquanto (l ≤ r) e (não achou) faça
k ← (l + r)/2 ;
Se x = Mk então achou ← verdadeiro
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
Enquanto (l ≤ r) e (não achou) faça
k ← (l + r)/2 ;
Se x = Mk então achou ← verdadeiro
senão se x > Mk então l ← k + 1 senão r ← k − 1
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
Enquanto (l ≤ r) e (não achou) faça
k ← (l + r)/2 ;
Se x = Mk então achou ← verdadeiro
senão se x > Mk então l ← k + 1 senão r ← k − 1
Se achou então imprima (“sim”, k) senão imprima “não”
Fim
– p. 24/32
Busca binária
Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e
um inteiro x
Saída: (“sim”, i) ou “não”
Início
l ← 1; r ← n; achou ← falso;
Enquanto (l ≤ r) e (não achou) faça
k ← (l + r)/2 ;
Se x = Mk então achou ← verdadeiro
senão se x > Mk então l ← k + 1 senão r ← k − 1
Se achou então imprima (“sim”, k) senão imprima “não”
Fim
Qual o tempo (pior caso) gasto pelo algoritmo?
– p. 24/32
Busca binária - tempo
O tempo gasto pela busca binária é proporcional
ao número de iterações do laço “Enquanto ... faça”.
– p. 25/32
Busca binária - tempo
O tempo gasto pela busca binária é proporcional
ao número de iterações do laço “Enquanto ... faça”.
O número de elementos do vetor no início da
1a. iteração é n
– p. 25/32
Busca binária - tempo
O tempo gasto pela busca binária é proporcional
ao número de iterações do laço “Enquanto ... faça”.
O número de elementos do vetor no início da
1a. iteração é n
2a. iteração é n/2
– p. 25/32
Busca binária - tempo
O tempo gasto pela busca binária é proporcional
ao número de iterações do laço “Enquanto ... faça”.
O número de elementos do vetor no início da
1a. iteração é n
2a. iteração é n/2
3a. iteração é n/22
– p. 25/32
Busca binária - tempo
O tempo gasto pela busca binária é proporcional
ao número de iterações do laço “Enquanto ... faça”.
O número de elementos do vetor no início da
1a. iteração é n
2a. iteração é n/2
3a. iteração é n/22
...
(i + 1)a. iteração é n/2i
– p. 25/32
Busca binária - tempo
Na última iteração teremos n/2i
= 1, o que resulta
em
i = log n
– p. 26/32
Busca binária - tempo
Na última iteração teremos n/2i
= 1, o que resulta
em
i = log n
Portanto, o tempo gasto pela busca binária é
O(log n).
– p. 26/32
An´alise de Algoritmos
Algoritmos de ordenação
– p. 27/32
Ordenação
Algoritmos básicos:
Trocas sucessivas (bubblesort)
Seleção
Inserção
– p. 28/32
Ordenação - bubblesort
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
– p. 29/32
Ordenação - bubblesort
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
Início
Para j ← i até n − 1 faça
Para 1 ← i até j faça
Se Mi > Mi+1 então “troque Mi com Mi+1”
Fim
– p. 29/32
Ordenação - bubblesort
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
Início
Para j ← i até n − 1 faça
Para 1 ← i até j faça
Se Mi > Mi+1 então “troque Mi com Mi+1”
Fim
Qual o tempo (pior caso) gasto pelo algoritmo?
– p. 29/32
Ordenação - bubblesort
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
Início
Para j ← i até n − 1 faça
Para 1 ← i até j faça
Se Mi > Mi+1 então “troque Mi com Mi+1”
Fim
Qual o tempo (pior caso) gasto pelo algoritmo?
Resposta: O(n2)
– p. 29/32
Ordenação por seleção
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
– p. 30/32
Ordenação por seleção
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
Idéia:
Selecione o maior elemento
Troque-o com o “último” da lista
– p. 30/32
Ordenação por seleção
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
Idéia:
Selecione o maior elemento
Troque-o com o “último” da lista
Exercício: Escreva o algoritmo
– p. 30/32
Ordenação por seleção
Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros
Saída: O vetor M ordenado em ordem não decrescente
Idéia:
Selecione o maior elemento
Troque-o com o “último” da lista
Exercício: Escreva o algoritmo
Qual o tempo (pior caso) gasto pelo algoritmo?
– p. 30/32
Exercícios
1. Escreva um algoritmo para ordenar os elementos de
um vetor utilizando a seguinte idéia:
selecione o menor elemento
troque-o com o “primeiro” da lista
2. Escreva um algoritmo para ordenar os elementos de
um vetor M1, M2, . . . , Mn utilizando a seguinte idéia
(ordenação das cartas de baralho - inserção):
suponha que M1, M2, . . . , Mi já está ordenado
insira Mi+1 na posição correta para obter
M1, M2, . . . , Mi+1 ordenado
– p. 31/32
Exercícios
3. Escreva um algoritmo para verificar se os elementos de
um vetor M1, M2, . . . , Mn estão em ordem não
decrescente.
4. Um algoritmo de ordenação é estável se não altera a
posição relativa dos elementos de mesmo valor.
(a) Bubblesort é estável?
(b) Seleção é estável?
– p. 32/32

Mais conteúdo relacionado

Mais procurados

Séries fourier cap_1 Funções Periódicas
Séries fourier cap_1 Funções PeriódicasSéries fourier cap_1 Funções Periódicas
Séries fourier cap_1 Funções PeriódicasCiro Marcus
 
Slides- Progressão Geométrica
Slides- Progressão GeométricaSlides- Progressão Geométrica
Slides- Progressão GeométricaKetlin Cavane
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 
Exercicios resolvidos
Exercicios resolvidosExercicios resolvidos
Exercicios resolvidosBrunna Vilar
 
Circuitos aritmeticos
Circuitos aritmeticosCircuitos aritmeticos
Circuitos aritmeticosunifesptk
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitualMario Sergio
 
Introdução à probabilidade - Probabilidade frequentista
Introdução à probabilidade - Probabilidade frequentistaIntrodução à probabilidade - Probabilidade frequentista
Introdução à probabilidade - Probabilidade frequentistaAnselmo Alves de Sousa
 
Aula 7 expressão regular
Aula 7   expressão regularAula 7   expressão regular
Aula 7 expressão regularwab030
 
Bancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dadosBancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dadosElaine Cecília Gatto
 
Matemática Discreta - Parte III definicoes indutivas
Matemática Discreta - Parte III definicoes indutivasMatemática Discreta - Parte III definicoes indutivas
Matemática Discreta - Parte III definicoes indutivasUlrich Schiel
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)CriatividadeZeroDocs
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 
Asymptoptic notations
Asymptoptic notationsAsymptoptic notations
Asymptoptic notationsAlisha Jindal
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogoselliando dias
 
Resumo do 7º,8º e 9º anos para t.i
Resumo do 7º,8º e 9º anos para t.iResumo do 7º,8º e 9º anos para t.i
Resumo do 7º,8º e 9º anos para t.iShivani Himatlal
 

Mais procurados (20)

Séries fourier cap_1 Funções Periódicas
Séries fourier cap_1 Funções PeriódicasSéries fourier cap_1 Funções Periódicas
Séries fourier cap_1 Funções Periódicas
 
First order logic
First order logicFirst order logic
First order logic
 
Demonstrações
DemonstraçõesDemonstrações
Demonstrações
 
Slides- Progressão Geométrica
Slides- Progressão GeométricaSlides- Progressão Geométrica
Slides- Progressão Geométrica
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
Exercicios resolvidos
Exercicios resolvidosExercicios resolvidos
Exercicios resolvidos
 
Circuitos aritmeticos
Circuitos aritmeticosCircuitos aritmeticos
Circuitos aritmeticos
 
Bancode dados modelagem conceitual
Bancode dados modelagem conceitualBancode dados modelagem conceitual
Bancode dados modelagem conceitual
 
Pumping lemma (1)
Pumping lemma (1)Pumping lemma (1)
Pumping lemma (1)
 
Introdução à probabilidade - Probabilidade frequentista
Introdução à probabilidade - Probabilidade frequentistaIntrodução à probabilidade - Probabilidade frequentista
Introdução à probabilidade - Probabilidade frequentista
 
Aula 7 expressão regular
Aula 7   expressão regularAula 7   expressão regular
Aula 7 expressão regular
 
Curso de Linguagem C
Curso de Linguagem CCurso de Linguagem C
Curso de Linguagem C
 
Bancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dadosBancos de dados e usuários de banco de dados
Bancos de dados e usuários de banco de dados
 
Matemática Discreta - Parte III definicoes indutivas
Matemática Discreta - Parte III definicoes indutivasMatemática Discreta - Parte III definicoes indutivas
Matemática Discreta - Parte III definicoes indutivas
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Asymptoptic notations
Asymptoptic notationsAsymptoptic notations
Asymptoptic notations
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
Resumo do 7º,8º e 9º anos para t.i
Resumo do 7º,8º e 9º anos para t.iResumo do 7º,8º e 9º anos para t.i
Resumo do 7º,8º e 9º anos para t.i
 

Destaque

Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasDelacyr Ferreira
 
Análise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosAnálise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosDelacyr Ferreira
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPDelacyr Ferreira
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
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
 
Análise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de GrafosAnálise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de GrafosDelacyr Ferreira
 
Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaDelacyr Ferreira
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesMauricio Volkweis Astiazara
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
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 shellsortFlávio Freitas
 
Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoDelacyr Ferreira
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilGuilherme Coelho
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresPedro Valente
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sortLeno Oliveira
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallJohnnatan Messias
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallJoao Silva
 
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...iPhoneDevBr
 

Destaque (20)

Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
Análise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-CompletosAnálise de Algoritmos - Mais problemas NP-Completos
Análise de Algoritmos - Mais problemas NP-Completos
 
Análise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NPAnálise de Algoritmos - As classes P e NP
Análise de Algoritmos - As classes P e NP
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
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...
 
Análise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de GrafosAnálise de Algoritmos - Conceitos de Grafos
Análise de Algoritmos - Conceitos de Grafos
 
Análise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação DinâmicaAnálise de Algoritmos - Programação Dinâmica
Análise de Algoritmos - Programação Dinâmica
 
Ordenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de ChavesOrdenação de Dados por Distribuição de Chaves
Ordenação de Dados por Distribuição de Chaves
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de 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
 
7 slides
7 slides7 slides
7 slides
 
Análise de Algoritmos - Método Guloso
Análise de Algoritmos - Método GulosoAnálise de Algoritmos - Método Guloso
Análise de Algoritmos - Método Guloso
 
Classes de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícilClasses de problemas p, np,np completo e np-difícil
Classes de problemas p, np,np completo e np-difícil
 
Semana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetoresSemana10-ordenacao-pesquisa-vetores
Semana10-ordenacao-pesquisa-vetores
 
Metodo de Ordenação Selection sort
Metodo de Ordenação Selection sortMetodo de Ordenação Selection sort
Metodo de Ordenação Selection sort
 
Ordenação por inserção
Ordenação por inserçãoOrdenação por inserção
Ordenação por inserção
 
Caminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-WarshallCaminhos Mínimos: Dijkstra e Floyd-Warshall
Caminhos Mínimos: Dijkstra e Floyd-Warshall
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-Warshall
 
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
Otimização, dicas de implementação, como resolver problemas by Adriano Santan...
 
Algoritmos de busca
Algoritmos de buscaAlgoritmos de busca
Algoritmos de busca
 

Semelhante a Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo

Booklet reais
Booklet reaisBooklet reais
Booklet reaispm3d
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenaçãoJonas Mendonça
 
Aula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptAula_07_Complexidade_de_Algoritmos.ppt
Aula_07_Complexidade_de_Algoritmos.pptssuserd654cb1
 
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).pptssuserd654cb1
 
Introdução a função.ppt
Introdução a função.pptIntrodução a função.ppt
Introdução a função.pptERANDIDELIMACRUZ
 
Conjuntos numéricos, mdc e mmc
Conjuntos numéricos, mdc e mmcConjuntos numéricos, mdc e mmc
Conjuntos numéricos, mdc e mmcRomulo Garcia
 
Funções - Conceito.pptx
Funções - Conceito.pptxFunções - Conceito.pptx
Funções - Conceito.pptxJakson Ney Reis
 
Manual winplot
Manual winplotManual winplot
Manual winplotFranbfk
 
Funções - Conceito.ppt
Funções - Conceito.pptFunções - Conceito.ppt
Funções - Conceito.pptCarolAlencar11
 
Lista de exercício
Lista de exercício   Lista de exercício
Lista de exercício Jota Thin
 
Conjuntos numéricos
Conjuntos numéricosConjuntos numéricos
Conjuntos numéricosandreilson18
 
Apostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalApostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalmanuelsilva309
 
Apostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalApostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalFabricio Marcelino
 
Apostila matematica concursos - ensino fundamental
Apostila matematica   concursos - ensino fundamentalApostila matematica   concursos - ensino fundamental
Apostila matematica concursos - ensino fundamentalClebson Silva
 
A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...
A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...
A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...Evonaldo Gonçalves Vanny
 

Semelhante a Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo (20)

Booklet reais
Booklet reaisBooklet reais
Booklet reais
 
Algoritmos de ordenação
Algoritmos de ordenaçãoAlgoritmos de ordenação
Algoritmos de ordenação
 
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
 
Aula2
Aula2Aula2
Aula2
 
Resumão ibge
Resumão ibgeResumão ibge
Resumão ibge
 
Introdução a função.ppt
Introdução a função.pptIntrodução a função.ppt
Introdução a função.ppt
 
Conjuntos numéricos, mdc e mmc
Conjuntos numéricos, mdc e mmcConjuntos numéricos, mdc e mmc
Conjuntos numéricos, mdc e mmc
 
Apostila i conjuntos numericos
Apostila i conjuntos numericosApostila i conjuntos numericos
Apostila i conjuntos numericos
 
Funções - Conceito.pptx
Funções - Conceito.pptxFunções - Conceito.pptx
Funções - Conceito.pptx
 
Manual winplot
Manual winplotManual winplot
Manual winplot
 
Funções - Conceito.ppt
Funções - Conceito.pptFunções - Conceito.ppt
Funções - Conceito.ppt
 
Funções - Conceito.ppt
Funções - Conceito.pptFunções - Conceito.ppt
Funções - Conceito.ppt
 
Lista de exercício
Lista de exercício   Lista de exercício
Lista de exercício
 
Conjuntos numéricos
Conjuntos numéricosConjuntos numéricos
Conjuntos numéricos
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Apostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalApostila matematica concursos_fundamental
Apostila matematica concursos_fundamental
 
Apostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalApostila matematica concursos_fundamental
Apostila matematica concursos_fundamental
 
Apostila matematica concursos - ensino fundamental
Apostila matematica   concursos - ensino fundamentalApostila matematica   concursos - ensino fundamental
Apostila matematica concursos - ensino fundamental
 
A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...
A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...
A regra de cramer é uma das maneiras de resolver um sistema linear, mas só po...
 

Último

Junho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaJunho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaComando Resgatai
 
Exercícios de Clima no brasil e no mundo.pdf
Exercícios de Clima no brasil e no mundo.pdfExercícios de Clima no brasil e no mundo.pdf
Exercícios de Clima no brasil e no mundo.pdfRILTONNOGUEIRADOSSAN
 
Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)Centro Jacques Delors
 
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.pdfLetícia Butterfield
 
Recurso da Casa das Ciências: Bateria/Acumulador
Recurso da Casa das Ciências: Bateria/AcumuladorRecurso da Casa das Ciências: Bateria/Acumulador
Recurso da Casa das Ciências: Bateria/AcumuladorCasa Ciências
 
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.pdfBibliotecas Infante D. Henrique
 
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdfHans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdfrarakey779
 
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdfARIANAMENDES11
 
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.pptxLuizHenriquedeAlmeid6
 
Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...
Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...
Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...cristianofiori1
 
Caderno de Estudo Orientado para Ensino Médio
Caderno de Estudo Orientado para Ensino MédioCaderno de Estudo Orientado para Ensino Médio
Caderno de Estudo Orientado para Ensino Médiorafaeloliveirafelici
 
curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfLeandroTelesRocha2
 
DIFERENÇA DO INGLES BRITANICO E AMERICANO.pptx
DIFERENÇA DO INGLES BRITANICO E AMERICANO.pptxDIFERENÇA DO INGLES BRITANICO E AMERICANO.pptx
DIFERENÇA DO INGLES BRITANICO E AMERICANO.pptxcleanelima11
 
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.pptxLuizHenriquedeAlmeid6
 
Evangelismo e Missões Contemporânea Cristã.pdf
Evangelismo e Missões Contemporânea Cristã.pdfEvangelismo e Missões Contemporânea Cristã.pdf
Evangelismo e Missões Contemporânea Cristã.pdfPastor Robson Colaço
 
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdfmanual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdfrarakey779
 
Apresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao AssédioApresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao Assédioifbauab
 
curso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdf
curso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdfcurso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdf
curso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdfLeandroTelesRocha2
 
Curso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdf
Curso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdfCurso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdf
Curso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdfLeandroTelesRocha2
 
INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]
INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]
INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]ESCRIBA DE CRISTO
 

Último (20)

Junho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na IgrejaJunho Violeta - Sugestão de Ações na Igreja
Junho Violeta - Sugestão de Ações na Igreja
 
Exercícios de Clima no brasil e no mundo.pdf
Exercícios de Clima no brasil e no mundo.pdfExercícios de Clima no brasil e no mundo.pdf
Exercícios de Clima no brasil e no mundo.pdf
 
Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)
 
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
 
Recurso da Casa das Ciências: Bateria/Acumulador
Recurso da Casa das Ciências: Bateria/AcumuladorRecurso da Casa das Ciências: Bateria/Acumulador
Recurso da Casa das Ciências: Bateria/Acumulador
 
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
 
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdfHans Kelsen - Teoria Pura do Direito - Obra completa.pdf
Hans Kelsen - Teoria Pura do Direito - Obra completa.pdf
 
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
04_GuiaDoCurso_Neurociência, Psicologia Positiva e Mindfulness.pdf
 
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
 
Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...
Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...
Atividade-9-8o-ano-HIS-Os-caminhos-ate-a-independencia-do-Brasil-Brasil-Colon...
 
Caderno de Estudo Orientado para Ensino Médio
Caderno de Estudo Orientado para Ensino MédioCaderno de Estudo Orientado para Ensino Médio
Caderno de Estudo Orientado para Ensino Médio
 
curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
 
DIFERENÇA DO INGLES BRITANICO E AMERICANO.pptx
DIFERENÇA DO INGLES BRITANICO E AMERICANO.pptxDIFERENÇA DO INGLES BRITANICO E AMERICANO.pptx
DIFERENÇA DO INGLES BRITANICO E AMERICANO.pptx
 
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
 
Evangelismo e Missões Contemporânea Cristã.pdf
Evangelismo e Missões Contemporânea Cristã.pdfEvangelismo e Missões Contemporânea Cristã.pdf
Evangelismo e Missões Contemporânea Cristã.pdf
 
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdfmanual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
manual-de-introduc3a7c3a3o-ao-direito-25-10-2011.pdf
 
Apresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao AssédioApresentação Formação em Prevenção ao Assédio
Apresentação Formação em Prevenção ao Assédio
 
curso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdf
curso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdfcurso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdf
curso-de-direito-administrativo-celso-antonio-bandeira-de-mello_compress.pdf
 
Curso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdf
Curso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdfCurso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdf
Curso de Direito do Trabalho - Maurício Godinho Delgado - 2019.pdf
 
INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]
INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]
INTRODUÇÃO A ARQUEOLOGIA BÍBLICA [BIBLIOLOGIA]]
 

Análise de Algoritmos - Problemas, instâncias, algoritmos e tempo

  • 1. An´alise de Algoritmos Problemas, instâncias, algoritmos e tempo – p. 1/32
  • 2. Análise de Algoritmos A Análise de Algoritmos estuda problemas computacionais recorrentes, ou seja, problemas que aparecem, sob diversos disfarces, em uma grande variedade de aplicações e contextos. – p. 2/32
  • 3. Análise de Algoritmos A Análise de Algoritmos estuda problemas computacionais recorrentes, ou seja, problemas que aparecem, sob diversos disfarces, em uma grande variedade de aplicações e contextos. A análise de um algoritmo para um dado problema trata de provar que o algoritmo está correto, e estimar o tempo de execução do algoritmo. – p. 2/32
  • 4. Análise de Algoritmos Dados dois algoritmos para um mesmo problema, a análise permite decidir qual dos dois é mais eficiente. – p. 3/32
  • 5. Análise de Algoritmos Dados dois algoritmos para um mesmo problema, a análise permite decidir qual dos dois é mais eficiente. A estimativa do espaço de memória usado pelo algoritmo também é importante em muitos casos. – p. 3/32
  • 6. Análise de Algoritmos Pode-se dizer que a Análise de Algoritmos é uma disciplina de engenharia, pois ela procura prever o comportamento de um algoritmo antes que ele seja efetivamente implementado e colocado “em produção”. – p. 4/32
  • 7. Análise de Algoritmos Num nível mais abstrato, a análise de algoritmos procura identificar aspectos estruturais comuns aos algoritmos e estudar paradigmas de projeto de algoritmos (como divisão e conquista, programação dinâmica, etc.) – p. 5/32
  • 8. Análise de Algoritmos No restante desta introdução, faremos uma rápida revisão de conceitos básicos e fixaremos a notação e a terminologia empregadas no texto. – p. 6/32
  • 9. An´alise de Algoritmos Problemas e suas instâncias – p. 7/32
  • 10. Instâncias Todo problema computacional é uma coleção de “casos particulares” que chamaremos instˆancias. A palavra instância é empregada aqui no sentido de exemplo, exemplar, espécime, amostra, ilustração. – p. 8/32
  • 11. Instâncias - Exemplos Problema da multiplicac¸ ˜ao de n´umeros naturais: dados números naturais x e y, determinar o produto x.y. – p. 9/32
  • 12. Instâncias - Exemplos Problema da multiplicac¸ ˜ao de n´umeros naturais: dados números naturais x e y, determinar o produto x.y. Cada instância do problema é definida por dois números naturais. Por exemplo, os números 2 e 3 definem uma instância. – p. 9/32
  • 13. Instâncias Problema da ordenac¸ ˜ao: rearranjar (ou seja, permutar) os elementos de um vetor A[1 . . . n] de números naturais de modo que ele se torne crescente. – p. 10/32
  • 14. Instâncias Problema da ordenac¸ ˜ao: rearranjar (ou seja, permutar) os elementos de um vetor A[1 . . . n] de números naturais de modo que ele se torne crescente. Cada instância do problema é definida por um número natural n e um vetor A[1 . . . n]. Por exemplo, o número 5 e o vetor (876, 145, 323, 112, 221) definem uma instância do problema. – p. 10/32
  • 15. Instâncias Problema do circuito hamiltoniano: encontrar um circuito hamiltoniano em um grafo. – p. 11/32
  • 16. Instâncias Problema do circuito hamiltoniano: encontrar um circuito hamiltoniano em um grafo. Cada instância do problema é definida por um grafo. – p. 11/32
  • 17. Tamanho de uma instância O tamanho de uma instância de um problema é a quantidade de dados necessária para descrever a instância, ou seja, é o “espaço” necessário para especificar a instância. Em geral, o tamanho de uma instância é descrito por um único número natural, mas às vezes é mais conveniente usar um par, um terno, etc., de números naturais. – p. 12/32
  • 18. Tamanho de uma instância No problema da multiplicação de dois números naturais, toda instância tem tamanho 2 (pois consiste em dois números). Dependendo das circunstâncias, entretanto, pode ser mais apropriado dizer que o tamanho de uma instância do problema é o número de caracteres (ou de dígitos) necessário para especificar os dois números. – p. 13/32
  • 19. Tamanho de uma instância O tamanho de uma instância do problema de ordenação é n. (Mas poderia também ser definido como o número total de caracteres necessário para escrever os valores dos elementos de A[1 . . . n].) – p. 14/32
  • 20. Tamanho de uma instância O tamanho de uma instância do problema de ordenação é n. (Mas poderia também ser definido como o número total de caracteres necessário para escrever os valores dos elementos de A[1 . . . n].) O tamanho de uma instância do problema do circuito hamiltoniano em um grafo com n vértices e m arestas é um par (m, n). – p. 14/32
  • 21. Algoritmos para problemas Dizemos que um algoritmo resolve um problema se, ao receber qualquer instância do problema, devolve uma solução da instância ou informa que a instância não tem solução. – p. 15/32
  • 22. Tempo gasto O tempo gasto (ou complexidade, ou consumo de tempo) por um algoritmo é o número de operações consideradas relevantes realizadas pelo algoritmo e expressa-se esse número como uma função do tamanho da entrada. Essas operações podem ser comparações, operações aritméticas, movimento de dados, etc. – p. 16/32
  • 23. Tempo gasto O tempo gasto (ou complexidade, ou consumo de tempo) por um algoritmo é o número de operações consideradas relevantes realizadas pelo algoritmo e expressa-se esse número como uma função do tamanho da entrada. Essas operações podem ser comparações, operações aritméticas, movimento de dados, etc. Estamos sempre mais interessados em medir o tempo gasto pelos algoritmos no pior caso. – p. 16/32
  • 24. Consumo de tempo assintótico Seja A um algoritmo para um problema P. O tempo de relógio (minutos e segundos) que A consome para processar uma dada instância de P depende da máquina usada para executar A. Mas o efeito da máquina se resume a uma constante multiplicativa, ou seja, se A consome tempo t numa determinada máquina, consumirá tempo 2t numa máquina duas vezes mais lenta e t/2 numa máquina duas vezes mais rápida. – p. 17/32
  • 25. Consumo de tempo assintótico Para eliminar o efeito da máquina, discutiremos o consumo de tempo de A a menos de constantes multiplicativas. A notação assintótica (O, Ω, Θ) é ideal para fazer isso. – p. 18/32
  • 26. An´alise de Algoritmos Exemplos de algoritmos – p. 19/32
  • 27. Apresentação dos algoritmos Instruc¸ ˜oes i ← 1; x ← y; Se . . . então . . . Se . . . então . . . senão . . . Enquanto . . . faça . . . Para i ← 1 até n faça . . . – p. 20/32
  • 28. Apresentação dos algoritmos Algoritmo: . . . Entrada: . . . Saída: . . . Início instrução ... instrução Fim – p. 21/32
  • 29. An´alise de Algoritmos Algoritmos de busca – p. 22/32
  • 30. Busca sequencial Algoritmo: Busca sequencial Entrada: Um vetor M1, M2, . . . , Mn e um elemento x Saída: (“sim”, i) ou “não” – p. 23/32
  • 31. Busca sequencial Algoritmo: Busca sequencial Entrada: Um vetor M1, M2, . . . , Mn e um elemento x Saída: (“sim”, i) ou “não” Início i ← 1; Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1; – p. 23/32
  • 32. Busca sequencial Algoritmo: Busca sequencial Entrada: Um vetor M1, M2, . . . , Mn e um elemento x Saída: (“sim”, i) ou “não” Início i ← 1; Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1; Se (i ≤ n) então imprima (“sim”, i) senão imprima “não” Fim – p. 23/32
  • 33. Busca sequencial Algoritmo: Busca sequencial Entrada: Um vetor M1, M2, . . . , Mn e um elemento x Saída: (“sim”, i) ou “não” Início i ← 1; Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1; Se (i ≤ n) então imprima (“sim”, i) senão imprima “não” Fim Qual o tempo (pior caso) gasto pelo algoritmo? – p. 23/32
  • 34. Busca sequencial Algoritmo: Busca sequencial Entrada: Um vetor M1, M2, . . . , Mn e um elemento x Saída: (“sim”, i) ou “não” Início i ← 1; Enquanto (i ≤ n) e (x = Mi) faça i ← i + 1; Se (i ≤ n) então imprima (“sim”, i) senão imprima “não” Fim Qual o tempo (pior caso) gasto pelo algoritmo? Resposta: O(n) – p. 23/32
  • 36. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” – p. 24/32
  • 37. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; – p. 24/32
  • 38. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; Enquanto (l ≤ r) e (não achou) faça – p. 24/32
  • 39. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; Enquanto (l ≤ r) e (não achou) faça k ← (l + r)/2 ; – p. 24/32
  • 40. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; Enquanto (l ≤ r) e (não achou) faça k ← (l + r)/2 ; Se x = Mk então achou ← verdadeiro – p. 24/32
  • 41. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; Enquanto (l ≤ r) e (não achou) faça k ← (l + r)/2 ; Se x = Mk então achou ← verdadeiro senão se x > Mk então l ← k + 1 senão r ← k − 1 – p. 24/32
  • 42. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; Enquanto (l ≤ r) e (não achou) faça k ← (l + r)/2 ; Se x = Mk então achou ← verdadeiro senão se x > Mk então l ← k + 1 senão r ← k − 1 Se achou então imprima (“sim”, k) senão imprima “não” Fim – p. 24/32
  • 43. Busca binária Entrada: Um vetor M1, M2, . . . , Mn de inteiros ordenado e um inteiro x Saída: (“sim”, i) ou “não” Início l ← 1; r ← n; achou ← falso; Enquanto (l ≤ r) e (não achou) faça k ← (l + r)/2 ; Se x = Mk então achou ← verdadeiro senão se x > Mk então l ← k + 1 senão r ← k − 1 Se achou então imprima (“sim”, k) senão imprima “não” Fim Qual o tempo (pior caso) gasto pelo algoritmo? – p. 24/32
  • 44. Busca binária - tempo O tempo gasto pela busca binária é proporcional ao número de iterações do laço “Enquanto ... faça”. – p. 25/32
  • 45. Busca binária - tempo O tempo gasto pela busca binária é proporcional ao número de iterações do laço “Enquanto ... faça”. O número de elementos do vetor no início da 1a. iteração é n – p. 25/32
  • 46. Busca binária - tempo O tempo gasto pela busca binária é proporcional ao número de iterações do laço “Enquanto ... faça”. O número de elementos do vetor no início da 1a. iteração é n 2a. iteração é n/2 – p. 25/32
  • 47. Busca binária - tempo O tempo gasto pela busca binária é proporcional ao número de iterações do laço “Enquanto ... faça”. O número de elementos do vetor no início da 1a. iteração é n 2a. iteração é n/2 3a. iteração é n/22 – p. 25/32
  • 48. Busca binária - tempo O tempo gasto pela busca binária é proporcional ao número de iterações do laço “Enquanto ... faça”. O número de elementos do vetor no início da 1a. iteração é n 2a. iteração é n/2 3a. iteração é n/22 ... (i + 1)a. iteração é n/2i – p. 25/32
  • 49. Busca binária - tempo Na última iteração teremos n/2i = 1, o que resulta em i = log n – p. 26/32
  • 50. Busca binária - tempo Na última iteração teremos n/2i = 1, o que resulta em i = log n Portanto, o tempo gasto pela busca binária é O(log n). – p. 26/32
  • 51. An´alise de Algoritmos Algoritmos de ordenação – p. 27/32
  • 52. Ordenação Algoritmos básicos: Trocas sucessivas (bubblesort) Seleção Inserção – p. 28/32
  • 53. Ordenação - bubblesort Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente – p. 29/32
  • 54. Ordenação - bubblesort Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente Início Para j ← i até n − 1 faça Para 1 ← i até j faça Se Mi > Mi+1 então “troque Mi com Mi+1” Fim – p. 29/32
  • 55. Ordenação - bubblesort Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente Início Para j ← i até n − 1 faça Para 1 ← i até j faça Se Mi > Mi+1 então “troque Mi com Mi+1” Fim Qual o tempo (pior caso) gasto pelo algoritmo? – p. 29/32
  • 56. Ordenação - bubblesort Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente Início Para j ← i até n − 1 faça Para 1 ← i até j faça Se Mi > Mi+1 então “troque Mi com Mi+1” Fim Qual o tempo (pior caso) gasto pelo algoritmo? Resposta: O(n2) – p. 29/32
  • 57. Ordenação por seleção Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente – p. 30/32
  • 58. Ordenação por seleção Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente Idéia: Selecione o maior elemento Troque-o com o “último” da lista – p. 30/32
  • 59. Ordenação por seleção Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente Idéia: Selecione o maior elemento Troque-o com o “último” da lista Exercício: Escreva o algoritmo – p. 30/32
  • 60. Ordenação por seleção Entrada: Um vetor M = M1, M2, . . . , Mn de inteiros Saída: O vetor M ordenado em ordem não decrescente Idéia: Selecione o maior elemento Troque-o com o “último” da lista Exercício: Escreva o algoritmo Qual o tempo (pior caso) gasto pelo algoritmo? – p. 30/32
  • 61. Exercícios 1. Escreva um algoritmo para ordenar os elementos de um vetor utilizando a seguinte idéia: selecione o menor elemento troque-o com o “primeiro” da lista 2. Escreva um algoritmo para ordenar os elementos de um vetor M1, M2, . . . , Mn utilizando a seguinte idéia (ordenação das cartas de baralho - inserção): suponha que M1, M2, . . . , Mi já está ordenado insira Mi+1 na posição correta para obter M1, M2, . . . , Mi+1 ordenado – p. 31/32
  • 62. Exercícios 3. Escreva um algoritmo para verificar se os elementos de um vetor M1, M2, . . . , Mn estão em ordem não decrescente. 4. Um algoritmo de ordenação é estável se não altera a posição relativa dos elementos de mesmo valor. (a) Bubblesort é estável? (b) Seleção é estável? – p. 32/32