O documento descreve diferentes estruturas de organização e busca em arquivos, incluindo arquivos sequenciais ordenados e não ordenados, arquivos diretos mantidos por dicionário de dados e hashing, arquivos sequenciais indexados e estruturas para recuperação de chave secundária. Ele também explica o que é busca em texto, como é aplicada e como pode ser implementada usando algoritmos como KMP e BM ou estruturas como trie e árvore digital.
2. Extrato
Organização de Arquivos
Arquivos Sequenciais Desordenados
Arquivos Sequenciais Ordenados Fisicamente
Arquivos Sequenciais Ordenados por Link
Arquivos Diretos Mantidos por Dicionário de Dados
Arquivos Diretos Mantidos por Hashing
Arquivos Sequenciais Indexados
Recuperação de Chave Secundária – Multilista
Recuperação de Chave Secundária – Arquivos Invertidos
Recuperação de Chave Secundária – Árvores de Assinaturas
Estruturas de Busca em Texto
UFS - DComp - Prof. Kenia Kodel 2
3. O que é busca
em texto?
UFS - DComp - Prof. Kenia Kodel 3
4. Busca em Texto
Busca em texto, ou pesquisa digital, ou
‘casamento de padrões’, ou casamento
de cadeias, consiste na pesquisa de uma
subsequência de símbolos numa
sequência destes (símbolos).
UFS - DComp - Prof. Kenia Kodel 4
5. Busca em Texto
Pode ter como objetivo encontrar todas
as ocorrências, ou somente a primeira,
de uma dada subsequência numa dada
sequência; a exemplo, de um palavra
em um texto.
UFS - DComp - Prof. Kenia Kodel 5
6. Onde/Quando
se aplica
busca em
texto?
UFS - DComp - Prof. Kenia Kodel 6
7. Busca em Texto
A busca em texto é útil para
gerenciamento de editores de textos,
dicionários, recuperação de dados,
manipulação de símbolos.
UFS - DComp - Prof. Kenia Kodel 7
8. Como efetuar
busca em
texto?
UFS - DComp - Prof. Kenia Kodel 8
9. Busca em Texto
Na busca digital, diferente do que foi visto
até então, a chave não é tratada como
um elemento único, indivisível. Assume-se
que cada chave é constituída de um
conjunto de caracteres ou dígitos.
UFS - DComp - Prof. Kenia Kodel 9
10. Busca em Texto
Assim, como a chave não é tratada como
elemento único, ao invés de se comparar a
chave procurada com as chaves do conjunto
armazenado, a comparação é efetuada
caractere a caractere, dentre os caracteres
que compõem as chaves.
UFS - DComp - Prof. Kenia Kodel 10
11. Busca em Texto
Para efetuar busca em texto, é possível explorar:
Algoritmos
KMP (Knuth, Moris e Pratt)
BM (Boyer-Moore)
Rabin-Karp
Estruturas da Dados
Trie
Árvore Digital
UFS - DComp - Prof. Kenia Kodel 11
12. TRIE Termo proveniente da palavra inglesa retrieval
(recuperação), e corresponde a uma estrutura usada para
recuperação de dados – de subsequência, em sequência.
1 2 3 4 ...9 10
Trie
marco
a aldo davi a b d g m p r
b 3
d 2 l e a i i a e u
e 4
g gil
i 10 d l t v r l r t i
l bel λ λ λ
m 5 o o i o c o
n dino
p peto λ λ λ λ λ
q o
r rui diro
s marcos
s
t beto
λ λ
UFS - DComp - Prof. Kenia Kodel 12
13. TRIE Qual a pronúncia
correta?
1 2 3 4 ...9 10
Trie
marco
a aldo davi a b d g m p r
b 3
d 2 l e a i i a e u
e 4
g gil
i 10 d l t v r l r t i
l bel λ λ λ
m 5 o o i o c o
n dino
p peto λ λ λ λ λ
q o
r rui diro
s marco
s
s
t beto
λ λ
UFS - DComp - Prof. Kenia Kodel 13
14. TRIE
São estruturas em que as chaves são tratadas caractere
a caractere. E podem ser implementadas por meio de
estruturas sequenciais ou dinâmicas.
1 2 3 4 ...9 10
Trie
marco
a aldo davi a b d g m p r
b 3
d 2 l e a i i a e u
e 4
g gil
i 10 d l t v r l r t i
l bel λ λ λ
m 5 o o i o c o
n dino
p peto λ λ λ λ λ
q o
r rui diro
s marco
s
s
t beto
λ λ
UFS - DComp - Prof. Kenia Kodel 14
15. Construindo uma 1 2 3 4 5 6
trie estática para
armazenamento
a
das palavras:
b
1.davi
d
2.aldo
e
3.beto g
4.diro i
5.peto l
6.rui m
7.bel n
8.gil p
9.marco q
10.marcos r
s
11.dino
t
Reserva-se:
Para economia de espaço
algumas letras foram suprimidas.
UFS - DComp - Prof. Kenia Kodel 15
16. Trie Estática 1 2 3 4 5 6
a
b
d
e
g
i
l
m
Onde inserir n
davi? p
q
r
s
t
UFS - DComp - Prof. Kenia Kodel 16
17. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a
1.davi
b
2.aldo d davi
3.beto e
4.diro g
5.peto i
6.rui l
7.bel m
8.gil n
9.marco p
q
10.marcos
r
11.dino
s
Inserir aldo. t
UFS - DComp - Prof. Kenia Kodel 17
18. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo
1.davi b
2.aldo d
davi
3.beto e
4.diro g
5.peto i
6.rui l
7.bel m
8.gil n
p
9.marco
q
10.marcos
r
11.dino
s
t
Inserir beto.
UFS - DComp - Prof. Kenia Kodel 18
19. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo
1.davi b beto
2.aldo d
davi
3.beto e
4.diro g
5.peto i
6.rui l
7.bel m
8.gil n
p
9.marco
q
10.marcos
r
11.dino
s
t
Inserir diro.
UFS - DComp - Prof. Kenia Kodel 19
20. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo davi
1.davi b beto
2.aldo d
3.beto 2
e
4.diro g
5.peto i diro
6.rui l
7.bel m
8.gil n
p
9.marco
q
10.marcos
r
11.dino
s
t
Inserir peto.
UFS - DComp - Prof. Kenia Kodel 20
21. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo davi
1.davi b beto
2.aldo d
3.beto 2
e
4.diro g
5.peto i diro
6.rui l
7.bel m
8.gil n
p
9.marco peto
q
10.marcos
r
11.dino
s
t
Inserir rui.
UFS - DComp - Prof. Kenia Kodel 21
22. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo davi
1.davi b beto
2.aldo d
3.beto 2
e
4.diro g
5.peto i diro
6.rui l
7.bel m
8.gil n
p
9.marco peto
q
10.marcos
r rui
11.dino
s
t
Inserir bel.
UFS - DComp - Prof. Kenia Kodel 22
23. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo davi
1.davi b
2.aldo
3
d
3.beto 2
e
4
4.diro g
5.peto i diro
6.rui l
bel
7.bel m
8.gil n
p
9.marco peto
q
10.marcos
r rui
11.dino
s
t
Inserir gil. beto
UFS - DComp - Prof. Kenia Kodel 23
24. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo davi
1.davi b
2.aldo
3
d
3.beto 2
e
4
4.diro g gil
5.peto i diro
6.rui l
bel
7.bel m
8.gil n
p
9.marco peto
q
10.marcos
r rui
11.dino
s
t
Inserir marco. beto
UFS - DComp - Prof. Kenia Kodel 24
25. Construindo uma
trie estática para 1 2 3 4 5 6
armazenamento
das palavras:
a aldo davi
1.davi b
2.aldo
3
d
3.beto 2
e
4
4.diro g gil
5.peto i diro
6.rui l
bel
7.bel m marco
8.gil n
p
9.marco peto
q
10.marcos
r rui
11.dino
s
Inserir marcos e t
dino. beto
UFS - DComp - Prof. Kenia Kodel 25
26. Construindo uma
trie estática para 1 2 3 4 ...9 10
armazenamento
das palavras: marco
a
1.davi aldo davi
b
2.aldo
3
d
3.beto 2
e
4
4.diro g gil
5.peto i 10
6.rui l
bel
7.bel m
5
8.gil n dino
p
9.marco peto
q
10.marcos
r
11.dino rui diro
s marcos
t
beto
UFS - DComp - Prof. Kenia Kodel 26
27. Trie Estática 1 2 3 4 ...9 10
marco
a aldo davi
b 3
d 2
e 4
g gil
i 10
l bel
m 5
n dino
Como efetuar p peto
consulta? q
r rui diro
s marcos
t beto
UFS - DComp - Prof. Kenia Kodel 27
28. Trie Estática 1 2 3 4 ...9 10
marco
a aldo davi
b 3
d 2
e 4
g gil
i 6
l bel
m 5
n dino
Como, através p peto
desta, por q
exemplo, r rui diro
manter um s marcos
dicionário? t beto
UFS - DComp - Prof. Kenia Kodel 28
29. Trie Estática 1 2 3 4 ...9 10
marco
a aldo davi
b 3
d 2
e 4
g gil
i 6
l bel
m 5
n dino
Esta estrutura p peto
facilita a q
implementação r rui diro
do “auto- s marcos
completar”? t beto
UFS - DComp - Prof. Kenia Kodel 29
30. Trie Estática 1 2 3 4 ...9 10
marco
a aldo davi
b 3
d 2
e 4
g gil
i 6
l bel
m 5
n dino
Como p peto
dimensionar q
esta estrutura? r rui diro
s marcos
t beto
UFS - DComp - Prof. Kenia Kodel 30
31. Construindo
uma trie Trie
dinâmica a b d
(cada letra é
mantida
l e a
numa
variável
dinâmica) d t v
para
armazenar: o o i
davi, aldo,
λ λ λ
beto, diro,
peto, rui, bel,
gil , marco,
Há aterramento também dos ponteiros “laterais”.
marcos, dino.
UFS - DComp - Prof. Kenia Kodel 31
32. Construindo
Trie
uma trie
dinâmica a b d
(cada letra é
mantida l e a
numa variável
dinâmica)
d t v
para
armazenar:
davi, aldo, o o i
beto, diro, λ λ λ
peto, rui, bel,
gil , marco,
marcos, dino.
Inserir diro,
peto e rui?
UFS - DComp - Prof. Kenia Kodel 32
33. Construindo
Trie
uma trie
dinâmica a b d p r
(cada letra é
mantida l e a i e u
numa variável
dinâmica)
d t v r t i
para
armazenar: λ
davi, aldo, o o i o o
beto, diro, λ λ λ λ λ
peto, rui, bel,
gil , marco,
marcos, dino.
UFS - DComp - Prof. Kenia Kodel 33
34. Construindo
uma trie Trie
dinâmica a b d p r
(cada letra é
mantida numa
l e a i e u
variável
dinâmica) para
armazenar: d t v r t i
davi, aldo, λ
beto, diro,
o o i o o
peto, rui, bel, gil
λ λ λ λ λ
, marco,
marcos, dino.
Como, inserir
bel, gil, marco,
marcos e dino?
UFS - DComp - Prof. Kenia Kodel 34
35. Construindo Trie
uma trie a b d g m p r
dinâmica
(cada letra é
mantida l e a i i a e u
numa variável
dinâmica) d l t v r l r t i
para
λ λ λ
armazenar:
o o i o c o
davi, aldo,
beto, diro, λ λ λ λ λ
peto, rui, bel, o
gil , marco,
marcos, dino.
s
λ λ
UFS - DComp - Prof. Kenia Kodel 35
36. Trie Dinâmica
Trie
a b d g m p r
l e a i i a e u
d l t v r l r t i
λ λ λ
Como o o i o c o
“declarar” λ λ λ λ λ
cada nó? o
s
λ λ
UFS - DComp - Prof. Kenia Kodel 36
37. Trie Dinâmica Trie
a b d g m p r
l e a i i a e u
Composição
de cada nó.
próxima d l t v r l r t i
caracter
palavra
próximo carater λ λ λ
o o i o c o
λ λ λ λ λ
o
s
λ λ
UFS - DComp - Prof. Kenia Kodel 37
38. Trie Dinâmica
Trie
a b d g m p r
l e a i i a e u
d l t v r l r t i
λ λ λ
Como o o i o c o
efetuar
λ λ λ λ λ
consulta
o
nesta?
s
λ λ
UFS - DComp - Prof. Kenia Kodel 38
39. Trie Dinâmica Trie
a b d g m p r
l e a i i a e u
d l t v r l r t i
λ λ λ
Como, o o i o c o
através desta,
λ λ λ λ λ
implementar
dicionário? o
s
λ λ
UFS - DComp - Prof. Kenia Kodel 39
40. Trie Dinâmica
Trie
a b d g m p r
l e a i i a e u
d l t v r l r t i
λ λ λ
o o i o c o
λ λ λ λ λ
Estrutura útil também para o
implementação de casamento
aproximado de cadeia – quando o
s
usuário da aplicação não tem domínio
exato da chave de busca. λ λ
UFS - DComp - Prof. Kenia Kodel 40
41. Exercício
Construir trieS (estática e dinâmica) para
manter: pinha, jaca, caju, coco, açai, caja
e pinhao.
UFS - DComp - Prof. Kenia Kodel 41
42. Exercício
Que implementação da trie apresenta
melhor desempenho: a estática ou a
dinâmica? Justifique: (a) em velocidade
de processamento, (b) em espaço de
armazenamento
UFS - DComp - Prof. Kenia Kodel 42
44. Árvore Digital de Pesquisa
Uma árvore digital
para um alfabeto S
com m caracteres
a b (com itens
d
ordenáveis) é uma
e a i árvore m-ária T, não
vazia, tal que:
d l t v n r
1. Se um nó qualquer
x é o i-ésimo filho de
o o i o o
seu pai, então x
corresponde ao i-
ésimo item do
alfabeto S, sendo
1<=i<=m.
UFS - DComp - Prof. Kenia Kodel 44
45. Árvore Digital de Pesquisa
Uma árvore digital
para um alfabeto S
com m caracteres
a b (com itens ordenáveis)
d
é uma árvore m-ária T,
e a i não vazia, tal que:
t 2. Para cada nó x, a
d l v n r
sequência de dígitos
definida pelo caminho
o o i o o
desde a raiz de T até x
corresponde no todo,
ou em parte, a uma
chave de pesquisa.
UFS - DComp - Prof. Kenia Kodel 45
46. Árvore Digital de Pesquisa
a b m p r
d
e a i a e u
l
l t v n r r t i
d
o o i o o c o
o
Como inserir: eva,
tel, marcus e bela? s
UFS - DComp - Prof. Kenia Kodel 46
47. Árvore Digital de Pesquisa
a b m p r
d
e a i a e u
l
l t v n r r t i
d
o o i o o c o
o
Como efetuar
consulta nesta? s
UFS - DComp - Prof. Kenia Kodel 47
48. Árvore Digital de Pesquisa
a b m p r
d
e a i a e u
l
l t v n r r t i
d
o o i o o c o
o
Como, a partir desta,
pode ser implementado s
um dicionário?
UFS - DComp - Prof. Kenia Kodel 48
50. Exercício
Descrever a operação de consulta, a uma
determinada palavra, numa árvore digital
de pesquisa.
UFS - DComp - Prof. Kenia Kodel 50
51. Exercício
Elaborar declaração de uma árvore digital
de pesquisa, considerando o nosso
alfabeto.
UFS - DComp - Prof. Kenia Kodel 51
52. Árvore Digital de Pesquisa
Como estrutura de busca em
Árvore digital de pesquisa
texto, há ainda as árvores
com os dados: 28(011100)
digitais binárias de pesquisa. 17(010001) 30(011110)
Estas são compostas com 27(011011) 40(101000)
base no código binário 12(001100) 18(010010)
correspondente às chaves de
pesquisas. Ou seja, 28
corresponde a uma árvore 17 40
digital de pesquisa cujo 12 30
alfabeto apresenta somente 18 27
dois itens.
UFS - DComp - Prof. Kenia Kodel 52
53. Árvore Digital de Pesquisa
Construindo uma
28
árvore digital de
pesquisa com os
dados: 28(011100)
17(010001) 30(011110)
27(011011) 40(101000)
12(001100)
18(010010)
O primeiro dado inserido pode ser mantido na raiz da
árvore. Mas há autores que consideram que a raiz da
árvore não armazena dados, nem corresponde a
qualquer dígito/dado.
UFS - DComp - Prof. Kenia Kodel 53
54. Árvore Digital de Pesquisa
Construindo uma árvore 28
digital de pesquisa com 17
os dados: 28(011100)
17(010001) 30(011110)
27(011011) 40(101000)
12(001100) 18(010010)
A partir da segunda entrada, analisa-se a composição
binária da chave, de primeiro ao último bit. Se o bit for 0
segue para esquerda da estrutura, se 1, pela direita.
UFS - DComp - Prof. Kenia Kodel 54
55. Árvore Digital de Pesquisa
Construindo uma árvore
digital de pesquisa com 28
os dados: 28(011100) 17
17(010001) 30(011110)
27(011011) 40(101000)
12(001100) 18(010010)
A partir da análise da composição binária da chave,
esta pode ser armazenada no nó da estrutura, ou seja,
adota-se o mesmo critério usado para composição das
árvores digitais; onde as arestas definem a composição
da chave.
UFS - DComp - Prof. Kenia Kodel 55
56. Árvore Digital de Pesquisa
Construindo uma árvore 28
digital de pesquisa com
os dados: 28(011100) 17
17(010001) 30(011110) 30
27(011011) 40(101000)
12(001100) 18(010010)
Iniciando pela raiz, o primeiro bit de 30 é 0, deve-se
seguir pela esquerda, a qual está ocupada. O segundo
bit é 1, segue-se pela direta, como é encontrado
aterramento, este é o ponto de inserção.
UFS - DComp - Prof. Kenia Kodel 56
57. Árvore Digital de Pesquisa
Construindo uma árvore
digital de pesquisa com
os dados: 28(011100) 28
17(010001) 30(011110) 17
27(011011) 40(101000) 30
12(001100) 18(010010)
Como inserir os outros
elementos na estrutura:
UFS - DComp - Prof. Kenia Kodel 57
58. Árvore Digital de Pesquisa
Construindo uma
árvore digital de
28
pesquisa com os
17 40
dados: 28(011100)
12 30
17(010001) 30(011110)
27(011011) 40(101000) 18 27
12(001100) 18(010010)
Como efetuar
consulta nesta?
UFS - DComp - Prof. Kenia Kodel 58
59. Árvore Digital de Pesquisa
Construindo uma
árvore digital de 28
pesquisa com os 17 40
dados: 28(011100) 12 30
17(010001) 30(011110) 18 27
27(011011) 40(101000)
12(001100) 18(010010)
A consulta é efetuada a partir do código binário
correspondente à chave de pesquisa seguindo os
mesmos critérios usados na construção da estrutura.
UFS - DComp - Prof. Kenia Kodel 59
60. Árvore Digital de Pesquisa
28
17 40
12 30
18 27
Esta estrutura é passível de degeneração, como a
maioria das árvores de busca.
UFS - DComp - Prof. Kenia Kodel 60
61. Árvore Digital de Pesquisa
Construindo uma
árvore digital de
pesquisa com os 28
dados: 28(011100) 17 40
17(010001) 30(011110) 12 30
27(011011) 40(101000) 18 27
12(001100) 18(010010)
Como efetuar
exclusão nesta?
UFS - DComp - Prof. Kenia Kodel 61
62. Árvore Digital de Pesquisa
Construindo uma
árvore digital de 28
pesquisa com os 17 40
dados: 28(011100) 12 30
17(010001) 30(011110) 18 27
27(011011) 40(101000)
12(001100) 18(010010)
Na exclusão qualquer nó pode ser substituído
por seus sucessores; de preferência uma folha.
UFS - DComp - Prof. Kenia Kodel 62
63. Árvore Digital de Pesquisa
Construindo uma
árvore digital de
28
pesquisa com os
17 40
dados: 28(011100)
12 30
17(010001) 30(011110)
27(011011) 40(101000) 18 27
12(001100) 18(010010)
Onde aplicar esta?
UFS - DComp - Prof. Kenia Kodel 63
64. Árvore Digital de Pesquisa
Construindo uma
árvore digital de 28
pesquisa com os
17 40
dados: 28(011100)
12 30
17(010001) 30(011110)
18 27
27(011011) 40(101000)
12(001100) 18(010010)
Podem ser aplicadas, por exemplo, em operação de
baixo nível, para facilitar a comparação de símbolos.
UFS - DComp - Prof. Kenia Kodel 64
65. Exercício
Partindo da árvore 28
digital dada, efetue 17 40
a inclusão das 12 30
chaves 19, 50, 01 e
18 27
23.
UFS - DComp - Prof. Kenia Kodel 65
66. Exercício
Partindo da árvore 28
digital dada, efetue 17 40
a exclusão das 12 30
chaves 30.
18 27
UFS - DComp - Prof. Kenia Kodel 66
67. Exercício
Descreva os passos gerais da operação de
consulta em árvores digitais de pesquisa.
UFS - DComp - Prof. Kenia Kodel 67
68. Complementar
Estudos...
File Organization and Processing
Allan L Tharp
Capítulo 11
Other Tree Structures
Tries & Digital Search Trees
68 UFS - DComp - Prof. Kenia Kodel