SlideShare una empresa de Scribd logo
1 de 5
ESTRUCTURAS DE DATOS




                        UNIDAD 8. MÉTODOS DE BÚSQUEDA
La búsqueda se refiere a la operación de encontrar la posición de un elemento, entre un conjunto de
ellos. Existen diferentes algoritmos para realizar una búsqueda.

La operación de búsqueda de un elemento consisten en:

   1. Determinar si el número pertenece al conjunto y en ese caso indicar su posición en el.

   2. Determinar si el número no pertenece al conjunto.

Los métodos de búsqueda más comunes son:

   •   Búsqueda Secuencial o Lineal
   •   Búsqueda Binaria
   •   Búsqueda por Transformación de claves (HASH)


Búsqueda Secuencial o Lineal
El método más sencillo de búsqueda en un conjunto de datos almacenados en secuencia, como un
arreglo, es recorrer este arreglo posición por posición. Esta búsqueda compara cada elemento del
vector con el valor deseado hasta que este se encuentra o hasta que se termine de recorrer el arreglo.

Búsqueda Binaria
En una búsqueda secuencial se comienza con el primer elemento del vector y se busca en el hasta que
se encuentra el elemento deseado o bien hasta que se alcanza el final del vector. Este puede ser un
método adecuado para pocos datos pero se requiere una técnica más eficaz para grandes conjuntos de
datos.

La búsqueda binaria utiliza el método de “Divide y Vencerás”. Con este método se examina primero el
elemento central de la lista, si este es el elemento buscado, entonces la búsqueda ha terminado en caso
contrario se determina si el elemento buscado está en la primera o en la segunda mitad de la lista y a
continuación se repite el proceso utilizando ahora el elemento central de esa sublista.

Debido a la naturaleza del proceso los elementos del arreglo deben estar previamente ordenados.

               liz=0;
               lde=nmax-1;
               c=(liz+lde)/2;
               while(liz!=lde && A[c]!=bus)
               {       if(bus>A[c])
                               liz=c+1;
                       else
                               lde=c-1;
                       c=(liz+lde)/2;
                       }
               if (A[c]==bus)
                       System.out.println("Encontrado en pos: "+c);
               else    System.out.println("El numero no existe en este arreglo");


                                                                                                     1
ESTRUCTURAS DE DATOS

Transformación de claves (Hashing)

El método de transformación de claves consiste en convertir una clave dada (numérico o
alfanumérico) en un índice o dirección dentro de un arreglo o un archivo. La correspondencia entre las
claves y la dirección en el medio de almacenamiento se establece por una función de conversión
llamada función HASH.

Si se tuviera una lista de 100 empleados y cada uno de ellos se identificara con una clave del 1 al 100,
evidentemente puede existir una correspondencia directa entre la clave y la dirección definida en un
vector que contenga 100 elementos. Si la identificación del empleado fuera el número de seguridad
social que contiene hasta 9 dígitos, se necesitarían aproximadamente 999,999,999 posiciones,
cantidad difícil de tener disponible en memoria principal sobre todo si la cantidad de elementos reales
de información son solo 100 empleados.

Para hacer uso del número de seguridad social como un índice en la tabla se necesita un medio para
convertir el campo clave en una dirección o índice pequeño.

La función de transformación de claves, convierte la clave k en una dirección d.

                                      d=H(k)

 Por Ejemplo

               IMSS= 198724859.           d = H(198724859)

                                        d= 75; la dirección real es 75



                              Métodos de transformación de claves
Existen diversos métodos de transformación, que tienen en común la necesidad de convertir claves en
direcciones o índices reales. La función de conversión equivale a una caja negra que podríamos llamar
calculador de direcciones o función de transformación de claves, cuando se desee localizar o
almacenar un elemento de clave x, el calculador de direcciones indicará qué posición del arreglo le
corresponde. Algunos métodos de transformación son los siguientes.

     a) Truncamiento. Ignora parte de la clave y utiliza la parte restante directamente como índice.
Si la clave es un entero de ocho dígitos entonces el primero, el segundo y el quinto dígito desde la
derecha, pueden formar una dirección real. Aunque es un método rápido puede fallar para distribuir
las claves de manera uniforme.

 Clave:    8952 4372                                  Dirección:     d = 272



    b) Plegamiento. Consiste en la partición de la clave en diferentes segmentos y la combinación de
estos segmentos de un modo conveniente (a menudo utilizando la suma o la multiplicación) para
obtener el índice.
    Generalmente en esta operación se deprecian los números más significativos, obtenidos por el
arrastre o acarreo.




                                                                                                      2
ESTRUCTURAS DE DATOS

                       6 2 5 3 8 1 9 4



                         625    +   381 + 94          = 1100



                       Si solo se tienen 100 posiciones

                               d=1100 //Se elimina al más significativo

                               d=100

    c) Aritmética modular. Esta consiste en convertir la clave a un entero, dividirlo por el tamaño
del rango del índice y tomar el residuo como resultado.

Ejemplo 1: Si se tienen de 0 a 100 posiciones, entonces:

H(k)= K mod (m+1)

H(k)=k mod (101)

Si H(k) = 234661234 mod 101

        d=51



Ejemplo 2: Si k= JONAS se convierte a numérico.

K= 10+15+14+1+19

K=63

H(k) = k mod (101)

H(k)= 63 mod 101

d= 63

   d) Mitad del cuadrado. Consiste en calcular el cuadrado de la clave original y posteriormente se
      elimina un mismo número de dígitos a ambos extremos del valor obtenido.

                               a) K= 4205           k2= 176 82 025         d=82

                               b) K= 7148            k2=510 93 904         d=93




                                                                                                      3
ESTRUCTURAS DE DATOS

                                             Colisiones
La función de conversión H(k) no siempre proporciona valores distintos, puede suceder que para dos
claves diferentes se obtenga la misma dirección. Esta situación se denomina Colisión y se deben
encontrar métodos para su correcta resolución.

Por ejemplo:           a) H(123445678) =123445678 mod 101=44

                       b)H(123445880) = 123445880 mod 101=44

Una primera forma para solucionar este conflicto es la utilización de algún método para la generación
de una posición alternativa, es decir calcular una segunda dirección, y si esta aún no es una dirección
correcta se produce una tercera dirección.

                                     1° H(k): Aritmética modular

                                             H( 12345678) = 44             Como esta dirección ya
                                     está ocupada, se
43
                                                                           recurre a una segunda
44      12345779                     alternativa.
45                                   2° H(k) : Plegamiento
…                                            H(12345678) = 123+456+779= 1257             d=57
57




Resolución por Encadenamiento

Una solución más efectiva al conflicto de colisiones es permitir una lista enlazada de elementos
formada a partir de cada posición del arreglo.

En este método de resolución de colisiones conocido como encadenamiento, cada posición del arreglo
apunta a la referencia del elemento inicial de la lista.




                                                                                                     4
ESTRUCTURAS DE DATOS




43

44                     12 345678   12345779


45

46

47




                                              5

Más contenido relacionado

La actualidad más candente

calculo 2 saia
calculo 2 saia calculo 2 saia
calculo 2 saia lospenkas
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Ana Castro
 
Logaritmo orirent
Logaritmo orirentLogaritmo orirent
Logaritmo orirentcarolinak
 
Calculo Integral[1]
Calculo Integral[1]Calculo Integral[1]
Calculo Integral[1]guestf6ea15
 
Relaciones y funciones
Relaciones y funcionesRelaciones y funciones
Relaciones y funcionesJhon Valera
 
Mtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalMtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalAmbarS
 
Funciones.pdf
Funciones.pdfFunciones.pdf
Funciones.pdfecruzo
 
Bloque 1 tema 1
Bloque 1 tema 1Bloque 1 tema 1
Bloque 1 tema 1andy1326
 
Relaciones y funciones: cuestiones preliminares
Relaciones y funciones: cuestiones preliminaresRelaciones y funciones: cuestiones preliminares
Relaciones y funciones: cuestiones preliminarescena03
 

La actualidad más candente (18)

calculo 2 saia
calculo 2 saia calculo 2 saia
calculo 2 saia
 
Divide y Venceras
Divide y VencerasDivide y Venceras
Divide y Venceras
 
Hashing
HashingHashing
Hashing
 
Funciones
FuncionesFunciones
Funciones
 
Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.Función Hash: metodos de división y de medio Cuadrado.
Función Hash: metodos de división y de medio Cuadrado.
 
Logaritmo orirent
Logaritmo orirentLogaritmo orirent
Logaritmo orirent
 
Algoritmos divide y vencerás
Algoritmos divide y vencerásAlgoritmos divide y vencerás
Algoritmos divide y vencerás
 
Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
 
Calculo Integral[1]
Calculo Integral[1]Calculo Integral[1]
Calculo Integral[1]
 
Relaciones y funciones
Relaciones y funcionesRelaciones y funciones
Relaciones y funciones
 
Mtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo finalMtodo de runge..trabajo[1]... listo final
Mtodo de runge..trabajo[1]... listo final
 
Funciones.pdf
Funciones.pdfFunciones.pdf
Funciones.pdf
 
CÁLCULO II . Integración
CÁLCULO II . IntegraciónCÁLCULO II . Integración
CÁLCULO II . Integración
 
Bloque 1 tema 1
Bloque 1 tema 1Bloque 1 tema 1
Bloque 1 tema 1
 
Funciones
FuncionesFunciones
Funciones
 
Relaciones y funciones: cuestiones preliminares
Relaciones y funciones: cuestiones preliminaresRelaciones y funciones: cuestiones preliminares
Relaciones y funciones: cuestiones preliminares
 
Unida 9. funcion logaritmica - GONZALO REVELO PABON
Unida 9. funcion  logaritmica - GONZALO REVELO PABONUnida 9. funcion  logaritmica - GONZALO REVELO PABON
Unida 9. funcion logaritmica - GONZALO REVELO PABON
 
metodos de optimizacion
metodos de optimizacionmetodos de optimizacion
metodos de optimizacion
 

Destacado

Unidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealUnidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealrehoscript
 
Unidad 6 ordenacion_interna
Unidad 6 ordenacion_internaUnidad 6 ordenacion_interna
Unidad 6 ordenacion_internarehoscript
 
Unidad 2 Manejo de memoria
Unidad 2 Manejo de memoriaUnidad 2 Manejo de memoria
Unidad 2 Manejo de memoriarehoscript
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmosrehoscript
 
Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10grehoscript
 
Unidad 7 ordenacion_externa
Unidad 7 ordenacion_externaUnidad 7 ordenacion_externa
Unidad 7 ordenacion_externarehoscript
 
Aplicaciones gráficas por computadoras
Aplicaciones gráficas por computadorasAplicaciones gráficas por computadoras
Aplicaciones gráficas por computadorasGaspar Méndez
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividadrehoscript
 
39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacionYamil Hernandez Ortega
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
 
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORAINTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORArehoscript
 
Graficación por computadora
Graficación por computadoraGraficación por computadora
Graficación por computadoraDiaNa González
 
FUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓNFUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓNAle Altuve
 

Destacado (14)

Unidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no linealUnidad 5 est. dat estruc. no lineal
Unidad 5 est. dat estruc. no lineal
 
Unidad 6 ordenacion_interna
Unidad 6 ordenacion_internaUnidad 6 ordenacion_interna
Unidad 6 ordenacion_interna
 
Unidad 2 Manejo de memoria
Unidad 2 Manejo de memoriaUnidad 2 Manejo de memoria
Unidad 2 Manejo de memoria
 
Analisis de algoritmos
Analisis de algoritmosAnalisis de algoritmos
Analisis de algoritmos
 
Practicas oracle10g
Practicas oracle10gPracticas oracle10g
Practicas oracle10g
 
Unidad 7 ordenacion_externa
Unidad 7 ordenacion_externaUnidad 7 ordenacion_externa
Unidad 7 ordenacion_externa
 
Aplicaciones gráficas por computadoras
Aplicaciones gráficas por computadorasAplicaciones gráficas por computadoras
Aplicaciones gráficas por computadoras
 
Unidad 4 est. dat. recursividad
Unidad 4  est. dat. recursividadUnidad 4  est. dat. recursividad
Unidad 4 est. dat. recursividad
 
Graficos por Computadora (1)
Graficos por Computadora (1)Graficos por Computadora (1)
Graficos por Computadora (1)
 
39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion39029313 libro-de-texto-para-la-materia-de-graficacion
39029313 libro-de-texto-para-la-materia-de-graficacion
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicas
 
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORAINTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
INTRODUCCIÓN A LA GRAFICACIÓN POR COMPUTADORA
 
Graficación por computadora
Graficación por computadoraGraficación por computadora
Graficación por computadora
 
FUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓNFUNDAMENTOS DE DIAGRAMACIÓN
FUNDAMENTOS DE DIAGRAMACIÓN
 

Similar a Unidad 8 metodos_de_busqueda

Similar a Unidad 8 metodos_de_busqueda (20)

Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hash
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 
Dipersion
DipersionDipersion
Dipersion
 
Dipersion HASH
Dipersion HASHDipersion HASH
Dipersion HASH
 
Metodos Busqueda Interna
Metodos Busqueda InternaMetodos Busqueda Interna
Metodos Busqueda Interna
 
Algoritmos de búsqueda
Algoritmos de búsqueda Algoritmos de búsqueda
Algoritmos de búsqueda
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Informe
InformeInforme
Informe
 
Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo Metodo de la burbuja en algoritmo
Metodo de la burbuja en algoritmo
 
Derivadas
DerivadasDerivadas
Derivadas
 
RAÍCES DE ECUACIONES
RAÍCES DE ECUACIONESRAÍCES DE ECUACIONES
RAÍCES DE ECUACIONES
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Tablas de dispersion
Tablas de dispersionTablas de dispersion
Tablas de dispersion
 
Manejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, BeneficiosManejo de Estructura de Datos, Tipos, Beneficios
Manejo de Estructura de Datos, Tipos, Beneficios
 

Más de rehoscript

Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807rehoscript
 
Lenguajes Decidibles
Lenguajes DecidiblesLenguajes Decidibles
Lenguajes Decidiblesrehoscript
 
Programación
 Programación Programación
Programaciónrehoscript
 
Reseña y ensayo
Reseña y ensayoReseña y ensayo
Reseña y ensayorehoscript
 
Protocolo de investigacion
Protocolo de investigacionProtocolo de investigacion
Protocolo de investigacionrehoscript
 
Tipos de entrevista
Tipos de entrevistaTipos de entrevista
Tipos de entrevistarehoscript
 
Investigacion documental
Investigacion documentalInvestigacion documental
Investigacion documentalrehoscript
 
Maquinas Virtuales
Maquinas VirtualesMaquinas Virtuales
Maquinas Virtualesrehoscript
 
Arquitectura P2P
Arquitectura P2PArquitectura P2P
Arquitectura P2Prehoscript
 
Arquitectura dirigida a eventos
Arquitectura dirigida a eventosArquitectura dirigida a eventos
Arquitectura dirigida a eventosrehoscript
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositóriorehoscript
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipelinerehoscript
 
Modelado de procesos de negocio
Modelado de procesos de negocioModelado de procesos de negocio
Modelado de procesos de negociorehoscript
 

Más de rehoscript (14)

Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807Virtual dev-day-java7-keynote-1641807
Virtual dev-day-java7-keynote-1641807
 
Lenguajes Decidibles
Lenguajes DecidiblesLenguajes Decidibles
Lenguajes Decidibles
 
Claselexico
ClaselexicoClaselexico
Claselexico
 
Programación
 Programación Programación
Programación
 
Reseña y ensayo
Reseña y ensayoReseña y ensayo
Reseña y ensayo
 
Protocolo de investigacion
Protocolo de investigacionProtocolo de investigacion
Protocolo de investigacion
 
Tipos de entrevista
Tipos de entrevistaTipos de entrevista
Tipos de entrevista
 
Investigacion documental
Investigacion documentalInvestigacion documental
Investigacion documental
 
Maquinas Virtuales
Maquinas VirtualesMaquinas Virtuales
Maquinas Virtuales
 
Arquitectura P2P
Arquitectura P2PArquitectura P2P
Arquitectura P2P
 
Arquitectura dirigida a eventos
Arquitectura dirigida a eventosArquitectura dirigida a eventos
Arquitectura dirigida a eventos
 
Arquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositórioArquitecturas de pizarra o repositório
Arquitecturas de pizarra o repositório
 
Arquitectura pipeline
Arquitectura pipelineArquitectura pipeline
Arquitectura pipeline
 
Modelado de procesos de negocio
Modelado de procesos de negocioModelado de procesos de negocio
Modelado de procesos de negocio
 

Unidad 8 metodos_de_busqueda

  • 1. ESTRUCTURAS DE DATOS UNIDAD 8. MÉTODOS DE BÚSQUEDA La búsqueda se refiere a la operación de encontrar la posición de un elemento, entre un conjunto de ellos. Existen diferentes algoritmos para realizar una búsqueda. La operación de búsqueda de un elemento consisten en: 1. Determinar si el número pertenece al conjunto y en ese caso indicar su posición en el. 2. Determinar si el número no pertenece al conjunto. Los métodos de búsqueda más comunes son: • Búsqueda Secuencial o Lineal • Búsqueda Binaria • Búsqueda por Transformación de claves (HASH) Búsqueda Secuencial o Lineal El método más sencillo de búsqueda en un conjunto de datos almacenados en secuencia, como un arreglo, es recorrer este arreglo posición por posición. Esta búsqueda compara cada elemento del vector con el valor deseado hasta que este se encuentra o hasta que se termine de recorrer el arreglo. Búsqueda Binaria En una búsqueda secuencial se comienza con el primer elemento del vector y se busca en el hasta que se encuentra el elemento deseado o bien hasta que se alcanza el final del vector. Este puede ser un método adecuado para pocos datos pero se requiere una técnica más eficaz para grandes conjuntos de datos. La búsqueda binaria utiliza el método de “Divide y Vencerás”. Con este método se examina primero el elemento central de la lista, si este es el elemento buscado, entonces la búsqueda ha terminado en caso contrario se determina si el elemento buscado está en la primera o en la segunda mitad de la lista y a continuación se repite el proceso utilizando ahora el elemento central de esa sublista. Debido a la naturaleza del proceso los elementos del arreglo deben estar previamente ordenados. liz=0; lde=nmax-1; c=(liz+lde)/2; while(liz!=lde && A[c]!=bus) { if(bus>A[c]) liz=c+1; else lde=c-1; c=(liz+lde)/2; } if (A[c]==bus) System.out.println("Encontrado en pos: "+c); else System.out.println("El numero no existe en este arreglo"); 1
  • 2. ESTRUCTURAS DE DATOS Transformación de claves (Hashing) El método de transformación de claves consiste en convertir una clave dada (numérico o alfanumérico) en un índice o dirección dentro de un arreglo o un archivo. La correspondencia entre las claves y la dirección en el medio de almacenamiento se establece por una función de conversión llamada función HASH. Si se tuviera una lista de 100 empleados y cada uno de ellos se identificara con una clave del 1 al 100, evidentemente puede existir una correspondencia directa entre la clave y la dirección definida en un vector que contenga 100 elementos. Si la identificación del empleado fuera el número de seguridad social que contiene hasta 9 dígitos, se necesitarían aproximadamente 999,999,999 posiciones, cantidad difícil de tener disponible en memoria principal sobre todo si la cantidad de elementos reales de información son solo 100 empleados. Para hacer uso del número de seguridad social como un índice en la tabla se necesita un medio para convertir el campo clave en una dirección o índice pequeño. La función de transformación de claves, convierte la clave k en una dirección d. d=H(k) Por Ejemplo IMSS= 198724859. d = H(198724859) d= 75; la dirección real es 75 Métodos de transformación de claves Existen diversos métodos de transformación, que tienen en común la necesidad de convertir claves en direcciones o índices reales. La función de conversión equivale a una caja negra que podríamos llamar calculador de direcciones o función de transformación de claves, cuando se desee localizar o almacenar un elemento de clave x, el calculador de direcciones indicará qué posición del arreglo le corresponde. Algunos métodos de transformación son los siguientes. a) Truncamiento. Ignora parte de la clave y utiliza la parte restante directamente como índice. Si la clave es un entero de ocho dígitos entonces el primero, el segundo y el quinto dígito desde la derecha, pueden formar una dirección real. Aunque es un método rápido puede fallar para distribuir las claves de manera uniforme. Clave: 8952 4372 Dirección: d = 272 b) Plegamiento. Consiste en la partición de la clave en diferentes segmentos y la combinación de estos segmentos de un modo conveniente (a menudo utilizando la suma o la multiplicación) para obtener el índice. Generalmente en esta operación se deprecian los números más significativos, obtenidos por el arrastre o acarreo. 2
  • 3. ESTRUCTURAS DE DATOS 6 2 5 3 8 1 9 4 625 + 381 + 94 = 1100 Si solo se tienen 100 posiciones d=1100 //Se elimina al más significativo d=100 c) Aritmética modular. Esta consiste en convertir la clave a un entero, dividirlo por el tamaño del rango del índice y tomar el residuo como resultado. Ejemplo 1: Si se tienen de 0 a 100 posiciones, entonces: H(k)= K mod (m+1) H(k)=k mod (101) Si H(k) = 234661234 mod 101 d=51 Ejemplo 2: Si k= JONAS se convierte a numérico. K= 10+15+14+1+19 K=63 H(k) = k mod (101) H(k)= 63 mod 101 d= 63 d) Mitad del cuadrado. Consiste en calcular el cuadrado de la clave original y posteriormente se elimina un mismo número de dígitos a ambos extremos del valor obtenido. a) K= 4205 k2= 176 82 025 d=82 b) K= 7148 k2=510 93 904 d=93 3
  • 4. ESTRUCTURAS DE DATOS Colisiones La función de conversión H(k) no siempre proporciona valores distintos, puede suceder que para dos claves diferentes se obtenga la misma dirección. Esta situación se denomina Colisión y se deben encontrar métodos para su correcta resolución. Por ejemplo: a) H(123445678) =123445678 mod 101=44 b)H(123445880) = 123445880 mod 101=44 Una primera forma para solucionar este conflicto es la utilización de algún método para la generación de una posición alternativa, es decir calcular una segunda dirección, y si esta aún no es una dirección correcta se produce una tercera dirección. 1° H(k): Aritmética modular H( 12345678) = 44 Como esta dirección ya está ocupada, se 43 recurre a una segunda 44 12345779 alternativa. 45 2° H(k) : Plegamiento … H(12345678) = 123+456+779= 1257 d=57 57 Resolución por Encadenamiento Una solución más efectiva al conflicto de colisiones es permitir una lista enlazada de elementos formada a partir de cada posición del arreglo. En este método de resolución de colisiones conocido como encadenamiento, cada posición del arreglo apunta a la referencia del elemento inicial de la lista. 4
  • 5. ESTRUCTURAS DE DATOS 43 44 12 345678 12345779 45 46 47 5