1 / 23

David Colomina Badia Director: Josep Maria Ribó Balust Setembre 2000

Elaboració d'una eina didàctica en JAVA per tal d'estudiar l'estructura de dades “taula” implementada com a “ hash”. David Colomina Badia Director: Josep Maria Ribó Balust Setembre 2000. Índex. Fonaments Funcions de dispersió Estratègies de dispersió Implementació

jara
Download Presentation

David Colomina Badia Director: Josep Maria Ribó Balust Setembre 2000

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Elaboració d'una eina didàctica en JAVA per tal d'estudiar l'estructura de dades “taula” implementada com a “hash” David Colomina Badia Director: Josep Maria Ribó Balust Setembre 2000

  2. Índex • Fonaments • Funcions de dispersió • Estratègies de dispersió • Implementació • Conclusions - Treball futur

  3. Fonaments • Tipus d’accessos • Les taules com e.d. per implementar l’accés per contingut • TAD Taula: Operacions, especificació • Estratègies d’implementació

  4. Tipus d’accessos • Accés seqüencial Inserció de dades: Una darrera de l’altra Consultem les dades: Una darrera de l’altra fins trobar-les Eficiència: O(n) on n és el nombre d’elements emmagatzemats Cost elevat si les dades poden tenir un volum gran • Accés per contingut Consulta: Obtindrem l’element a partir d’un fragment del contingut d’aquest. (Clau) Eficiència:(O(1) o O(log(n)) on n és el nombre d’elements emmagatzemats

  5. ED Taula: accés per contingut • Idea: Taula cjt de parelles <clau,valor> <k,v> • Clau és identificadora • Consultes Eficients: Cost O(1), O(log n) És l’operació destacada (Consulta (k) v) • Les taules es poden modelitzar com funcions on K : espai de claus o índexs o identificadors V : espai de valors o informació f(k) v • Existeixen altres tipus de taules amb clau no identificadora (multitaules)

  6. TAD Taula: Operacions • Les operacions bàsiques de les taules són: • Crear ( ): Crea una taula buida sense cap parella <k,v> • Inserir(k,v): Inserim el parell <k,v> dins la taula, associant per la clau inserida el seu corresponent valor o informació. • Consultar (k) retorna v: Consultem el valor o la informació que té associada la clau dins la taula. • Eliminar (k): Eliminem el parell <k,v> de la taula.

  7. TAD Taula: Especificació • Especificació algebraica TAD TAULA (T_CLAU , T_VALOR) és • Importa: • BOOL • Operacions: • CREAR ( )  TAULA • INSERIR ( TAULA , T_CLAU , T_VALOR )  TAULA • CONSULTAR ( TAULA , T_CLAU )  T_VALOR • ELIMINAR ( TAULA , T_CLAU )  TAULA • EXISTEIX (TAULA, T_CLAU)  BOOL

  8. TAD Taula: Especificació • Axiomes: 1. INSERIR ( INSERIR ( t , k1 , v1 ) , k2 , v2 ) = • si k1 = k2 INSERIR ( t , k1 , v2 ) • sinó INSERIR ( INSERIR ( t , k2 , v2 ) , k1 , v1 ) 2. CONSULTAR ( INSERIR ( t , k1 , v1 ) , k2 ) = • si k1 = k2 v1 • sinó CONSULTAR ( t , k2 ) 3. ELIMINAR ( INSERIR ( t , k1 , v1 ) , k2 ) = • si k1 = k2 t • sinó INSERIR ( ELIMINAR ( t , k2 ) , k1 , v1 )

  9. TAD Taula: Especificació 4. EXISTEIX ( INSERIR ( t , k1 , v1 ) , k2 ) = • si k1 = k2 CERT • sinó EXISTEIX ( t , k2 ) 5. EXISTEIX ( CREAR( ) , k ) = FALS • Errors: 1. ELIMINAR ( CREAR( ) , k ) 2. CONSULTAR ( CREAR( ) , k ) 3. INSERIR ( t , k ,  ) • fi TAD

  10. Estratègies d’implementació • Implementacions seqüencials • Llista • Vector • Implementacions arborescents • Arbres ABC • Arbres AVL • Arbres B+ • Funcions Injectives • Funcions no Injectives: Taules de dispersió • Arbres 2-3 • Arbres “Red-Black”

  11. Funcions Injectives f és una funció injectiva que mapeja l’espai de claus a l’espai d’adreces.

  12. Funcions Injectives • Implementació tant sols acceptable si es coneix la mida de l’espai de les claus (a priori) i aquesta no és molt elevada, i si es pot trobar una funció injectiva de cost baix. • Exemple: Emmagatzematge de les persones que ocupen l’habitació d’un hotel, on la clau seria el número de l’habitació i el valor seria les dades de la persona que l’ocupa. Tenim 40 habitacions per planta i 7 plantes. Les habitacions es numeren: 100-139; 200-239;...; 700-739 Una possible funció injectiva que tindríem seria: f(nh) = ((nh div 100) – 1)*40 + (nh mod 100) On clau = Número d’habitació (nh)

  13. Funcions no injectives: Taules de dispersió

  14. “Funcions de dispersió” “Estratègies de dispersió” Funcions no injectives: Taules de dispersió • Qüestions a resoldre: • Quina forma ha de prendre la funció de dispersió per ser prou “bona”? • Què fem amb les claus dispersades per h a la mateixa adreça?

  15. Nomenclatura • B Capacitat de la taula (mida de l’espai d’adreces) • Claus sinònims ki, kj seran 2 claus sinònimes respecte una funció de dispersió h, si i només si, dins la taula, tenen la mateixa adreça assignada per h [h (ki) = h(kj)] • Col.lisions Es diu que es produeix una col.lisió, quan volem inserir a la taula 2 claus sinònimes. • Factor de càrrega % d’ocupació d’una taula. • Funció de dispersió o funció de hash(h) és la funció no injectiva que indueix una relació d’equivalència a l’espai de claus, i h(k) és l’adreça que se li assigna a la clau k.

  16. Funcions de dispersió • Característiques: • Bona distribució de les claus (distribució uniforme) • Que pugui generar qualsevol adreça de l'espai d'adreces • Eficiència en el seu càlcul: cost O(1) • Dos consells pràctics: • La funció de hash ha d'involucrar tota la clau. • La funció de hash ha de tenir en compte l'ordre dels components de la clau.

  17. Funcions de dispersió: Exemples (h) • Suma de tots els dígits • Funció fàcil de calcular i d’implementar • h(“abc”)=h(“bca”)=h(“cba”)=... • O(1), si |k| està fixada

  18. Plegament de la clau en m parts de la mateixa longitud Funcions de dispersió: Exemples (h) • Suma ponderada de tots els dígits • b : nombre de caràcters possibles de k • Ineficient: Càlcul d’una potència • Sobreixement en el càlcul de la potència

  19. Funcions de dispersió • Conclusions Per bona que sigui una funció de dispersió, és inherent a ella la existència de claus sinònimes i, per tant, col.lisions, es necessari resoldre aquest problema. Hi ha mètodes per realitzar-ho, que són els que veurem a continuació dins les “estratègies de hash”.

  20. Encadenament o no de les col.lisions Estratègies de dispersió Les taules de dispersió poden organitzar-se de diverses maneres segons com es gestionen les col.lisions Possibles estratègies de dispersió: • Hash Tancat • Hash Obert • Taules Coalescents • Hash dinàmic

  21. Famílies de redispersió • Redispersió lineal hi(k) = (h(k) + c·i) mod B • Redispersió quadràtica hi(k) = (h(k) +c·i2) mod B ; 0  i  B-1 • Redispersió doble hi(k) = (h(k) + i·h’(k)) mod B

  22. Conclusions • Hem estudiat l’estructura de dades taula. • Hem donat una especificació acurada, em estudiat diferents funcions de dispersió, diferents estratègies de dispersió de hash, diferents funcions de redispersió. • S’ha realitzat l’eina didàctica realitzant la pàgina Web i l’applet (on hi ha opció d’ajuda al context i d’ajuda de l’aplicació, exemples, gràfics, operacions hash, algorismes, execució pas a pas, possibilitat de definició de les variables,...) • Hem assolit gairebé tots els objectius plantejats en el treball. Ara queda, però, el més important i és que aquesta eina sigui realment d’utilitat als seus destinataris.

  23. Treball futur • Realitzar la implementació del hash dinàmic, de les taules coalescents, altres funcions i estratègies de hash que puguin existir i que no s’hagin tractat en el treball. • Internacionalitzar l’eina didàctica. • Estudiar d’altres estratègies de hash dinàmic, hash tancat, hash obert que poden existir. • Donar els diferents algoritmes per les taules coalescents i pel hash dinàmic explicats en el treball. • Realitzar una comparativa de costos entre els tipus de hash que falten per veure i els que s’han vist. • Cercar noves funcions de dispersió i de redispersió, i realitzar una comparativa entre elles

More Related