Está en la página 1de 10

UNIVERSIDAD CENTROAMERICANA

FACULTAD DE CIENCIA, TECNOLOGÍA Y AMBIENTE

INGENIERÍA EN SISTEMAS DE INFORMACIÓN

Algoritmos y Estructuras de Datos


RESULTADOS DEL ANÁLISIS ALGORÍTMICO DE
Búsqueda Binaria

Presentado por:
 Cesar Antonio Collado
 Joel Lopez
 Edvi David Uriarte Reyes

Docente:
 Ing. José Alejandro Durán García.

Managua, Nicaragua
Noviembre, 2019
Descripción del Algoritmo ................................................................................................................... 3
Implementación del Algoritmo .........................................................Error! Bookmark not defined.
Análisis de la estrategia algorítmica ................................................................................................... 3
Orden del algoritmo ............................................................................................................................ 3
Cálculo del Orden Algorítmico ............................................................................................................ 3
Análisis de Orden ................................................................................................................................ 5
Simulación del Algoritmo ......................................................................Error! Bookmark not defined.
Análisis Asintótico ............................................................................................................................... 8
El Análisis de Algoritmos y el Principio de Invarianza ..................................................................... 8
¿Qué es el Análisis Asintótico de Algoritmos? ................................................................................ 9
Descripción del problema ............................................................................................................... 9
Estudio de las Notaciones Asintóticas ............................................................................................ 9
O Grande ..................................................................................................................................... 9
Ω Omega...................................................................................................................................... 9
Θ Theta ........................................................................................................................................ 9
Conclusiones ....................................................................................................................................... 9
Bibliografía ........................................................................................................................................ 10
Introducción
Cuando deseamos encontrar cierta información en un arreglo o vector unidimensional
como el número de cedula de un ciudadano en una base de datos grande o archivos
ordenados de una biblioteca, demos utilizar métodos de búsqueda que faciliten nuestro
trabajo, pero ahorrando recursos. Esto quiere decir que si en una base de datos de miles
de usuarios no podemos buscar uno por uno porque gastamos tiempo y dinero

El método de búsqueda que da a conocer en este informe es el método de búsqueda


binario que es de alta velocidad y eficiente.

Descripción del Algoritmo

Consiste en dividir intervalos de búsqueda en dos partes, comparando el


Elemento buscado con el central. En caso de no ser iguales se redefinen
Los extremos del intervalo (según el elemento central sea mayor o menor
Que el buscado) disminuyendo el espacio de búsqueda
El proceso concluye cuando el elemento es encontrado.

Este método funciona únicamente para arreglos ordenados.

Con cada iteración del método el espacio de búsqueda se reduce a la


Mitad, por lo tanto, el número de comparaciones se reduce notablemente.
Esta disminución resulta significativa cuanto más grande sea el arreglo.

Análisis de la estrategia algorítmica

Orden del algoritmo

Cálculo del Orden Algorítmico


Se trata de calcular la ecuación T(n). Pueden incluir un poco de teoría sobre qué es la
función de tiempo. Como en todo, referenciar si usan citas textuales.

En ciencias de la computación y matemáticas, la búsqueda binaria, también conocida


como búsqueda de intervalo medio o búsqueda logarítmica, es un algoritmo de búsqueda
que encuentra la posición de un valor en un array ordenado. Compara el valor con el
elemento en el medio del array, si no son iguales, la mitad en la cual el valor no puede
estar es eliminada y la búsqueda continúa en la mitad restante hasta que el valor se
encuentre.

La búsqueda binaria es computada en el peor de los casos en un tiempo logarítmico,

realizando comparaciones, donde n es el número de elementos del arreglo y


log es el logaritmo. La búsqueda binaria requiere solamente O(1) en espacio, es decir,
que el espacio requerido por el algoritmo es el mismo para cualquier cantidad de
elementos en el array. Aunque estructuras de datos especializadas en la búsqueda
rápidas como las tablas hash pueden ser más eficientes, la búsqueda binaria se aplica a
un amplio rango de problemas de búsqueda.
Aunque la idea es simple, implementar la búsqueda binaria correctamente requiere
atención a algunos detalles como su condición de parada y el cálculo del punto medio de
un intervalo.

El rendimiento de la búsqueda binaria puede ser analizada reduciendo el algoritmo a un


árbol binario de búsqueda, donde la raíz es el elemento en el medio del arreglo, el
elemento en el medio de la primera parte del arreglo es el hijo izquierdo de la raíz y el
elemento en el medio de la segunda parte es el hijo derecho de la raíz. El resto del árbol
se construye de forma similar. Este modelo representa a la búsqueda binaria,
comenzando desde la raíz, el subárbol izquierdo o derecho son recorridos de acuerdo a si
el valor buscado es menor o mayor que el valor presente en el nodo actual, representando
la eliminación sucesiva de los elementos.7

En el peor de los casos se realizan iteraciones (del ciclo de comparaciones),


donde la notación denota la parte entera por debajo de la función. Esta cantidad de
iteraciones es alcanzada cuando la búsqueda alcanza el nivel más profundo del árbol,
equivalente a una búsqueda binaria que se reduce a un solo elemento, y en cada
iteración, siempre elimina el arreglo más pequeño de los dos si no tienen la misma
cantidad de elementos.

Como promedio, asumiendo que cada elemento es igualmente probable de ser buscado,
después que la búsqueda termine, el valor buscado será más probable de ser encontrado
en el segundo nivel del árbol. Esto es equivalente a una búsqueda binaria que completa

una iteración antes del peor de los casos, alcanzándola después de


iteraciones. Sin embargo, el árbol puede estar no balanceado, con el nivel más profundo
parcialmente completo, y equivalentemente, el arreglo puede no estar dividido
perfectamente por la búsqueda en algunas iteraciones, resultando que en la mitad de las
veces el menor subarreglo es eliminado. El promedio actual del número de iteraciones es

ligeramente mayor En el mejor de los casos, donde el


elemento del medio del arreglo es igual al valor buscado, su posición es retornada
después de una iteración. En términos de iteración, ningún algoritmo basado solamente
en comparaciones puede exhibir mejores promedios en su número de iteraciones que la
búsqueda binaria.
Análisis de Orden
Se dice que O(f(n)) define un orden de complejidad. Escogeremos como representante de

este orden a la función f(n) más sencilla del mismo. Así tendremos
Un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista
o un vector en una secuencia dada por una relación de orden, es decir, el
resultado de salida ha de ser una permutación —o reordenamiento— de la entrada
que satisfaga la relación de orden dada. Las relaciones de orden más usadas son
el orden numérico y el orden lexicográfico. Ordenamientos eficientes son
importantes para optimizar el uso de otros algoritmos (como los de búsqueda y
fusión) que requieren listas ordenadas para una ejecución rápida. También es útil
para poner datos en forma canónica y para generar resultados legibles por
humanos.
Simulación del Algoritmo

Como podemos ver en el código dentro del Main se inicializa las variables que vamos a
utilizar:

 int x, n, v[100000], sigue,izq,der,cen


Luego también hacemos uso de una estructura repetitiva FOR, para ayudar con la estética
del código, donde nos pide ingresar por consola los numero ordenados para el array.

En nuestro for inicializamos nuestra variable iterativa i en 0, esta se incrementará en 1 por


cada iteración hasta que sea igual a número n, que es la cantidad de números que
ingresamos.

Luego hacemos uso de una condicional y ciclo while que realizará la búsqueda binaria,
con el algoritmo antes explicado, importante es que el array debe estar ordenado
ascendentemente.

El algoritmo funciona de la siguiente manera

1. Se determinan un índice izq=0 y un índice der=n-1, respectivamente.


2. Se determina un índice central, cen = (izq + der) /2.
3. Evaluamos si A[medio] es igual a la clave de búsqueda, si es igual ya encontramos
la clave y devolvemos medio.
4. Si son distintos, evaluamos si A[medio] es mayor o menor que la clave, como el
arreglo está ordenado al hacer esto ya podemos descartar una mitad del arreglo
asegurándonos que en esa mitad no está la clave que buscamos.

En el momento de encontrar el dato, el programa sale del ciclo. Y de acuerdo al código se


mostrará un mensaje: “SE ENCONTRÓ EL ELEMENTO EN LA POSICIÓN” y cuando sale
del ciclo while habrá otro mensaje: “NO SE ENCONTRÓ”, el cual habla que el elemento no
existe en el arreglo.

Tiempo de ejecución con 3 diferentes ordenadores


Análisis Asintótico

El Análisis de Algoritmos y el Principio de Invarianza


Según (Mike, 2014) Dado un algoritmo y dos implementaciones distintas de un algoritmo
dado, ya sea del mismo código ejecutado por dos máquinas de distinta velocidad, como
de dos códigos diferentes que implementen el mismo método, no va a diferir más que en
una constante multiplicativa. Se dice que un algoritmo tarda un tiempo del orden de T(n) si
existen una constante real c > 0 y una implementación I del algoritmo que tarda menos
que c T(n), para todo n tamaño de la entrada.
El comportamiento de un algoritmo puede cambiar notablemente para diferentes entradas
pues para muchos programas el tiempo de ejecución es en realidad una función de la
entrada específica, y no sólo del tamaño de ésta. Así suelen estudiarse tres casos para un
mismo algoritmo: caso peor, caso mejor y caso medio.
El caso mejor corresponde al algoritmo que realiza menos instrucciones. El caso peor
corresponde al algoritmo que realiza más instrucciones, lo cual nos asegura que al menos
el algoritmo se desempeñará de esa forma. Respecto al caso medio corresponde al
algoritmo que realiza un número de instrucciones igual a la esperanza matemática de la
variable aleatoria definida por todas las posibilidades del algoritmo divididas entre 2

¿Qué es el Análisis Asintótico de Algoritmos?


Según (Anonimo, s.f.) En Análisis de algoritmos, el análisis asintótico es un método de
descripción de la limitación de comportamiento. Limitar el comportamiento se expresa en
el lenguaje de las relaciones de equivalencia. Además, el análisis asintótico se refiere a la
solución de problemas aproximadamente hasta tales equivalencias.

Descripción del problema

Estudio de las Notaciones Asintóticas


Según (Prather, s.f.) nos dice que:

O Grande
O-grande (Big-O), comúnmente escrito como O, es una notación asintótica para el peor
caso, o el techo de crecimiento para una función determinada. Si f (n) es el tiempo de
ejecución del algoritmo, y g (n) es un tiempo de complejidad arbitraria que relacionas con
el algoritmo, entonces f (n) es O(g(n)), si por cualquier constante real c (c > 0), f (n) <= c
g(n) para cada tamaño de entrada n (n > 0 ).

Ω Omega
Big-Omega, comúnmente escrito como Ω, es una notación asintótica para el mejor caso, o
el piso en el crecimiento para una función dada.
f(n) es Ω(g(n)), si para cualquier constante real c (c > 0), f(n) es >= c g(n) para cualquier
tamaño de entrada n (n > 0).

Θ Theta

Conclusiones

El método de búsqueda binaria es encarga de realizar en análisis de los primeros el


elemento central de la lista; si este es el elemento buscado entonces la búsqueda ha
terminado. El tipo de búsqueda binaria se utiliza en vectores ordenados. • Es por eso que
luego de realizar este trabajo hemos visto como los algoritmos son una de las
herramientas más complejas y aplicables en el área de la informática y el mundo de los
computadores
Bibliografía

References
Anonimo. (s.f.). https://www.studocu.com. Obtenido de
https://www.studocu.com/en/document/universidad-nacional-de-la-rioja/computacion-
ii/lecture-notes/analisis-asintotico-de-algoritmosdocx/3144339/view
Mike. (15 de Febrero de 2014). https://www.coursehero.com. Obtenido de
https://www.coursehero.com/file/p6cnjfr/Principio-de-Invarianza-Dado-un-algoritmo-y-
dos-implementaciones-distintas-de/
Prather, J. (s.f.). https://learnxinyminutes.com. Obtenido de
https://learnxinyminutes.com/docs/es-es/asymptotic-notation-es/
Slide Share(febrero del 2015).Obtenido de:
https://es.slideshare.net/santybyron1/busqueda-binaria-44807559

Universidad de Sevilla. José A. Alonso.Obtenido de:


https://www.cs.us.es/~jalonso/cursos/i1m/temas/tema-28.html

El rincón de la Programación. Alex Callejas(julio del 2013). Obtenido de:


http://elrinconprograues.blogspot.com/2013/07/busqueda-binaria-c.html

Algoritmos y Programación. Obtenido de: http://lwh.free.fr/pages/algo/tri/tri_es.htm

También podría gustarte