SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Pesquisa sequencial e pesquisa bin´ria
a
Armando Matos
Departamento de Ciˆncia de Computadores
e
Universidade de Porto

2008
2 problemas importantes. . .

Pesquisa: Procurar um valor numa lista
ou, por exemplo, num ficheiro
pesquisa 5 em [8,2,1,5,2,6] → True
Ordena¸˜o: ordenar uma lista.
ca
Exemplo, ordem n˜o decrescente:
a
[8,2,1,5,2,6] → [1,2,2,5,6,8]
Outline

Pesquisa
Pesquisa sequˆncial
e
Pesquisa sequˆncial
e

Seja
x: o valor que se vai procurar
a: a lista onde se vai procurar x;
´
ındices de a: 0 a n − 1.
procura(x,a) ⇒ bool
M´todo:
e
x ´ comparado sucessivamente com a[0], a[1],. . . , a[n-1].
e
Se x for igual a algum dos a[i], retorna-se True.
Sen˜o, retorna-se False.
a
Pesquisa sequˆncial, fun¸˜o em python
e
ca

# p r o c u r a x na l i s t a a
def procura (x , a ) :
n=l e n ( a )
i =0
w h i l e i <= n −1:
i f x==a [ i ] :
r e t u r n True
i=i +1
return False
Pesquisa sequˆncial, m´todo da sentinela
e
e

Uma varia¸˜o do m´todo anterior. . . fun¸˜o procura(x,a):
ca
e
ca
Inicialmente x ´ colocado no fim da lista,
e
Ex: x=9, a=[5,10,2,4,2] → a=[5,10,2,4,2,9]
A compara¸˜o ´ mais simples: enquanto x != a[i]
ca e
A parte interna do ciclo ´ apenas: i = i+1
e
Seja n o valor inicial de len(a).
Se o ciclo acaba com i=n, retorna False
Se o ciclo acaba com i<n, retorna True
M´todo da sentinela, fun¸˜o em python
e
ca
Nesta vers˜o retorna-se i tal que x=a[i]
a
ou -1 se x n˜o est´ na lista.
a
a
1
2
3
4
5
6
7
8
9

def procura (x , a ) :
n=l e n ( a )
a . append ( x )
i =0
w h i l e x !=a [ i ] :
i=i +1
i f i==n :
r e t u r n −1
return i
Note-se que o ciclo (onde a fun¸˜o “passa” mais tempo) ´
ca
e
constitu´ apenas pelas linhas 5 e 6.
ıdo
Eficiˆncia da pesquisa sequˆncial
e
e

Vamos usar como medida de eficiˆncia no tempo de execu¸˜o
e
ca
o n´mero c(n) de compara¸˜es entre x e a[i]
u
co
(linha 5 da fun¸˜o anterior)
ca
Eficiˆncia da pesquisa sequˆncial, I
e
e

Para a fun¸˜o com “sentinela”:
ca
N´mero de compara¸˜es, se x est´ na lista
u
co
a
Melhor caso: c(n) = 1
Pior caso: c(n) = n
Caso m´dio: c(n) = (n + 1)/2
e
Para o caso m´dio, admitiu-se que x pode ser, com igual
e
probabilidade, um dos n elementos da lista.
Eficiˆncia da pesquisa sequˆncial, II
e
e

N´mero de compara¸˜es, Se x n˜o est´ na lista:
u
co
a
a
Melhor caso: c(n) = n + 1
Pior caso: c(n) = n + 1
Caso m´dio: c(n) = n + 1
e
Pesquisa bin´ria
a
Pesquisa bin´ria I
a

Se a lista a est´ ordenada – suponhamos por ordem crescente – h´
a
a
algoritmos muito mais eficientes de procurar x:
procura(x,a):
x ´ procurado entre os ´
e
ındices i1 e i2 (extremos inclu´
ıdos);
Seja n=len(a). Inicialmente faz-se i1=0, i2=n-1.
Repetidamente, calcula-se o ponto m´dio m=(i1+i2)/2
e
(divis˜o inteira) e
a
Se x<a[m] → i2=m-1
Se x>a[m] → i1=m+1
Se x==a[m] → retorna m

Se o intervalo [i1,i2] acaba por ficar vazio (i1>i2), x n˜o
a
est´ na lista: → retorna -1.
a
Pesquisa bin´ria, fun¸˜o em python, vers˜o iterativa
a
ca
a
1
2
3
4
5
6
7
8
9
10
11
12
13
14

d e f pb ( x , a ) :
n = len (a)
i1 = 0
i 2 = n−1
( ∗ ) w h i l e i 1 <= i 2 :
m = ( i 1+i 2 ) / 2
i f x < a [m ] :
i 2 = m−1
e l i f x > a [m ] :
i 1 = m+1
else :
# v e r i f i c a −s e x == a [m]
return m
r e t u r n −1
Notas sobre a correc¸˜o de algoritmos
ca

Exerc´
ıcio: Escreva um invariante de ciclo apropriado `
a
demonstra¸˜o dacorrec¸˜o do algoritmo e v´lido antes do teste do
ca
ca
a
ciclo - linha (*).
Exerc´
ıcio: Escreva uma vers˜o recursiva do mesmo algoritmo.
a
Notas sobre a correc¸˜o de algoritmos
ca

Muitas vezes ´ vantajoso dividir as demonstra¸˜es de correc¸˜o em
e
co
ca
2 partes:
Correc¸˜o parcial de um algoritmo: se o algoritmo terminar, a
ca
resposta est´ correcta
a
Termina¸˜o de um algoritmo: o algoritmo termina (ver La
ca
Palisse, obras completas).
correc¸˜o = correc¸˜o parcial + termina¸˜o
ca
ca
ca
Pesquisa bin´ria – correc¸˜o da fun¸˜o
a
ca
ca
Notas sobre a correc¸˜o da fun¸˜o de pesquisa bin´ria:
ca
ca
a
Invariante de ciclo : se x est´ na lista est´ entre os ´
a
a
ındices i1 e
i2, extremos inclu´
ıdos.
In´
ıcio: o invariante de ciclo fica verdadeiro com as atribui¸˜es
co
das linhas 2-4.
O invariante de ciclo mant´m-se verdadeiro se o ciclo
e
continuar, isto ´, quando se verificam as condi¸˜es das linhas
e
co
7 ou 9.
Logo: no teste da linha 5 verifica-se o invariante de ciclo.
Se a linha 13 for executada, x est´ na lista, na posi¸˜o m
a
ca
Se o ciclo acabar (i1>i2), pela manuten¸˜o do invariante do
ca
ciclo, x n˜o est´ na lista.
a
a
Pesquisa bin´ria – termina¸˜o da fun¸˜o
a
ca
ca

Notas sobre a termina¸˜o da fun¸˜o:
ca
ca
Os ´
ındices em que x pode “estar” s˜o i1, i1+1,. . . , i2.
a
Seja num=i2-i1+1 o n´mero desses ´
u
ındices.
A prova de termina¸˜o ´ baseada no facto de num diminuir de cada
ca e
vez que o teste das linhas 7 e 9 ´ efectuado e isso prova-se com os
e
seguintes factos
i1 ≤ m ≤ i2 onde m resulta da atribui¸˜o m=(i1+i2)/2.
ca
A atribui¸˜o i2=m-1 (linha 8) reduz num, pois, com o valor
ca
inicial da i2, m − 1 < m ≤ i2
A atribui¸˜o i1=m+1 (linha 10) reduz num, pois, com o valor
ca
inicial da i1, i1 ≤ m < m + 1
Eficiˆncia da pesquisa bin´ria
e
a

Vamos usar como medida de eficiˆncia no tempo de execu¸˜o
e
ca
o n´mero c(n) de compara¸˜es entre x e a[i], contando as linhas
u
co
7 e 9 como uma s´ compara¸˜o, (compara¸˜o entre x e a[m])
o
ca
ca
Vamos determinar o n´mero de compara¸˜es no pior caso (quando
u
co
x n˜o est´ na lista)
a
a
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0

0

0 . . . 14

1

2

3

4

5

6

7

8

9 10 11 12 13 14

• • • • • • • • • • • • • • •
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0

0

0 . . . 14
8 . . . 14

1

2

3

4

5

6

7

8

9 10 11 12 13 14

• • • • • • • • • • • • • • •
• • • • • • • • • • • • • • •
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0

0

0 . . . 14
8 . . . 14
8 . . . 10

1

2

3

4

5

6

7

8

9 10 11 12 13 14

• • • • • • • • • • • • • • •
• • • • • • • • • • • • • • •
• • • • • • • • • • • • • • •
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0

0

0 . . . 14
8 . . . 14
8 . . . 10
9...9

1

2

3

4

5

6

7

8

9 10 11 12 13 14

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•

•
•
•
•
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0

0

0 . . . 14
8 . . . 14
8 . . . 10
9...9
9...8 = ∅

1

2

3

4

5

6

7

8

9 10 11 12 13 14

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•
Eficiˆncia da pesquisa bin´ria
e
a
Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1.
e
Ap´s uma divis˜o a “meio”, o n´mero de ´
o
a
u
ındices em que x pode
estar passa de n = 2p − 1 a n = 2p−1 − 1.
Por exemplo,
15 → 7 → 3 → 1 → 0

0

0 . . . 14
8 . . . 14
8 . . . 10
9...9
9...8 = ∅
0 . . . 14

1

2

3

4

5

6

7

8

9 10 11 12 13 14

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

•
•
•
•
•

O n´mero de divis˜es a “meio”, que ´ igual ao n´mero de
u
o
e
u
compara¸˜es, ´, neste caso, igual a 4 = log(n + 1).
co e
No caso geral, o n´mero de compara¸˜es n˜o excede log(n) + 1.
u
co
a
Eficiˆncia da pesquisa bin´ria
e
a

N´mero de compara¸˜es no pior caso.
u
co
Exemplo para n = 108 , t = 1µseg (tempo associado a cada
compara¸˜o)
ca
Pesquisa sequˆncial: c(n) = n, t = 100seg, quase 2 minutos.
e
Pesquisa bin´ria: c(n) ≈ log(n), t ≈ 27µseg!
a
Conclus˜o: a pesquisa bin´ria ´ muito mais r´pida que a pesquisa
a
a e
a
sequˆncial.
e
fim

Mais conteúdo relacionado

Mais procurados

Sequências e progressões
Sequências e progressõesSequências e progressões
Sequências e progressõesespacoaberto
 
Matemática - Progressão Aritmética - www.CentroApoio.com - Vídeo Aula
Matemática - Progressão Aritmética  - www.CentroApoio.com - Vídeo AulaMatemática - Progressão Aritmética  - www.CentroApoio.com - Vídeo Aula
Matemática - Progressão Aritmética - www.CentroApoio.com - Vídeo AulaVídeo Aulas Apoio
 
Mat progressao aritmetica ( pa ) i
Mat progressao aritmetica ( pa ) iMat progressao aritmetica ( pa ) i
Mat progressao aritmetica ( pa ) itrigono_metrico
 
Métodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenanMétodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenanRenan Gustavo
 
Métodos Iterativos - Gauss-Jacobi - Part I - @professorenan
Métodos Iterativos - Gauss-Jacobi - Part I - @professorenanMétodos Iterativos - Gauss-Jacobi - Part I - @professorenan
Métodos Iterativos - Gauss-Jacobi - Part I - @professorenanRenan Gustavo
 
Aula 2 profmat - Aplicacoes da Inducao
Aula 2   profmat - Aplicacoes da InducaoAula 2   profmat - Aplicacoes da Inducao
Aula 2 profmat - Aplicacoes da InducaoAline Guedes
 
Lista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoLista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoCarlos Campani
 
Lista de exercícios 8
Lista de exercícios 8Lista de exercícios 8
Lista de exercícios 8Carlos Campani
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaDelacyr Ferreira
 
625639 a-teoria-dos-limites-calculo
625639 a-teoria-dos-limites-calculo625639 a-teoria-dos-limites-calculo
625639 a-teoria-dos-limites-calculoMarcos Lira
 

Mais procurados (20)

Sequências e progressões
Sequências e progressõesSequências e progressões
Sequências e progressões
 
Matemática - Progressão Aritmética - www.CentroApoio.com - Vídeo Aula
Matemática - Progressão Aritmética  - www.CentroApoio.com - Vídeo AulaMatemática - Progressão Aritmética  - www.CentroApoio.com - Vídeo Aula
Matemática - Progressão Aritmética - www.CentroApoio.com - Vídeo Aula
 
Pa E Pg Feito Por Min
Pa E Pg Feito Por MinPa E Pg Feito Por Min
Pa E Pg Feito Por Min
 
Ms impresso aula05
Ms impresso aula05Ms impresso aula05
Ms impresso aula05
 
Iezzi93 109
Iezzi93 109Iezzi93 109
Iezzi93 109
 
Congruências
CongruênciasCongruências
Congruências
 
Mat progressao aritmetica ( pa ) i
Mat progressao aritmetica ( pa ) iMat progressao aritmetica ( pa ) i
Mat progressao aritmetica ( pa ) i
 
Progressões Aritméticas NTEM
Progressões Aritméticas NTEMProgressões Aritméticas NTEM
Progressões Aritméticas NTEM
 
Zero de função
Zero de funçãoZero de função
Zero de função
 
Métodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenanMétodos Iterativos - Gauss-Seidel - @professorenan
Métodos Iterativos - Gauss-Seidel - @professorenan
 
Métodos Iterativos - Gauss-Jacobi - Part I - @professorenan
Métodos Iterativos - Gauss-Jacobi - Part I - @professorenanMétodos Iterativos - Gauss-Jacobi - Part I - @professorenan
Métodos Iterativos - Gauss-Jacobi - Part I - @professorenan
 
Aula 2 profmat - Aplicacoes da Inducao
Aula 2   profmat - Aplicacoes da InducaoAula 2   profmat - Aplicacoes da Inducao
Aula 2 profmat - Aplicacoes da Inducao
 
Lista de exercícios 2 - Cálculo
Lista de exercícios 2 - CálculoLista de exercícios 2 - Cálculo
Lista de exercícios 2 - Cálculo
 
Lista de exercícios 8
Lista de exercícios 8Lista de exercícios 8
Lista de exercícios 8
 
Polinômios
PolinômiosPolinômios
Polinômios
 
P.A.
P.A.P.A.
P.A.
 
Mini curso-prof-peternelli
Mini curso-prof-peternelliMini curso-prof-peternelli
Mini curso-prof-peternelli
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Apostila calculo
Apostila calculoApostila calculo
Apostila calculo
 
625639 a-teoria-dos-limites-calculo
625639 a-teoria-dos-limites-calculo625639 a-teoria-dos-limites-calculo
625639 a-teoria-dos-limites-calculo
 

Destaque

sigmaliftbrochure
sigmaliftbrochuresigmaliftbrochure
sigmaliftbrochureCory Church
 
Development of genomics pipelines and its integration with breeding
Development of genomics pipelines and its integration with breedingDevelopment of genomics pipelines and its integration with breeding
Development of genomics pipelines and its integration with breedingCIAT
 
Impacto tic en los roles docentes universitarios.
Impacto tic en los roles docentes universitarios.Impacto tic en los roles docentes universitarios.
Impacto tic en los roles docentes universitarios.luisavila1984
 
Recommendation Letter - Tandem
Recommendation Letter - TandemRecommendation Letter - Tandem
Recommendation Letter - TandemMuhammad Abdullah
 
Olympic word find
Olympic word find  Olympic word find
Olympic word find takahe2
 
서비스 소개
서비스 소개서비스 소개
서비스 소개startupkorea
 
Finding The Right People: Tools for Screencing, Hiring, and Retaining Staff
Finding The Right People: Tools for Screencing, Hiring, and Retaining StaffFinding The Right People: Tools for Screencing, Hiring, and Retaining Staff
Finding The Right People: Tools for Screencing, Hiring, and Retaining StaffMABSIV
 
Lubrication Cat II
Lubrication Cat IILubrication Cat II
Lubrication Cat IIamontas
 
Lo Que Un Inversor Debe Conocer De Un Emprendedor
Lo Que Un Inversor Debe Conocer De Un EmprendedorLo Que Un Inversor Debe Conocer De Un Emprendedor
Lo Que Un Inversor Debe Conocer De Un EmprendedorAndrés Romero
 
4강. 프로토 타이핑 (prototyping)
4강. 프로토 타이핑 (prototyping)4강. 프로토 타이핑 (prototyping)
4강. 프로토 타이핑 (prototyping)Ho Hyun Lee
 
6강. 크라우드펀팅
6강. 크라우드펀팅6강. 크라우드펀팅
6강. 크라우드펀팅Ho Hyun Lee
 

Destaque (20)

sigmaliftbrochure
sigmaliftbrochuresigmaliftbrochure
sigmaliftbrochure
 
Development of genomics pipelines and its integration with breeding
Development of genomics pipelines and its integration with breedingDevelopment of genomics pipelines and its integration with breeding
Development of genomics pipelines and its integration with breeding
 
Impacto tic en los roles docentes universitarios.
Impacto tic en los roles docentes universitarios.Impacto tic en los roles docentes universitarios.
Impacto tic en los roles docentes universitarios.
 
Salvem O Planeta
Salvem O PlanetaSalvem O Planeta
Salvem O Planeta
 
Proposal
ProposalProposal
Proposal
 
Recommendation Letter - Tandem
Recommendation Letter - TandemRecommendation Letter - Tandem
Recommendation Letter - Tandem
 
85oos.pdf
85oos.pdf85oos.pdf
85oos.pdf
 
bigbillerme
bigbillermebigbillerme
bigbillerme
 
1
11
1
 
Umg ejemplo
Umg ejemploUmg ejemplo
Umg ejemplo
 
Encuentro 2.0
Encuentro 2.0Encuentro 2.0
Encuentro 2.0
 
Olympic word find
Olympic word find  Olympic word find
Olympic word find
 
q4la8.pdf
q4la8.pdfq4la8.pdf
q4la8.pdf
 
서비스 소개
서비스 소개서비스 소개
서비스 소개
 
Storekeeping
StorekeepingStorekeeping
Storekeeping
 
Finding The Right People: Tools for Screencing, Hiring, and Retaining Staff
Finding The Right People: Tools for Screencing, Hiring, and Retaining StaffFinding The Right People: Tools for Screencing, Hiring, and Retaining Staff
Finding The Right People: Tools for Screencing, Hiring, and Retaining Staff
 
Lubrication Cat II
Lubrication Cat IILubrication Cat II
Lubrication Cat II
 
Lo Que Un Inversor Debe Conocer De Un Emprendedor
Lo Que Un Inversor Debe Conocer De Un EmprendedorLo Que Un Inversor Debe Conocer De Un Emprendedor
Lo Que Un Inversor Debe Conocer De Un Emprendedor
 
4강. 프로토 타이핑 (prototyping)
4강. 프로토 타이핑 (prototyping)4강. 프로토 타이핑 (prototyping)
4강. 프로토 타이핑 (prototyping)
 
6강. 크라우드펀팅
6강. 크라우드펀팅6강. 크라우드펀팅
6강. 크라우드펀팅
 

Semelhante a Pesquisa sequencial e binária: comparação de eficiência

Semelhante a Pesquisa sequencial e binária: comparação de eficiência (20)

Pesquisa sequencial
Pesquisa sequencialPesquisa sequencial
Pesquisa sequencial
 
A prova dos_nove
A prova dos_noveA prova dos_nove
A prova dos_nove
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Progressões
ProgressõesProgressões
Progressões
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Análise assintótica
Análise assintóticaAnálise assintótica
Análise assintótica
 
Análise da complexidade de algoritmos
Análise da complexidade de algoritmosAnálise da complexidade de algoritmos
Análise da complexidade de algoritmos
 
Pequeno teorema de fermat
Pequeno teorema de fermatPequeno teorema de fermat
Pequeno teorema de fermat
 
Equações de recorrência - II (Otimização)
Equações de recorrência - II (Otimização)Equações de recorrência - II (Otimização)
Equações de recorrência - II (Otimização)
 
Md 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMd 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematica
 
Atps estatistica
Atps estatisticaAtps estatistica
Atps estatistica
 
Sequencias e series unicamp
Sequencias e series   unicampSequencias e series   unicamp
Sequencias e series unicamp
 
57701066 matematica-discreta-exercicios-resolvidos
57701066 matematica-discreta-exercicios-resolvidos57701066 matematica-discreta-exercicios-resolvidos
57701066 matematica-discreta-exercicios-resolvidos
 
Sequencias e series
Sequencias e seriesSequencias e series
Sequencias e series
 
Sequencias e mf 2016
Sequencias e mf 2016Sequencias e mf 2016
Sequencias e mf 2016
 
Introd logica mat ii
Introd logica mat iiIntrod logica mat ii
Introd logica mat ii
 
Alunos aula pa
Alunos aula paAlunos aula pa
Alunos aula pa
 
Booklet reais
Booklet reaisBooklet reais
Booklet reais
 
Expoente 12 prova modelo de exame-enunciado
Expoente 12 prova modelo de exame-enunciadoExpoente 12 prova modelo de exame-enunciado
Expoente 12 prova modelo de exame-enunciado
 
Plano de Aula P.A. CAp
Plano de Aula P.A. CApPlano de Aula P.A. CAp
Plano de Aula P.A. CAp
 

Pesquisa sequencial e binária: comparação de eficiência

  • 1. Pesquisa sequencial e pesquisa bin´ria a Armando Matos Departamento de Ciˆncia de Computadores e Universidade de Porto 2008
  • 2. 2 problemas importantes. . . Pesquisa: Procurar um valor numa lista ou, por exemplo, num ficheiro pesquisa 5 em [8,2,1,5,2,6] → True Ordena¸˜o: ordenar uma lista. ca Exemplo, ordem n˜o decrescente: a [8,2,1,5,2,6] → [1,2,2,5,6,8]
  • 5. Pesquisa sequˆncial e Seja x: o valor que se vai procurar a: a lista onde se vai procurar x; ´ ındices de a: 0 a n − 1. procura(x,a) ⇒ bool M´todo: e x ´ comparado sucessivamente com a[0], a[1],. . . , a[n-1]. e Se x for igual a algum dos a[i], retorna-se True. Sen˜o, retorna-se False. a
  • 6. Pesquisa sequˆncial, fun¸˜o em python e ca # p r o c u r a x na l i s t a a def procura (x , a ) : n=l e n ( a ) i =0 w h i l e i <= n −1: i f x==a [ i ] : r e t u r n True i=i +1 return False
  • 7. Pesquisa sequˆncial, m´todo da sentinela e e Uma varia¸˜o do m´todo anterior. . . fun¸˜o procura(x,a): ca e ca Inicialmente x ´ colocado no fim da lista, e Ex: x=9, a=[5,10,2,4,2] → a=[5,10,2,4,2,9] A compara¸˜o ´ mais simples: enquanto x != a[i] ca e A parte interna do ciclo ´ apenas: i = i+1 e Seja n o valor inicial de len(a). Se o ciclo acaba com i=n, retorna False Se o ciclo acaba com i<n, retorna True
  • 8. M´todo da sentinela, fun¸˜o em python e ca Nesta vers˜o retorna-se i tal que x=a[i] a ou -1 se x n˜o est´ na lista. a a 1 2 3 4 5 6 7 8 9 def procura (x , a ) : n=l e n ( a ) a . append ( x ) i =0 w h i l e x !=a [ i ] : i=i +1 i f i==n : r e t u r n −1 return i Note-se que o ciclo (onde a fun¸˜o “passa” mais tempo) ´ ca e constitu´ apenas pelas linhas 5 e 6. ıdo
  • 9. Eficiˆncia da pesquisa sequˆncial e e Vamos usar como medida de eficiˆncia no tempo de execu¸˜o e ca o n´mero c(n) de compara¸˜es entre x e a[i] u co (linha 5 da fun¸˜o anterior) ca
  • 10. Eficiˆncia da pesquisa sequˆncial, I e e Para a fun¸˜o com “sentinela”: ca N´mero de compara¸˜es, se x est´ na lista u co a Melhor caso: c(n) = 1 Pior caso: c(n) = n Caso m´dio: c(n) = (n + 1)/2 e Para o caso m´dio, admitiu-se que x pode ser, com igual e probabilidade, um dos n elementos da lista.
  • 11. Eficiˆncia da pesquisa sequˆncial, II e e N´mero de compara¸˜es, Se x n˜o est´ na lista: u co a a Melhor caso: c(n) = n + 1 Pior caso: c(n) = n + 1 Caso m´dio: c(n) = n + 1 e
  • 13. Pesquisa bin´ria I a Se a lista a est´ ordenada – suponhamos por ordem crescente – h´ a a algoritmos muito mais eficientes de procurar x: procura(x,a): x ´ procurado entre os ´ e ındices i1 e i2 (extremos inclu´ ıdos); Seja n=len(a). Inicialmente faz-se i1=0, i2=n-1. Repetidamente, calcula-se o ponto m´dio m=(i1+i2)/2 e (divis˜o inteira) e a Se x<a[m] → i2=m-1 Se x>a[m] → i1=m+1 Se x==a[m] → retorna m Se o intervalo [i1,i2] acaba por ficar vazio (i1>i2), x n˜o a est´ na lista: → retorna -1. a
  • 14. Pesquisa bin´ria, fun¸˜o em python, vers˜o iterativa a ca a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 d e f pb ( x , a ) : n = len (a) i1 = 0 i 2 = n−1 ( ∗ ) w h i l e i 1 <= i 2 : m = ( i 1+i 2 ) / 2 i f x < a [m ] : i 2 = m−1 e l i f x > a [m ] : i 1 = m+1 else : # v e r i f i c a −s e x == a [m] return m r e t u r n −1
  • 15. Notas sobre a correc¸˜o de algoritmos ca Exerc´ ıcio: Escreva um invariante de ciclo apropriado ` a demonstra¸˜o dacorrec¸˜o do algoritmo e v´lido antes do teste do ca ca a ciclo - linha (*). Exerc´ ıcio: Escreva uma vers˜o recursiva do mesmo algoritmo. a
  • 16. Notas sobre a correc¸˜o de algoritmos ca Muitas vezes ´ vantajoso dividir as demonstra¸˜es de correc¸˜o em e co ca 2 partes: Correc¸˜o parcial de um algoritmo: se o algoritmo terminar, a ca resposta est´ correcta a Termina¸˜o de um algoritmo: o algoritmo termina (ver La ca Palisse, obras completas). correc¸˜o = correc¸˜o parcial + termina¸˜o ca ca ca
  • 17. Pesquisa bin´ria – correc¸˜o da fun¸˜o a ca ca Notas sobre a correc¸˜o da fun¸˜o de pesquisa bin´ria: ca ca a Invariante de ciclo : se x est´ na lista est´ entre os ´ a a ındices i1 e i2, extremos inclu´ ıdos. In´ ıcio: o invariante de ciclo fica verdadeiro com as atribui¸˜es co das linhas 2-4. O invariante de ciclo mant´m-se verdadeiro se o ciclo e continuar, isto ´, quando se verificam as condi¸˜es das linhas e co 7 ou 9. Logo: no teste da linha 5 verifica-se o invariante de ciclo. Se a linha 13 for executada, x est´ na lista, na posi¸˜o m a ca Se o ciclo acabar (i1>i2), pela manuten¸˜o do invariante do ca ciclo, x n˜o est´ na lista. a a
  • 18. Pesquisa bin´ria – termina¸˜o da fun¸˜o a ca ca Notas sobre a termina¸˜o da fun¸˜o: ca ca Os ´ ındices em que x pode “estar” s˜o i1, i1+1,. . . , i2. a Seja num=i2-i1+1 o n´mero desses ´ u ındices. A prova de termina¸˜o ´ baseada no facto de num diminuir de cada ca e vez que o teste das linhas 7 e 9 ´ efectuado e isso prova-se com os e seguintes factos i1 ≤ m ≤ i2 onde m resulta da atribui¸˜o m=(i1+i2)/2. ca A atribui¸˜o i2=m-1 (linha 8) reduz num, pois, com o valor ca inicial da i2, m − 1 < m ≤ i2 A atribui¸˜o i1=m+1 (linha 10) reduz num, pois, com o valor ca inicial da i1, i1 ≤ m < m + 1
  • 19. Eficiˆncia da pesquisa bin´ria e a Vamos usar como medida de eficiˆncia no tempo de execu¸˜o e ca o n´mero c(n) de compara¸˜es entre x e a[i], contando as linhas u co 7 e 9 como uma s´ compara¸˜o, (compara¸˜o entre x e a[m]) o ca ca Vamos determinar o n´mero de compara¸˜es no pior caso (quando u co x n˜o est´ na lista) a a
  • 20. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0
  • 21. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0 0 0 . . . 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 • • • • • • • • • • • • • • •
  • 22. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0 0 0 . . . 14 8 . . . 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
  • 23. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0 0 0 . . . 14 8 . . . 14 8 . . . 10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
  • 24. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0 0 0 . . . 14 8 . . . 14 8 . . . 10 9...9 1 2 3 4 5 6 7 8 9 10 11 12 13 14 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
  • 25. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0 0 0 . . . 14 8 . . . 14 8 . . . 10 9...9 9...8 = ∅ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •
  • 26. Eficiˆncia da pesquisa bin´ria e a Para simplificar, supomos que n=len(a) ´ da forma n = 2p − 1. e Ap´s uma divis˜o a “meio”, o n´mero de ´ o a u ındices em que x pode estar passa de n = 2p − 1 a n = 2p−1 − 1. Por exemplo, 15 → 7 → 3 → 1 → 0 0 0 . . . 14 8 . . . 14 8 . . . 10 9...9 9...8 = ∅ 0 . . . 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • O n´mero de divis˜es a “meio”, que ´ igual ao n´mero de u o e u compara¸˜es, ´, neste caso, igual a 4 = log(n + 1). co e No caso geral, o n´mero de compara¸˜es n˜o excede log(n) + 1. u co a
  • 27. Eficiˆncia da pesquisa bin´ria e a N´mero de compara¸˜es no pior caso. u co Exemplo para n = 108 , t = 1µseg (tempo associado a cada compara¸˜o) ca Pesquisa sequˆncial: c(n) = n, t = 100seg, quase 2 minutos. e Pesquisa bin´ria: c(n) ≈ log(n), t ≈ 27µseg! a Conclus˜o: a pesquisa bin´ria ´ muito mais r´pida que a pesquisa a a e a sequˆncial. e
  • 28. fim