Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária...

61

Transcript of Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária...

Page 1: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Algoritmos de Busca

Profa. Sheila Morais de Almeida

DAINF-UTFPR-PG

junho - 2018

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 1 / 61

Page 2: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Este material é preparado usando como referências os textos dos seguintes

livros.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 2 / 61

Page 3: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de Algoritmos

Vamos analisar o algoritmo de busca em um vetor não-ordenado.

Quantas operações de comparação são executadas?

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1

enquanto i ≤ n && v [i ] 6= k faça:

i ← i + 1

if i ≤ n então

retorne ielse

retorne 0

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 3 / 61

Page 4: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no pior caso

Pergunta: Quantas instruções básicas do modelo computacional RAM

(operações aritméticas básicas, atribuições e comparações) são executadas

pelo Algoritmo Linear, considerando uma entrada de tamanho n de pior

caso?

Pior caso: o elemento não está no vetor.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 4 / 61

Page 5: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no pior caso

Considere o Algoritmo Linear:

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1 1

enquanto i ≤ n && v [i ] 6= k faça: 2n + 1

i ← i + 1 2nif i ≤ n então 1

retorne ielse

retorne 0

Total: 4n + 3

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 5 / 61

Page 6: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no pior caso

Considere o Algoritmo Linear:

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1 1

enquanto i ≤ n && v [i ] 6= k faça: 2n + 1

i ← i + 1 2nif i ≤ n então 1

retorne ielse

retorne 0

Total: 4n + 3

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 6 / 61

Page 7: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no pior caso

Então, no pior caso do Algoritmo Busca Linear, f (n) = 4n + 3.

4n + 3 ≤ 4n + n = 5n,∀n ≥ 3

Então, 4n + 3 ∈ O(n).

4n + 3 ≥ 4n, ∀n ≥ 0

Então, 4n + 3 ∈ Ω(n).

Portanto, o Algoritmo Busca Linear executa em tempo Θ(n) no pior caso.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 7 / 61

Page 8: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no melhor caso

Considere o Algoritmo Linear:

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1

enquanto i ≤ n && v [i ] 6= k faça:

i ← i + 1

if i ≤ n então

retorne ielse

retorne 0

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 8 / 61

Page 9: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no melhor caso

Pergunta: Quantas instruções básicas do modelo computacional RAM

(operações aritméticas básicas, atribuições e comparações) são executadas

pelo Algoritmo Linear, considerando uma entrada de tamanho n de melhor

caso?

Melhor caso: o elemento está na primeira posição do vetor.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 9 / 61

Page 10: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no melhor caso

Considere o Algoritmo Linear:

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1 1

enquanto i ≤ n && v [i ] 6= k faça: 2

i ← i + 1 0

if i ≤ n então 1

retorne ielse

retorne 0

Total: 4

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 10 / 61

Page 11: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no melhor caso

Considere o Algoritmo Linear:

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1 1

enquanto i ≤ n && v [i ] 6= k faça: 2

i ← i + 1 0

if i ≤ n então 1

retorne ielse

retorne 0

Total: 4

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 11 / 61

Page 12: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no melhor caso

Então, no melhor caso do Algoritmo Busca Linear, f (n) = 4.

4 ≤ 4× 1,∀n ≥ 0

Então, 4 ∈ O(1).

4 ≥ 4× 1,∀n ≥ 0

Então, 4 ∈ Ω(1).

Portanto, o Algoritmo Busca Linear executa em tempo Θ(1) no melhor

caso.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 12 / 61

Page 13: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Considere o Algoritmo Linear:

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1

enquanto i ≤ n && v [i ] 6= k faça:

i ← i + 1

if i ≤ n então

retorne ielse

retorne 0

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 13 / 61

Page 14: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Pergunta: Quantas instruções básicas do modelo computacional RAM

(operações aritméticas básicas, atribuições e comparações) são executadas

pelo Algoritmo Linear, considerando uma entrada de tamanho n de caso

médio?

O que é o caso médio neste contexto?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 14 / 61

Page 15: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Vamos supor que trata-se de uma aplicação em que qualquer elemento tem

a mesma chance de estar em qualquer posição do vetor, ou seja, é uma

distribuição uniforme.

Suponha que o elemento procurado está no vetor.

Então, qual a chance de o elemento estar em cada posição do vetor? 1

n

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 15 / 61

Page 16: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Vamos supor que trata-se de uma aplicação em que qualquer elemento tem

a mesma chance de estar em qualquer posição do vetor, ou seja, é uma

distribuição uniforme.

Suponha que o elemento procurado está no vetor.

Então, qual a chance de o elemento estar em cada posição do vetor? 1

n

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 16 / 61

Page 17: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no pior caso

Considere o Algoritmo Linear e suponha que o elemento k está na posição

t.

Algoritmo Busca Linear

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1 1

enquanto i ≤ n && v [i ] 6= k faça: 2ti ← i + 1 2t − 2

if i ≤ n então 1

retorne ielse

retorne 0

Total: 4t para encontrar o elemento na posição t.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 17 / 61

Page 18: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Em média, a chance de um número estar em cada uma das posições se

distribui igualmente.

(Isso pode variar, de acordo com a aplicação.)

A chance de encontrar o elemento k em cada posição do vetor é 1

n .

O número de intruções executadas para solução é em média

(∑n

t=1 4t)× 1

n = 4 (n+1)n2× 1

n = 2n + 2.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 18 / 61

Page 19: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Então, no caso médio do Algoritmo Busca Linear, o número de instruções

executadas é 2n + 2.

2n + 2 ≤ 2n + n = 3n,∀n ≥ 2

Então, 2n + 2 ∈ O(n).

2n + 2 ≥ 2n, ∀n ≥ 0

Então, 2n + 2 ∈ Ω(n).

Portanto, o Algoritmo Busca Linear executa em tempo Θ(n) no caso

médio, considerando que o elemento procurado está no vetor.Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 19 / 61

Page 20: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade de tempo no caso médio

Portanto, o Algoritmo Busca Linear executa em tempo Θ(n) no caso

médio, considerando que o elemento procurado está no vetor.

Observação: Nos demais casos, o elemento não está no vetor (é o pior

caso).

Pela análise de pior caso, sabemos que quando o elemento não está no

vetor, a execução é em tempo Θ(n).

Portanto, o Algoritmo Busca Linear executa em tempo Θ(n) no caso

médio, considerando que o elemento procurado pode não estar no vetor.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 20 / 61

Page 21: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Se o vetor estiver ordenado, podemos melhorar o tempo da busca?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 21 / 61

Page 22: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Busca Binária

Problema

Dado um vetor ordenado v [1..n] e um elemento k , responder em qual

posição do vetor encontra-se o elemento k ou retornar 0.

Ideia:

1 Dividir o vetor ao meio;

2 Seja m a posição do meio do vetor.

3 Se k ≤ v [m], procurar o elemento k em v [1..m].

4 Senão, procurar o elemento k em v [m + 1..n].

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 22 / 61

Page 23: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30 k4

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 23 / 61

Page 24: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 24 / 61

Page 25: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 25 / 61

Page 26: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 26 / 61

Page 27: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 27 / 61

Page 28: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 28 / 61

Page 29: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74m

3 4

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 29 / 61

Page 30: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74m

3 4m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 30 / 61

Page 31: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74m

3 4m

4

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 31 / 61

Page 32: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74m

3 4m

4 = 4?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 32 / 61

Page 33: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk4

3 111074m

3 74m

3 4m

4 = 4?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 33 / 61

Page 34: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 34 / 61

Page 35: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 35 / 61

Page 36: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 36 / 61

Page 37: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30m

26 30

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 37 / 61

Page 38: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30m

26 30m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 38 / 61

Page 39: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30m

26 30m

26

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 39 / 61

Page 40: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30m

26 30m

26 = 26?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 40 / 61

Page 41: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk26

262215 30m

26 30m

26 = 26?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 41 / 61

Page 42: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 42 / 61

Page 43: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 43 / 61

Page 44: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 44 / 61

Page 45: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30m

2215

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 45 / 61

Page 46: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30m

2215m

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 46 / 61

Page 47: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30m

2215m

22

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 47 / 61

Page 48: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30m

2215m

22 = 17?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 48 / 61

Page 49: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

mk17

262215 30m

2215m

22 = 17?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 49 / 61

Page 50: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Algoritmo Busca Binária

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1; j ← n;enquanto i < j faça:

m←⌊i+j2

⌋if k ≤ v [m] então j ← melse i ← m + 1

if i = j e k = v [i ] então

retorne ielse

retorne 0

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 50 / 61

Page 51: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

No pior caso da busca, o elemento não está no vetor.

Quantas instruções de comparação serão executadas?

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 51 / 61

Page 52: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Algoritmo Busca Binária

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1; j ← n;enquanto i < j faça:

m←⌊i+j2

⌋if k ≤ v [m] então j ← melse i ← m + 1

if i = j e k = v [i ] então

retorne ielse

retorne 0

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 52 / 61

Page 53: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

3 111074

3 74

3 4

4

n

n/2

n/4

n/8

n/16

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 53 / 61

Page 54: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

3 111074

3 74

3 4

4

n/20

n/21

n/22

n/23

n/24

Execuções do Enquanto:

1

5

4

3

2

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 54 / 61

Page 55: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

3 262215111074 30

3 111074

3 74

3 4

4

n/20

n/21

n/22

n/23

n/24

Execuções do Enquanto:

1

5

4

3

2

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 55 / 61

Page 56: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

O número de execuções do laço enquanto é 1 a mais que o expoente da

respectiva potência que divide n.

3 262215111074 30

3 111074

3 74

3 4

4

n/20

n/21

n/22

n/23

n/24

Execuções do Enquanto:

1

5

4

3

2

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 56 / 61

Page 57: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Qual o valor do expoente quando o número de elementos do vetor é 1?

n2p

= 1.

n = 2p.

p = log n.

Como o laço enquanto ocorre p + 1 vezes, o total de iterações será

(log n) + 1.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 57 / 61

Page 58: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Algoritmo Busca Binária

Entrada: vetor v [1..n] de inteiros;

n número de elementos no vetor; k elemento procurado

i ← 1; j ← n; 2enquanto i < j faça: (log n) + 1

m←⌊i+j2

⌋3 log n

if k ≤ v [m] então j ← m log nelse i ← m + 1 2 log n

if i = j e k = v [i ] então 2

retorne ielse

retorne 0

Total: 7 log n + 5.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 58 / 61

Page 59: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

No pior caso, a Busca Binária executa em tempo Θ(log n):

7 log n + 5 ∈ O(log n): 7 log n + 5 ≤ 7 log n + 5 log n = 12 log n, ∀n ≥ 2.

7 log n + 5 ∈ Ω(log n): 7 log n + 5 ≥ 7 log n,∀n ≥ 1.

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 59 / 61

Page 60: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Qual o comportamento da Busca Binária no caso médio e no melhor caso?

A análise é diferente?

Então a Busca Binária é sempre Θ(log n).

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 60 / 61

Page 61: Algoritmos de Busca - Sheila Almeida · Análise de complexidade: busca binária Busca Binária Problema Dado um vetor ordenado v[1 ::n] e um elemento k, responder em qual posição

Análise de complexidade: busca binária

Qual o comportamento da Busca Binária no caso médio e no melhor caso?

A análise é diferente? Não! O algoritmo sempre divide o vetor até ter um

único elemento.

Então a Busca Binária é sempre Θ(log n).

Sheila Almeida (DAINF-UTFPR-PG) Algoritmos de Busca junho - 2018 61 / 61