Pesquisa de Informação

Slides:



Advertisements
Apresentações semelhantes
RECORTE DE FIGURAS Algoritmo proposto para Recorte de Segmentos (atribuído a Ivan Sutherland e Dan Cohen) Para o entendimento do algoritmo a ser proposto,
Advertisements

Linguagem de Programação IX Métodos de Ordenação
Algoritmos de Ordenação
Algoritmos de Busca CONTEÚDO (1) Motivação (2) Busca Linear
Algoritmos de Ordenação
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Aulas Anteriores ° Tipos definidos pelo utilizador ° Definição de tipos baseados.
17 Novembro 2006Algoritmos de Ordenação e Pesquisa Aplicação a Listas de Registos 1 Jorge Cruz DI/FCT/UNL Introdução aos Computadores e à Programação 1º
11 de Maio de 2006Listas e Ordenação1 Pedro Barahona DI/FCT/UNL Introdução aos Computadores e à Programação 2º Semestre 2005/2006.
ESTRUTURAS DO TIPO FILA
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
Estrutura de Dados I Profº.: ABC Sampaio
Adaptado de material da profa. Maria Aparecida Livi
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
FACENS – Engenharia da Computação Lógica Computacional II
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Classificação e Pesquisa de Dados
Introdução à Programação Pascal - Começando Prof. Filipo Studzinski Perotto 2009.
Algoritmos Escher.
Sincronização de Processos (2)
7 Abstração Genérica Unidades genéricas e instanciação.
Robson Godoi / Sandra Siebra
O Portal do Estudante de Computação
O Portal do Estudante de Computação
Marco Antonio Montebello Júnior
GAUSS COM PIVOTEAMENTO
Algoritmos de Ordenação
Algoritmos de Ordenação
Insertion Sort.
Paradigmas de programação
João Lucas de Oliveira Torres
Variáveis, Tipos de Dados e Constantes
FATORAÇÃO LU.
O Portal do Estudante de Computação
LISTAS DUPLAMENTE ENCADEADAS
Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção.
Listas duplamente encadeadas Estrutura: tDado = integer; { ou real, char, etc.} tPtNo = ^tNo; tNo = record Ant: tPtNo Dado: tDado; Prox: tPtNo; end; var.
Ordenação em memória primária
O que é o Delphi ? Uma IDE (Integrated Development Enviroment)
Introdução ao uso de vatores na linguagem PASCAL.
O Portal do Estudante de Computação
Mergesort Katia Guimarães.
Ambiente de Execução - Rotinas
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Linguagem Pascal Prof. Sérgio Rodrigues.
Algoritmos de Ordenação
LINGUAGENS DE PROGRAMAÇÃO
Vetores Bidimensionais – Debug - Ponteiros – Listas Encadeadas Simples
Aula 06 – 05/04 Árvores binárias.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Estrutura de dados kelvin Santiago
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Computação Eletrônica
Como analisar um algoritmo
Professor Ulisses Vasconcelos
Métodos de Ordenação.
CLASSIFICAÇÃO DE DADOS
Andréa Iabrudi 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I.
Classificação Ordenação de Dados
MODULARIZAÇÃO Técnica utilizada e tida como vantajosa na confecção de programas. Consiste em dividir o programa em diversos módulos ou sub-programas, de.
Métodos de Ordenação Externa
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem.
Curso Programadores de Informática
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Algoritmos com matrizes e vetores
Transcrição da apresentação:

Pesquisa de Informação GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa de Informação A procura/pesquisa de informação é uma das actividades quotidianas mais frequentes; E consequentemente, uma das actividades preponderantes num sistema informático; Embora a pesquisa de informação (procurar um elemento entre um conjunto deles) pareça uma operação simples, criar programas eficientes em termos de procura levanta vários problemas; A pesquisa de informação é muitas vezes efectuada recorrendo a tabelas. Assim, vamos analisar dois métodos de pesquisa de informação em tabelas: 1. Procura sequencial ou linear 2. Procura binária Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

Pesquisa Sequencial de Informação GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Sequencial de Informação Procura sequencial ou linear – é uma das formas mais simples de procurar dados numa tabela. O que se faz é percorrer a tabela: começa-se no 1º elemento e compara-se esse elemento com o valor dado, depois passa-se para o 2º elemento e compara-se com o valor dado, e assim sucessivamente até que o valor seja encontrado ou cheguemos ao fim da tabela. Podemos fazer este tipo de procura de 2 formas: a) sem a utilização de sentinelas b) com a utilização de sentinelas Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Sequencial de Informação Considere para os exemplos que se vão seguir, que as variáveis e tipos foram definidos da seguinte forma: Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” Program procuratel (input, output); Const maxpessoas = 1000; Type repnome = array [1..25] of char; tabnomes = array [1..maxpessoas] of repnome; tabtelefones = array [1..maxpessoas] of integer; Var nomes : tabnomes; telefones : tabtelefones; nomedes : repnome; i, telefone : integer; ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Sequencial de Informação a) sem a utilização de sentinelas Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” Function procura (chave:repnome; var nomes:tabnomes; var telefones:tabtelefones):integer; var i : integer; begin i:=1; while (nomes[i]<>chave) and (i<maxpessoas) do i:=i+1 if nomes[i]=chave then procura:=telefones[i]; else procura:=-1 end; Esta função efectua uma procura Sequencial na tabela Nomes tentando Encontrar a palavra Correspondente à Variável chave ! ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Sequencial de Informação O problema da solução anterior é que a parte do programa que diz respeito à procura propriamente dita, ou seja, a instrução: while (nomes[i]<>chave) and (i<maxpessoas) do i:=i+1; Tem de efectuar continuamente 2 testes, o que torna a operação de pesquisa menos eficiente: - ver se o nome que se procura foi encontrado: (nomes[i]<>chave) - ver se já se chegou ao fim da tabela: (i<maxpessoas) Note-se que o 1º teste é necessário mas o 2º só faz falta porque não podemos garantir que o nome que procuramos existe de facto na tabela. Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Sequencial de Informação b) Uma forma de prescindir do 2º teste é através da utilização do que se designa por valor sentinela, ou seja, um valor que é inserido na tabela para garantir que a procura tem sucesso: Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” Function procura (chave:repnome; var nomes:tabnomes; var telefones:tabtelefones):integer; var i : integer; Begin nomes[maxpessoascsent] := chave; i:=1; while (nomes[i]<>chave)do i:=i+1 if i<>maxpessoascsent then procura:=telefones[i]; else procura:=-1 end; Colocação do valor Sentinela. ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Sequencial de Informação Para se poder utilizar um valor sentinela é preciso que existe uma Posição adicional na tabela, ou seja, se a tabela tem n elementos terá de ter n+1 posições; Nessa posição adicional da tabela (n+1) coloca-se o valor sentinela; A seguir efectua-se a pesquisa normalmente; A última operação tem de ser verificar se o valor encontrado corresponde ao valor sentinela. O exemplo do slide anterior pressupõe que a definição inicial do programa principal passe a ser: Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” Program procuratel (input, output); Const maxpessoas = 1000; maxpessoascsent = 1001; Type repnome = array [1..25] of char; tabnomes = array [1..maxpessoascsent] of repnome; tabtelefones = array [1..maxpessoas] of integer; ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Binária de Informação 2. Procura binária – é uma alternativa à procura sequencial e é mais eficiente só que exige que os elementos que estão a ser pesquisados se encontrem ordenados. Este tipo de procura reduz o nrº de elementos a pesquisar para metade pois processa-se da seguinte forma: a) começa-se por se considerar o elemento que está no meio da tabela; b) se esse valor for maior (ou seja, aparecer depois) que o elemento que estamos a procurar então a procura será feita apenas na primeira metade da tabela; c) se esse valor for menor (ou seja, aparecer antes) que o elemento que estamos a procurar então a procura será feita apenas na segunda metade da tabela; Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Pesquisa Binária de Informação Function procura (chave:repnome; var nomes:tabnomes; var telefones:tabtelefones):integer; var LimInf, LimSup, Meio : integer; begin LimInf:=1; LimSup:=Maxpessoas; repeat meio:=(LimInf+LimSup) div 2; if chave<Nomes[Meio]then LimSup:=Meio-1; else LimInf:=Meio+1; until (chave=Nomes[Meio]) or (LimInf>LimSup); if chave=Nomes[Meio] then procura:=telefones[Meio]; procura:=-1 end; Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

Ordenação Bolha (Bubble Sort) GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação Bolha (Bubble Sort) Já vimos que a ordenação da informação facilita as operações de busca tornando-as mais eficientes; Os algoritmos de ordenação dividem-se em 2 grandes grupos: os de ordenação interna – que ordenam os elementos que estão simultaneamente armazenados em memória, ex: tabela; os de ordenação externa – que ordenam elementos que por serem muitos não podem estar simultaneamente em memória, estando parte desses elementos armazenada no computador em ficheiros; Os algoritmos que vamos ver são apenas de ordenação interna, ou seja, algoritmos para a ordenação de dados armazenados em tabelas . Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação por Borbulhamento (“Bubble Sort”) É o mais simples e básico algoritmo de ordenação. A ideia básica é: percorrer todos os elementos a ordenar; comparar elementos adjacentes; trocar os pares de elementos que estejam fora de ordem; De um modo geral uma única passagem por todos os elementos não é suficiente para ordenar a tabela, sendo normal várias passagens pelos elementos. A tabela só estará ordenada quando for efectuada uma passagem por todos os elementos sem que seja efectuada qualquer troca. O único problema deste tipo de ordenação é que não se torna muito eficiente dado que apenas são trocados os valores adjacentes. Assim, se um elemento estiver muito longe da sua posição final ordenada é preciso efectuar muitas passagens até que seja colocado no seu devido lugar. Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

Ordenação por Borbulhamento (“Bubble Sort”) GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação por Borbulhamento (“Bubble Sort”) Exemplo 1: Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” Program BSort(input,output); const n=10; var i, j : integer; temp : integer; a : array[1..n] of integer; begin for i:=1 to (n-1) do for j:=i+1 to n do if a[i]>a[j] then begin temp:=a[i]; a[i]:=a[j]; a[j]:=temp; end; end. ESCE/IPS

Ordenação por Borbulhamento (“Bubble Sort”) GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação por Borbulhamento (“Bubble Sort”) Exemplo 2: Procedure ordena(.....); Const tamanho=10; var i : integer; nenhumatroca : boolean; numeros:array[1..tamanho]; Procedure troca (var x,y:integer); var temp :integer; begin temp:=x; x:=y; end repeat nenhumatroca:=true; for i:=1 to tamanho-1 do if numeros[i]>numeros[i+1] then troca(numeros[i],numeros[i+1]); nenhumatroca:=false; until nenhumatroca:=true End; Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação “Shell Sort” Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” É uma variante da ordenação por borbulhamento; A ideia básica: comparar e trocar por borbulhamento, não os elementos adjacentes mas os elementos separados por um certo intervalo (que é metade do número de elementos a ordenar); depois esse intervalo é dividido ao meio e o processo repete-se até que o intervalo seja 1. Esta ordenação é mais eficiente que a ordenação por borbulhamento dado que as primeiras passagens apenas consideram um subconjunto do total de elementos a ordenar e as últimas passagens, que são as que vão incidir sobre todos os elementos já os vão encontrar parcialmente ordenados. ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação “Shell Sort” Procedure ordena(.....); Const tamanho=10; var intervalo, i : integer; nenhumatroca : boolean; numeros:array[1..tamanho]; Procedure troca (var x,y:integer); var temp :integer; begin temp:=x; x:=y; end Begin intervalo:=tamanho div 2; repeat repeat nenhumatroca:=true; for i:=1 to tamanho-intervalo do if numeros[i]>numeros[i+intervalo] then troca(numeros[i],numeros[i+intervalo]); nenhumatroca:=false; until nenhumatroca:=true intervalo := intervalo div 2 until intervalo:=0 End; Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação por Selecção (“Selection Sort”) Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” Consiste em percorrer todos os elementos a ordenar e a cada passagem coloca um elemento na posição correcta, ou seja: na primeira passagem o valor mais pequeno é colocado na posição correcta; na segunda passagem o segundo valor mais pequeno é colocado na posição correcta; e assim sucessivamente... ESCE/IPS

GSI - 1º ano - Aula Teórica Estrutura e Organização de Dados Ordenação por Selecção (“Selection Sort”) Procedure ordena(.....); Const tamanho=10; var posmenor, i, j : integer; nenhumatroca : boolean; numeros:array[1..tamanho]; Procedure troca (var x,y:integer); var temp :integer; begin temp:=x; x:=y; end Begin for i:=1 to tamanho-1 do posmenor:=i; for j:=i+1 to tamanho do if numeros[j]<numeros[posmenor] then posmenor:=j; troca(numeros[i], numeros[posmenor]) End; Pesquisa de Informação: Procura Sequencial ou Linear Procura Binária Ordenação de Informação: Ordenação “Bubble Sort” Ordenação “Shell Sort” Ordenação “Selection Sort” ESCE/IPS