SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
Universidad Tecnológica de Chile
Inacap
Concepción- Talcahuano
Función Hashing:
Aritmética Modular
Alumnos: Pedro Avaria
Eliel Videla
Docente: Pilar Pardo
Concepción, 16 de abril del 2014
Índice
Índice................................................................................................................................ 2
Introducción..................................................................................................................... 3
¿Qué es Hashing? ........................................................................................................... 4
Métodos de búsqueda..................................................................................................... 5
Aritmética Modular .......................................................................................................... 6
Ejemplos........................................................................................................................... 7
Colisiones ........................................................................................................................ 8
Resolución de colisiones................................................................................................ 9
Mejor caso...................................................................................................................... 11
Caso Promedio .............................................................................................................. 11
Peor caso ....................................................................................................................... 11
Ventajas.......................................................................................................................... 12
Desventajas.................................................................................................................... 12
Conclusión..................................................................................................................... 13
Introducción
Muchas actividades humanas requieren que en ellas las diferentes colecciones de
elementos utilizados se coloquen en un orden específico. Las oficinas de correo por
ejemplo ordenan cartas y los paquetes por códigos postales con el objeto de conseguir
una entrega eficiente; los anuarios o guías telefónicas ordenan sus clientes por orden
alfabético de apellidos con el fin último de encontrar fácilmente el número de teléfono
deseado; los estudiantes de una clase en la universidad se ordenan por sus apellidos o
por los números de rut, etc. Por esta circunstancia una de las tareas que realizan más
frecuentemente las computadoras en el procesamiento de datos es la ordenación y la
búsqueda.
El estudio de diferentes métodos de ordenación es una tarea intrínsecamente
interesante desde un punto de vista teórico y, naturalmente, práctico. Con el presente
informe se pretende entender los principales métodos de búsqueda para tener
conocimiento a priori para su posterior aplicación en la informática.
Funciones Hashing
4
¿Qué es Hashing?
Ahora bien en la búsqueda binaria (como ejemplo) proporciona un medio para reducir el
tiempo requerido para buscar en una lista. Este método, sin embargo, exige que los dato
estén ordenados. Existen otros métodos que pueden aumentar la velocidad de búsqueda
en el que los datos no necesitan estar ordenados, este método se conoce como
transformación de claves (clave – dirección) o Hashing1
.
El método de transformación de claves consiste en convertir la clave dada (numérica o
alfanumérica) e una dirección (índice) dentro del arreglo. La correspondencia entre las
claves y la dirección en el medio de almacenamiento o en el arreglo se establece por una
función de conversión (función o hash).
La imagen anterior muestra el ejemplo de registro (rut o dni) que pasa a través de un
proceso de Hashing para su asignación en la tabla pequeña.
1
Hash (Hashing): Su traducción refiere al hecho de hacer partes más pequeñas, o trozos a forma de
picadillo. Extraído mediante el sitio www.wordreference.com
Funciones Hashing
5
Métodos de búsqueda
Búsqueda lineal
Consiste en buscar de manera secuencial un elemento, es decir, pregunta si el elemento
buscado está en el primero luego el segundo el tercero y así sucesivamente hasta el final
del vector.
La complejidad de este algoritmo es O(n).
Búsqueda binaria
Este método se utiliza cuando el vector esta previamente ordenado este algoritmo reduce
considerablemente el tiempo de búsqueda ya que disminuye el número de iteraciones
necesarias.
Este método se recomienda para Arreglos de gran tamaño. Por ejemplo en uno que
contenga 50.000.000 elementos, realiza como máximo 26 comparaciones (En el peor de
los casos).
Compara el elemento a buscar con un elemento del arreglo (casi siempre el central)
compara si es mayor o menor al elemento a buscar. Si es mayor busca desde el inicio del
arreglo hasta el elemento que toma, si es menor toma del último elemento hasta el
elemento tomado.
De esta forma se obtienen intervalos cada vez más pequeños, hasta que tenga un
intervalo indivisible.
Funciones Hash
Truncamiento: Este método ignora parte de la clave o elemento y utiliza la parte restante
como índice, dependiendo del tamaño de la clave y del Arreglo dependerá que elementos
se toman de ella por ejemplo si tenemos un Arreglo de 8 dígitos y son mil posiciones se
tomara el primero, segundo y el quinto.
25698542 = 258
Plegamiento: Consiste en dividir la clave en distintos grupos y la combinación de ellos en
un modo conveniente resulta el índice (comúnmente suma o multiplicación) si el valor no
se encuentra en el rango del Arreglo se trunca para que este en el rango adecuado de
índices. Ejemplo: se tiene una clave de 8 dígitos y 300 posiciones.
25698542 = 256+985+42=1283  283
Mitad del cuadrado: Consiste en calcular el cuadrado de la clave después algunos
dígitos específicos se extraen de la mitad del resultado y se utiliza como el índice de la
clave, Si se desea una dirección de n dígitos, entonces los dígitos se truncan en ambos
extremos de la llave elevada al cuadrado, tomando n dígitos intermedios. Las mismas
posiciones de n dígitos deben extraerse para cada llave. Ejemplo: se tiene una clave de 4
dígitos y 100 posiciones
25692
= 6599761  99
Funciones Hashing
6
Aritmética Modular
Este método convierte la clave a un entero, dividiendo el por el tamaño del rango del
arreglo o índice y tomar el resto como resultado. La función de conversión utilizada es
mod (modulo o resto de la división entera)
Donde m es el tamaño del arreglo con índices de 0 a m-1. Los valores de la función
–Direcciones—(el resto) irán de 0 a m-1, ligeramente menor que el tamaño del arreglo. La
mejor elección de los módulos son los números primos. Por ejemplo en un arreglo de
1.000 elementos se puede elegir 997 o 1.009. Otros ejemplos son:
Que proporcionan restos de 0,1 y 2 respectivamente.
Si se desea que las direcciones vayan de 0 hasta m, la función de conversión debe
H(x)= x MOD m
H(x)= x MOD (m+1)
19 mod 6 19 mod 6 20 mod 6
Funciones Hashing
7
Ejemplos
Ejemplo N° 1
Un vector T tiene 100 posiciones, desde 0 a 100. Supongamos que las claves de
búsqueda de los elementos de la tabla son enteros positivos (por ejemplo, número de rut)
Una función de conversión h debe tomar un numero arbitrario entero positivo x y
convertirlo a un entero en el rango 0 a 100, esto es, h es una función tal que para un
entero positivo x.
h(x) = n, donde n es entero en el rango 0 a 100.
El método del modulo, tomando 101, será:
h(x) = x mod 101
Si se tiene el rut 234661234 (como un rut empresarial 23.466.123-4), por ejemplo, se
tendrá la posición 56:
234661234 mod 101= 56
Ejemplo N° 2
La clave de búsqueda es una cadena de caracteres (por ejemplo nombres). Obtener las
direcciones de conversión podría será:
El método más simple de asignar a cada carácter de la cadena un valor entero (por
ejemplo, A=1,B=2,…) y sumar los valores de los caracteres en la cadena. Al resultado se
le aplica entonces el módulo 101, por ejemplo:
Si el nombre fuese JONAS, esta clave se convertiría en el entero:
10 + 15 + 14 + 1 + 19 = 63
63 mod 101 = 63.
Funciones Hashing
8
Colisiones
La función de conversión h(x) no siempre proporciona valores distintos, puede suceder
que para dos claves diferentes y se obtenga la misma dirección. Esta situación se
denomina COLISION y se deben encontrar métodos para su correcta resolución.
Tomando el ejemplo anterior para la asignación de índices a ruts podríamos encontrar:
Rut 1: 123445678 Rut 2: 123445880
Que proporcionarían las direcciones:
h (123445678) = 123445678 mod 101= 44
h (123445880) = 123445880 mod 101= 44
Es decir, se tienen dos elementos en la misma posición del vector o arreglo, [44]. En
terminología de claves se dice que las claves 123445678 y 123445880 han colisionado.
El único medio para evitar el problema de las colisiones totalmente es tener una posición
del arreglo para cada posible número del rut. Si por ejemplo, los números del rut son
claves el rut se representa con 10 dígitos, se necesitaría una posición del arreglo para
cada entero en el rango 0000000000 a 9999999999. Evidentemente, sería necesario una
gran cantidad de almacenamiento. En general, el único método para evitar colisiones
totalmente es que el arreglo sea lo bastante grande para que cada posible valor de la
clave de búsqueda pueda tener su propia posición. Ya que esto normalmente no es
practico ni posible, se necesitara un medio para tratar o resolver las colisiones cuando
sucedan.
Funciones Hashing
9
Resolución de colisiones
Consideremos el problema producido por una colisión. Supongamos que desea insertar un
elemento de un rut 12345678, en un arreglo T. Se aplica la función de conversión del MODULO y
se determina que el nuevo elemento se situara en la posición T[44].Sin embargo, se observa que
T[44] ya contiene un elemento con rut 123445779.
En la imagen anterior se puede apreciar la colisión en el arreglo T
La pregunta que se plantea inmediatamente es ¿Qué hacer con el nuevo elemento?
Un método comúnmente utilizado para resolver una colisión es cambiar la estructura del arreglo T
de modo que pueda alojar más de un elemento en la misma posición. Se puede, por ejemplo,
modificar T de modo que cada posición T[i] sea por sí misma un arreglo capaz de contener N
elementos. El problema, evidentemente, será saber la magnitud de N. Si N es muy pequeño, el
problema de las colisiones aparecerá cuando aparezca N +1 elementos.
Una solución mejor es permitir una lista enlazada o encadenada de elementos para formar a partir
de cada posición del arreglo. En este método de resolución de colisiones, conocido como
encadenamiento, cada entrada T[i] es un puntero que apunta al elemento del principio de la lista
de elementos, de modo que la función de transformación de clave lo convierte en la posición i.
Funciones Hashing
10
En esta imagen podemos apreciar un diagrama de como trabajaría la resolución de colisiones
mediante encadenamiento por punteros o encadenamiento de sinónimos.
En general podemos describir otros métodos para la resolución tales como:
Búsqueda lineal: A partir de la colisión se busca el primer espacio vacío para guardar la
clave.
Doble hashing: Se aplica una segunda hash a la clave, no necesariamente el mismo
método.
Área de Desborde: La dirección para k2 se encuentra fuera del área principal, área
especial donde se almacenan los registros que no pueden ser almacenados en el área
principal.
Funciones Hashing
11
Mejor caso
Para este método el mejor caso es que no ocurra ninguna colisión dentro del Arreglo esto
disminuye el tiempo de ejecución y que no sea necesaria un método de resolución de
colisiones.
Caso Promedio
Que surjan muy pocas colisiones para que no aumente mucho el tiempo de ejecución y
se escoja el mejor método de resolución de colisiones.
Peor caso
Todas las claves realicen colisiones dentro del arreglo y además se elija un mal método
de resolución de colisiones.
Funciones Hashing
12
Ventajas
 Es una búsqueda directa del elemento.
 Al realizar una sola operación el tiempo de ejecución disminuye en el caso de que
no existan colisiones al momento de buscar o insertar.
 Como se menciona anteriormente al realizar una operación utiliza menos espacio
en memoria.
Desventajas
 En este método de hash hay muchas posibilidades de colisiones lo que aumenta el
tiempo de búsqueda del elemento.
 No permite claves repetidas.
 En este método el arreglo queda con espacios vacíos.
Funciones Hashing
13
Conclusión
El método Hashing para la asignación de índices y de búsqueda para claves, ha
demostrado ser una herramienta potente para la utilización de recursos en lo que respecta
al manejo de información. Podemos inferir además que en gran parte de sus cualidades
se nos entrega un gran rango de posibilidades para desarrollar cada vez mejores
funciones, muchas de las que entrega por ejemplo la búsqueda binaria.
Teniendo tales conocimientos podemos aplicar métodos a sistemas propios de
estudiantes para poder analizar y visualizar la eficacia y eficiencia de dichas funciones.

Más contenido relacionado

La actualidad más candente

Arreglos Bidimensionales
Arreglos BidimensionalesArreglos Bidimensionales
Arreglos Bidimensionalesguestefc95b
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 
Estructura De Datos Unidad Ii
Estructura De Datos Unidad IiEstructura De Datos Unidad Ii
Estructura De Datos Unidad Iidanyyel123
 
Teoría de informática (contar)
Teoría de informática (contar)Teoría de informática (contar)
Teoría de informática (contar)lucascen
 
Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimensionyperalta
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Simeon Bordones
 
Funciones Racionales
Funciones RacionalesFunciones Racionales
Funciones RacionalesCarmen Batiz
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)mauriciog456
 
Funciones polinómicas
Funciones polinómicasFunciones polinómicas
Funciones polinómicassaulvalper
 
Funciones
Funciones Funciones
Funciones d3101
 
Funciones
Funciones Funciones
Funciones d3101
 
Módulos algebra de matrices (1)
Módulos algebra de matrices (1)Módulos algebra de matrices (1)
Módulos algebra de matrices (1)Rudy Medina
 
Funciones Polinomiales grado 3 y 4. Matemática
 Funciones Polinomiales grado 3 y 4. Matemática  Funciones Polinomiales grado 3 y 4. Matemática
Funciones Polinomiales grado 3 y 4. Matemática Stephanie Pinzón
 

La actualidad más candente (16)

Arreglos
ArreglosArreglos
Arreglos
 
Arreglos Bidimensionales
Arreglos BidimensionalesArreglos Bidimensionales
Arreglos Bidimensionales
 
Funciones racionales
Funciones racionalesFunciones racionales
Funciones racionales
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Estructura De Datos Unidad Ii
Estructura De Datos Unidad IiEstructura De Datos Unidad Ii
Estructura De Datos Unidad Ii
 
Hashing
HashingHashing
Hashing
 
Teoría de informática (contar)
Teoría de informática (contar)Teoría de informática (contar)
Teoría de informática (contar)
 
Arreglos En Una Dimension
Arreglos En Una DimensionArreglos En Una Dimension
Arreglos En Una Dimension
 
Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos Estructuras De Datos-Arreglos
Estructuras De Datos-Arreglos
 
Funciones Racionales
Funciones RacionalesFunciones Racionales
Funciones Racionales
 
Estructura de datos (Arreglos)
Estructura de datos (Arreglos)Estructura de datos (Arreglos)
Estructura de datos (Arreglos)
 
Funciones polinómicas
Funciones polinómicasFunciones polinómicas
Funciones polinómicas
 
Funciones
Funciones Funciones
Funciones
 
Funciones
Funciones Funciones
Funciones
 
Módulos algebra de matrices (1)
Módulos algebra de matrices (1)Módulos algebra de matrices (1)
Módulos algebra de matrices (1)
 
Funciones Polinomiales grado 3 y 4. Matemática
 Funciones Polinomiales grado 3 y 4. Matemática  Funciones Polinomiales grado 3 y 4. Matemática
Funciones Polinomiales grado 3 y 4. Matemática
 

Similar a Metodos de Búsqueda

Similar a Metodos de Búsqueda (20)

Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modular
 
Informe aritmetica modular
Informe aritmetica modularInforme aritmetica modular
Informe aritmetica modular
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
Informe analisis de algoritmos (mitad de cuadrado)
Informe analisis de algoritmos (mitad de cuadrado)Informe analisis de algoritmos (mitad de cuadrado)
Informe analisis de algoritmos (mitad de cuadrado)
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
 
Informe analisis
Informe analisisInforme analisis
Informe analisis
 
Javascript
JavascriptJavascript
Javascript
 
Taller de lenguaje 1
Taller de lenguaje 1Taller de lenguaje 1
Taller de lenguaje 1
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Hashing
HashingHashing
Hashing
 
Búsqueda de los algoritmos
Búsqueda de los algoritmosBúsqueda de los algoritmos
Búsqueda de los algoritmos
 

Más de Pedro Avaria

Ejercicios de Grafos
Ejercicios de GrafosEjercicios de Grafos
Ejercicios de GrafosPedro Avaria
 
Cuadro comparativo Tipos de Problemas
Cuadro comparativo Tipos de ProblemasCuadro comparativo Tipos de Problemas
Cuadro comparativo Tipos de ProblemasPedro Avaria
 
Tipos de problemas
Tipos de problemasTipos de problemas
Tipos de problemasPedro Avaria
 
Representacion de Los Grafos
Representacion de Los GrafosRepresentacion de Los Grafos
Representacion de Los GrafosPedro Avaria
 
Cuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoiCuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoiPedro Avaria
 
Complejidad algoritmo
Complejidad algoritmoComplejidad algoritmo
Complejidad algoritmoPedro Avaria
 
Complejidad algoritmo
Complejidad algoritmoComplejidad algoritmo
Complejidad algoritmoPedro Avaria
 

Más de Pedro Avaria (10)

Ejercicios de Grafos
Ejercicios de GrafosEjercicios de Grafos
Ejercicios de Grafos
 
Cuadro
CuadroCuadro
Cuadro
 
Cuadro comparativo Tipos de Problemas
Cuadro comparativo Tipos de ProblemasCuadro comparativo Tipos de Problemas
Cuadro comparativo Tipos de Problemas
 
Tipos de problemas
Tipos de problemasTipos de problemas
Tipos de problemas
 
Recorridos
RecorridosRecorridos
Recorridos
 
Representacion de Los Grafos
Representacion de Los GrafosRepresentacion de Los Grafos
Representacion de Los Grafos
 
Grafos
GrafosGrafos
Grafos
 
Cuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoiCuadro comparativo torres de hanoi
Cuadro comparativo torres de hanoi
 
Complejidad algoritmo
Complejidad algoritmoComplejidad algoritmo
Complejidad algoritmo
 
Complejidad algoritmo
Complejidad algoritmoComplejidad algoritmo
Complejidad algoritmo
 

Último

Herramientas de Mantenimiento_Soporte Técnico_David Andrade.pdf
Herramientas de Mantenimiento_Soporte Técnico_David Andrade.pdfHerramientas de Mantenimiento_Soporte Técnico_David Andrade.pdf
Herramientas de Mantenimiento_Soporte Técnico_David Andrade.pdfdaa100407
 
Virus -Josue Cabascango _20240322_194349_0000.pdf
Virus -Josue Cabascango _20240322_194349_0000.pdfVirus -Josue Cabascango _20240322_194349_0000.pdf
Virus -Josue Cabascango _20240322_194349_0000.pdfMiSpotify
 
02 - RUP_Introduccion_Definicion.pdf
02 - RUP_Introduccion_Definicion.pdf02 - RUP_Introduccion_Definicion.pdf
02 - RUP_Introduccion_Definicion.pdfRodrigo Cerón
 
03 - RUP_Elaboracion_Construccion_1_2024.pdf
03 - RUP_Elaboracion_Construccion_1_2024.pdf03 - RUP_Elaboracion_Construccion_1_2024.pdf
03 - RUP_Elaboracion_Construccion_1_2024.pdfRodrigo Cerón
 
Simuladores de circuitos electrónicos.pdf
Simuladores de circuitos electrónicos.pdfSimuladores de circuitos electrónicos.pdf
Simuladores de circuitos electrónicos.pdfLeonardoOa4
 
Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...
Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...
Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...AlexaRamirez39
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfdarosario3d
 
Formato de práctica reflexiva ante una problemática social.docx.pdf
Formato de práctica reflexiva ante una problemática social.docx.pdfFormato de práctica reflexiva ante una problemática social.docx.pdf
Formato de práctica reflexiva ante una problemática social.docx.pdfjuanrubenc78
 
Los mejores simuladores electrónicos que se pueden utilizar
Los mejores simuladores electrónicos que se pueden utilizarLos mejores simuladores electrónicos que se pueden utilizar
Los mejores simuladores electrónicos que se pueden utilizarjosuesj13
 

Último (9)

Herramientas de Mantenimiento_Soporte Técnico_David Andrade.pdf
Herramientas de Mantenimiento_Soporte Técnico_David Andrade.pdfHerramientas de Mantenimiento_Soporte Técnico_David Andrade.pdf
Herramientas de Mantenimiento_Soporte Técnico_David Andrade.pdf
 
Virus -Josue Cabascango _20240322_194349_0000.pdf
Virus -Josue Cabascango _20240322_194349_0000.pdfVirus -Josue Cabascango _20240322_194349_0000.pdf
Virus -Josue Cabascango _20240322_194349_0000.pdf
 
02 - RUP_Introduccion_Definicion.pdf
02 - RUP_Introduccion_Definicion.pdf02 - RUP_Introduccion_Definicion.pdf
02 - RUP_Introduccion_Definicion.pdf
 
03 - RUP_Elaboracion_Construccion_1_2024.pdf
03 - RUP_Elaboracion_Construccion_1_2024.pdf03 - RUP_Elaboracion_Construccion_1_2024.pdf
03 - RUP_Elaboracion_Construccion_1_2024.pdf
 
Simuladores de circuitos electrónicos.pdf
Simuladores de circuitos electrónicos.pdfSimuladores de circuitos electrónicos.pdf
Simuladores de circuitos electrónicos.pdf
 
Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...
Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...
Diseño de Algoritmos Paralelos. Mejorando la eficiencia computacional aprovec...
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
 
Formato de práctica reflexiva ante una problemática social.docx.pdf
Formato de práctica reflexiva ante una problemática social.docx.pdfFormato de práctica reflexiva ante una problemática social.docx.pdf
Formato de práctica reflexiva ante una problemática social.docx.pdf
 
Los mejores simuladores electrónicos que se pueden utilizar
Los mejores simuladores electrónicos que se pueden utilizarLos mejores simuladores electrónicos que se pueden utilizar
Los mejores simuladores electrónicos que se pueden utilizar
 

Metodos de Búsqueda

  • 1. Universidad Tecnológica de Chile Inacap Concepción- Talcahuano Función Hashing: Aritmética Modular Alumnos: Pedro Avaria Eliel Videla Docente: Pilar Pardo Concepción, 16 de abril del 2014
  • 2. Índice Índice................................................................................................................................ 2 Introducción..................................................................................................................... 3 ¿Qué es Hashing? ........................................................................................................... 4 Métodos de búsqueda..................................................................................................... 5 Aritmética Modular .......................................................................................................... 6 Ejemplos........................................................................................................................... 7 Colisiones ........................................................................................................................ 8 Resolución de colisiones................................................................................................ 9 Mejor caso...................................................................................................................... 11 Caso Promedio .............................................................................................................. 11 Peor caso ....................................................................................................................... 11 Ventajas.......................................................................................................................... 12 Desventajas.................................................................................................................... 12 Conclusión..................................................................................................................... 13
  • 3. Introducción Muchas actividades humanas requieren que en ellas las diferentes colecciones de elementos utilizados se coloquen en un orden específico. Las oficinas de correo por ejemplo ordenan cartas y los paquetes por códigos postales con el objeto de conseguir una entrega eficiente; los anuarios o guías telefónicas ordenan sus clientes por orden alfabético de apellidos con el fin último de encontrar fácilmente el número de teléfono deseado; los estudiantes de una clase en la universidad se ordenan por sus apellidos o por los números de rut, etc. Por esta circunstancia una de las tareas que realizan más frecuentemente las computadoras en el procesamiento de datos es la ordenación y la búsqueda. El estudio de diferentes métodos de ordenación es una tarea intrínsecamente interesante desde un punto de vista teórico y, naturalmente, práctico. Con el presente informe se pretende entender los principales métodos de búsqueda para tener conocimiento a priori para su posterior aplicación en la informática.
  • 4. Funciones Hashing 4 ¿Qué es Hashing? Ahora bien en la búsqueda binaria (como ejemplo) proporciona un medio para reducir el tiempo requerido para buscar en una lista. Este método, sin embargo, exige que los dato estén ordenados. Existen otros métodos que pueden aumentar la velocidad de búsqueda en el que los datos no necesitan estar ordenados, este método se conoce como transformación de claves (clave – dirección) o Hashing1 . El método de transformación de claves consiste en convertir la clave dada (numérica o alfanumérica) e una dirección (índice) dentro del arreglo. La correspondencia entre las claves y la dirección en el medio de almacenamiento o en el arreglo se establece por una función de conversión (función o hash). La imagen anterior muestra el ejemplo de registro (rut o dni) que pasa a través de un proceso de Hashing para su asignación en la tabla pequeña. 1 Hash (Hashing): Su traducción refiere al hecho de hacer partes más pequeñas, o trozos a forma de picadillo. Extraído mediante el sitio www.wordreference.com
  • 5. Funciones Hashing 5 Métodos de búsqueda Búsqueda lineal Consiste en buscar de manera secuencial un elemento, es decir, pregunta si el elemento buscado está en el primero luego el segundo el tercero y así sucesivamente hasta el final del vector. La complejidad de este algoritmo es O(n). Búsqueda binaria Este método se utiliza cuando el vector esta previamente ordenado este algoritmo reduce considerablemente el tiempo de búsqueda ya que disminuye el número de iteraciones necesarias. Este método se recomienda para Arreglos de gran tamaño. Por ejemplo en uno que contenga 50.000.000 elementos, realiza como máximo 26 comparaciones (En el peor de los casos). Compara el elemento a buscar con un elemento del arreglo (casi siempre el central) compara si es mayor o menor al elemento a buscar. Si es mayor busca desde el inicio del arreglo hasta el elemento que toma, si es menor toma del último elemento hasta el elemento tomado. De esta forma se obtienen intervalos cada vez más pequeños, hasta que tenga un intervalo indivisible. Funciones Hash Truncamiento: Este método ignora parte de la clave o elemento y utiliza la parte restante como índice, dependiendo del tamaño de la clave y del Arreglo dependerá que elementos se toman de ella por ejemplo si tenemos un Arreglo de 8 dígitos y son mil posiciones se tomara el primero, segundo y el quinto. 25698542 = 258 Plegamiento: Consiste en dividir la clave en distintos grupos y la combinación de ellos en un modo conveniente resulta el índice (comúnmente suma o multiplicación) si el valor no se encuentra en el rango del Arreglo se trunca para que este en el rango adecuado de índices. Ejemplo: se tiene una clave de 8 dígitos y 300 posiciones. 25698542 = 256+985+42=1283  283 Mitad del cuadrado: Consiste en calcular el cuadrado de la clave después algunos dígitos específicos se extraen de la mitad del resultado y se utiliza como el índice de la clave, Si se desea una dirección de n dígitos, entonces los dígitos se truncan en ambos extremos de la llave elevada al cuadrado, tomando n dígitos intermedios. Las mismas posiciones de n dígitos deben extraerse para cada llave. Ejemplo: se tiene una clave de 4 dígitos y 100 posiciones 25692 = 6599761  99
  • 6. Funciones Hashing 6 Aritmética Modular Este método convierte la clave a un entero, dividiendo el por el tamaño del rango del arreglo o índice y tomar el resto como resultado. La función de conversión utilizada es mod (modulo o resto de la división entera) Donde m es el tamaño del arreglo con índices de 0 a m-1. Los valores de la función –Direcciones—(el resto) irán de 0 a m-1, ligeramente menor que el tamaño del arreglo. La mejor elección de los módulos son los números primos. Por ejemplo en un arreglo de 1.000 elementos se puede elegir 997 o 1.009. Otros ejemplos son: Que proporcionan restos de 0,1 y 2 respectivamente. Si se desea que las direcciones vayan de 0 hasta m, la función de conversión debe H(x)= x MOD m H(x)= x MOD (m+1) 19 mod 6 19 mod 6 20 mod 6
  • 7. Funciones Hashing 7 Ejemplos Ejemplo N° 1 Un vector T tiene 100 posiciones, desde 0 a 100. Supongamos que las claves de búsqueda de los elementos de la tabla son enteros positivos (por ejemplo, número de rut) Una función de conversión h debe tomar un numero arbitrario entero positivo x y convertirlo a un entero en el rango 0 a 100, esto es, h es una función tal que para un entero positivo x. h(x) = n, donde n es entero en el rango 0 a 100. El método del modulo, tomando 101, será: h(x) = x mod 101 Si se tiene el rut 234661234 (como un rut empresarial 23.466.123-4), por ejemplo, se tendrá la posición 56: 234661234 mod 101= 56 Ejemplo N° 2 La clave de búsqueda es una cadena de caracteres (por ejemplo nombres). Obtener las direcciones de conversión podría será: El método más simple de asignar a cada carácter de la cadena un valor entero (por ejemplo, A=1,B=2,…) y sumar los valores de los caracteres en la cadena. Al resultado se le aplica entonces el módulo 101, por ejemplo: Si el nombre fuese JONAS, esta clave se convertiría en el entero: 10 + 15 + 14 + 1 + 19 = 63 63 mod 101 = 63.
  • 8. Funciones Hashing 8 Colisiones La función de conversión h(x) no siempre proporciona valores distintos, puede suceder que para dos claves diferentes y se obtenga la misma dirección. Esta situación se denomina COLISION y se deben encontrar métodos para su correcta resolución. Tomando el ejemplo anterior para la asignación de índices a ruts podríamos encontrar: Rut 1: 123445678 Rut 2: 123445880 Que proporcionarían las direcciones: h (123445678) = 123445678 mod 101= 44 h (123445880) = 123445880 mod 101= 44 Es decir, se tienen dos elementos en la misma posición del vector o arreglo, [44]. En terminología de claves se dice que las claves 123445678 y 123445880 han colisionado. El único medio para evitar el problema de las colisiones totalmente es tener una posición del arreglo para cada posible número del rut. Si por ejemplo, los números del rut son claves el rut se representa con 10 dígitos, se necesitaría una posición del arreglo para cada entero en el rango 0000000000 a 9999999999. Evidentemente, sería necesario una gran cantidad de almacenamiento. En general, el único método para evitar colisiones totalmente es que el arreglo sea lo bastante grande para que cada posible valor de la clave de búsqueda pueda tener su propia posición. Ya que esto normalmente no es practico ni posible, se necesitara un medio para tratar o resolver las colisiones cuando sucedan.
  • 9. Funciones Hashing 9 Resolución de colisiones Consideremos el problema producido por una colisión. Supongamos que desea insertar un elemento de un rut 12345678, en un arreglo T. Se aplica la función de conversión del MODULO y se determina que el nuevo elemento se situara en la posición T[44].Sin embargo, se observa que T[44] ya contiene un elemento con rut 123445779. En la imagen anterior se puede apreciar la colisión en el arreglo T La pregunta que se plantea inmediatamente es ¿Qué hacer con el nuevo elemento? Un método comúnmente utilizado para resolver una colisión es cambiar la estructura del arreglo T de modo que pueda alojar más de un elemento en la misma posición. Se puede, por ejemplo, modificar T de modo que cada posición T[i] sea por sí misma un arreglo capaz de contener N elementos. El problema, evidentemente, será saber la magnitud de N. Si N es muy pequeño, el problema de las colisiones aparecerá cuando aparezca N +1 elementos. Una solución mejor es permitir una lista enlazada o encadenada de elementos para formar a partir de cada posición del arreglo. En este método de resolución de colisiones, conocido como encadenamiento, cada entrada T[i] es un puntero que apunta al elemento del principio de la lista de elementos, de modo que la función de transformación de clave lo convierte en la posición i.
  • 10. Funciones Hashing 10 En esta imagen podemos apreciar un diagrama de como trabajaría la resolución de colisiones mediante encadenamiento por punteros o encadenamiento de sinónimos. En general podemos describir otros métodos para la resolución tales como: Búsqueda lineal: A partir de la colisión se busca el primer espacio vacío para guardar la clave. Doble hashing: Se aplica una segunda hash a la clave, no necesariamente el mismo método. Área de Desborde: La dirección para k2 se encuentra fuera del área principal, área especial donde se almacenan los registros que no pueden ser almacenados en el área principal.
  • 11. Funciones Hashing 11 Mejor caso Para este método el mejor caso es que no ocurra ninguna colisión dentro del Arreglo esto disminuye el tiempo de ejecución y que no sea necesaria un método de resolución de colisiones. Caso Promedio Que surjan muy pocas colisiones para que no aumente mucho el tiempo de ejecución y se escoja el mejor método de resolución de colisiones. Peor caso Todas las claves realicen colisiones dentro del arreglo y además se elija un mal método de resolución de colisiones.
  • 12. Funciones Hashing 12 Ventajas  Es una búsqueda directa del elemento.  Al realizar una sola operación el tiempo de ejecución disminuye en el caso de que no existan colisiones al momento de buscar o insertar.  Como se menciona anteriormente al realizar una operación utiliza menos espacio en memoria. Desventajas  En este método de hash hay muchas posibilidades de colisiones lo que aumenta el tiempo de búsqueda del elemento.  No permite claves repetidas.  En este método el arreglo queda con espacios vacíos.
  • 13. Funciones Hashing 13 Conclusión El método Hashing para la asignación de índices y de búsqueda para claves, ha demostrado ser una herramienta potente para la utilización de recursos en lo que respecta al manejo de información. Podemos inferir además que en gran parte de sus cualidades se nos entrega un gran rango de posibilidades para desarrollar cada vez mejores funciones, muchas de las que entrega por ejemplo la búsqueda binaria. Teniendo tales conocimientos podemos aplicar métodos a sistemas propios de estudiantes para poder analizar y visualizar la eficacia y eficiencia de dichas funciones.