• Nenhum resultado encontrado

Publicações do PESC Algoritmos de <I>Hashing</I> para Problemas Específicos

N/A
N/A
Protected

Academic year: 2021

Share "Publicações do PESC Algoritmos de <I>Hashing</I> para Problemas Específicos"

Copied!
145
0
0

Texto

(1)

A L C O R I T W O S

-

D E H A S H I N G P A R A P R O B L F M A S E S P E C f . F I C O S

TESE SüBYEi'IDA A 0 CORPO ECXXm DA C O O F ~ D E ~ @ ~ DOS PRcGRAMAS DE P & - ~ I . J A ~ Ã o DE ENBNHA- DA UNIVERSIDADE FEDERAI; TX) F I O DE JANEIRO C(3F.IC) PPKI'E r)(?S REQIJISITOS I\=SS&X~ PARA A OBTEF@ TX! CFATJ DE P E S m E24 C ~ G I P S (M.Sc. )

(2)

DE SOUZA, JANO MOREIRA

ALGORITMOS DE HASHING PARA PROBLEMAS ESPECQFICOS ( R I O DE J A N E I R O ) 1 9 7 8 . V , 138p. 2 9 , 7 c m ( C O P P E - U F R J , M . S c . , E n g e n h a r i a de S i s t e m a s e ~ o r n ~ u t a ç ã o , 1 9 7 8 ) T e s e

-

Univ. Fed. R i o de J a n e i r o

-

F a c . E n g e n h a r i a 1. B a n c o de D a d o s I. COPPE/UFRJ 11. A l g o r i t m o s de H a s h i n g para Problemas E s p e c í f i c o s .

(3)

à MARIA GRACINDA e AOS MEUS AMIGOS

(4)

iii

AGRADECIMENTOS

Ao p r o f e s s o r Estevam G i l b e r t o de Simone p e l a o r i e n t a ç ã o e i n c e n t i v o ; ao p r o f e s s o r ~ o ã o L i z a r d o de ~ r a ú j o p e l o a p o i o , o r i e n t a ç ã o e p e l o c r é d i t o na e s c o l h a do tema; a o s p r o f e s s o r e s Antonio A l b e r t o F . de O l i v e i r a , Dina Feigen - baum Cleiman e Nelson Maculan F i l h o p e l o i n c e n t i v o ; a o s a l u - nos do Programa, turma de 1 9 7 6 que a t r a v é s do questionamen- t o dos métodos e x i s t e n t e s , motivaram o p r e s e n t e t r a b a l h o .

(5)

RESUMO

É feita inicialmente uma exposição extensiva dos métodos existentes para transformação de chaves em ende - reços e para resolução das colisões, apresentando os algorit

-

mos principais. Os capítulos I1 e I11 foram redigidos visan

-

do sua utilização como texto de cursos de pós-graduação so- bre teoria e métodos de "hashing".

Em seguida, partindo do pressuposto que me- lhor eficiência seria alcançada considerando-se as caracte- rísticas desejáveis de algoritmos para manuseio de arquivos sob um ponto de vista prático de projeto, efetuou-se o le- vantamento das principais propriedades que definem o uso de arquivos e verificou-se até onde os algoritmos conhecidos sa -

tisfazem cada uma dessas características e suas combinações principais.

Com tal diagnóstico foram desenvolvidos 14 novos algoritmos que atepdem de forma eficiente aos proble- mas especificados, excetuando os requisitos de ordenação e alocação dinâmica de memória que não foram estudados. Alguns dos novos algoritmos permitiram inclusive, soluções mais efi

-

cientes para problemas considerados resolvidos no diagnósti- co.

Todos os algoritmos são apresentados de forma padronizada e para os novos foram efetuadas intensas simula- ções para determinação de seus comportamentos.

(6)

T h i s t h e s i s p r e s e n t s i n i t i a l l y a s u r v e y 05 t h e e x i s c i n g a c t h o d s f o r k e y - t z - a d d r e s s t r a n s f o r m à t i a n s and f o r t h e t r e a t m e n t c f c o l i i s i o n s , showing t h e more i n p c r t a n t

o l g o r i t h m s . C h o ~ t e r s I1 a n o III were w r i t t e n h a v i n i n mind t h e i r p o s s i b l e u k i l i a s t i c n a s a t e x t f o r g r c d u a t e c o u r s e s i n h a s h i a g n e t h c d s a n 6 t h e o r y . W e n e x t a n a l y z e the a l g o r i t h m s u n d e r c o n s i d e r a t i o n , frcm t h e p o i n t o f view o ? d e s i r a b l e p r o p e r t i e s f c r t h e a c t u a l d ê s i g n c f f i L e h a n d l i n ç s y s t e r n s p f o r s p e c i f i c a p p h i c a t i o n s . A f t e r t h a t a a i y s i s , 1 4 new a l g o r i t h m s a r e

.-.

p L e s e n k e d ,

-

x h i c h e f f i z i e n t f y s o l v e t h e p r o p s e d p r o C i e n s , e x c e p t p o s s i b l y f c i the ç o r t i n ç anò Oynamic a l l c c a t i o n r e q u i s i t e s ,

which :gere n o t c o n s i d e r e ã .

In s o m c a s e s , f o r p r c b l e m s a l r e a a y s o l v e d by

algorithms found in i h e l i t e r a t a r e w e show t h a t s o n e of t k e new c l ~ a r i t h m s o r e more e f f i c i e n t t k a n t h e b e s t c n e s s r e v i c u s i y kzowr,.

Ali the a l g o r i t h m s are p r e s e n t e d ix a s t a n d a r d f o r n , f c r e õ s e of c o m p a r i s c n . A l l o f t h e n w e r e e x t e n s i v e l y s i m u l z t e d , anã t h e r e s ~ i t s

of

t h e s i m u l a t i o n shown.

(7)

Relação dos Algoritmos

. . .

5 I1

.

CONCEITOS BÃSICOS

. . .

7

1 ~efinição do Método de Hashing 7

.

.

. . .

2 organização do Arquivo

. . .

9

.

.

3 ~ o t a ç ã o Utilizada

. . .

13

.

.

I11

.

HIST~RICO E REVISÃO DA LITERATURA

. . .

18

.

1 . Métodos para TransformaçÕes de Chaves em

Endereços

. . .

18

.

2 . Tratamento de colisões por Encadeamento

.

23

.

3 . Tratamento de ~olisões por Endereçamento

Aberto

. . .

31

4 ~ n á l i s e Comparativa dos Métodos

. . .

50

.

.

.

5 . Diagnóstico de Problemas sem Algoritmos Eficientes

. . .

IV

.

NOVOS ALGORITMOS PARA RESOLVER PROBLEMAS

ESPECT-

FICOS

. . .

. . .

.

1 . ~presentação

. . .

2 Caso 1

.

.

. . .

.

3 . Caso 2 4 Caso

3

.

.

. . . ‘ . . .

. . .

.

5 . Caso 4

. . .

.

6 . Problemas Propostos

V . DETALHES P A W IMPLEMENTAÇÃO EM MEMORIA EXTERNA

.

. . .

(8)

A p a r t i r do e s t u d o e e n s i n o dos a l g o r i t m o s de Busca em Arquivo e de a l g u n s problemas p r á t i c o s e n f r e t a d o s p o r c o l e g a s na e s t r u t u r a ç ã o de t a b e l a s d e símbolos e mnemônicos em compiladores e montadores o r a e m desenvolvimento no Pro- grama de Engenharia de S i s t e m a s e ~ o m p u t a ç ã o , nos v e i o a cons c i ê n c i a de q u e , p a r a uma s é r i e de problemas p r á t i c o s o s a l g o - r i t m o s e x i s t e n t e s eram i n e f i c i e n t e s , ou mesmo i n a p l i c á v e i s .

O t r a b a l h o s u r g i u de um problema r e a l de duas p e s q u i s a s sendo d e s e n v o l v i d a s no programa, um montador e simu

-

l a d o r MIX " t i m e - s h a r i n g " e um compilador de uma linguagem ti- po PL; onde o melhor método conhecido p a r a a o r g a n i z a ç ã o d a s t a b e l a s de símbolos e mnemônicos não l e v a v a em c o n t a uma i n - formação i m p o r t a n t e a r e s p e i t o d a s chaves: s u a p r o b a b i l i d a d e de r e f e r ê n c i a . Da u t i l i z a ç ã o d e s t a informação s u r g i u o p r i - meiro a l g o r i t m o , que s e mostrou mais e f i c i e n t e do que o a n t i - go, t a n t o com dados com d i s t r i b u i ç ã o t e ó r i c a de p r o b a b i l i d a - d e s como com dados r e a i s mostrados em muitos programas e s c r i - t o s em " a s s e m b l e r " do computador MITRA-15.

Da r e s o l u ç ã o do p r i m e i r o problema, pudemos con

-

c l u i r que o s a l g o r i t m o s conhecidos eram de t a l forma g e r a i s que desprezavam informações m u i t a s v e z e s d i s p o n í v e i s , ou e s t i

-

máveis n a s a p l i c a ç õ e s e s p e c í f i c a s .

Esse enfoque " g e r a l " dos a l g o r i t m o s pode s e r a t r i b u i d o , p e l o menos em p a r t e , ao f a t o de que a m a i o r i a da p e s q u i s a na á r e a s e o r i g i n o u n a s e q u i p e s dos f a b r i c a n t e s d e

(9)

equipamento, que p o r f i l o s o f i a de c o m e r c i a l i z a ç ã o , tentam ge

-

n e r a l i z a r ao máximo o s s e u s p r o d u t o s , mesmo

5s

c u s t a s de grande i n e f i c i ê n c i a na m a i o r i a d a s a p l i c a ç õ e s .

Considerando o a l t o c u s t o d a s máquinas no Bra

-

s i l , e o f a t o d e s s a s serem i m p o r t a d a s , c u s t a n d o d i v i s a s p r e - c i o s a s ao p a í s , pareceu-nos de extrema i m p o r t a n c i a que s e f i z e s s e um e s t u d o mais d e t a l h a d o dos problemas e x i s t e n t e s , observando q u a i s d a s s u a s c a r a c t e r l s t i c a s s ã o d e t e r m i n a n t e s no t i p o de a l g o r i t m o a empregar, e , combinando-se e s t a s ca- r a c t e r í s t i c a s , que t i p o s de problemas s e delineavam. Desta forma d e s c o b r i u - s e , p e l o caminho i n v e r s o , que c e r t a s a p l i c a - ç õ e s não tinham s o l u ç ã o e f i c i e n t e conhecida e usavam métodos t o t a l m e n t e d i f e r e n t e s d a q u e l e s que g o s t a r í a m o s d e u t i l i z a r p o r r a z õ e s de e f i c i ê n c i a , simplesmente porque o s métodos ti- nham r e s t r i ç õ e s a e s t a ou à q u e l a c a r a c t e r í s t i c a .

Algumas c a r a c t e r í s t i c a s que podem d e t e r m i n a r o método de busca a s e r u t i l i z a d o , s ã o a s s e g u i n t e s :

-

Baixo tempo médio p a r a b u s c a s com s u c e s s o .

-

Baixo tempo médio p a r a buscas sem s u c e s s o .

-

Baixo tempo médio p o r i n s e r ç ã o .

-

Arquivo e s t á t i c o em termos de i n s e r ç ã o .

-

Arquivo e s t á t i c o em termos de remoção.

-

Arquivo dinâmico em termos de i n s e r ç ã o .

-

Arquivo dinâmico em termos de remoção.

-

L o c a l i z a ç ã o d a s chaves em memória i n t e r n a .

-

L o c a l i z a ç ã o d a s chaves em memória e x t e r n a ou v i r t u a l .

(10)

-

P r o b a b i l i d a d e s d i f e r e n t e s e c o n h e c i d a s " a p r i o r i "

.

-

P r o b a b i l i d a d e s d i f e r e n t e s mas v a r i á v e i s com o tempo.

-

Tempo de r e s p o s t a l i m i t a d o ( p i o r c a s o g a r a n

-

t i d o e c o n h e c i d o ) .

-

Arquivo ordenado.

-

locação

dinâmica de espaço.

-

S i m p l i c i d a d e de programação.

-

Grande a p r o v e i t a m e n t o de e s p a ç o .

Combinando e s s a s c a r a c t e r l s t i c a s , o b t e r í a m o s uma grande q u a n t i d a d e de problemas, que e x i g i r i a m , d e n t r o do n o s s o enfoque uma grande q u a n t i d a d e de a l g o r i t m o s e s p e c í f i - c o s . Selecionamos a l g u n s problemas que consideramos OS mais i m p o r t a n t e s , procuramos d e t e r m i n a r q u a i s j á dispunham d e s o l u ç ã o e f i c i e n t e e q u a i s não; d e n t r e e s s e s selecionamos a q u e l e s que se i d e n t i f i c a v a m com problemas r e a i s e buscamos s o l u ç õ e s . Neste t r a b a l h o s ã o a p r e s e n t a d a s s o l u ç õ e s p a r a d i - v e r s o s d e s s e s problemas e q u e , afortunadamente também r e s o l - vem a l g u n s problemas já c o n s i d e r a d o s com s o l u ç ã o s a t i s f a t ó - r i a , d e uma forma melhor do que e s t a s .

Todas s o l u ç õ e s s ã o c a l c a d a s s o b r e um metodo de t r a n s f o r m a ç ã o de chaves ( " h a s h i n g " ) , p o r s e r o método que a p r e s e n t a melhores p o s s i b i l i d a d e s t e ó r i c a s , j á que o u t r o s m é

-

t o d o s g e r a l m e n t e u t i l i z a m e s t r u t u r a s de á r v o r e c u j o l i m i t e t e ó r i c o i n f e r i o r é da ordem l o g m

,

onde - m é o número de e l e

-

mentos na t a b e l a .

(11)

Anexo a e s t a i n t r o d u ç ã o , e n c o n t r a - s e uma l i s t a de t o d o s o s a l g o r i t m o s r e f e r e n c i a d o s n e s t a t e s e .

(12)

ANEXO Â INTRODUCÃO

RELAÇÃO DOS ALGORITMOS

L i s t a s c o a l e s c e n t e s . L i s t a s i n d e p e n d e n t e s . L i s t a s i n d e p e n d e n t e s com encadeamento em á r e a s e p a r a d a . End. a b e r t o v i s i t a l i n e a r .

emoção

com v i s i t a l i n e a r . ~ é t o d o de B r e n t . Hashing l i m i t a d o .

R e a r r a n j o com c u s t o médio mínimo.

R e a r r a n j o com c a r r e i r a completa, d e c i s ã o p e l o comprimen- t o da c a r r e i r a . R e a r r a n j o com c a r r e i r a completa, d e c i s ã o p e l o c u s t o de c a r r e i r a . Hashing l i m i t a d o , r e a r r a n j o c o n s t a n t e , melhor t r o c a e de - c i s ã o p e l o comprimento da c a r r e i r a . Hashing l i m i t a d o , r e a r r a n j o o c a s i o n a l , melhor t r o c a e d e c i s ã o p e l o comprimento da c a r r e i r a . Hashing l i m i t a d o , r e a r r a n j o o c a s i o n a l , p r i m e i r a t r o c a . Hashing l i m i t a d o , r e a r r a n j o c o n s t a n t e , melhor t r o c a e de - c i s ã o p e l o c u s t o . Hashing l i m i t a d o , r e a r r a n j o o c a s i o n a l , melhor t r o c a e d e c i s ã o p e l o c u s t o .

Hashing com l i m i t e dinâmico.

(13)

l h o r t r o c a e d e c i s ã o p e l o comprimento da c a r r e i r a .

18. Hashing com l i m i t e dinâmico, r e a r r a n j o o c a s i o n a l , melhor t r o c a e d e c i s ã o p e l o comprimento da c a r r e i r a .

1 9 . Hashing com l i m i t e dinâmico, reaxran-jo o c a s i o n a l e p r i - meira t r o c a .

(14)

11. CONCEITOS BÃSICOS

11.1. DEFINIÇÃO DO

METODO

DE HASHING --

S e j a o c o n j u n t o K = { k l , k 2 ,

...,

k

1

d e c h a v e s m

que Únicamente i d e n t i f i c a m uma i n f o r m a ç ã o a s e r armazenada ou r e c u p e r a d a , e E = { e l , e 2 , . . . , e n } O c o n j u n t o d e e n d e r e ç o s d e p o s i ç õ e s d e memória ( i n t e r n a ou e x t e r n a ) onde s e pode g u a r d a r uma ou m a i s i n f o r m a ç õ e s ( p o r s i m p l i c i d a d e , uma i n f o r m a ç ã o )

.

Normalmente e i = i

,

i = O , l , . . . , n - l '

O método f u n c i o n a r i a d e uma forma i d e a l se e n c o n t r á s s e m o s uma f u n ç ã o h ( k ) t a l q u e : h ( k . )

+

h ( k j ) ++ k

P

k j i com h ( K i ) ~ l O , n - l I , / i 1 D e s t a forma t e r í a m o s uma " f u n ç ã o d e i n d e x a ç ã o " e b a s t a r i a c o l o c a r k n a p o s i ç ã o h ( k i ) ,

Ji

quando do armazena i - mento, e

i r

b u s c a - l o n o mesmo l u g a r n a r e c u p e r a ç ã o . I n f e l i z m e n t e , é m u i t o d i f í c i l d e s c o b r i r a fun- m ç ã o h , p o i s e x i s t e m m p o s s í v e i s f u n ç õ e s d e K e m E , mas somen

-

1 t e m. fornecem 1 o c a l i z a ç Õ e s d i s t i n t a s p a r a c a d a Ki.

Uma s a í d a que s e r i a a i n d a b a s t a n t e boa s e r i a d e s p e r d i ç a r um pouco de e s p a ç o f a z e n d o n > m , p o i s a s s i m t e r í

m

amos

n

p o s s í v e i s f u n ç õ e s e (n! )

/

(n-m)

!

f u n ç õ e s a d e q u a d a s .

Mesmo com e s s e r e c u r s o é extremamente t r a b a l h o

-

s o encontram uma d e t a i s f u n ç õ e s , se não q u i s e r m o s d e s p e r d i ç a r e s p a ç o demais. Como exemplo, K N U T H ~

,

s e t i v é s s e m o s 3 1 cha-

(15)

50 v e s (m=31) e 4 1 e n d e r e ç o s (n=4l.)

,

t e r í a m o s c e r c a de 1 0 p o s s i v e i s f u n ç õ e s p a r a apenas 1 0que fornecem i n d e x a ç ã o ; ~ ~ ou s e j a , somente 1 em cada 1 0 milhões s e r á a p r o v e i t á v e l . Ape- s a r de e x i s t i r e m a l g o r i t m o s que obtém t a l f u n ç ã o , e l e s podem f o r n e c e r um v a l o r de

-

n muito grande e s ã o muito t r a b a l h o s o s , s ó t e n d o a p l i c a ç ã o e m a l g u n s c a s o s , e p a r a t a b e l a s muito pe-

6

quenas, v i d e S P R U G N O L I ~ e GRENIEWSKI

.

Tornaremos a e s t e i- tem no c a p i t u l o 111.

4

Uma observação i m p o r t a n t e n e s t e p o n t o , e que o c o n j u n t o de chaves K nem sempre é t o d o conhecido "a p r i o r i "

( a r q u i v o e s t á t i c o ) , sendo que e s t a s podem i r chegando a o s poucos p a r a serem armazenadas e podem, eventualmente serem a t é r e t i r a d a s do a r q u i v o .

D i a n t e da d i f i c u l d a d e e m s e o b t e r uma função de i n d e x a ç ã o , pensou-se e m e n c o n t r a r uma função h ( k ) onde p a r a algumas poucas chaves

ou s e j a , que rnapeie K em E de uma forma r a z s á v e l m e n t e u n i f o r

-

me. Chamaremos e s t e e v e n t o de " c o l i s ã o " e diremos que a s

chaves Ki e K s ã o 'sinonimos'. j

D e uma forma g e r a l o método c o n s i s t e de duas p a r t e s : a p r i m e i r a , e s c o l h e r uma função

-

h que nos o b r i g u e a poucas c o l i s õ e s , e a segunda r e s o l v e r e s s a s c o l i s õ e s , p o i s s e duas ou mais chaves s ã o mapeados p a r a um e n d e r e ç o onde s ó cabe uma, deve-se e s c o l h e r , de alguma forma, o u t r o l u g a r pa- r a a s r e s t a n t e s .

(16)

11.2. ORGANIZAÇÃO DO ARQUIVO

O elemento b á s i c o do a r q u i v o é o r e g i s t r o , que

é um agregado l ó g i c o d e informações. Podemos i d e n t i f i c a r

t r ê s

elementos não o b r i g a t ó r i a m e n t e d i s t i n t o s , em um r e g i s - t r o que s ã o : chave, informação de c o n t r o l e e informação.

1) CHAVE

-

é um campo numérico, a l f a b é t i c o ou a l f a n u m é r i c o que unicamente i d e n t i f i c a um r e g i s t r o . Em um a r q u i v o podemos g u a r d a r a chave j u n t o com a informação, f i g u - r a ( 1 1 . 2 - 1 ) ou podemos g r u p a r t o d a s a s chaves e , a cada uma a s s o c l a r um a p o n t a d o r p a r a onde r e a l m e n t e e s t á a informação, f i g u r a ( 1 1 . 2 - 2 ) . Em c a s o s onde a chave é de tamanho v a r i á - v e l , pode s e r i n t e r e s s a n t e em cada p o s i ç ã o e n d e r e ç á v e l c o l o - c a r somente d o i s campos, o p r i m e i r o com o comprimento da cha- v e , e o segundo com o a p o n t a d o r p a r a o s e u começo em uma á r e a l i v r e onde s e colocou t o d a s a s chaves contíguamente, f i g u r a

(11.2-3)

.

No c a s o d e chaves l o n g a s ou quando a p r o b a b i l i - dade de i n s u c e s s o f o r g r a n d e , podemos u t i l i z a r a s s e g u i n t e s t é c n i c a s p a r a melhorar a e f i c i ê n c i a :

a ) Na p r i m e i r a , se u s a uma função h2 ( k )

,

que pode ser um subproduto d e h l ( k ) , p a r a c a l c u l a r um código cha-

14

mado de " a s s i n a t u r a " p o r HARRISON e s u g e r i d o primeiramente p o r M O R R I S ~ ~ . Esse c ó d i g o é armazenado j u n t o com a chave ou, como no c a s o a n t e r i o r , j u n t o com o s campos comprimento e a- p o n t a d o r , e s ó s e compara a chave que s e q u e r b u s c a r com a

(17)

chave armazenada se as assinaturas coincidirem.

b) A segunda é usada em listas encadeadas in- dependentes, vide seção (111.2 )

,

e aplica uma série de fun ~ Õ e s hi (k)

,

i = 112, t P

O

( hi (k) < t, onde t é o núme- ro de bits da assinatura da lista, a cada chave da lista. 0s bits da assinatura, colocada na cabeça da lista, correspon- dentes aos hi são ligados, figura (11.2-5).

Na busca de uma chave Kx, só se percorrerá a lista se a assinatura tiver bits ligados em todas as posi

-

ções hi(Kx), i = 1,2,

...,

t

,

condição necessária mas não su-

14

ficiente para que Kx pertença à lista, HARRISON afirma que a maior quantidade de informação será guardada quando o núme - ro de bits ligados e o número de bist desligados forem em mé

-

dia iguais na assinatura.

C) B L O O M ~ ~ sugere algumas alternativas pare- cidas e, em uma delas é feita uma assinatura do arquivo in- teiro que fica em memória interna e, somente se acessará o arquivo realmente, se a assinatura preencher as condições ne

-

cessárias. Isso é particularmente Útil em aplicações onde a probabilidade de busca sem sucesso for alta.

2 ) INFO-ÇÃO

-

A

informação ocupa um ou mais campos, numéricos, alfanuméxicos ou alfabéticos, e inclue a chave. Em alguns casos a informação é somente a chave. Os campos podem ser de tamanho fixo ou variável,e, o número de campos pode ser também variável. Campos de tamanho variável podem ser alocados das seguintes formas: a) Superdimensiona-

(18)

do o r e g i s t r o . b) Guardando na á r e a endereçada s e u tamanho e e n d e r e ç o , como fizemos p a r a a s chaves. c ) Usando á r e a s de tamanho f i x o encadeadas.

Quando o número de campos é v a r i á v e l teremos um c o n t a d o r de campos e um d e s c r i t o r p a r a cada campo e pode- remos t e r : a ) Um r e g i s t r o superdimensionado de tamanho f i x o . b ) Cada campo é um nó de uma l i s t a encadeada.

Campos de tamanho v a r i á v e l s ã o muito comuns em informações a l f a n u m é r i c a s , p r i n c i p a l m e n t e quando s e u t i l i -

zam t é c n i c a s de compactação com c ó d i g o s de tamanho v a r i á v e l com a f r e q u ê n c i a , e (ou) s u p r e s s ã o de b r a n c o s ou z e r o s , P I E - 16 TRACCI

.

Número v a r i á v e l de campos em um r e g i s t r o é en

-

c o n t r a d o quando não s e d e s e j a s u p e r d i m e n s i o n a r o r e g i s t r o , e há d i v e r s a s o c o r r ê n c i a s d e um c e r t o t i p o de campo de um r e - g i s t r o . Exemplo: uma p e s s o a pode t e r d i v e r s o números d e t e - l e f o n e s , ou uma máquina pode t e r um número v a r i á v e l d e p e ç a s .

3 ) INFORMAÇÃO DE CONTROLE

-

são

t o d o s o s cam - pos que não contém informação s u p r i d a p e l o u s u á r i o .

E

r e c o - mendável que e s t e também não t e n h a a c e s s o a e l a . Exmeplos de informação de c o n t r o l e s ã o o s a p o n t a d o r e s , o s campos d e tama- nho dos campos, a s s i n a t u r a , e t c . . .

(19)

..,

m m

INE'ORMA(y0

Reg. O

Reg.

N-i

-

Figura 11-2-1

ASSIN. TAM. PSONT.

7

6 3 4 F i g u r a 11.2-4 Assinatura da l i s t a 0.

ASSIN. CHAVE APONT CHAV APONT CHAV APONT

Figura 11.2-5

x5

1

K1

(20)

11.3. NOTAÇÃO U T I L I Z A D A

D i v e r s a s o b s e r v a ç õ e s s e r ã o f e i t a s n e s t e ponto r e f e r e n t e s

5

n o t a ç ã o u t i l i z a d a nos c a p í t u l o s p o s t e r i o r e s d e s

-

t e traba1h.o. Não pretendem s e r e x a u s t i v o s mas apenas f a c i l i 3 t a r ao l e i t o r a compreensão do t e x t o .

L . Notação dos a l g o r i t m o s

~ s t ã o e s c r i t o s em linguagem semelhante ao ALGOL, porém com a s s e g u i n t e s a l t e r a ç õ e s :

a ) a s v a r i á v e i s não s ã o d e c l a r a d a s , e x c e t o q u a n t o se d e s e j a r s u a c o n d i ç ã o l o c a l ; b ) a s p a l a v r a s r e s e r v a d a s e s t ã o g r a f a d a s em minfiscula s u b l i n h a d a s e o s i d e n t i f i c a d o r e s em m a i ú s c u l a s ; c ) o s c o m e n t á r i o s s ã o do t i p o "scape comment" e s e u d e l i m i t a d o r é " % " ou do t i p o "comment" do ALGOL; d ) m u i t a s v e z e s não s ã o e x p l i c i t a d a s c e r t a s

-

funções ou s u b r o t i n a s c u j o funcionamento não é e s s e n c i a l a compreensão do a l g o r i t m o ;

e ) da mesma forma, r ó t u l o s em comandos de d e s - v i o p a r a t r e c h o s não e s s e n c i a i s s ã o e x p l i c i t a d o s mas não de- c l a r a d o s e o s t r e c h o s não constam do a l g o r i t m o ; f ) procurou-se nomear o s i d e n t i f i c a d o r e s de modo a c l a r i f i c a r o s e n t i d o da v a r i á v e l ou t r e c h o do p r o g r a - ma a que s e referem; g ) o s s u b s c r i t o s S ~ Qd e l i m i t a d o s p o r

'

( )

'

,

o s i n a l d e a t r i b u i ç ã o é

'

: =

'

; h ) em c a s o d e q u a l q u e r s e n t e n ç a da linguagem

(21)

c u j o s e n t i d o não e s t e j a a q u i e x p l i c i t a d o , p r e v a l e c e s u a d e f i - n i ç ã o em ALGOL.

2 . ~ o t a ç ã o p a r a a s c o l i s õ e s em t a b e l a

F a t o r fundamental p a r a a compreensão do f u n c i o - namento dos a l g o r i t m o s f o i a c r i a ç ã o de uma n o t a ç ã o c l a r a pa- r a o p e r c u r s o de busca p o r l u g a r vago ou deslocamento d e cha- v e s na t a b e l a . Optamos p e l o esquema a b a i x o com o s e g u i n t e s i g n i

F i g u r a 11.3.1

a ) a s l i n h a s h o r i z o n t a i s e v e r t i c a i s r e p r e s e n - tam o s e n d e r e ç o s na t a b e l a ; como a s t a b e l a s s ã o , em g e r a l , c o n s i d e r a d a s c i r c u l a r e s uma l i n h a pode r e p r e s e n t a r uma O U mais " v o l t a s " na t a b e l a .

b ) na verdade a s l i n h a s h o r i z o n t a i s e v e r t i c a - i s s ã o t r e c h o s de um mesmo r e f e r e n c i a l . Por exemplo, supondo

-

se uma t a b e l a com 9 e n d e r e ç o s podemos t e r :

(22)

F i g u r a 11.3-2

c ) o s a r c o s r e p r e s e n t a m s a l t o s n e s s e r e f e r e n c i - a l , d e mesmo tamanho se n a m e s m a l i n h a , mas d e tamanhos p o s s í v e l m e n t e d i v e r s o s em l i n h a s d i v e r s a s :

I

1

C

-

F i g u r a 11.3-3

d ) e n d e r e ç o s não podem se r e p e t i r n a mesma n h a s d i f e r e n t e s .

e ) o s e n d e r e ç o s s ã o , normalmente, o m i t i d o s f a v o r d a i n d i c a ç ã o d e q u a i s c h a v e s o s ocupam:

(23)

f ) l u g a r e s vagos s ã o i n d i c a d o s p o r x:

F i g u r a 11.3-5 ki kzz kil- K3 5

g ) chaves em começo de c a r r e i r a s de s a l t o s ho- r i z o n a t i s e v e r t i c a i s s i m u l t a n e o s e s t ã o e m s e u "home-address", ex: h ( K ) = E1 1 5 F i g u r a 11.3-6 3 . Simbologia A menos da r e f e r ê n c i a e x p l i c i t a no l o c a l , no d e c o r r e r do t e x t o fixamos: Ki OU ki

-

v a l o r numérico ou a l f a n u m é r i c o da chave í n d i c e i . Ei OU e

-

v a l o r do e n d e r e ç o de í n d i c e i . i

h ( k i )

-

v a l o r da função de 'hashing" p a r a a chave ki

n

-

comprimento da t a b e l a (número t o t a l de e n d e r e ç o s ) . m

-

número de elementos do c o n j u n t o de chaves à i n s e -

r i r ou número de chaves p r e s e n t e s na t a b e l a . h

-

"nu11 l i n k " , a p o n t a d o r v a z i o .

a

-

f a t o r d e ocupação d a t a b e l a , i g u a l ao número de cha

-

v e s p r e s e n t e s d i v i d i v o p e l o comprimento da t a b e l a .

(24)

'm

-

número médio de comparações p a r a busca

-

com s u c e s s o d a s

-

m chaves na t a b e l a .

'A

-

número médio de comparações p a r a busca

-

sem s u c e s s o e m t a b e l a contendo

m

- chaves.

h . ( K i )

-

v a l o r da j-ésima função de h a s h i n g p a r a a chave K

3 i

mod

-

r e s t o da d i v i s ã o i n t e i r a

s

-

número de s a l t o s de uma chave após c o l i s ã o

1x1

-

maior i n t e i r o c o n t i d o em

x

r e a l

TXI

-

menor i n t e i r o que contem

x

r e a l

Hk

-

k-ésimo número harmonico de p r i m e i r a ordem

-

p r o b a b i l i d a d e de r e f e r ê n c i a à chave K

j

C

-

comprimento da c a r r e i r a da chave K

,

i g u a l ao núme-

j j

r o de s a l t o s e n t r e s u a p o s i ç ã o r e a l e s e u "home- a d d r e s s "

+

1.

(25)

111.1. &TODOS PARA T ~ N S F O R M A Ç Õ E S DE CHAVES EM ENDE- ~ Ç O S

Segundo o que dissemos no c a p i t u l o 11, e que é

consenso e n t r e o s a u t o r e s c o n h e c i d o s , uma boa função d e h a s h i n g deve o c a s i o n a r o mínimo de c o l i s õ e s e , p a r a a r q u i v o s em memória i n t e r n a deve s e r também r á p i d a de c a l c u l a r . ~ e Ó r i

-

camente é i m p o s s í v e l g e r a r números uniformemente d i s t r i b u i d o s a p a r t i r de dados v i c i a d o s , e as chaves g e r a l m e n t e tem ter- t o s p a d r õ e s ; mas, na p r á t i c a é p o s s ~ v e l o b t e r - s e e n d e r e ç o s r a

-

zoavelmente bem d i s t r i b u i d o s , com funções r e l a t i v a m e n t e s i m - p l e s ; e algumas v e z e s é p o s s i v e l t i r a r p r o v e i t o de alguma não

-

a l e a t o r i e d a d e dos dados e o b t e r - s e uma d i s t r i b u i ç ã o p a r a o s e n d e r e ç o s "mais uniforme" do que a t e ó r i c a p a r a números a l e a -

2 t ó r i o s , KNUTH

.

i3

i m p o r t a n t e n o t a r que não e x i s t e função " ó t i - ma" no s e n t i d o de que a p r e s e n t e d i s t r i b u i ç õ e s uniformes p a r a q u a i s q u e r dados. A e s c o l h a d a função depende dos dados que vamos armazenar ( c h a v e s ) , da máquina que se p r e t e n d e u t i l i z a r , da linguagem em que s e v a i programar e d a o r g a n i z a ç ã o do a r - q u i v o que f o r e s c o l h i d a (memória i n t e r n a x d i s c o , l i s t a s e n c a - deadas x endereçamento a b e r t o ) .

8

B U C H H O L Z ' ~ c o n j e c t u r o u e L U M comprovou e x p e r i

-

mentalmente que a d i s t r i b u i ç ã o de e n d e r e ç o s "mais uniforme" não o c o r r e quando s e u s a uma função que g e r e e n d e r e ç o s a l e a t ó

-

(26)

r i a m e n t e , i n d e p e n d e n t e dos v i c i o s dos dados o r i g i n a i s , e s i m quando s e aproveitam exatamente e s s a s p r o p r i e d a d e s .

A s e g u i r descreveremos o s p r i n c i p a i s métodos p a r a uso g e r a l , e d e p o i s iremos comentá-los brevemente.

III. 1.1. DIVISÃO

-

K N U T H ~

,

L U M ~ . é simplesmente

h ( k i ) + ki mod n onde e n é i n t e i r o e p o s i t i v o , de p r e f e r ê n c i a

8

um número primo. Segundo LUM

,

6

s u f i c i e n t e que n não t e n h a d i v i s o r e s menores de 2 0 p a r a que s e obtenha bons r e s u l t a d o s .

2 8

1 1 1 . 1 . 2 . M E I O DO QUADRADO

,

KNUTH e LUM

.

Neste méto- -

d o , a chave K i é m u l t i p l i c a d a p o r s i mesma e s ã o tomados [log2nl b i t s do c e n t r o do p r o d u t o que ocupa duas p a l a v r a s d e tamanho w

,

o que s ó p e r m i t e e n d e r e ç a r d i r e t a m e n t e , t a b e -

l a s onde - n é uma p o t ê n c i a de 2 . A i d é i a a q u i é que o s b i t s mais c e n t r a i s do p r o d u t o dependem p r a t i c a m e n t e da chave t o d a ,

f i g u r a (11.1-1)

.

F i g u r a 11.1-1

111.1.3. MULTIPLICAÇÃO

,

K N U T H ~ , n e s t e método e s c o l h e - mos uma c o n s t a n t e i n t e i r a - A

,

primo com o tamanho d a p a l a v r a

(27)

do computador

-

w

,

e tamaremos o s Llog nJ b i t s mais c e n t r a i s 2 d a metade d i r e i t a do p r o d u t o A x K i

,

f i g u r a ( 1 1 . 1 - 2 ) .

h ( K i )

F i g u r a 1 1 . 1 - 2

8

1 1 1 . 1 . 4 . DOBRAMENTO

,

LUM

,

a q u i a chave Ki é d i v i d i - d a em p a r t e s de tamanho Liog2nJ

,

e x c e t o a ú l t i m a , e e s t a s p a r t e s s ã o s u p e r p o s t a s com soma ou com "ou e x c l u s i v o " , sendo que e s t e Último a p r e s e n t a a vantagem de não c a u s a r t r a n b ô r d o A s u p e r p o s i ç ã o pode ser f e i t a de duas formas, dobrando-se a chave como um f o r m u l á r i o c o n t í n u o , f i g u r a (11.1-3a) ou como f o l h a s de p a p e l s o l t a s , f i g u r a ( 1 1 . 1 - 3 b ) .

(28)

i n t e r v a l o [O, 2 1 ' 0 ~ 2 ~ ~

-11

,

l o g o , p a r a serem usados d i r e t a m e n t e

é

n e c e s s á r i o que o tamanho da t a b e l a s e j a um p o t ê n c i a de 2 , do c o n t r á r i o teremos que tomar mod n.

b ) No p r i m e i r o método, o tamalho da t a b e l a não

-

p o d e r á ser uma p o t e n c i a de 2 e d e v e r á ser um número primo

2 8

KNUTH ou não t e r d i v i s o r e s menores do que 20, LUM

.

c ) O método de DOBRAMENTO é e s p e c i a l m e n t e u t i - l i z a d o quando a s chaves s ã o m a i o r e s do que uma p a l a v r a do com

-

p u t a d o r , não podendo e n t ã o serem a p l i c a d o s o s métodos d e 1 a

3 . P a r a melhores r e s u l t a d o s pode-se a p l i c a r um dos t r ê s p r i - meiros métodos após o dobramento.

d ) De experimentos com a r q u i v o s r e a i s de d i v e r 8

s o s t i p o s e tamanhos, LUM r e t i r o u a s s e g u i n t e s conclusÕes:em

-

b o r a o método do meio-do-quadrado f o r n e ç a melhores r e s u l t a d o s em média, p a r a a l g u n s a r q u i v o s e l e se comporta muito mal en- q u a n t o o método da DIVISÃO deu em média r e s u l t a d o s q u a s e t ã o b o n s , sendo que d e uma maneira r a z o á v e l em t o d o s e l e s .

e ) Dependendo da v e l o c i d a d e de execução d a s i n s t r u ç õ e s , pode não s e r i n t e r e s s a n t e u s a r o método da d i v i - s ã o , escolhendo-se um dos o u t r o s .

f) C L A P S O N ~ ~ e s t u d o u d e t a l h a d a m e n t e chaves nu- m é r i c a s em EBCDIC e o b t e v e um c o n j u n t o de d i v i s o r e s com p r o p r i - edades e s p e c i a i s , que aproveitam p r o p r i e d a d e s d e s t e código. Como o menor d e s t e s números, 15329 e r a muito grande p a r a ende - r e ç a r t r i l h a s d e d i s c o , e l e adotou um p r o c e s s o de d u p l a d i v i - s ã o , em que a p r i m e i r a d i v i s ã o , p o r um d e s s e s d i v i s o r e s s e r i a p a r a u n i f o r m i z a r a d i s t r i b u i ç ã o .

(29)

dos "a p r i o r i " , e a t a b e l a s e r á buscada m u i t a s v e z e s o que j u s t i f i c a um t r a b a l h o e x t r a na e s c o l h a da função de h a s h , qua

-

t r o métodos podem s e r t e n t a d o s :

1) Buscar uma função de indexação usando um 5

dos a l g o r i t m o s de S P R U G N O L I

.

é a p l i c á v e l p a r a a r q u i v o s muito pequenos (no s e u exemplo usou-se uma t a b e l a de tamanho

1 2 ) , e a funções t e r á d i v i s õ e s , o que pode não s e r i n t e r e s s a n - t e em algumas máquinas onde e s s a operação é muito l e n t a .

2 ) F a z e r uma a n á l i s e da d i s t r i b u i ç ã o dos d i g i - t o s ou b i t s p o r p o s i ç ã o , escolhendo-se a s kiogZnJ p o s i ç õ e s mais bem d i s t r i b u i d a s p a r a , j u s t a p o s t a s formarem o e n d e r e ç o , ou serem e n t r a d a no método de d i v i s ã o s e - n não f o r p o t ê n c i a

8 de 2 , LUM

.

3 ) E s c o l h e r uma s é r i e de f u n ç õ e s , a p l i c á - l a s a o s dados e e s c o l h e r a melhor. I s t o pode s e r t r a b a l h o s o , mas p a r a t a b e l a s pequenas muito p e s q u i s a d a s (exemplo: t a b e l a de p a l a v r a s chaves de um montador " a s s e m b l e r " ou c o m p i l a d o r ) , a- p r e s e n t o u bons r e s u l t a d o s . 4 ) P a r a r e d u z i r o t r a b a l h o do método a n t e r i o r , f o i p o r nós a p l i c a d o à mão uma m o d i f i c a ç ã o do a l g o r i t m o de D l j k s t r a p a r a e n c o n t r a r o caminho de c u s t o mínimo e n t r e d o i s p o n t o s de um g r a f o , com bons r e s u l t a d o s . O a l g o r i t m o s e l e c i o - na rapidamente a melhor função d e n t r e a s e s c o l h i d a s "a p r i o r i " , s e a s chaves (.os a r c o s ) , forem ponderados com s u a p r o b a b i l i d a

-

de de r e f e r ê n c i a e i n s e r i d a s em ordem d e c r e s c e n t e de p r o b a b i - l i d a d e . ( O método u t i l i z a uma t a b e l a p a r a cada função (que

(30)

podem s e r guardadas em memória a u x i l i a r ) e v a i t o t a l i z a n d o o c u s t o (lPici, onde ci é o número de comparaçÕes que s e n e c e s s i t a r á p a r a b u s c a r K i , e s s a informação é d i s p o n í v e l no momen - t o d a i n s e r ç ã o , e pi é a p r o b a b i l i d a d e de r e f e r ê n c i a

5

K i )

,

p a r a cada t a b e l a . A cada p a s s o o a l g o r i t m o e s c o l h e a t a b e l a de menor c u s t o e segue n e l a i n s e r i d o , a t é que s e u c u s t o u l t r a

-

p a s s e o de o u t r a , mudando e n t ã o p a r a e s t a .

O método não f o i p o r nós programado a i n d a , p o r e s t a r f o r a do escopo d e s t e t r a b a l h o , mas p a r e c e a l t a m e n t e p r o

-

m i s s o r , mesmo p a r a t a b e l a s razoavelmente g r a n d e s .

O encadeamento f o i o p r i m e i r o método descober- t o e l a r g a m e n t e u t i l i z a d o com d i v e r s a s o r g a n i z a ç õ e s d i f e r e n

-

t e s .

Se duas ou mais chaves forem mapeadas p a r a o mesmo e n d e r e ç o , fazemos uma l i s t a encadeada com cabeça n e s s e e n d e r e ç o e colocamos a s chaves n a l i s t a .

A s l i s t a s podem t e r d i v e r s o s a s p e c t o s , sendo que o s nós podem s e r a l o c a d o s a p a r t i r de l u g a r e s v a z i o s na p r ó p r i a t a b e l a ou em á r e a s e p a r a d a , a s l i s t a s podem s e r manti - d a s i n d e p e n d e n t e s ( t o d a s a s chaves de uma l i s t a s ã o sinÔminos)

,

ou podem f u n d i r - s e em a l g u n s p o n t o s ; a s cabeças d e l i s t a po- dem e s t a r na memória p r i n c i p a l e o r e s t o em memória a u x i l i a r ou t u d o em memória p r i n c i p a l ou t u d o em memória a u x i l i a r .

(31)

O m é t o d o d e encadeamento é g e r a l m e n t e m u i t o

r ã

-

p i d o , p o i s as l i s t a s e m g e r a l

são

pequenas, e se t i v e r m o s - n chaves e n l i s t a s o t a m a n h o médio destas deverá ser m / n .

1 1 1 . 2 . 1 . ENCADEAMENTO NA P R ~ P R I A TABELA - 1 1 . 2 . 1 . 1 . ALGORLTMO 1

-

L I S T A S COALESCENTES

-

( W I L L I A M S ~ ~ ) b e g i n % * * A t a b e l a t e m n + l p o s i ç Õ e s , [ ~ , n ] e CHAVEO=VAGO s e m p r e

* *

I

% * * "R" a u x i l i a na procura de l u g a r vago. I n i c i a l m e n

-

% * *

"KX" é a chave q u e se deseja b u s c a r ou i n s e r i r . * *

I

w h i l e C H A V E ( 1 )

#

VAGO

-

do i £ KX= CHAVE ( I ) t h e n go t o ENCONTRADO;

I

-

- - - i f A ( I ) =VAGO

-

t h e n

% * *

F i n a l da l i s t a

* *

I

-

b e g i n w h i l e CHAVE(R)#VAGO do R : = R - 1 ; % * * B u s c o l u g a r * * i £ R=O t h e n go t o TABELACHEIA; -

- - -

A ( I ) : = R ; I : = R ; e n d ; % * * S i g o a l i s t a

* *

-

L

e l s e I : = A ( I ) ;

-

end; % * * Inserção.** CHAVE(I) :=Kx; A ( I ) :=VAGO; end.

(32)

ORGANIZAÇÃÒ DA TABELA PARA O ALGORITMO 1.

F i g u r a 1 1 1 . 2 . 1 . 2 - 1

OBSERVAÇÕES SOBRF: O ALGORITMO 1.

a ) A s l i s t a s vão se fundindo e após algum tempo d e v e r á h a v e r l i s t a s que contenham elementos com "home-address" d i f e r e n t e s ; chamamos "home-address" ao e n d e r e ç o h ( R i )

.

b)Com o método de p r o c u r a r l u g a r v a z i o u t i l i z a d o , p r o p o s t o p o r WILLIAMS'~, h a v e r á um acumulo de chaves no fim do a r q u i - vo, p o i s s e a l o c a e s p a ç o a p a r t i r de l á ; mas a b u s c a p o r l u - g a r v a z i o é mais r á p i d a e , p a r a enchermos a t a b e l a i n t e i r a procuraremos no máximo

-

n p o s i ç õ e s . Se procurarmos l u g a r va- , z i o a p a r t i r da p o s i ç õ e onde houve a c o l i s ã o teremos a v a n t a -

gem d e g r u p a r f i s i c a m e n t e o s r e g i s t r o s da mesma l i s t a o que é

s i g n i f i c a n t e em memória e x t e r n a ou memória v i r t u a l , mas t e r e - mos no p i o r c a s o de p r o c u r a r em n ( n - 1 ) / 2 p o s i ç õ e s no enchimen -

(33)

2

c) A análise de KNUTH nos dá como estimativa da performance o seguinte:

la 1

C m = l + - i -

4 8a ( ~ 2 ~ ~ - 1 - 2 a ) número espe-

rado de comparaçoes para uma busca com sucesso.

e, o número esperado de comparações para uma busca sem suces- so será:

onde a é a taxa, ou fator de ocupação definida como: a = m/n. d) Poderemos manter as listas independentes, se deslocarmos a chave que

não

estiver no seu "home-address" quando ali quiser - mos inserir uma chave. Em termos de eficiência na busca não se ganha muito, mas ganha-se algumas propriedades como facili

-

dade de remoção

,

e a que é evidenciada no próximo algoritmo.

(34)

1 1 1 . 2 . 1 . 2 . ALGORITMO 2

-

L I S T A S I N D E P E N D E N T E S

-

b e g i n

%**

C o m as l i s t a s são independentes ,se u t i l i z a r m o s para a função

%** de hashing o &todo da DMSÃO, poderemos a r m a z e n a r na tabela

%** não a chave, e s i m o quociente da divisão que é m e n o r do

%** esta, pois com o quociente e com o resto poderemos reconstitu

-

%** ir a chave. Será u t i l i z a d o

um

campo "TAG" de um b i t para indi

-

%**

car (TAG=l) as cabeças das listas. A s listas

são

circulares.

%**

CHAVE (O) =VAGO

,

%**

Q (KX) = LKX/nl %** Quociente

**

%

*

*

H (KX) =KX-Q (KX) *n %

*

*

R e s t o

* *

I:=j :=h(KX)+l; if CHAVE(I)=TRGO - %** ~nserção direta

**

T A G ( I ) : = l ; CHAVE(I):=Q; A ( I ) : = I ;

-

-

end.

else

%**

~á há

alguém no lugar

**

i f TAG(1) =O

-

then -begin

- -

%** E não é cabeça de l i s t a

**

w h i l e A ( I ) f J - do I : = A ( I ) ;%**segue a l i s t a w h i l e CHAVE (R)fvAGO do R:=R-1;

-

-

i£ R=O then go t o TABELACHEIA;

-

---

CHAVE(R) :=CHAVE(~) ; A(R) :=A(J) ; A(I) :=R; CHAVE(J) :=Q; A ( J ) :=J; TAG(J) :=1;

-end else

-

~ g i n

%**

E

cabeça de lista.

**

i f Q=CHKVE (I)

---

then go t o ENCONTRADO

L

end

u n t i l A ( I ) 4;

w h i l e CHA"(R)fvAGO

-

do R:R-1; i f R=O

---

then go t o TABELACHEIA;

(35)

Figura 11.2.1.2-2

O ALGORITMO 2

a) As listas são mantidas independentes, pois as chaves ou es - tão no seu "home-address" e são cabeças de Lista ou estão em outro lugar mas pertencem a lista que começa em seu " home

-

address".

b) Valem as mesmas observações do algoritmo anterior, quanto

à procura de lugar vazio.

2

c) Pela análise do KNUTH

,

temos as seguintes estimativas pa- ra a performance:

~ ú m e r o esperado de comparações para uma busca com sucesso:

-

Número esperado de comparações para uma busca sem sucesso:

(36)

1 1 1 . 2 . 2 . ENCADEAMENTO EM ÁREA SEPARADA

A q u i nós alocamos espaço e x t r a para colocar as c o l i s õ e s , e m u m a área separada da t a b e l a . Com essa o r g a n i z a -

ção

o f a t o r de ocupação pode ser m a i o r do q u e 1, embora nessa f a i x a a busca não é

t ã o

e f i c i e n t e p o i s as l i s t a s c o m e ç a m a t e r um c o m p r i m e n t o m é d i o m a i o r do que 1.

1 1 1 . 2 . 2 . 1 . ALGORITMO 3

-

ENCADEAMENTO EM AREA SEPARADA

-

b e g i n % * * AVAIL é a função que a d m i n i s t r a a l i s t a de

% * * espaço d i s p o n í v e l .

if C H A V E ( 1 ) = VAGO t h e n C H A V E ( I ) : = K X % * * Inserção d i r e t a

* *

7

(37)

F i g u r a 1 1 1 . 2 . 2 . 1 - 1

a ) A s l i s t a s s ã o i n d e p e n d e n t e s , mas também podem s e r usadas l i s t a s c o a l e s c e n t e s em á r e a s e p a r a d a .

b ) Outra organização muito usada, t a l v e z mais do que a d e s c r i

-

t a é t e r na cabeça d a s l i s t a s somente o s a p o n t a d o r e s , o que é

Ú t i l s e o s nós e s t ã o em memória e x t e r n a , p o i s podemos t e r uma t a b e l a maior com o mesmo e s p a ç o , e l i s t a s muito mais c u r t a s .

13 Chama-se e s s a o r g a n i z a ç ã o " t a b e l a de espalhamento", MORRIS

,

f i g u r a ( 1 1 1 . 2 . 2 . 1 - 2 )

.

(38)

TABELA DE ESPALHAMENTO

F i g u r a 1 1 1 . 2 . 2 . 1 - 2

Neste método, não s ã o u t i l i z a d o s a p o n t a d o r e s , o que economiza e s p a ç o , s i m p l i f i c a e a c e l e r a o s a l g o r i t m o s de busca. O s r e s u l t a d o s em termos de número médio de compara

-

-

çÕes s a o p i o r e s do que o s de encadeamento, mas com o e s p a ç o ganho a o s a p o n t a d o r e s g e r a l m e n t e s e pode aumentar a t a b e l a e t r a b a l h a r com

um

f a t o r d e ocupação mais b a i x o , com um a l g o r i t

-

mo mais r á p i d o , o que é melhor em muitos c a s o s . P a r a b u s c a em memória i n t e r n a , o endereçamento a b e r t o economiza memória, e p a r a busca em memória e x t e r n a é usado p o r g r u p a r o s s i n ô n i - mos, f i s i c a m e n t e próximos (em a l g u n s m é t o d o s ) , minimizando o tempo de movimentação d a cabeça de l e i t u r a / e s c r i t a .

A c a r a c t e r í s t i c a i m p o r t a n t e d e s s e método, e que a informação s o b r e o encadeamento

6

armazenada i m p l i c i t a - mente n a p o s i ç ã o das chaves na t a b e l a e na r e g r a de " e s c o l h a

(39)

dos s u c e s s o r e s " usada p a r a r e s o l v e s a s c o l i s õ e s .

O p r o c e s s o de uma forma g e r a l , é o s e g u i n t e , que pode s e r d e s c r i t o com a a j u d a do diagrama da f i g u r a (111.

3-11 :

P a r a i n s e r ç ã o : geramos uma s e q u ê n c i a de e n d e r e

-

ÇOS h j ( K i ) , j = 1 , 2 ,

...,

n

,

e i n s e r i m o s no p r i m e i r o d e l e s que e s t i v e r vago.

P a r a busca: geramos a mesma s e q u ê n c i a de en d e r e ç o s a t é q u e , encontremos R i , c a s o e m que a busca é com s u - c e s s o , ou encontremos um l u g a r vago, e sabemos que Ki não s e e n c o n t r a na t a b e l a e a busca é sem s u c e s s o .

F i g u r a 111.3-1

O nome "endereçamento a b e r t o " f o i dado Por 1 9

PETERSON e m s e u c l á s s i c o a r t i g o de 1957, que p a r e c e t e r s i - 2 0

do um dos s e u s d e s c o b r i d o r e s , em p a r a l e l o com ERSHOV

.

Com apenas duas exceções r e c e n t e s , CLAPSON 1 2 em um a r t i g o d e 1977 e B R E N T ~ ~ em o u t r o de 1973 t o d o s o s t r a - b a l h o s p u b l i c a d o s s o b r e endereçamento a b e r t o versavam s o b r e a e s c o l h a d a s funções h l , h 2 , . . . , h n , de modo que fossem r á p i d a s de c a l c u l a r , dessem poucos agrupamentos e p e r c o r r e s s e m o máxi -

18

(40)

meiro a e x p l o r a r o f a t o de que em a l g u n s métodos, s e i n s e r i r - mos K 1 , K 2 e K3 n e s s a ordem ou em o u t r a como K 2 , K l e K3 o r e - s u l t a d o o b t i d o em termos de c u s t o p a r a a s b u s c a s f u t u r a s , po- dem s e r d i f e r e n t e s . C L A P S O N ~ ~ , que também s e r á c i t a d o mais a d i a n t e , a p r o v e i t o u o f a t o de q u e , s e impusermos um l i m i t e L p a r a o número de " s a l t o s " (N? de f u n ç õ e s h g e r a d a s ) f e i t o s na i n s e r ç ã o , teremos automáticamente l i m i t a d o o número de compa- r a ç õ e s , ou de " s a l t o s " p o s s i v e i s na b u s c a , e v i t a n d o p i o r e s c a

-

s o s d e s a s t r o s o s que limitavam a gama de a p l i c a ç õ e s do e n d e r e - çamento a b e r t o .

Nos a l g o r i t m o s que s e seguem como em t o d o s de endereçamento a b e r t o , a t a b e l a é f e i t a c i r c u l a r , tomando-se p a r a e n d e r e ç o o v a l o r h . ( K i ) mod n , onde n é o tamanho da t a -

l -

b e l a e começando o endereçamento de z e r o e i n d o a t é n-1. E s - tenderemos a g o r a o c o n c e i t o de "home-address", como sendo hl ( K i )

.

111.3.1. V I S I T A L I N E A R

-

f o i o p r i m e i r o método u t i l i - zado e o ú n i c o a t é c e r c a de 1 9 6 8 , quando M O R R I S ~ ~ l a n ç o u a i d é i a de v i s i t a a l e a t ó r i a .

Esse método p e r c o r r e a t a b e l a c i r c u l a r m e n t e , com s a l t o s de tamanho f i x o e i n d e p e n d e n t e d a chave ou do l u - g a r onde o c o r r e u a c o l i s ã o , sendo g e r a l m e n t e o s a l t o de tama- nho 1. A s funções tomam a s e g u i n t e forma:

(41)

( h l ( . K i )

6

u m a d a s funções d e s c r i t a s n a seção ( 1 1 1 . 1 )

111.3.1.1. USCA E INSERÇÃO COM V I S I T A L I N E A R

-

b e g i n i n t e g e r p r o c e d u r e S E Q ( I ) ; i n t e g e x i ; b e g i n S E Q : = i f

-

i < ( n - 1 ) end;

-

% * * L a ç o d e b u s c a

* *

w h i l e CHAVE ( I ) #VAGO % * * I n s e r ç ã o

* *

t h e n go t o

- - -

e l s e t h e n I+1 e l s e O ;

-

do i f CHAVE ( I

- -

TABELACHEIA b e g i n CHAVE ( I ) :=KX; ) = K X

- - -

t h e n go t o ENCONTRADO; e l s e I:=seq ( I ) ; end. 7

(42)

OBSERVAÇÕES SOBRE O ALGORI.TM0 4

a ) Duas chaves que c o l i d i r a m tomarão o mesmo caminho ( " c a r r e i

-

r a " ) , l o g o , s e a função h a s h h c a u s a r algum agrupamento, o

1

que na p r á t i c a sempre o c o r r e , e s t e i r á s e r e p e t i r em a l g u n s o u t r o s l u g a r e s da t a b e l a , que chamaremos de "agrupamentos s e - c u n d á r i o s " , e s e o incremento f o r pequeno, t e n d e r á a aumentar o p r ó p r i o agrupamento em t o r n o do s e u "home-address", que cha - maremos d e "agrupamento p r i m á r i o " .

b) O s agrupamentos tendem a c r e s c e r rápidamente p e l o s e g u i n t e fenomeno: se a p o s i ç ã o

-

i e s t i v e r ocupada e a s p o s i ç õ e s

-

i-1 e i+l e s t i v e r e m v a z i a s , a p r o b a b i l i d a d e da p o s i ç ã o

-

i+l v i r a s e r ocupada na próxima i n s e r ç ã o , s e r á o dobro d a q u e l a de uma p o s i ç ã o v a z i a i s o l a d a , p o i s chaves que forem mapeadas p a r a

-

i e p a r a i S 1 s e r ã o armazenadas em

-

-

i+-1

,

formando um agrupamento de tamanho 2 . Na próxima i n s e r ç ã o a p r o b a b i l i d a d e da p o s i ç ã o i + 2 v i r a s e r ocupada s e r á o t r i p l o d a q u e l a de uma p o s i ç ã o i- s o l a d a , e a s s i m p o r d i a n t e .

c ) Quando um agrupamento c r e s c e e s e funde a o u t r o agrupamen- t o , a p o s i ç ã o s e g u i n t e a e s s e ú l t i m o tem s u a p r o b a b i l i d a d e au

-

mentada d r á s t i c a m e n t e , o que i n c e n t i v a a i n d a mais o crescimen - t o do novo agrupamento.

2

d ) Segundo a n á l i s e do KNUTH temos a s s e g u i n t e s e s t i m a t i v a s d a performance;

~ Ú m e r o médio e s p e r a d o de comparações p a r a uma busca com s u c e s s o : -

(43)

~ Ú m e r o médio e s p e r a d o de comparações p a r a uma busca sem s u c e s s o :

-

4

e ) A d e l e ç ã o p u r a e s i m p l e s de uma e n t r a d a da t a b e l a não e p e r m i t i d a , p o i s perderíamos o a c e s s o

5s

chaves que c o l i d i r a m com e s t a ou com alguma o u t r a em e n d e r e ç o s " a n t e r i o r e s " e f o - ram armazenadas em p o s i ç õ e s c i r c u l a r m e n t e " p o s t e r i o r e s " . A p r i m e i r a i d é i a que o c o r r e é c o l o c a r uma marca n a p o s i ç ã o em que a chave f o i r e t i r a d a , i n d i c a n d o que o l u g a r e s t á vago pa- r a i n s e r ç ã o , mas que não s e pode p a r a r uma busca n e s s e p o n t o . Essa s o l u ç ã o s ó f u n c i o n a s e a s d e l e ç õ e s forem muito r a r a s , p o i s do c o n t r á r i o após algum tempo s ó h a v e r i a d o i s t i p o s de e n t r a d a s na t a b e l a : a s ocupadas e a s removidas; e uma busca sem s u c e s s o s e r i a d e s a s t r o s a p o i s p e r c o r r e r í a m o s o a r q u i v o i n

-

t e i r o . ~ e r í a m o s de i n c l u i r mais um t e s t e no l a ç o d e busca pa

-

r a não e n t r a r e m " l o o p i n g " e , apÕs um longo c i c l o de deleçÕes/ i n s e r ç õ e s , número médio de comparações p a r a uma busca com su- c e s s o d e i x a de obedecer à fórmula (111.3.1.1-1) e se aproxima dos v a l o r e s dados por (111.3.1.1-2) enquanto que Cm' -+ n ,

2

KNUTH

.

Uma a l t e r n a t i v a e s s e p r o c e s s o de marcar a s e n t r a d a s que f i c a r a m v a z i a s , é mover a s chaves que poderiam t e r o s e u a c e s s o p r e j u d i c a d o p e l a remoção, p a r a mais p e r t o

(44)

do s e u "home-address". O a l g o r i t m o 5 f a z a remoção p o r e s s e p r o c e s s o , e a t a b e l a r e s u l t a n t e tem o s mesmos v a l o r e s Cm e C m ' que a o r i g i n a l t e r i a com uma chave a menos, não havendo p o r t a n t o degradação da performance como no c a s o da marcação. O a l g o r i t m o 5 s ó tem o i n c o n v e n i e n t e de s e r muito l e n t o p a r a t a b e l a s que não e s t e j a m muito v a z i a s .

111.3.1.2. ALGORITMO 5

-

F~EMOCÃO DA E N T M D A CHAVE ( I )

b e g i n

CHAVE ( I ) :=VAGO; J:=I; I : = s e q ( I ) ;

w h i l e CHAVE ( I ) #VAGO

-

do - b e g i n -

-

end; 111.3.2. VISITA - ALEATORIA

-

p u b l i c a d a p o r M O R R I S ' ~ em 1 9 6 8 , o método u s a um g e r a d o r de números p s e u d o - a l e a t ó r i o s pa 7 r a g e r a r o s h . ( K i ) , j > 1. A s e q u ê n c i a g e r a d a

é

sempre a me5 7

(45)

t o s p r i m á r i o s , mas o s agrupamentos s e c u n d á r i o s a i n d a permane- cem, porque a s c a r r e i r a s começadas em p o s i ç õ e s c o n t í g u a s c o r - r e r ã o c o n t í g u a s também. S e j a r . , i = 1 , 2 ,

...,

n O 5

ri (n-1

a sequên- 1 - tia de número a l e a t ó r i o s i n t e i r o s o b t i d o s p e l o g e r a d o r . hl ( K i ) é uma d a s funções d e s c r i t a s na s e ç ã o (111.1) h . ( K i ) = ( h ( K i ) + r ) m o d n , j > 1 1 j -i 111.3.3. V I S I T A QUADRÁTICA

-

p r o p o s t o p o r MAURER 2 1 também em 1968, e s s e método u s a como s e q u ê n c i a :

h ( K i ) é uma d a s funções d e s c r i t a s na s e ç ã o (111.1) 2

h . ( K i ) = [ h l ( ~ i ) + a ( j - l ) + b ( j - 1 )

]

mod n , j > 1

i

:

onde - a e

-

b s ã o c o n s t a n t e s . A s c a r a c t e r í s t i c a s e m r e l a ç ã o à

agrupamentos s ã o a s mesmas do método a n t e r i o r e o c á l c u l o do polinômio pode ser f e i t o s ó p o r a d i ç õ e s , o que é mais r á p i d o do que g e r a r p s e u d o s - a l e a t ó r i o s . Esse método s ó p e r c o r r e me- t a d e da t a b e l a , o que não

6

problema s e não t i v e r m o s f a t o r de ocupação e x c e s s i v a m e n t e a l t o . R A D K E ~ ~ propos uma m o d i f i c a ç ã o no método, que f a z com que e l e p e r c o r r a t o d a a t a b e l a .

111.3.4.

-

-?,MENTO -

BINARIO

-

C L A P S O N ~ ~ propos em 1 9 7 7 e s s e método como um compromisso e n t r e a v i s i t a

(46)

a n t e r i o r e s e o s t r e s que vem a s e g u i r ) . O s e u i n t e r e s s e e p a r a busca e x t e r n a , onde é d e s e j á v e l que o s sinônimos fiquem próximos f i s i c a m e n t e . A s e q u ê n c i a v i s i t a d a é a s e g u i n t e :

h ( K i ) é uma d a s funções d e s c r i t a s na seção (111.1) j - 1

h . ( K i ) = [ h l ( K i ) + 2 -11 m o d n , j > 1

i:

A s e q u ê n c i a o b t i d a é: hl ( K i ) + l , hl ( ~ i ) + 3 , hl ( ~ i ) + 7 ,

. . .

Afirma e l e que duas c a r r e i r a s somente se i n t e r c e p t a r ã o uma v e z , o que não é v e r d a d e , p o i s do diagrama (111.3.4-1) d e r i v a - mos que s e c e r t a s condições forem p r e e n c h i d a s a s duas c a r r e i - r a s s e e n c o n t r a r ã o em - x e novamente em y .

-

F i g u r a 111.3.4-1

x

+

s l

+

s 2 = (x -t- s 3 ) mod n p a r a

x

+

s 3 < 2m temos:

Fazendo s l - 7 , s2=15, e s3=63, temos m = 4 1 que é i n c l u s i v e p r i - mo. V a l o r e s d e m - que s a t i s f a z e m e não sejam primos s ã o a i n d a mais f á c e i s d e serem o b t i d o s . A s duas s e q u ê n c i a s c o r t a r - s e -

-

ao em x e y com

-

m < 1 9 .

Mas s e a t a b e l a f o r grande e o número de s a l - t o s em cada c a r r e i r a f o r b a i x o , não h a v e r á mais de um c r u z a - mento p a r a d u a s c a r r e i r a s que s e originam próximas, r e s o l v e n - do o problema dos agrupamentos p r i m á r i o s , mas com agrupamen-

(47)

t o s s e c u n d á r i o s a i n d a . Tem também as v a n t a g e n s d a s e q u e n c i a começar com v a l o r e s b a i x o s , m a s s e m agrupamentos p r i m á r i o s e s e r extremamente r á p i d a d e g e r a r , b a s t a n d o um " s h i f t " p a r a a e s q u e r d a e um " o r " com 1. Estamos p r o v i d e n c i a n d o a p u b l i c a ç ã o d a c o r r e - 1 2

ção

d a a f i r m a t i v a d e CLAPSON

.

1 1 1 . 3 . 5 . DUPLA DIVISÃO

-

B A L B I N E ~ ~ e m 1968 a p r e s e n t o u a i d é i a q u e r e a l m e n t e e l i m i n o u o s agrupamentos s e c u n d á r i o s , d e

-

nominada DUPLO HASHING, q u e é a b a s e d o s

t r ê s

a l g o r i t m o s q u e seguem

.

N e s t e s métodos o i n c r e m e n t o a ser somado a h ( K i ) p a r a se o b t e r h . ( K i ) é f u n ç ã o d e K i e não m a i s fun-

j-1 I

ç ã o d e hl ( ~ i ) (como n a s v i s i t a s a l e a t ó r i a e q u a d r á t i c a )

,

ou c o n s t a n t e (como n a v i s i t a l i n e a r ) . Obtém-se e n t ã o uma segun- d a f u n ç ã o i n d e p e n d e n t e (no s e n t i d o p r o b a b i l í s t i c o do t e r m o ) d e h l ( K i ) , q u e n o s f o r n e c e o i n c r e m e n t o . S SOBRE - HASH-DUPLO - 2 a ) KNUTH n o s d á a s s e g u i n t e s e s t i m a t i v a s d a p e r f o r m a n c e d o h a s h - d u p l o , q u e se comporta e x a t a m e n t e como o c o n c e i t o d e 19 "hash u n i f o r m e " p r o p o s t o p o r PETERSON

.

~ Ú m e r o médio d e comparações e s p e r a d a s p a r a uma b u s c a com s u c e s s o :

(48)

Número médio e s p e r a d o de comparações p a r a uma busca

-

s e m s u c e s s o :

n + l -1

C m ' =

.

(1-a) q u e , p a r a a t a b e l a n+l-m

c h e i a n o s d á (.n+1)/2 comparações em média, q u e é o mesmo que p a r a uma b u s c a s e q u e n c i a l . Hn é

o

n-ésimo número harmônico d e p r i m e i r a ordem dado p e l a f ó r m u l a a b a i x o :

b ) No método ( 1 1 1 . 3 . 5 ) podemos s u b s t i t u i r a o p e r a ç ã o mod(n-2) l o g n

p o r mod 2 2

-

1 a t r a v é s d e um "and" com uma máscara da forma 2 l o g 2 "

-

1 o que nos dá uma segunda f u n ç ã o tão boa quan

-

t o a p r i m e i r a e m termos d e d i s t r i b u i ç ã o s ó que abrangendo uma f a i x a um pouco menor. E s s a m o d i f i c a ç ã o f o i u t i l i z a d a P o r B E L L ~ ~ e K A R M A N ~ ~ no método (111.3.7) p a r a g a r a n t i r que O método o r i g i n a l c o n s i s t e e m : ( K i ) = K i mod n

1

h . ( K i ) = [ h j - l ( K i ) + ( K i mod(n-2)+l]mod n , j > 1 7 111.3.6. QUOCIENTE Q U A D ~ T I C O

-

B E L L ~ ~ e m 1970 p u b l i - cou e s s e método, que t e m como i d é i a c e n t r a l a mesma de B A L B I -

Referências

Documentos relacionados

Utilizado para o mapeamento e documentação da rede interna, o sistema também permite documentar todo os detalhes da rede e todas as conexões físicas.. FIGURA 3 –

4.19 Os 3 (três) últimos candidatos de cada turma somente poderão retirar-se simultaneamente, para garantir a lisura na aplicação. 4.20 Não poderão ser fornecidas, em tempo

O modelamento biomecânico do joelho baseia-se na representação das articulações tibiofemoral e patelofemoral, por meio do mecanismo extensor da articulação do

Assim, diante das limitações deste estudo, pode-se concluir que é possível inspecionar radiograficamente porosidade interna em uniões soldadas a laser executa- das em Ti cp;

De acordo com este cenário, esta monografia de especialização propõe um estudo da técnologia &#34;Mobile Payment&#34; e de serviços de pagamentos online que utilizam esta

Nem as prateleiras, os expositores e o material de merchandising (banners, totens e cartazes, entre outras coisas) resistiram aos novos tempos. No caso dos expositores e

O trabalho parte do pressuposto de que há uma correlação entre as variáveis climáticas de temperatura e a umidade relativa (variáveis - resposta), medidas em campo, e as

Nós trabalhamos diretamente no ensino da Geometria e os resultados foram bem satisfatórios, os alunos superaram algumas dificuldades como: desenhar figuras geométricas no papel como