Você está na página 1de 21

Universidad Central del

Ecuador
Ingeniera, Ciencias Fsicas y Matemticas

Tema: Algoritmos de bsqueda

Integrantes:

Jessica Flores
Edison Mendoza
Byron Macas
Jennifer Jurado
Mario Quintana
Alejandra Guerrero

Investigadora
Digitador
Digitador
Investigadora
Programador
Coordinadora

INDICE
Introduccin................................................................................................................... 2
Objetivos........................................................................................................................ 3
General:......................................................................................................................... 3
Especificos:.................................................................................................................... 3
Desarrollo:..................................................................................................................... 4
Bsqueda secuencial.....................................................................................................4
Mejoras en la eficiencia de la bsqueda secuencial......................................................4
Ejemplo de bsqueda secuencial:.................................................................................5
Bsqueda secuencial con centinela...............................................................................5
Bsqueda secuencial en C............................................................................................7
Bsqueda secuencial en Visual Basic..........................................................................11
Bsqueda secuencial en JAVA.....................................................................................14
Herramienta de video Mirilliss Action...........................................................................17
Conclusiones:..............................................................................................................18
Recomendaciones:......................................................................................................19
Bibliografa:..................................................................................................................20

INTRODUCCIN
La recuperacin de la informacin es una de las aplicaciones ms importantes
de las computadoras, est relacionada con las tablas para consultas (lookup).
Estas tablas contienen una cantidad de informacin que se almacena en forma
de listas de parejas de datos, por ejemplo un diccionario con una lista de
palabras y definiciones, un catlogo con una lista de libros de informtica, una
lista de estudiantes y sus notas, etc en todos estos casos es necesario con
frecuencia buscar un elemento en una lista.

Uno de los mtodos para realizar esta bsqueda tenemos el algoritmo


secuencial, su estructura es aquella en la que una accin (instruccin) sigue a
otra en secuencia, las tareas se suceden de tal modo que la salida de una es la
entrada de la siguiente y as sucesivamente hasta el final de proceso. As
cuando hablamos de bsqueda secuencial nos referimos de la bsqueda en un
vector con un contenido indeterminado de un elemento dado de tal manera q
nosotros vamos a recorrer el vector hasta que se encuentre dicho valor o bien
hasta que se termine el recorrido del vector sin xito, por esta razn podemos
tener dos posibles resultados: o bien el elemento buscado no est en el vector
o bien si esta, en este segundo caso deberamos indicar la posicin del vector
en el que se encuentra el elemento.

OBJETIVOS
GENERAL:
1 Conocer sobre los algoritmos de bsqueda para mejorar nuestro
desarrollo, mejoramiento en la programacin y facilitar la vida del ser
humano.

ESPECIFICOS:
1 Demostrar de una manera muy sencilla la bsqueda en secuenciales por
vectores numricos o de otro tipo.
2 Utilizar esta clase de algoritmo de bsqueda secuencial para la solucin
de problemas.
3 Realizar las presentaciones de Algoritmos de bsqueda en prezi y en
power point para una mejor comprensin del tema.
4 Grabar un video del algoritmo de bsqueda secuencial en C para
conocer el funcionamiento del programa.

DESARROLLO:

Bsqueda secuencial
Supongamos una lista de elementos almacenados en un vector (array
unidimensional). El mtodo ms sencillo de buscar un elemento en un vector
es explorar secuencialmente el vector o, dicho en otras palabras, recorrer el
vector desde el primer elemento al ltimo.

Si se encuentra el elemento

buscado, visualizar un mensaje similar a Fin de bsqueda; en caso contrario,


visualizar Elemento no existe en la lista.
En otras palabras, la bsqueda secuencial compara cada elemento del vector
con el valor deseado, hasta que este encuentra o termina de leer el vector
completo.
La bsqueda secuencial no requiere ningn registro por parte del vector y, por
consiguiente, no necesita estar ordenado. El recorrido del vector se realizara
normalmente con estructuras repetitivas.
Mejoras en la eficiencia de la bsqueda secuencial
1) Muestreo de acceso
Este mtodo consiste en observar que tan frecuentemente se solicita cada
registro y ordenarlos de acuerdo a las probabilidades de acceso detectadas.
2) Movimiento hacia el frente
Este esquema consiste en que la lista de registros se reorganicen
dinmicamente. Con este mtodo, cada vez que bsqueda de una llave sea
exitosa, el registro correspondiente se mueve a la primera posicin de la lista y
se recorren una posicin hacia abajo los que estaban antes que el.
3) Transposicin
Este es otro esquema de reorganizacin dinmica que consiste en que, cada
vez que se lleve a cabo una bsqueda exitosa, el registro correspondiente se
intercambia con el anterior. Con este procedimiento, entre ms accesos tenga
el registro, ms rpidamente avanzara hacia la primera posicin. Comparado
con el mtodo de movimiento al frente, el mtodo requiere ms tiempo de
actividad para reorganizar al conjunto de registros. Una ventaja de mtodo de
4

transposicin es que no permite que el requerimiento aislado de un registro,


cambie de posicin todo el conjunto de registros. De hecho, un registro debe
ganar poco a poco su derecho a alcanzar el inicio de la lista.
4) Ordenamiento
Una forma de reducir el nmero de comparaciones esperadas cuando hay una
significativa frecuencia de bsqueda sin xito es la de ordenar los registros en
base al valor de la llave. Esta tcnica es til cuando la lista es una lista de
excepciones, tales como una lista de decisiones, en cuyo caso la mayora de
las bsquedas no tendrn xito. Con este mtodo una bsqueda sin xito
termina cuando se encuentra el primer valor de la llave mayor que el buscado,
en lugar de la final de la lista.

Ejemplo de bsqueda secuencial:

Se

tiene

un

vector

que

( n ) > 1( A [ 1 ] , A [ 2 ] , A [ 3 ] , , A [ n ] )

contiene

elementos

numricos

y se desea buscar un elemento dado t. Si el

elemento t se encuentra, visualizar un mensaje "Elemento encontrado" y otro


que diga Posicin:.
Si existe n elementos, se requerirn como media n/2 comparaciones para
encontrar un determinado elemento.
En el caso ms desfavorable se necesitaran n comparaciones.

Bsqueda secuencial con centinela


Una manera muy eficaz de realizar una bsqueda secuencial consiste en
modificar los algoritmos anteriores utilizando un elemento centinela. Este
elemento se agrega al vector final del mismo. El valor del elemento centinela
es el del argumento. El propsito de este elemento centinela A (n+1), es
significar que la bsqueda siempre tendr xito , el elemento A (n+1) sirve
como centinela y se asigna el valor de t antes de iniciar bsqueda . en cada
5

paso se evita la comparacin de i con N y , por consiguiente , este algoritmo


sea preferible a los mtodos anteriores ,concretamente el mtodo 4 si el ndice
alcanza el valor n+1 , supondra que el argumento no pertenece al vector
original y en consecuencia la bsqueda no tiene xito

Si el vector est ordenado no es necesario recorrerlo completamente.

En cuanto el valor buscado es encontrado se puede finalizar el recorrido

y en el momento en que aparece un valor mayor que el buscado tambin se


puede detener la ejecucin.

Al aplicar esto al algoritmo de bsqueda secuencial se obtiene el

algoritmo de bsqueda con centinela.

Sntesis mtodo secuencial centinela

Como se puede apreciar, la bsqueda secuencial con centinela no

precisa recorrer el vector por completo.

El caso mejor se produce cuando el elemento a buscar es el primero del

vector o menor que todos los elementos del vector. Entonces la complejidad es
O(1).

El caso peor se da cuando el elemento a buscar es el ltimo del vector o

mayor que todos los elementos del vector. Entonces la complejidad es O(n).

Por trmino medio, el algoritmo emplea del orden de n/2 iteraciones, por

lo cual la complejidad del caso medio tambin sera O(n).

Bsqueda secuencial en C
//Ingresamos Libreras
#include<stdio.h>
#include<conio.h>
//Declaramos variables globales que van a servir en todo el cdigo
int numero, vector[200], dimension, i, posiciones[200], aux;
//Funcin para generar los valores de la lista
void valores (){
printf("Ingrese el nmero de elementos de la lista: ");
scanf("%d", &dimension); //La dimensin sirve para delimitar cuantos
elementos va a tener la lista
printf("\n");
for (i=0;i<dimension;i++) //Usamos este loop para ingresar los
valores de cada elemento del vector
{
printf("-Ingrese el elemento %d de la lista: ", i+1);
scanf("%d", &vector[i]);
}
printf("\n");
}
//Funcin de bsqueda e impresin
void busqueda (){
aux=0;//Inicializamos la variable
for (i=0;i<dimension;i++){ //Usamos este loop para realizar la
bsqueda
if (numero==vector[i]){ //Se realiza una comparacin de un
valor con cada elemento del vector, cuando se encuentra el nmero se
realiza una accin en este caso que imprima la posicin del valor.
printf("El nmero se encuentra en la posicin: ");
//Imprimimos la posicin del vector.
printf("%d\n", i+1);
}
else{
aux=aux+1; //Este else lo usamos como un acumulador
que posteriormente usaremos para realizar una comparacin
}
}
if (dimension==aux){ //Con la variable aux dada un valor podemos
hacer una comparacin para realizar una accin en el caso de que no exista
el valor buscado en nuestra lista
printf("\nEl nmero no est en lista.");
}
}
//Funcin principal
int main(){
7

//Encabezado
printf("\tAlgoritmos de Busqueda Secuencial\n\n");
printf("La busqueda secuencial se realiza comparando uno por
uno\ncada elemento de una lista.\n\n");
printf("Ejemplo\n\n");
printf("-Realizar un programa en el cual se verifique la pertenencia de
un nmero\na una lista e imprimir a su posicin en ella.\n\n");
//Llamamos a la funcin valores
valores();
printf("Ingrese el nmero a buscar: ");//Ingresamos el nmero que
vamos a buscar
scanf("%d", &numero);
//Llamamos a la funcin bsqueda
bsqueda();
printf("\t\t\n\nGRACIAS\n\n");
//Hacemos que el programa se detenga
system("pause");
//damos el valor de retorno de la funcin main para acabar
return 0;
}
Esta es la primera pantalla que nos aparece al abrir el programa, est
esperando que ingresemos la dimensin del vector o elementos de la lista

Una vez ingresada la dimensin nos va a pedir que ingresemos los valores de
cada elemento del vector o lista.

Cuando ingresamos todos los elementos de la lista el programa nos pide que
ingresemos el nmero que deseamos buscar.

Despus de ingresar el elemento que se desea buscar hay tres posibles casos:
1. Que el nmero este en lista.

Que el nmero este varias veces en lista.

Que el nmero no se encuentre en la lista.

10

Bsqueda secuencial en Visual Basic


Sub Busqueda()
'Algoritmo de busqueda secuencial'
'Declaramos variables'
Dim numero, vector(200), dimension, i, posiciones(200), aux As Integer
'Encabezado'
MsgBox ("Algoritmos de Busqueda Secuencial" & vbCrLf & "La busqueda
secuencial se realiza comparando uno por uno cada elemento de una lista.")

MsgBox ("Ejemplo" & vbCrLf & "-Realizar un programa en el cual se


verifique la pertenencia de un nmero\na una lista e imprimir a su posicin
en ella.")
11

'Generamos los valores de la lista'


dimension = InputBox("Ingrese el numero de elementos de la lista: ")

i=0
For i = 0 To dimension - 1
vector(i) = InputBox("-Ingrese el elemento de la lista: ")
Next i

'Ingresamos el numero que vamos a buscar'


numero = InputBox("Ingrese el nmero a buscar: ")

'Inicializamos la variable'
aux = 0
'Busqueda e impresin'
12

'Usamos este loop para realizar la busqueda'


For i = 0 To dimension - 1
'Se realiza una comparacin de un valor con cada elemento del vector,
cuando se encuentra el nmero se realiza una accin en este caso que
imprima la posicin del valor.'
If numero = vector(i) Then
'Imprimimos la posicin del vector'
MsgBox ("El numero se encuentra en la posicin: " & (i + 1))

Else
'Este else lo usamos como un acumulador que posteriormente usaremos
para realizar una comparacin'
aux = aux + 1
End If
Next i
'Con la variable aux dada un valor podemos hacer una comparacin para
realizar una accin en el caso de que no exista el valor buscado en nuestra
lista'
If dimension = aux Then
MsgBox ("El numero no est en lista.")

End If
MsgBox ("GRACIAS")

End Sub

Bsqueda secuencial en JAVA

13

//Algoritmos de busqueda secuencial


//Java es un lenguaje orientado a objetos por lo que tenemos que crear uno para
usar las diferentes clases
//Importamos una clase que nos sirve para ingresar datos por teclados
import java.util.Scanner;
public class Algoritmos_de_busqueda_secuencial {
public static void main (String[] arg){
//Declaramos los atributos, que en C o en Vb se llaman variables
int numero, dimension, i, aux;
//Declaramos vectores
int[] vector = new int[200];
//Creamos un objeto para usar la clase "Scanner" y todos sus metodos
Scanner scan = new Scanner(System.in);
//Encabezado
System.out.println("\tAlgoritmos de Busqueda Secuencial\n");
System.out.println("La busqueda secuencial se realiza comparando uno por
uno\ncada elemento de una lista.\n\n");
System.out.println("Ejemplo\n\n");
System.out.println("-Realizar un programa en el cual se verifique la
pertenencia de un nmero\na una lista e imprimir a su posicin en ella.\n\n");
System.out.println("Ingrese el numero de elementos de la lista: ");
//La dimensin sirve para delimitar cuantos elementos va a tener la lista
dimension= scan.nextInt();

//Usamos este loop para ingresar los valores de cada elemento del vector
for (i=0 ; i<dimension ; i+=1){
System.out.println("-Ingrese el elemento "+(i+1)+" de la lista: ");
vector[i]=scan.nextInt();
}

14

//Ingresamos el numero que vamos a buscar


System.out.println("Ingrese el nmero a buscar: ");
numero=scan.nextInt();

//Inicializamos la variable
aux=0;
//Usamos este loop para realizar la busqueda
for (i=0;i<dimension;i+=1){
//Se realiza una comparacin de un valor con cada elemento del
vector, cuando se encuentra el nmero se
//realiza una accion en este caso que imprima la posicion del valor.
if (numero==vector[i]){
//Imprimimos la posicin del vector.
System.out.println("El numero se escuentra en la posicion: "+

(i+1));
}

15

else{
//Este else lo usamos como un acumulador que posteriormente
usaremos para realizar una comparacin
aux+=+1;
}
}
//Con la variable aux dada un valor podemos hacer una comparacin para
realizar una accin en el caso de que no exista el valor buscado en nuestra lista
if (dimension==aux){
System.out.println("\nEl numero no esta en lista.");
}

}
}

System.out.print("\t\t\n\nGRACIAS\n\n");

16

Herramienta de video Mirilliss Action

La herramienta que ser utilizada para realizar el video es Mirillis Action.


Se escogi esta herramienta ya que encontramos varios videos en YouTube
que recomendaban utilizarla puesto que puede grabar juegos y todo lo que se
ve en el Escritorio, as como sacar capturas JPG. Luego, los vdeos se pueden
comprimir y subir a Facebook o YouTube con un clic.
Ventajas:
o
o
o
o
o
o
o

Fcil instalacin
Graba vdeo, audio y saca capturas
Cdec propio de alto rendimiento
Exportacin a Facebook, YouTube, etc.
Benchmarking de rendimiento (FPS)
Modo de grabacin Perfect Video Match
Aceleracin de vdeo va GPU

Desventaja:
o La versin de prueba aade una marca de agua
Esta herramienta posee solo una desventaja por ser versin de prueba, por lo
dems es muy recomendada.

Conclusiones:

17

1. Este mtodo de bsqueda es muy lento. Si los valores del vector no son
nicos, para encontrar todos los valores con un valor particular, se requiere
buscar en todo el arreglo para encontrar todas las coincidencias.
2. Si el elemento buscado con frecuencia no est al principio del arreglo, la
cantidad promedio de comparaciones aumenta notablemente dado que se
requerir ms tiempo para encontrar el elemento.
3. Definitivamente, la bsqueda secuencial es el mtodo menos eficiente
porque se basa en comparar el valor que se desea buscar con cada uno de los
valores del arreglo.
4. La bsqueda secuencial es de gran utilidad cuando se tienen datos no
ordenados
5. Esta bsqueda es sencilla de implementar e intuitiva ya que consiste en
buscar de manera secuencial un elemento, es decir preguntar si el elemento
buscado es igual al primero, segundo, tercero y as sucesivamente hasta
encontrar el deseado.

Recomendaciones:

18

1. Es el mejor mtodo de bsqueda para registros desordenados y revisa nodo


(posicin) por nodo (posicin) sin brincar ninguno ( es muy seguro).
2. No es recomendable usar este mtodo cuando se tiene una gran cantidad de
datos.
3. Se recomienda que si se encuentra el elemento buscado se debe visualizar
un mensaje similar a Fin de Bsqueda o Elemento encontrado y otro que
diga posicin= en caso contrario, visualizar un mensaje similar a Elemento
no existe en la Lista. Esto para que se tenga una mejor apariencia del
programa realizado.

Bibliografa:

19

1. Joyanes, L. (2008). Fundamentos de programacin, Algoritmos, estructura


de datos y objetos. Espaa: McGraw Hill.
2. Deitel, P. y Deitel H. (2012). Como programar en Java.
3. Joyanes Aguilar, L. (2010). Programacin en C, C++, Java y UML. Mxico:
McGraw Hill.

20

Você também pode gostar