• No se han encontrado resultados

DEDA_U2_A1_JDWB

N/A
N/A
Protected

Academic year: 2021

Share "DEDA_U2_A1_JDWB"

Copied!
10
0
0

Texto completo

(1)

ACTIVIDAD 1. IDENTIFICACIÓN DE

MÉTODOS DE BÚSQUEDA

ALUMNO

:

J

OSÉ

D

ANIEL

W

ONG BE

(2)

Métodos búsqueda

Métodos Búsqueda

La búsqueda es una operación que tiene por objeto la localización de un elemento dentro de la estructura de datos. A menudo un programador estará trabajando con grandes cantidades de datos almacenados en arreglos y pudiera resultar necesario determinar si un arreglo contiene un valor que coincide con algún valor clave o buscado.

Siendo el array de una dimensión o lista una estructura de acceso directo y a su vez de acceso secuencial, encontramos dos técnicas que utilizan estos dos métodos de acceso, para encontrar elementos dentro de un array: búsqueda lineal y búsqueda binaria. Búsqueda Secuencial

La búsqueda secuencial es la técnica más simple para buscar un elemento en un arreglo. Consiste en recorrer el arreglo elemento a elemento e ir comparando con el valor buscado (clave). Se empieza con la primera casilla del arreglo y se observa una casilla tras otra hasta que se encuentra el elemento buscado o se han visto todas las casillas. El resultado de la búsqueda es un solo valor, y será la posición del elemento buscado o cero. Dado que el arreglo no está en ningún orden en particular, existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento, como en el último. Por lo tanto, en promedio, el programa tendrá que comparar el valor buscado con la mitad de los

(3)

elementos del arreglo.

El método de búsqueda lineal funciona bien con arreglos pequeños o para arreglos no ordenados.

Codificación:

void sequential_search(int x[100], int search_num) {

int index = 0; while((index <> {

// Loop while the number is not found and while more elements remain. if(x[index] != search_num)

{ // If current element is not the one for which we are index++; // searching, increment subscript index. }

}

return(index); }

Búsqueda Secuencial Indexada Descripción de la técnica.

Un método popular para superar las desventajas de los archivos secuenciales es el del archivo secuencial indexado; pero implica un aumento en la cantidad de espacio requerida.

Funciona de la siguiente manera:

Se reserva una tabla auxiliar llamada índice además del archivo ordenado mismo. Cada elemento en el índice consta de una llave kindex y un apuntador al registro en el archivo que corresponde a kindex. Los elementos en el índice al igual que los elementos en el archivo, deben estar ordenados en la llave. Si el índice es de un octavo del tamaño del archivo, se representa en el índice cada octavo registra el archivo.

Codificación.

Algoritmo de Búsqueda Secuencial Indexada:

PROCEDURE B_S_INDEXADA (llave:integer; var pocis:integer); Var i,n:integer;

(4)

f:boolean; begin f:=false; i:=1; while (i f:= true; else inc(i); if i=1 then linf:=1 else linf:=pindex[i-1]; if f then lsup:=pindex[i]-1 else lsup:=n; j:=linf; f:=false;

while(j<=lsup) ands (not f) do if k[j]="llave" then f:="true" else inc(j); if f then posic:="j" else posic:="0;" end; Búsqueda Binaria

(5)

La búsqueda binaria es el método más eficiente para encontrar elementos en un arreglo ordenado. El proceso comienza comparando el elemento central del arreglo con el valor buscado. Si ambos coinciden finaliza la búsqueda. Si no ocurre así, el elemento buscado será mayor o menor en sentido estricto que el central del arreglo. Si el elemento buscado es mayor se procede a hacer búsqueda binaria en el subarray superior, si el elemento buscado es menor que el contenido de la casilla central, se debe cambiar el segmento a considerar al segmento que está a la izquierda de tal sitio central.

Si los datos que se buscan están clasificados en un determinado orden, el método citado anteriormente se denomina búsqueda binaria.

La búsqueda binaria utiliza un método de `divide y vencerás ‘para localizar el valor

deseado. 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 determinar si el elemento buscado será en la primera o la segunda mitad de la lista y a continuación se repite este proceso, utilizando el elemento central de esa sub lista.

Se puede aplicar tanto a datos en listas lineales como en árboles binarios de búsqueda. Los prerrequisitos principales para la búsqueda binaria son:

· La lista debe estar ordenada en un orden específico de acuerdo al valor de la llave. · Debe conocerse el número de registros.

Algoritmo:

· Se compara la llave buscada con la llave localizada al centro del arreglo. · Si la llave analizada corresponde a la buscada fin de búsqueda si no.

· Si la llave buscada es menor que la analizada repetir proceso en mitad superior, sino en la mitad inferior.

· El proceso de partir por la mitad el arreglo se repite hasta encontrar el registro o hasta que el tamaño de la lista restante sea cero , lo cual implica que el valor de la llave buscada no esta en la lista.

El esfuerzo máximo para este algoritmo es de log2n. El mínimo de 1 y en promedio ½ log2 n.

Ventajas de la técnica.

La búsqueda binaria es un método eficiente siempre que el vector esté ordenado. En la práctica, esto suele suceder, pero no siempre. Por esta razón la búsqueda binaria exige una ordenación previa del archivo.

(6)

La búsqueda binaria proporciona un medio para reducir el tiempo requerido para buscar en una lista. Este método, sin embargo, exige que los datos estén ordenados.

Es más rápido por su recursividad, su mayor ventaja es con los archivos extensos. El código del procedimiento de esta búsqueda es corto en comparación con las demás técnicas de búsqueda.

En esencia, con una sola comparación eliminamos la mitad de la tabla; este es el método más eficiente de buscar en una lista ordenada sin emplear tablas o índices adicionales. Desventajas de la técnica.

La búsqueda binaria tiene, sin embargo, inconvenientes a resaltar:

El archivo debe estar ordenado y el almacenamiento de un archivo ordenado suele plantear problemas en las inserciones y eliminaciones de elementos.

No revisa todos los elementos del archivo, requiere que todos los elementos estén ordenados

Esta búsqueda más de uno o dos accesos si el archivo es enorme; y mantener ese archivo ordenado es muy costoso.

Principales Aplicaciones.

Ejemplo: Árbol Binario de Búsqueda:

Se distinguen 2 casos triviales con solución directa: árbol vacío (elemento no encontrado) o raíz del árbol.

Solución:

Cuando el elemento no se encuentra en la raíz, dividimos el árbol en 2 subarboles (izquierda y derecha) y aplicamos ABB, sobre aquel que nos interese (al estar ordenado solo debemos ir por una de las ramas).

La combinación de resultados es trivial: la solución del subproblema es también la del problema global. Supongamos la lista 1231 1473 1545 1834 1892

(7)

1898 elemento central 1983 2005 2446 2685 3200

Si está buscando el elemento 1983, se examina el número central 1898 en la sexta posición. Ya que 1983 es mayor que 1898, se desprecia la primera sub lista y nos centramos en la segunda 1983 2005 2446 elemento central 2685 3200

El número central de esta sub lista es 2446 y el elemento buscado es 1983 menos que 2446; eliminamos la segunda sub lista y nos queda

1983 2005

Como no hay término central elegimos el término inmediatamente anterior al término central, 1983, que es el buscado.

Se han necesitado tres comparaciones, mientras que la búsqueda secuencial hubiese necesitado siete.

Búsqueda por Hash Definición:

Hasta ahora las técnicas de localización de registros vistas, emplean un proceso de búsqueda que implica cierto tiempo y esfuerzo. El siguiente método nos permite encontrar directamente el registro buscado.

La idea básica de este método consiste en aplicar una función que traduce un conjunto de posibles valores llave en un rango de direcciones relativas. Un problema potencial

(8)

encontrado en este proceso, es que tal función no puede ser uno a uno; las direcciones

calculadas pueden no ser todas únicas, cuando R(k1 )= R(k2)

Pero : K1 diferente de K2 decimos que hay una colisión. A dos llaves diferentes que les

corresponda la misma dirección relativa se les llama sinónimos.

A las técnicas de calculo de direcciones también se les conoce como:

 Técnicas de almacenamiento disperso

 Técnicas aleatorias

 Métodos de transformación de llave - a- dirección

 Técnicas de direccionamiento directo

 Métodos de tabla Hash

 Métodos de Hashing

Pero el término mas usado es el de hashing. Al cálculo que se realiza para obtener una dirección a partir de una llave se le conoce como función hash.

Ventajas de la técnica.

1. Se pueden usar los valores naturales de la llave, puesto que se traducen internamente a direcciones fáciles de localizar

2. Se logra independencia lógica y física, debido a que los valores de las llaves son independientes del espacio de direcciones

(9)

3. No se requiere almacenamiento adicional para los índices. Desventajas de la técnica.

1. No pueden usarse registros de longitud variable 2. El archivo no esta clasificado

3. No permite llaves repetidas

(10)

Referencias

Documento similar

CUARTO.- De lo analizado en el considerando que antecede queda establecido que la Unidad de Información Pública Gubernamental y el Comité de Acceso a la Información

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

Respecto a los actos de ejecución, el artículo 291 faculta a la Comisión o al Consejo (en casos debidamente justificados y previstos en los artículos 24 y 26 del Tratado de la

Al enviar la aplicación devuelve al aspirante a la pantalla de la solicitud, pero ya se ha habilitado la opción de “Continuar” sobre la que se debe hacer clic, para avanzar

El Grado en Ingeniería Forestal y del Medio Natural comenzó a impartirse en el curso académico 2010‐2011 y prevé su total implantación en el curso 2012- 2013. Desde esa fecha se

El examen de la materia de Historia de acceso a la Universidad para mayores de 25 años consistirá en una prueba escrita, en cuya realización los aspirantes deberán