SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
ALGORITMOS DE BUSQUEDA Y
ORDENAMIENTO
Análisis de algoritmos
Búsqueda de Información
Se asocia comúnmente con tablas de consultas.
Ejemplo:
 Lista de estudiantes y sus notas.
 Funcionarios y sus remuneraciones,
 Animales y sus características, etc.
Es lógico entonces que resulte necesario realizar una búsqueda de un
“elemento en particular” dentro de una lista.
Es por ello que se han creado métodos y algoritmos
que permiten realizar una búsqueda eficiente.
Definición Formal de Búsqueda
La operación de búsqueda de un elemento “X”
en un conjunto de elementos consiste en:
1. Determinar si “X” pertenece al conjunto
y en ese caso, indicar su posición dentro de él.
2. Determinar si “X” no pertenece al conjunto.
Los Métodos más usuales de Búsqueda son:
1) Búsqueda secuencial o Lineal
2) Búsqueda Binaria
3) Búsqueda por Transformación de Claves (hash)
Internas
Externas
Estructura
de Datos
- Vectores
- MatrizEstáticas
Dinámicas
Bases de
Datos
Archivos
Lineales
No Lineales
- Pilas
- Listas
- Colas
- Árboles
- Grafos
¿ Cómo se estructuran los datos ?
TIPOS DE BUSQUEDA
• Búsqueda Lineal
• Búsqueda Binaria
• Búsqueda por transformación de
Claves(Hashing)
• Búsqueda en Textos
• Arboles de búsqueda.
BUSQUEDA LINEAL
Corresponde al método de búsqueda de un elemento dentro de un vector; es sencillo,
debido a que se explora secuencialmente el vector. Recorre el vector desde el primer
elemento hasta el último.
Si encuentra el elemento se lee el mensaje: “EXISTE EL ELEMENTO”
se le puede hasta entregar la posición del elemento(índice) y por lo tanto ha finalizado
el proceso de búsqueda.
En caso contrario el mensaje es: “EL ELEMENTO NO EXISTE”
La búsqueda secuencial compara cada elemento del vector con el
valor deseado, hasta que este se encuentre o termina de leer el
vector completo, lo que implica que no existe
Esta búsqueda no requiere ningún requisito por parte del vector,
por consiguiente no requiere que el vector este ordenado.
BUSQUEDA LINEAL
• El mejor caso(la situación óptima), es que el
registro a buscar sea el primero en ser
examinado.
• El peor caso, es cuando las claves de todos
los registros son comparados con k(el dato a
buscar)
• Caso promedio n/2 comparaciones.
BUSQUEDA BINARIA
El presente método utiliza el concepto (método), DIVIDE Y VENCERAS,
para localizar el elemento.
E l e m e n t o a
buscar es m ás
p e q u e ñ o q u e
Central , por lo
tanto la búsqueda
se retoma por el
s u b v e c t o r
izquierdo
Con este método se examina primero
el elemento central de la lista;
si éste es el elemento buscado,
entonces la búsqueda ha terminado.
En caso contrario, se determina si
el elemento buscado está en la primera
o la segunda mitad de la lista y
a continuación se repite este proceso,
utilizando el elemento central de la sublista.
Este método requiere que el vector
donde se va a buscar el elemento
se encuentre en un orden determinado
8 ELEMENTO A BUSCAR
8
4 6 8
8
8
BUSQUEDA BINARIA CON EXITO
I (izquierdo) D(Derecho)
4 6 8 10 12 14 16
Central
I(inferior) D(Derecho)
4 6 8 10 12 14 16
Central
11
ELEMENTO A BUSCAR
E l e m e n t o a
buscar es mayor
que Central, por
l o t a n t o l a
b ú s q u e d a s e
r e t o m a p o r e l
s u b v e c t o r
derecho
11
12 14 16
I C D
11
12 I, C, D
BUSQUEDA BINARIA SIN EXITO
BUSQUEDA BINARIA
• En la búsqueda binaria se reduce
sucesivamente la operación eliminando
repetidas veces la mitad de la lista restante.
• Para realizar una búsqueda Binaria la lista
debe estar ordenada de acuerdo al valor de la
clave.
• Se puede aplicar en listas lineales como en
Arboles Binarios de Búsqueda
• Se debe conocer el número de registros.
BUSQUEDA BINARIA
• El esfuerzo máximo para este algoritmo es
log2n
• El mínimo esfuerzo es 1
• El promedio1/2log2n
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define fila 5
void busqueda_binaria(int vec[fila]);
void main()
{
int vec[fila];
int i,j,x;
clrscr();
for(i=0; i<5 ;i++) //Ingreso de los datos al vector
{
printf("nIngrese el elemento %d:",i);
scanf("%d",&vec[i]);
}
busqueda_binaria(vec);
for (i=0 ;i<fila; i++){
printf("n el elemento %d del vector es %d
",i,vec[i]);}
}
PROGRAMA DE BUSQUEDA BINARIA
PROGRAMA DE BUSQUEDA BINARIA
void busqueda_bianria(int vect[fila])
{
int alto, bajo, centro;
int j,valor,v;
printf("nProceso de Busquedan");
printf("nIngrese el elemento a buscar");
scanf("%d",&valor);
alto=4; bajo=0;
centro=(bajo + alto)/2;
printf("el indice centro es:%d",centro);
while(bajo <= alto && (vect[centro] != valor))
{
if(valor < vect[centro])
alto = centro - 1;
else
bajo = centro + 1;
centro=(bajo+alto)/2;
}
if (valor == vect[centro])
printf("el elemento no existe");
else
printf("el elemento existe");
}
BUSQUEDA MEDIANTE
TRANSFORMACIÓN DE CLAVES (HASHING)
Los elementos o registros del campo clave no es necesario que estén ordenados de
acuerdo a los valores del campo clave, como se requiere en la búsqueda binaria.
Dada una clave k:
El primer paso en la operación de búsqueda es calcular su índice asociado d<--H(k).
El segundo paso necesario es verificar si el elemento con la clave k es identificado
verdaderamente por h en el vector T.
Existe una función de transformación de clave, H(k)
que convierte (k) en una dirección (d).
La función H es la función de paso o conversión de múltiples claves a direcciones.
• 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.
• En otro caso si la empresa tiene 80.000 empleados ya no se puede utilizar la
relación entre la clave y la dirección.
BUSQUEDA MEDIANTE
TRANSFORMACIÓN DE CLAVES (HASHING)
Este método consiste en la transformación de claves
(dadas numéricas o alfanuméricas) en una dirección (índice) dentro del vector.
La correspondencia entre las claves y la dirección en el vector se establece por una
dirección definida de conversión (función hash)
METODOS DE TRANSFORMACION DE
CLAVES
Existen numerosos métodos de transformación de claves:
 TRUNCAMIENTO
 PLEGAMIENTO
 ARITMETICA MODULAR
 MITAD DEL CUADRADO
345678125
FUNCION DE
CONVERSION
DE CLAVES
[0]
[1]
[J]
[98]
[99]
TABLA DE TRANSFORMACION DE CLAVES
CLAVE=45126034
CLAVE=345678125
CLAVE=4515896
CLAVE=5689235
Ignora parte de la clave y se utiliza la parte restante
directamente como índice (considerando campos no
numéricos y sus códigos numéricos.
TRUNCAMIENTO
Ejemplo:
Se tiene claves de tipo entero de 8 dígitos y para la tabla
de transformación tiene mil posiciones, entonces para la
dirección(índice) se considera: el primer, segundo y quinto
dígito de derecha forman la función de conversión.
clave:72588495 --> h(clave)=728
PLEGAMIENTO
Esta técnica consiste en la partición de la clave en
diferentes partes y la combinación de las partes en un
modo conveniente (a menudo utilizando suma o
multiplicación) para obtener el índice.
La clave x se divide en varias partes x1, x2, x3,....xn,
donde cada parte (con la única posibilidad de
excepción de la última parte, tiene el mismo número
de dígitos que la dirección especificada)
H(x)= x1 + x2 + x3 +...+ xn
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.
Se considera la clave 62538194
y el número de direcciones es 100:
H(clave)=625 + 381 + 94 =1100 se trunca
H(clave)=100
Ejemplo 2:
El número de identificación de los empleados es el
campo clave de una empresa y consta de cuatro
dígitos y las direcciones reales son 100. Se desea
calcular las direcciones correspondientes por el
método de plegamiento.
Claves: 4205, 3355, 8148
H(4205) = 42 + 05 = 47
H(3355) = 33 + 55 = 88
H(8148) = 81 + 48 = 129 --> 129-100 =29
Este método convierte la clave a un entero, se divide por el
tamaño del rango del índice y toma el resto como resultado. La
función que se utiliza es el MOD(módulo o resto de la división
entera).
H(x)= x MOD m
Donde m es el tamaño del arreglo. La mejor elección de los
módulos son los números primos.
ARITMETICA MODULAR
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.
La función de conversión H debe tomar un número arbitrario entero
positivo x y convertirlo en un entero en el rango de (0..100)
H(x)= x MOD m
Si clave=234661234 MOD 101 = 56
234661234 MOD 101 = 56
Este método consiste en calcular el cuadrado de la clave x.
La función de conversión se define como:
H(x)=c
Donde c se obtiene eliminando dígitos a ambos lados de x2.
MITAD DEL CUADRADO
Ejemplo:
Una empresa tiene ochenta empleados y cada uno de ellos
tiene un número de identificación de cuatro dígitos y el
conjunto de direcciones de memoria varía en el rango de 0
a 100. Se pide calcular las direcciones que se obtendrán al
aplicar la función de conversión por la mitad del cuadrado
de los números empleados:
x --> 4205 7148 3350
x2 --> 17682025 51093904 11222500
Por lo tanto H(x) =82 93 22
COLISIONES
La función de conversión H(x) no siempre proporciona valores
distintos puede suceder que para dos claves diferentes x1 y x2
se obtiene la misma índice(dirección). Se deben encontrar
métodos para dar solución a las colisiones que se pueden
presentar.
Ejemplo de Colisión:
•H(123445678) = 123445678 MOD 101 = 44
•H(123445880) = 123445880 MOD 101 =44
Para dos claves distintas 123445678 y 123445880; al aplicar
la función H la dirección es 44, por lo tanto ha ocurrido una
colisión.
RESOLUCION DE COLISIONES
La función de conversión H(x) no siempre proporciona valores
distintos puede suceder que para dos claves diferentes x1 y x2 se
obtiene la misma índice(dirección).
Se deben encontrar métodos para dar solución a las colisiones
que se pueden presentar.
Un método comúnmente utilizado para resolver una colisión es
cambiar la estructura del arreglo de modo que pueda alojar más
de un elemento en la misma posición. De modo que cada
posición i del vector sea por si mismo un vector capaz de
contener N elementos.
El problema que se presenta, es como saber el tamaño de N. Si
N es muy pequeño, el problema de las colisiones aparecerá
cuando aparezcan N + 1 elementos.
...
...
...
...
0
1
2
3
H-1
Encadenamiento
RESOLUCION DE COLISIONES
Otra solución corresponde a utilizar una lista enlazada o encadenada de elementos
para formar a partir de cada posición del arreglo. Cada entrada i del vector es un
puntero que apunta al elemento del principio de la lista de elementos.
La función de transformación de la clave lo convierte en la posición i.
BUSQUEDA POR
TRANSFORMACION DE CLAVES
• Este método permite hacer una búsqueda directa.
• La idea básica corresponde a aplicar una función
que traduce un conjunto de posibles valores claves
en un rango de direcciones relativas.
• El problema que se presenta corresponde a las
colisiones.
Sea clave1<>clave2=>f(clave1)=f(clave2)
• A dos claves distintas les corresponde la misma
dirección, se les denomina sinónimos
• Ventajas:
– Se pueden usar los valores naturales de las
claves.
– Se logra la independencia lógica y física, debido
a que los valores de las claves son independientes
de las direcciones.
– No se requiere espacio adicional para los índices.
• Desventajas:
– No se pueden utilizar registros de longitud
variable.
– No permite claves repetidas.
– Solo permite acceso por una clave.
FUNCIONES HASHING
• Residuo de la División:
– H(k)=k mod m, donde m es un número primo
no muy cercano a una potencia de 2
• Método de la Multiplicación:
– H(k)= en donde 0<A<1, m
se utiliza como un valor potencia de 2, para
facilitar el cálculo computacional de la función.
 1modkAm
FUNCIONES HASHING
• Por medio del Cuadrado:
– La clave es elevada al cuadrado, luego unos
dígitos específicos son extraidos de la mitad del
resultado, para constituir la dirección relativa.
Si se desea una dirección de n dígitos entonces
se trunca en los extremos, tomando los n
dígitos.(potencia de 10)
• Por Pliege:
– La clave es particionada en varias partes, cada
una de las cuales tienen el mismo tamaño
excepto la última, son plegadas y
posteriormente sumadas(potencia de 10)
METODOS PARA RESOLVER LAS
COLISIONES
• Area 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.
• Sondeo Lineal:Búsqueda secuencial desde la dirección de
origen hasta encontrar la siguiente dirección vacía.
• Doble Hashing: Se aplica una segunda hash a la clave.
• Encadenamiento de Sinònimos: Mantener una lista ligada de
registros.
• Direccionamiento por Cubetas: Asignación de bloques de
espacios.
BUSQUEDA EN TEXTO
• Consiste en la búsqueda de una
palabra(patrón) dentro de un texto.
• Se considera las siguientes convenciones:
– Sea n el tamaño del texto a donde se realizará la
búsqueda.
– Texto=a1,a2,a3,...an
– Patrón=b1,b2,b3,...bm
Ejemplo
Texto=Análisis de Algoritmos
Patrón=algo
n=22 ; m=4
ALGORITMO DE FUERZA BRUTA
• Se alinea la primera posición del patrón con la
primera posición del texto, y se comparan los
caracteres hasta finalizar el patrón; se encontró
una ocurrencia del patrón en el texto o hasta que
se encuentra una discrepancia. Si se detiene el
algoritmo por una discrepancia, se desliza el
patrón en una posición hacia la derecha y se
intenta de nuevo
• En el peor de los casos realiza O(m-n)
comparaciones de caracteres
ALGORITMO BOYER-MOORE
• La comparación se realiza de derecha a izquierda.
• Si hay una discrepancia en el último carácter del
patrón y el carácter del texto no aparece en todo el
patrón, entonces este se puede deslizar m
posiciones, sin realizar ninguna comparación extra
• No fue necesario hacer m-1 comparaciones, lo
cual se puede hacer una búsqueda con menos n
comparaciones.

Weitere ähnliche Inhalte

Was ist angesagt?

Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisionesemiru48
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busquedaJohnfornerod
 
Estructura de Datos: Recursividad
Estructura de Datos: RecursividadEstructura de Datos: Recursividad
Estructura de Datos: RecursividadYanahui Bc
 
Teoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesTeoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesErivan Martinez Ovando
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directatavo_3315_
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basicoGustavo Davila
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)Fuerza Auriazul
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 

Was ist angesagt? (20)

Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Mètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsquedaMètodos de Ordenaciòn y bùsqueda
Mètodos de Ordenaciòn y bùsqueda
 
hashing y colisiones
hashing y colisioneshashing y colisiones
hashing y colisiones
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Estructura de Datos: Recursividad
Estructura de Datos: RecursividadEstructura de Datos: Recursividad
Estructura de Datos: Recursividad
 
Teoria conjuntos
Teoria conjuntosTeoria conjuntos
Teoria conjuntos
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Teoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes FormalesTeoria de Automatas & Lenguajes Formales
Teoria de Automatas & Lenguajes Formales
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Método de ordenación por inserción directa
Método de ordenación por inserción directaMétodo de ordenación por inserción directa
Método de ordenación por inserción directa
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 

Andere mochten auch

Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion BusquedaAngie Suarez
 
Busqueda Secuencial
Busqueda SecuencialBusqueda Secuencial
Busqueda SecuencialCamilo Ruiz
 
Clase No.1 Introducción a la Programación en JAVA
Clase No.1 Introducción a la Programación en JAVAClase No.1 Introducción a la Programación en JAVA
Clase No.1 Introducción a la Programación en JAVAVictor Hugo Chavez Salazar
 
Pseint pseudocodigo
Pseint   pseudocodigoPseint   pseudocodigo
Pseint pseudocodigoFEDIMON
 
Actividad carlos molano maquinas virtuales
Actividad carlos molano maquinas virtualesActividad carlos molano maquinas virtuales
Actividad carlos molano maquinas virtualescostaconcordia
 
El liderazgo y sus estilos
El liderazgo y sus estilosEl liderazgo y sus estilos
El liderazgo y sus estilosmigdaliaycm
 
Prueba de estado periodo #2
Prueba de estado periodo #2Prueba de estado periodo #2
Prueba de estado periodo #2Leon Zuluaga
 
Construyendo marcas relevantes
Construyendo marcas relevantesConstruyendo marcas relevantes
Construyendo marcas relevantesDiana Montedoro
 
ciberbullyng
ciberbullyng ciberbullyng
ciberbullyng Luisfah
 
Die cargadores inalambricos
Die cargadores inalambricosDie cargadores inalambricos
Die cargadores inalambricosLuis Die
 
Carlos melendez hernandez_de_cordoba_1976(1)
Carlos melendez hernandez_de_cordoba_1976(1)Carlos melendez hernandez_de_cordoba_1976(1)
Carlos melendez hernandez_de_cordoba_1976(1)Melchorgutierrez
 
Ejercicios de tabla de contenidos 2
Ejercicios de tabla de contenidos   2Ejercicios de tabla de contenidos   2
Ejercicios de tabla de contenidos 2sroame24
 

Andere mochten auch (20)

Clase 1 analisis de algoritmos
Clase 1 analisis de algoritmosClase 1 analisis de algoritmos
Clase 1 analisis de algoritmos
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
Busqueda Secuencial
Busqueda SecuencialBusqueda Secuencial
Busqueda Secuencial
 
Clase No.1 Introducción a la Programación en JAVA
Clase No.1 Introducción a la Programación en JAVAClase No.1 Introducción a la Programación en JAVA
Clase No.1 Introducción a la Programación en JAVA
 
ResolucióN De Problemas
ResolucióN De ProblemasResolucióN De Problemas
ResolucióN De Problemas
 
Pseint pseudocodigo
Pseint   pseudocodigoPseint   pseudocodigo
Pseint pseudocodigo
 
1.introduccion java
1.introduccion java1.introduccion java
1.introduccion java
 
Metodo de busqueda secuencial
Metodo de busqueda secuencialMetodo de busqueda secuencial
Metodo de busqueda secuencial
 
Actividad carlos molano maquinas virtuales
Actividad carlos molano maquinas virtualesActividad carlos molano maquinas virtuales
Actividad carlos molano maquinas virtuales
 
El liderazgo y sus estilos
El liderazgo y sus estilosEl liderazgo y sus estilos
El liderazgo y sus estilos
 
Prueba de estado periodo #2
Prueba de estado periodo #2Prueba de estado periodo #2
Prueba de estado periodo #2
 
Construyendo marcas relevantes
Construyendo marcas relevantesConstruyendo marcas relevantes
Construyendo marcas relevantes
 
ciberbullyng
ciberbullyng ciberbullyng
ciberbullyng
 
Pregunta 2 3
Pregunta 2 3 Pregunta 2 3
Pregunta 2 3
 
Hekademos n16 2014 12
Hekademos n16 2014 12Hekademos n16 2014 12
Hekademos n16 2014 12
 
Lina
LinaLina
Lina
 
Die cargadores inalambricos
Die cargadores inalambricosDie cargadores inalambricos
Die cargadores inalambricos
 
Carlos melendez hernandez_de_cordoba_1976(1)
Carlos melendez hernandez_de_cordoba_1976(1)Carlos melendez hernandez_de_cordoba_1976(1)
Carlos melendez hernandez_de_cordoba_1976(1)
 
Contaminacion
ContaminacionContaminacion
Contaminacion
 
Ejercicios de tabla de contenidos 2
Ejercicios de tabla de contenidos   2Ejercicios de tabla de contenidos   2
Ejercicios de tabla de contenidos 2
 

Ähnlich wie Algoritmos de busqueda

Aritmética Modular
Aritmética ModularAritmética Modular
Aritmética Modularvvillegass
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de BúsquedaPedro Avaria
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedarehoscript
 
Búsqueda de los algoritmos
Búsqueda de los algoritmosBúsqueda de los algoritmos
Búsqueda de los algoritmosjuanitoed
 
Búsqueda de los algoritmos
Búsqueda de los algoritmosBúsqueda de los algoritmos
Búsqueda de los algoritmosjuanitoed
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hashfavi_hola
 
5. algoritmos de búsqueda
5. algoritmos de búsqueda5. algoritmos de búsqueda
5. algoritmos de búsquedaFernando Solis
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busquedaGonzalo Retamal
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hashUDG
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busquedaJuan Navarro
 
Dipersion
DipersionDipersion
DipersionUDG
 
Dipersion HASH
Dipersion HASHDipersion HASH
Dipersion HASHUDG
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacionashildir
 

Ähnlich wie Algoritmos de busqueda (20)

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
 
Metodos de Búsqueda
Metodos de BúsquedaMetodos de Búsqueda
Metodos de Búsqueda
 
Unidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busquedaUnidad 8 metodos_de_busqueda
Unidad 8 metodos_de_busqueda
 
Búsqueda de los algoritmos
Búsqueda de los algoritmosBúsqueda de los algoritmos
Búsqueda de los algoritmos
 
Búsqueda de los algoritmos
Búsqueda de los algoritmosBúsqueda de los algoritmos
Búsqueda de los algoritmos
 
Algoritmos de búsqueda
Algoritmos de búsqueda Algoritmos de búsqueda
Algoritmos de búsqueda
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hash
 
5. algoritmos de búsqueda
5. algoritmos de búsqueda5. algoritmos de búsqueda
5. algoritmos de búsqueda
 
Informe algoritmos de busqueda
Informe algoritmos de busquedaInforme algoritmos de busqueda
Informe algoritmos de busqueda
 
Dipersion hash
Dipersion hashDipersion hash
Dipersion hash
 
Algoritmos de busqueda
Algoritmos de busquedaAlgoritmos de busqueda
Algoritmos de busqueda
 
Dipersion
DipersionDipersion
Dipersion
 
Dipersion HASH
Dipersion HASHDipersion HASH
Dipersion HASH
 
Arreglos programacion
Arreglos programacionArreglos programacion
Arreglos programacion
 
Ejercicios con Python parte 05
Ejercicios con Python parte 05Ejercicios con Python parte 05
Ejercicios con Python parte 05
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
06-Funciones de búsqueda.pdf
06-Funciones de búsqueda.pdf06-Funciones de búsqueda.pdf
06-Funciones de búsqueda.pdf
 
1. vers. cap-3_tipos_dedatos
1. vers. cap-3_tipos_dedatos1. vers. cap-3_tipos_dedatos
1. vers. cap-3_tipos_dedatos
 

Mehr von Pablo Cesar Rojas Vergara (6)

Representacion grafos
Representacion grafosRepresentacion grafos
Representacion grafos
 
Tipos de problema
Tipos de problemaTipos de problema
Tipos de problema
 
Grafos 2
Grafos 2Grafos 2
Grafos 2
 
Grafos 2
Grafos 2Grafos 2
Grafos 2
 
Grafos 1
Grafos 1Grafos 1
Grafos 1
 
Análisis de algoritmo 1
Análisis de algoritmo 1Análisis de algoritmo 1
Análisis de algoritmo 1
 

Kürzlich hochgeladen

ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariamichel carlos Capillo Dominguez
 
Escrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesEscrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesmelanieteresacontrer
 
sociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre tercerosociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre terceroCEIP TIERRA DE PINARES
 
Programación Anual 2024 - CIENCIAS SOCIALES.docx
Programación Anual 2024  - CIENCIAS SOCIALES.docxProgramación Anual 2024  - CIENCIAS SOCIALES.docx
Programación Anual 2024 - CIENCIAS SOCIALES.docxJhordanBenitesSanche1
 
explicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptexplicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptjosemanuelcremades
 
Tecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxTecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxJulioSantin2
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfU2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfJavier Correa
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxFranciscoCruz296518
 
SECUENCIA DIDÁCTICA Matemática 1er grado
SECUENCIA  DIDÁCTICA Matemática 1er gradoSECUENCIA  DIDÁCTICA Matemática 1er grado
SECUENCIA DIDÁCTICA Matemática 1er gradoAnaMara883998
 
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLA
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLAEL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLA
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaLa poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaIGNACIO BALLESTER PARDO
 
Adoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAdoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAlejandrino Halire Ccahuana
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónIES Vicent Andres Estelles
 
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdfConcurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdfceeabarcia
 
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdfdiana593621
 
CARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacionCARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacionCarolVigo1
 
la forma de los objetos expresión gráfica preescolar
la forma de los objetos expresión gráfica preescolarla forma de los objetos expresión gráfica preescolar
la forma de los objetos expresión gráfica preescolarCa Ut
 

Kürzlich hochgeladen (20)

ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primaria
 
Escrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesEscrito administrativo técnico y comerciales
Escrito administrativo técnico y comerciales
 
sociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre tercerosociales ciencias segundo trimestre tercero
sociales ciencias segundo trimestre tercero
 
Programación Anual 2024 - CIENCIAS SOCIALES.docx
Programación Anual 2024  - CIENCIAS SOCIALES.docxProgramación Anual 2024  - CIENCIAS SOCIALES.docx
Programación Anual 2024 - CIENCIAS SOCIALES.docx
 
explicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.pptexplicacionsobrelasemanasanta-190411100653.ppt
explicacionsobrelasemanasanta-190411100653.ppt
 
Tecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptxTecnología educativa en la era actual .pptx
Tecnología educativa en la era actual .pptx
 
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLAEL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
EL BRILLO DEL ECLIPSE (CUENTO LITERARIO). Autor y diseñador JAVIER SOLIS NOYOLA
 
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdfU2_EA1_descargable TIC 2 SEM VIR PRE.pdf
U2_EA1_descargable TIC 2 SEM VIR PRE.pdf
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
 
SECUENCIA DIDÁCTICA Matemática 1er grado
SECUENCIA  DIDÁCTICA Matemática 1er gradoSECUENCIA  DIDÁCTICA Matemática 1er grado
SECUENCIA DIDÁCTICA Matemática 1er grado
 
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLA
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLAEL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLA
EL ECLIPSE DE LA PAZ (cuento literario). Autor y diseñador JAVIER SOLIS NOYOLA
 
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaLa poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
 
Adoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendicionesAdoración sin fin al Dios Creador por sus bendiciones
Adoración sin fin al Dios Creador por sus bendiciones
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificación
 
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdfConcurso de Innovación Pedagógica  T2  FONDEP 2024 Ccesa007.pdf
Concurso de Innovación Pedagógica T2 FONDEP 2024 Ccesa007.pdf
 
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
21 MARZO DIA INTERNACIONAL DOS BOSQUES.pdf
 
Conducta ética en investigación científica.pdf
Conducta ética en investigación científica.pdfConducta ética en investigación científica.pdf
Conducta ética en investigación científica.pdf
 
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
1° GRADO UNIDAD DE APRENDIZAJE 0 - 2024.pdf
 
CARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacionCARPETA PEDAGÓGICA 2024.docx para educacion
CARPETA PEDAGÓGICA 2024.docx para educacion
 
la forma de los objetos expresión gráfica preescolar
la forma de los objetos expresión gráfica preescolarla forma de los objetos expresión gráfica preescolar
la forma de los objetos expresión gráfica preescolar
 

Algoritmos de busqueda

  • 1. ALGORITMOS DE BUSQUEDA Y ORDENAMIENTO Análisis de algoritmos
  • 2. Búsqueda de Información Se asocia comúnmente con tablas de consultas. Ejemplo:  Lista de estudiantes y sus notas.  Funcionarios y sus remuneraciones,  Animales y sus características, etc. Es lógico entonces que resulte necesario realizar una búsqueda de un “elemento en particular” dentro de una lista. Es por ello que se han creado métodos y algoritmos que permiten realizar una búsqueda eficiente.
  • 3. Definición Formal de Búsqueda La operación de búsqueda de un elemento “X” en un conjunto de elementos consiste en: 1. Determinar si “X” pertenece al conjunto y en ese caso, indicar su posición dentro de él. 2. Determinar si “X” no pertenece al conjunto. Los Métodos más usuales de Búsqueda son: 1) Búsqueda secuencial o Lineal 2) Búsqueda Binaria 3) Búsqueda por Transformación de Claves (hash)
  • 4. Internas Externas Estructura de Datos - Vectores - MatrizEstáticas Dinámicas Bases de Datos Archivos Lineales No Lineales - Pilas - Listas - Colas - Árboles - Grafos ¿ Cómo se estructuran los datos ?
  • 5. TIPOS DE BUSQUEDA • Búsqueda Lineal • Búsqueda Binaria • Búsqueda por transformación de Claves(Hashing) • Búsqueda en Textos • Arboles de búsqueda.
  • 6. BUSQUEDA LINEAL Corresponde al método de búsqueda de un elemento dentro de un vector; es sencillo, debido a que se explora secuencialmente el vector. Recorre el vector desde el primer elemento hasta el último. Si encuentra el elemento se lee el mensaje: “EXISTE EL ELEMENTO” se le puede hasta entregar la posición del elemento(índice) y por lo tanto ha finalizado el proceso de búsqueda. En caso contrario el mensaje es: “EL ELEMENTO NO EXISTE” La búsqueda secuencial compara cada elemento del vector con el valor deseado, hasta que este se encuentre o termina de leer el vector completo, lo que implica que no existe Esta búsqueda no requiere ningún requisito por parte del vector, por consiguiente no requiere que el vector este ordenado.
  • 7. BUSQUEDA LINEAL • El mejor caso(la situación óptima), es que el registro a buscar sea el primero en ser examinado. • El peor caso, es cuando las claves de todos los registros son comparados con k(el dato a buscar) • Caso promedio n/2 comparaciones.
  • 8. BUSQUEDA BINARIA El presente método utiliza el concepto (método), DIVIDE Y VENCERAS, para localizar el elemento. E l e m e n t o a buscar es m ás p e q u e ñ o q u e Central , por lo tanto la búsqueda se retoma por el s u b v e c t o r izquierdo Con este método se examina primero el elemento central de la lista; si éste es el elemento buscado, entonces la búsqueda ha terminado. En caso contrario, se determina si el elemento buscado está en la primera o la segunda mitad de la lista y a continuación se repite este proceso, utilizando el elemento central de la sublista. Este método requiere que el vector donde se va a buscar el elemento se encuentre en un orden determinado 8 ELEMENTO A BUSCAR 8 4 6 8 8 8 BUSQUEDA BINARIA CON EXITO I (izquierdo) D(Derecho) 4 6 8 10 12 14 16 Central
  • 9. I(inferior) D(Derecho) 4 6 8 10 12 14 16 Central 11 ELEMENTO A BUSCAR E l e m e n t o a buscar es mayor que Central, por l o t a n t o l a b ú s q u e d a s e r e t o m a p o r e l s u b v e c t o r derecho 11 12 14 16 I C D 11 12 I, C, D BUSQUEDA BINARIA SIN EXITO
  • 10. BUSQUEDA BINARIA • En la búsqueda binaria se reduce sucesivamente la operación eliminando repetidas veces la mitad de la lista restante. • Para realizar una búsqueda Binaria la lista debe estar ordenada de acuerdo al valor de la clave. • Se puede aplicar en listas lineales como en Arboles Binarios de Búsqueda • Se debe conocer el número de registros.
  • 11. BUSQUEDA BINARIA • El esfuerzo máximo para este algoritmo es log2n • El mínimo esfuerzo es 1 • El promedio1/2log2n
  • 12. #include<stdio.h> #include<conio.h> #include<stdlib.h> #define fila 5 void busqueda_binaria(int vec[fila]); void main() { int vec[fila]; int i,j,x; clrscr(); for(i=0; i<5 ;i++) //Ingreso de los datos al vector { printf("nIngrese el elemento %d:",i); scanf("%d",&vec[i]); } busqueda_binaria(vec); for (i=0 ;i<fila; i++){ printf("n el elemento %d del vector es %d ",i,vec[i]);} } PROGRAMA DE BUSQUEDA BINARIA
  • 13. PROGRAMA DE BUSQUEDA BINARIA void busqueda_bianria(int vect[fila]) { int alto, bajo, centro; int j,valor,v; printf("nProceso de Busquedan"); printf("nIngrese el elemento a buscar"); scanf("%d",&valor); alto=4; bajo=0; centro=(bajo + alto)/2; printf("el indice centro es:%d",centro); while(bajo <= alto && (vect[centro] != valor)) { if(valor < vect[centro]) alto = centro - 1; else bajo = centro + 1; centro=(bajo+alto)/2; } if (valor == vect[centro]) printf("el elemento no existe"); else printf("el elemento existe"); }
  • 14. BUSQUEDA MEDIANTE TRANSFORMACIÓN DE CLAVES (HASHING) Los elementos o registros del campo clave no es necesario que estén ordenados de acuerdo a los valores del campo clave, como se requiere en la búsqueda binaria. Dada una clave k: El primer paso en la operación de búsqueda es calcular su índice asociado d<--H(k). El segundo paso necesario es verificar si el elemento con la clave k es identificado verdaderamente por h en el vector T. Existe una función de transformación de clave, H(k) que convierte (k) en una dirección (d). La función H es la función de paso o conversión de múltiples claves a direcciones.
  • 15. • 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. • En otro caso si la empresa tiene 80.000 empleados ya no se puede utilizar la relación entre la clave y la dirección. BUSQUEDA MEDIANTE TRANSFORMACIÓN DE CLAVES (HASHING) Este método consiste en la transformación de claves (dadas numéricas o alfanuméricas) en una dirección (índice) dentro del vector. La correspondencia entre las claves y la dirección en el vector se establece por una dirección definida de conversión (función hash)
  • 16. METODOS DE TRANSFORMACION DE CLAVES Existen numerosos métodos de transformación de claves:  TRUNCAMIENTO  PLEGAMIENTO  ARITMETICA MODULAR  MITAD DEL CUADRADO
  • 17. 345678125 FUNCION DE CONVERSION DE CLAVES [0] [1] [J] [98] [99] TABLA DE TRANSFORMACION DE CLAVES CLAVE=45126034 CLAVE=345678125 CLAVE=4515896 CLAVE=5689235
  • 18. Ignora parte de la clave y se utiliza la parte restante directamente como índice (considerando campos no numéricos y sus códigos numéricos. TRUNCAMIENTO Ejemplo: Se tiene claves de tipo entero de 8 dígitos y para la tabla de transformación tiene mil posiciones, entonces para la dirección(índice) se considera: el primer, segundo y quinto dígito de derecha forman la función de conversión. clave:72588495 --> h(clave)=728
  • 19. PLEGAMIENTO Esta técnica consiste en la partición de la clave en diferentes partes y la combinación de las partes en un modo conveniente (a menudo utilizando suma o multiplicación) para obtener el índice. La clave x se divide en varias partes x1, x2, x3,....xn, donde cada parte (con la única posibilidad de excepción de la última parte, tiene el mismo número de dígitos que la dirección especificada) H(x)= x1 + x2 + x3 +...+ xn
  • 20. 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. Se considera la clave 62538194 y el número de direcciones es 100: H(clave)=625 + 381 + 94 =1100 se trunca H(clave)=100
  • 21. Ejemplo 2: El número de identificación de los empleados es el campo clave de una empresa y consta de cuatro dígitos y las direcciones reales son 100. Se desea calcular las direcciones correspondientes por el método de plegamiento. Claves: 4205, 3355, 8148 H(4205) = 42 + 05 = 47 H(3355) = 33 + 55 = 88 H(8148) = 81 + 48 = 129 --> 129-100 =29
  • 22. Este método convierte la clave a un entero, se divide por el tamaño del rango del índice y toma el resto como resultado. La función que se utiliza es el MOD(módulo o resto de la división entera). H(x)= x MOD m Donde m es el tamaño del arreglo. La mejor elección de los módulos son los números primos. ARITMETICA MODULAR 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. La función de conversión H debe tomar un número arbitrario entero positivo x y convertirlo en un entero en el rango de (0..100) H(x)= x MOD m Si clave=234661234 MOD 101 = 56 234661234 MOD 101 = 56
  • 23. Este método consiste en calcular el cuadrado de la clave x. La función de conversión se define como: H(x)=c Donde c se obtiene eliminando dígitos a ambos lados de x2. MITAD DEL CUADRADO Ejemplo: Una empresa tiene ochenta empleados y cada uno de ellos tiene un número de identificación de cuatro dígitos y el conjunto de direcciones de memoria varía en el rango de 0 a 100. Se pide calcular las direcciones que se obtendrán al aplicar la función de conversión por la mitad del cuadrado de los números empleados: x --> 4205 7148 3350 x2 --> 17682025 51093904 11222500 Por lo tanto H(x) =82 93 22
  • 24. COLISIONES La función de conversión H(x) no siempre proporciona valores distintos puede suceder que para dos claves diferentes x1 y x2 se obtiene la misma índice(dirección). Se deben encontrar métodos para dar solución a las colisiones que se pueden presentar. Ejemplo de Colisión: •H(123445678) = 123445678 MOD 101 = 44 •H(123445880) = 123445880 MOD 101 =44 Para dos claves distintas 123445678 y 123445880; al aplicar la función H la dirección es 44, por lo tanto ha ocurrido una colisión.
  • 25. RESOLUCION DE COLISIONES La función de conversión H(x) no siempre proporciona valores distintos puede suceder que para dos claves diferentes x1 y x2 se obtiene la misma índice(dirección). Se deben encontrar métodos para dar solución a las colisiones que se pueden presentar. Un método comúnmente utilizado para resolver una colisión es cambiar la estructura del arreglo de modo que pueda alojar más de un elemento en la misma posición. De modo que cada posición i del vector sea por si mismo un vector capaz de contener N elementos. El problema que se presenta, es como saber el tamaño de N. Si N es muy pequeño, el problema de las colisiones aparecerá cuando aparezcan N + 1 elementos.
  • 26. ... ... ... ... 0 1 2 3 H-1 Encadenamiento RESOLUCION DE COLISIONES Otra solución corresponde a utilizar una lista enlazada o encadenada de elementos para formar a partir de cada posición del arreglo. Cada entrada i del vector es un puntero que apunta al elemento del principio de la lista de elementos. La función de transformación de la clave lo convierte en la posición i.
  • 27. BUSQUEDA POR TRANSFORMACION DE CLAVES • Este método permite hacer una búsqueda directa. • La idea básica corresponde a aplicar una función que traduce un conjunto de posibles valores claves en un rango de direcciones relativas. • El problema que se presenta corresponde a las colisiones. Sea clave1<>clave2=>f(clave1)=f(clave2) • A dos claves distintas les corresponde la misma dirección, se les denomina sinónimos
  • 28. • Ventajas: – Se pueden usar los valores naturales de las claves. – Se logra la independencia lógica y física, debido a que los valores de las claves son independientes de las direcciones. – No se requiere espacio adicional para los índices. • Desventajas: – No se pueden utilizar registros de longitud variable. – No permite claves repetidas. – Solo permite acceso por una clave.
  • 29. FUNCIONES HASHING • Residuo de la División: – H(k)=k mod m, donde m es un número primo no muy cercano a una potencia de 2 • Método de la Multiplicación: – H(k)= en donde 0<A<1, m se utiliza como un valor potencia de 2, para facilitar el cálculo computacional de la función.  1modkAm
  • 30. FUNCIONES HASHING • Por medio del Cuadrado: – La clave es elevada al cuadrado, luego unos dígitos específicos son extraidos de la mitad del resultado, para constituir la dirección relativa. Si se desea una dirección de n dígitos entonces se trunca en los extremos, tomando los n dígitos.(potencia de 10) • Por Pliege: – La clave es particionada en varias partes, cada una de las cuales tienen el mismo tamaño excepto la última, son plegadas y posteriormente sumadas(potencia de 10)
  • 31. METODOS PARA RESOLVER LAS COLISIONES • Area 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. • Sondeo Lineal:Búsqueda secuencial desde la dirección de origen hasta encontrar la siguiente dirección vacía. • Doble Hashing: Se aplica una segunda hash a la clave. • Encadenamiento de Sinònimos: Mantener una lista ligada de registros. • Direccionamiento por Cubetas: Asignación de bloques de espacios.
  • 32. BUSQUEDA EN TEXTO • Consiste en la búsqueda de una palabra(patrón) dentro de un texto. • Se considera las siguientes convenciones: – Sea n el tamaño del texto a donde se realizará la búsqueda. – Texto=a1,a2,a3,...an – Patrón=b1,b2,b3,...bm Ejemplo Texto=Análisis de Algoritmos Patrón=algo n=22 ; m=4
  • 33. ALGORITMO DE FUERZA BRUTA • Se alinea la primera posición del patrón con la primera posición del texto, y se comparan los caracteres hasta finalizar el patrón; se encontró una ocurrencia del patrón en el texto o hasta que se encuentra una discrepancia. Si se detiene el algoritmo por una discrepancia, se desliza el patrón en una posición hacia la derecha y se intenta de nuevo • En el peor de los casos realiza O(m-n) comparaciones de caracteres
  • 34. ALGORITMO BOYER-MOORE • La comparación se realiza de derecha a izquierda. • Si hay una discrepancia en el último carácter del patrón y el carácter del texto no aparece en todo el patrón, entonces este se puede deslizar m posiciones, sin realizar ninguna comparación extra • No fue necesario hacer m-1 comparaciones, lo cual se puede hacer una búsqueda con menos n comparaciones.