Busca. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Documentos relacionados
Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Listas Encadeadas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

DAINF - Departamento de Informática

Programação de Computadores II. Cap. 17 Busca

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

Fontes Bibliográficas. Estruturas de Dados Aula 15: Árvores. Livros:

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Árvores Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação

Árvores Binárias de Busca

INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1

Árvore Binária de Busca. Prof. César Melo

Prova 2 PMR2300 1o. semestre 2015 Prof. Thiago Martins

Pilhas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Introdução a árvores AVL. Prof. Ernesto Lindstaedt

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Árvores & Árvores Binárias

Prof. Jesus José de Oliveira Neto

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins

INF 1007 Programação II

INF 1007 Programação II

Algoritmos de pesquisa

Filas. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Árvores. N-árias, Binárias, Busca. Vanessa Maia Berny Mestrado em Ciência da Computação

Módulo 16 - Ordenação

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

Classificação e Pesquisa

Programação de Computadores II. Cap. 16 Ordenação

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof a Karina Oliveira. Fonte: Prof a Ana Eliza

Árvores Binárias de Busca

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Algoritmos e Estrutura de Dados II. Árvore AVL. Prof Márcio Bueno. / Material da Prof a Ana Eliza

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Teoria da Computação. Aula 4 Técnicas de Análise 5COP096. Aula 4 Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Instituto de C. Linguagem C: Listas. Luis Martí Instituto de Computação Universidade Federal Fluminense -

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

ADT - Árvores. ADT Árvores Definição

Árvores Binárias de Busca (ABB) 18/11

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Árvores Binárias de Busca

Árvores binárias de busca

Estruturas de Dados Aula 11: TAD Pilha

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

AED2 - Aula 04 Vetores ordenados e árvores de busca

Estruturas de Dados Aula 16: Árvores com Número Variável 13/06/2011

Análise e Complexidade de Algoritmos

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

Prova 2 PMR3201 1o. semestre 2015 Prof. Thiago Martins

Árvores. A Profundidade da Árvore B C D E. Árvores Implementação Genérica

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio

Técnicas de projeto de algoritmos: Indução

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Estruturas de Dados Algoritmos de Ordenação

Métodos Computacionais. Listas Encadeadas

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

4. Algoritmos de Busca em Vetores

Programação de Computadores II. Cap. 4 Funções

Árvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr.

CES-11. Algoritmos e Estruturas de Dados. Árvores Operações sobre uma árvore Estruturas para armazenar árvores

Algoritmos de Busca em Vetores

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Árvores Binárias de Busca

ESTRUTURAS DE DADOS E ALGORITMOS LISTA LIGADA (ABORDAGEM RECURSIVA)

Árvores AVL. Nesta aula será apresentado o ADT árvore AVL que são árvores binárias de altura equilibrada. Algoritmos e Estruturas de Dados I

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

SIN Exemplo de Prova do Conteúdo Semestral

Prof. Jesus José de Oliveira Neto

Árvores Binárias de Busca (ABB) 18/11

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Linguagem C: Ordenação

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

Prof. Jesus José de Oliveira Neto

/* percorreu todo o vetor e não encontrou elemento */ return -1;

Ordenação por Seleção Métodos de Ordenação Parte 3

Métodos de Ordenação

Prova 2 PMR3201 1o. semestre 2016 Prof. Thiago Martins

Estruturas de Dados Aula 15: Árvores 17/05/2011

ÁRVORE BINÁRIA DE BUSCA

Estruturas de Dados com Jogos. Capítulo 8 Árvores

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

Programação de Computadores II. Cap. 5 Vetores

Listas Lineares Ordenadas

Estrutura de Dados. Carlos Eduardo Batista. Centro de Informática - UFPB

INF1007: Programação 2 8 Listas Encadeadas. (c) Dept. Informática - PUC-Rio 1

Slide 01 16/03/2017. Estruturas de Dados. Prof. Cleziel Franzoni da /Cleziel.

Transcrição:

Busca Fabrício J. Barth BandTec - Faculdade de Tecnologia Bandeirantes Outubro de 2011

Tópicos Introdução e Objetivo. Busca Sequencial. Busca Binária. Árvore Binária de Busca. Busca Tópicos Faculdade de Tecnologia Bandeirantes 2

Introdução e Objetivo Discutir e implementar diferentes estratégias para efetuar a busca de um determinado elemento em um determinado conjunto de dados. Dado um conjunto de dados, que pode ser armazenado em um vetor v de tamanho n, que algoritmos utizar para encontrar um elemento x de forma eficiente? Busca Introdução e Objetivo Faculdade de Tecnologia Bandeirantes 3

Busca Sequencial 1 public static boolean sequencial(int x, int v[]){ 2 for(int i =0; i<v.length; i++){ 3 if(x==v[i]) 4 return true; 5 } 6 return false; 7 } Busca Busca Sequencial Faculdade de Tecnologia Bandeirantes 4

Busca Sequencial Algoritmo extremamente simples; Muito ineficiente quando o número de elementos no vetor for muito grande. No pior caso, o algoritmo de busca sequencial precisa realizar n comparações para encontrar o elemento x. Portanto, o desempenho computacional desse algoritmo varia linearmente em relação ao tamanho do problema (O(n)). Busca Busca Sequencial Faculdade de Tecnologia Bandeirantes 5

Busca Binária Considerando que o vetor v já está ordenado, então pode-se aplicar outra estratégia para busca um elemento x. Ua estratégia que particiona o vetor para realizar menos comparações. Busca Busca Binária Faculdade de Tecnologia Bandeirantes 6

Busca Busca Binária Faculdade de Tecnologia Bandeirantes 7

1 public static boolean binaria(int x, int v[]){ 2 int inicio = 0; int fim = v.length-1; 3 int meio; 4 /* enquanto a parte restante for maior que zero*/ 5 while(inicio <= fim){ 6 meio = (inicio + fim) / 2; 7 if(x < v[meio]) 8 fim = meio - 1; 9 else if(x > v[meio]) 10 inicio = meio + 1; 11 else 12 return true; 13 } 14 return false; 15 } Busca Busca Binária Faculdade de Tecnologia Bandeirantes 8

Análise do Algoritmo de Busca Binária O desempenho deste algoritmo é muito superior ao de busca sequencial a. Quantas vezes precisamos repetir o procedimento de subdivisão para concluir que o elemento não está presente no vetor? a o pior caso caracteriza-se pela situação do elemento que buscamos não estar no vetor. Busca Análise do Algoritmo de Busca Binária Faculdade de Tecnologia Bandeirantes 9

Implementação recursiva do Algoritmo de Busca Binária O algoritmo de busca binária iterativo tem um desempenho superior a versão recursiva do mesmo algoritmo. Mesmo assim, vale a pena dar uma olhada na versão recursiva. Busca Implementação recursiva do Algoritmo de Busca Binária Faculdade de Tecnologia Bandeirantes 10

1 public static boolean binariar(int x, int v[], int n){ 2 if(n <= 0) 3 return false; 4 else{ 5 /* deve buscar o elemento do meio*/ 6 int meio = n / 2; 7 if(x < v[meio]) 8 return binariar(x,v,meio); 9 else if(x > v[meio]){ 10 return binariar(x,copyv(v,meio),n-1-meio); 11 }else 12 return true; 13 } 14 } Busca Implementação recursiva do Algoritmo de Busca Binária Faculdade de Tecnologia Bandeirantes 11

Busca em uma Lista Encadeada Se tivermos os dados armazenados em uma lista encadeada, só temos a alternativa de implementar um algoritmo de busca linear, mesmo se os elementos estiverem ordenados. Portanto, a lista encadeada não é uma boa opção para estruturar nossos dados, se desejarmos realizar muitas operações de busca. Busca Busca em uma Lista Encadeada Faculdade de Tecnologia Bandeirantes 12

Árvore Binária de Busca Uma árvore binária de busca é uma estrutura de dados de árvore binária onde todos os nós da sub-árvore esquerda possuem um valor numérico inferior ao nó raiz e todos os nós da sub-árvore direita possuem um valor superior ao nó raiz. Busca Árvore Binária de Busca Faculdade de Tecnologia Bandeirantes 13

Figura 1: Exemplo de árvore binária de busca Busca Árvore Binária de Busca Faculdade de Tecnologia Bandeirantes 14

Métodos de uma Árvore Binária de Busca void imprimir(nodo n); Nodo inserir(nodo n, char c); boolean procura(nodo n, char c); Nodo retirna(nodo n, char c); Busca Métodos de uma Árvore Binária de Busca Faculdade de Tecnologia Bandeirantes 15

Imprimindo o conteúdo ordenado 1 private void printordenado(nodo n){ 2 if(n!=null){ 3 printordenado(n.getesq()); 4 System.out.print(n.getInfo()+" - "); 5 printordenado(n.getdir()); 6 } 7 } Busca Imprimindo o conteúdo ordenado Faculdade de Tecnologia Bandeirantes 16

Buscando por conteúdo na árvore Busca Buscando por conteúdo na árvore Faculdade de Tecnologia Bandeirantes 17

Buscando por conteúdo na árvore 1 private boolean procura(nodo n, char c){ 2 if(n!= null){ 3 if((int)n.getinfo() > (int)c) 4 return procura(n.getesq(),c); 5 else if((int)n.getinfo() < (int)c) 6 return procura(n.getdir(),c); 7 else 8 return true; 9 }else{ 10 return false; 11 } 12 } Busca Buscando por conteúdo na árvore Faculdade de Tecnologia Bandeirantes 18

Inserindo conteúdo na árvore 1 private Nodo inserir(nodo n, char c){ 2 if(n!= null){ 3 if((int)n.getinfo() > (int)c) 4 n.setesq(inserir(n.getesq(),c)); 5 else if((int)n.getinfo() < (int)c) 6 n.setdir(inserir(n.getdir(),c)); 7 return n; 8 }else{ 9 n = new Nodo(); n.setinfo(c); 10 n.setdir(null); n.setesq(null); 11 return n; 12 }} Busca Inserindo conteúdo na árvore Faculdade de Tecnologia Bandeirantes 19

Estrutura de uma árvore binária de busca 1 public class ArvoreBinaria { 2 private Nodo raiz = null; 3 4 public void inserir(char c){ 5 raiz = inserir(raiz,c);} 6 7 public void printordenado(){ 8 this.printordenado(raiz);} 9 10 public boolean procura(char c){ 11 return procura(raiz,c);} 12... Busca Estrutura de uma árvore binária de busca Faculdade de Tecnologia Bandeirantes 20

Função que retira um elemento da árvore Exclusão na folha. Exclusão de um nó com um filho. Exclusão de um nó com dois filhos. Busca Função que retira um elemento da árvore Faculdade de Tecnologia Bandeirantes 21

Exclusão na folha Busca Exclusão na folha Faculdade de Tecnologia Bandeirantes 22

Exclusão de um nó com um filho Busca Exclusão de um nó com um filho Faculdade de Tecnologia Bandeirantes 23

Exclusão de um nó com dois filhos Busca Exclusão de um nó com dois filhos Faculdade de Tecnologia Bandeirantes 24

Retirando um elemento da árvore 1 private Nodo retira(nodo n, char c){ 2 if(n==null){ 3 return null; 4 }else if((int)n.getinfo() > (int)c){ 5 n.setesq(retira(n.getesq(),c)); 6 }else if((int)n.getinfo() < (int)c){ 7 n.setdir(retira(n.getdir(),c)); 8 }else{ 9 /*achou o elemento*/ 10 if(n.getesq()==null && n.getdir()==null){ 11 n = null; /*elemento sem filhos*/ 12 }else if(n.getesq() == null){ 13 /*so tem filho a direita*/ 14 n = n.getdir(); 15 }else if(n.getdir() == null){ 16 /*so tem filho a esquerda*/ 17 n = n.getesq(); 18 }else{ 19 /*TODO tem os dois filhos */ 20 } 21 } 22 return n; 23 } Busca Retirando um elemento da árvore Faculdade de Tecnologia Bandeirantes 25

Retirando um elemento da árvore com dois filhos 1... 2 }else{ 3 /*tem os dois filhos*/ 4 Nodo temp = n.getesq(); 5 while(temp.getdir()!=null){ 6 temp = temp.getdir(); 7 } 8 n.setinfo(temp.getinfo()); 9 temp.setinfo(c); 10 n.setesq(retira(n.getesq(),c)); 11 } 12... Busca Retirando um elemento da árvore com dois filhos Faculdade de Tecnologia Bandeirantes 26

Considerações Finais Nesta aula foram vistos os seguintes algoritmos de busca: Busca sequencial ou linear: Método que consome muito tempo para encontrar um elemento. Busca binária: Método que consome pouco tempo ao procurar por um elemento. No entanto, não pode ser utilizado em estruturas dinâmicas. Busca Considerações Finais Faculdade de Tecnologia Bandeirantes 27

Árvore de Busca Binária: Método que pode ser utilizado no armazenamento ordenado e recuperação de elementos em uma estrutura dinâmica; Consome pouco tempo para procurar por um elemento. Busca Considerações Finais Faculdade de Tecnologia Bandeirantes 28

Material de consulta e referência Capítulo 17 do livro: Introdução a Estruturas de Dados do Waldemar Celes, Renato Cerqueira e José Lucas Rangel. As imagens utilizadas nestes slides foram obtidas no site http://pt.wikipedia.org/wiki/arvore binaria de busca. Busca Material de consulta e referência Faculdade de Tecnologia Bandeirantes 29