SlideShare uma empresa Scribd logo
1 de 62
Baixar para ler offline
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

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
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetoresalfredtaddeus
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallJoao Silva
 

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
 
Analise Algoritmos
Analise AlgoritmosAnalise Algoritmos
Analise Algoritmos
 
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
 
Ordenação de vetores
Ordenação de vetoresOrdenação de vetores
Ordenação de vetores
 
Algoritmo de Floyd-Warshall
Algoritmo de Floyd-WarshallAlgoritmo de Floyd-Warshall
Algoritmo de Floyd-Warshall
 

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 à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
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 - ensino fundamental
Apostila matematica   concursos - ensino fundamentalApostila matematica   concursos - ensino fundamental
Apostila matematica concursos - ensino fundamentalClebson Silva
 
Apostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalApostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalFabricio Marcelino
 

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
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
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 - ensino fundamental
Apostila matematica   concursos - ensino fundamentalApostila matematica   concursos - ensino fundamental
Apostila matematica concursos - ensino fundamental
 
Apostila matematica concursos_fundamental
Apostila matematica concursos_fundamentalApostila matematica concursos_fundamental
Apostila matematica concursos_fundamental
 

Último

Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasCassio Meira Jr.
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxkarinedarozabatista
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOColégio Santa Teresinha
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Centro Jacques Delors
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxIsabelaRafael2
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasillucasp132400
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfManuais Formação
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Susana Stoffel
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSilvana Silva
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxfabiolalopesmartins1
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasCassio Meira Jr.
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.keislayyovera123
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 

Último (20)

Programa de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades MotorasPrograma de Intervenção com Habilidades Motoras
Programa de Intervenção com Habilidades Motoras
 
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptxAD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
AD2 DIDÁTICA.KARINEROZA.SHAYANNE.BINC.ROBERTA.pptx
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃOLEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
LEMBRANDO A MORTE E CELEBRANDO A RESSUREIÇÃO
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029Apresentação | Eleições Europeias 2024-2029
Apresentação | Eleições Europeias 2024-2029
 
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptxApostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
Apostila da CONQUISTA_ para o 6ANO_LP_UNI1.pptx
 
Governo Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 BrasilGoverno Provisório Era Vargas 1930-1934 Brasil
Governo Provisório Era Vargas 1930-1934 Brasil
 
UFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdfUFCD_10392_Intervenção em populações de risco_índice .pdf
UFCD_10392_Intervenção em populações de risco_índice .pdf
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
Slides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptxSlides 1 - O gênero textual entrevista.pptx
Slides 1 - O gênero textual entrevista.pptx
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptx
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
Habilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e EspecíficasHabilidades Motoras Básicas e Específicas
Habilidades Motoras Básicas e Específicas
 
Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.Época Realista y la obra de Madame Bovary.
Época Realista y la obra de Madame Bovary.
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 

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