Académique Documents
Professionnel Documents
Culture Documents
1
ANÁLISIS ALGORITMOS
Algoritmos de Búsqueda
Entre los Algoritmos de Búsqueda los que más destacan son: Búsqueda
Secuencial o lineal, Búsqueda Binaria y las Técnicas de Hashing.
2
Búsqueda lineal o secuencial.
Ejemplo:
3
Complejidad de búsqueda lineal
MEJOR CASO:
Si tenemos mucha suerte, puede ser que la primera posición examinada
contenga el elemento que buscamos, en cuyo caso el algoritmo informará que tuvo
éxito después de una sola comparación. Por tanto, su complejidad será O (1).
PEOR CASO:
Sucede cuando encontramos X en la última posición del array. Como se
requieren n ejecuciones del bucle mientras, la cantidad de tiempo es proporcional
a la longitud del array n, más un cierto tiempo para realizar las condiciones del
bucle mientras y para la llamada al método. Por lo tanto, la cantidad de tiempo es
de la forma an + b para ciertas constantes ay b. En notación O, O (an+b) = O
(an) = O(n).
CASO MEDIO:
Supongamos que cada elemento almacenado tiene la misma probabilidad de
ser buscado. La media se puede calcular tomando el tiempo total de encontrar
todos los elementos y dividiéndolo por n: Total = a (1 + 2 +...+n) + bn = a
(n(n+1) / 2) + bn Media = (Total / n) = a ((n+1) / 2) + b que es O(n).
4
Búsqueda binaria
EJEMPLO
5
Búsqueda mediante Transformación de Claves (Hashing)
Este método genera claves o llaves que representen de manera casi unívoca
a un documento o conjunto de datos. Este método nos permite aumentar
la velocidad de búsqueda sin necesidad de tener los elementos ordenados. Cuenta
también con la ventaja de que el tiempo de búsqueda es
prácticamente independiente del número de componentes del arreglo.
6
Si una empresa tiene 100 empleados, y si a cada empleado se le asigna un
código como número de identificación de 1 a 100, evidentemente puede existir
una correspondencia directa entre la clave y la dirección definida en un vector de
100 elementos.
7
TRUNCAMIENTO
Ignora parte de la clave y utiliza la parte restante directamente como
índice (Considerando campos no numéricos y sus códigos numéricos) .Si las
claves por ejemplo, son enteros de 8 dígitos y la tabla de transformación
tiene 1000 posiciones entonces el primero, segundo y quinto dígitos desde la
derecha pueden formar la función de conversión.
0
Clave=72588495
:
El truncamiento es un método muy rápido pero falla para distribuir las claves
de modo uniforme.
Ejemplos:
8
PLEGAMIENTO
Ejemplo 1:
Un entero de 8 dígitos se puede dividir en grupos de tres (3), tres (3) y dos(2)
dígitos, los grupos se suman y se truncan si es necesario para que estén en el rango
adecuado de índices.
Ejemplo 2:
H(4205) = 42 + 05 = 47
H(3355) = 33 + 55 = 88
H(8148) = 81 + 48 = 129 –> 129-100 =29
9
ARITMÉTICA MODULAR
Ejemplos:
12345678 --> 7
13602499 --> 1
71140205 --> 6
73062138 --> 6
Ejemplo1:
Un vector T tiene cien posiciones (0..100). Se tiene que las claves
de búsqueda de los elementos de la tabla son enteros positivos.
Si clave=234661234
Y el tamaño del rango del vector = 101. Entonces:
234661234 MOD 101 = 56
10
Ejemplo2:
Se tiene un array con 100 posiciones para guardar las claves de los
empleados. Aplicar las funciones para cada uno de los siguientes
empleados:
EJEMPLO 3:
Que se debe hacer cuando las claves son distintas y la dirección
es la misma en el caso del método de división.
11
MITAD DEL CUADRADO
Clave x x2 4 y 5
4205 176 82 025 82
7148 510 93 904 93
3350 112 22 500 22
Ejemplos:
136*136=18496 --> 84
730*730=532900 --> 29
301*301=90601 --> 06
625*625=390625 --> 06
12
Cuadro comparativo
no requiere ningún encuentre ordenado para Los registros del campo clave no necesitan estar ordenados de acuerdo a los valores del campo clave.
Toma el valor a encontrar Examina primero el Ignora parte de la consiste en la partición Convierte la clave a un entero, Consiste en calcular el
y lo compara con cada elemento central del vector, clave y utiliza la de la clave en se divide por el tamaño del cuadrado de la clave x.
uno de los valores hasta comparándolo si no es parte restante diferentes partes y la rango del índice y toma el resto La función de conversión se
que lo encuentra o divide el vector y sigue con directamente como combinación de las como resultado. La función que define como: H(x)=c
Características termina de leer el vector las subpartes, hasta que índice partes en un modo se utiliza es el MOD(módulo o Donde c se obtiene
encuentra el valor o termine conveniente (a menudo resto de la división entera). eliminando dígitos a ambos
Multiplicación) para
obtener el índice.
No encontrar en el vector No encontrar en el vector el Cuando existen Cuando la última parte Cuando el vector es de un Cuando la clave a ordenar es
el valor a buscar. valor a buscar. claves diferentes y que depende del largo tamaño definido y el resultado impar se toma el digito del
los índices del número, si es par y es mayor que ese tamaño se le medio y el anterior o se
obtenidos son las divisiones sea resta el mismo. puede tomar el siguiente,
como se definido el
algoritmo.
13
Conclusión
Debido a las propiedades reversibles que caracterizan a la aritmética
modular, es posible utilizarla en operaciones de cifrado y descifrado, al tener su
función inversa, pudiendo lograr tanto la codificación y decodificación de
información. Podemos darnos cuenta de la importancia que presenta la aritmética
modular en la seguridad, en el ámbito de la información. Es interesante también
como se complementa con las operaciones matemáticas.
En este trabajo de investigación abordamos el tema de la aritmética modular,
en conjunto con otros temas relacionados con los algoritmos de búsqueda,
exponiendo ejemplos y dando un claro ejemplo de su funcionamiento.
14