Upcoming SlideShare
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Standard text messaging rates apply

# Algoritmos de busqueda

195

Published on

Análisis de Algoritmos

Análisis de Algoritmos

Published in: Education
0 Likes
Statistics
Notes
• Full Name
Comment goes here.

Are you sure you want to Yes No
• Be the first to comment

• Be the first to like this

Views
Total Views
195
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
0
0
Likes
0
Embeds 0
No embeds

No notes for slide

### Transcript

• 1. SEDE CONCEPCI&#xD3;N TALCAHUANO ALGORITMOS DE BUSQUEDA Asignatura An&#xE1;lisis de Algoritmos Integrantes: Mar&#xED;a Concha Jara Arthur Morales Ruiz Rodrigo Sep&#xFA;lveda Castro Docente: Profesora Pilar Pardo H Fecha: 17 abril de 2014
• 2. INDICE. 1. INTRODUCCION.............................................................................................. 3 2. ALGORITMOS DE B&#xFA;SQUEDA ....................................................................... 4 2.1 B&#xFA;squeda lineal.......................................................................................... 4 2.2 B&#xFA;squeda binaria ....................................................................................... 8 2.3 B&#xFA;squeda mediante transformaci&#xF3;n de claves (Hashing) ........................ 10 2.3.1 Truncamiento..................................................................................... 10 2.3.2 Plegamiento....................................................................................... 11 2.3.3 Aritm&#xE9;tica modular............................................................................. 12 2.3.4 Mitad cuadrado.................................................................................. 13 3. CONCLUSION............................................................................................. 14
• 3. 1. INTRODUCCI&#xD3;N En este trabajo, se ver&#xE1;n las t&#xE9;cnicas de b&#xFA;squeda Lineal, Binaria, B&#xFA;squeda mediante transformaciones de claves Hashing: Truncamiento, Plegamiento, Aritm&#xE9;tica Modular y Mitad Cuadrado. En cada una se mencionan su descripci&#xF3;n, sus ventajas y desventajas, y algunas aplicaciones de ellas. Algoritmo de b&#xFA;squeda. Un algoritmo de b&#xFA;squeda es aquel que est&#xE1; dise&#xF1;ado para localizar un elemento concreto dentro de una estructura de datos. Consiste en solucionar un problema de existencia o no de un elemento determinado en un conjunto finito de elementos, es decir, si el elemento en cuesti&#xF3;n pertenece o no a dicho conjunto, adem&#xE1;s de su localizaci&#xF3;n dentro de &#xE9;ste. Este problema puede reducirse a devolver la existencia de un n&#xFA;mero en un vector. Un algoritmo de b&#xFA;squeda es un algoritmo que acepta un argumento a y trata de encontrar un registro cuya llave sea a. El algoritmo puede dar como resultado el registro entero o, lo que es m&#xE1;s com&#xFA;n, un apuntador a dicho registro. Si la b&#xFA;squeda es infructuosa, con mucha frecuencia, es deseable agregar un nuevo registro con dicho argumento como llave. Un algoritmo que haga esto se le llama tabla b&#xFA;squeda o diccionario.
• 4. 2. ALGORITMOS DE B&#xDA;SQUEDA 2.1 B&#xFA;squeda lineal Consiste en recorrer y examinar cada uno de los elementos del array hasta encontrar el o los elementos buscados, o hasta que se han mirado todos los elementos del array. Este es el m&#xE9;todo de b&#xFA;squeda m&#xE1;s lento, pero si nuestra informaci&#xF3;n se encuentra completamente desordenada es el &#xFA;nico que nos podr&#xE1; ayudar a encontrar el dato que buscamos. El siguiente algoritmo ilustra un esquema de implementaci&#xF3;n del algoritmo de b&#xFA;squeda secuencial: for(i=j=0;i&lt;N;i++) if(array[i]==elemento) { solucion[j]=i; j++; } Este algoritmo se puede optimizar cuando el array est&#xE1; ordenado, en cuyo caso la condici&#xF3;n de salida cambiar&#xED;a a:
• 5. for(i=j=0;array[i]&lt;=elemento;i++) O cuando s&#xF3;lo interesa conocer la primera ocurrencia del elemento en el array: for(i=0;i&lt;N;i++) if(array[i]==elemento) break; En este &#xFA;ltimo caso, cuando s&#xF3;lo interesa la primera posici&#xF3;n, se puede utilizar un centinela, esto es, dar a la posici&#xF3;n siguiente al &#xFA;ltimo elemento de array el valor del elemento, para estar seguro de que se encuentra el elemento, y no tener que comprobar a cada paso si seguimos buscando dentro de los l&#xED;mites del array: array[N]=elemento; for(i=0;;i++) if(array[i]==elemento) break; Si al acabar el bucle, i vale N esto indica que no se encontr&#xF3; el elemento. El n&#xFA;mero medio de comparaciones que hay que hacer antes de encontrar el elemento buscado es de (N+1)/2. Complejidad de la B&#xFA;squeda Lineal. (A) MEJOR CASO: El algoritmo de b&#xFA;squeda lineal termina tan pronto como encuentra el elemento buscado en el array. Si tenemos suerte, puede ser que la primera posici&#xF3;n examinada contenga el elemento que buscamos, en cuyo caso el algoritmo informar&#xE1; que tuvo &#xE9;xito despu&#xE9;s de una sola comparaci&#xF3;n. Por tanto, la complejidad en este caso ser&#xE1; O(1).