35
FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN ESTRUCTURA DE DATOS Pamela Vásquez Costales

Cap VIII, ESTRUCTURAS LINEALES.pdf

Embed Size (px)

Citation preview

FACULTAD DE INGENIERÍA

ESCUELA DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN

ESTRUCTURA DE DATOS

Pamela Vásquez Costales

UNIDAD II

CAPÍTULO 8

ESTRUCTURAS DE DATOS LINEALES PARA LA BÚSQUEDA DE LA

INFORMACIÓN

ESTRUCTURAS DE DATOS LINEALES

Objetivos

O Comprender el concepto de búsqueda y su importancia en múltiples aplicaciones computacionales.

O Describir el algoritmo de la búsqueda secuencial.

Objetivos

O Describir el algoritmo de la búsqueda binaria, distinguiendo claramente sus ventajas.

O Implantar los algoritmos de búsqueda en estructuras lineales que utilizan los dos tipos de representación (por posiciones y por ligas).

Objetivos

O Entender las ventajas y desventajas de los algoritmos de búsqueda, según la representación de la estructura y en conjunto con las operaciones de inserción y eliminación de elementos.

¿Por qué es importante la búsqueda de información?

Uno de los propósitos de la computadora es que sirva de medio para el almacenamiento de grandes volúmenes de información, lo que

implica la existencia de mecanismos para accesar eficientemente a esta

última.

Los mecanismos de acceso mas comunes requieren realizar una

búsqueda, de ahí que este concepto, aunado al de almacenar la información en una estructura de datos eficiente, es

de suma importancia en el ámbito computacional.

¿Cómo realizar eficientemente una búsqueda?

Imagine que tiene que buscar un teléfono en el directorio. ¿Qué pasaría

si el directorio no tuviera la información ordenada? Lo más seguro es que tardaría días, semanas o meses

buscando.

Podemos deducir que un requisito importante para que el proceso de

búsqueda se realice en forma eficiente es que la información esté ordenada, por lo que se requiere plantear una

representación y un método de acceso para que la información se almacene

ordenadamente y se facilite el proceso de búsqueda.

Para ordenar la información es necesario realizar el ordenamiento según uno (o varios) de los campos que conforman cada registro de in-

formación. El campo que determina el ordenamiento se denomina llave, ya que distingue de manera única a cada

registro.

La llave puede ser simple, si se forma con un solo campo (como la matrícula

de un alumno en la universidad ) o compuesta, si se forma por varios

campos (nombre, apellido y dirección de una persona), por lo que en una

estructura de datos para la búsqueda de información no se guardará

información repetida.

¿Qué opciones de representación en memoria existen para una estructura de datos para la búsqueda de información?

Si se desea utilizar una estructura temporal y limitada, para obtener

accesos rápidos, se deberá pensar en memoria principal.

Si se desea utilizar una estructura permanente e ilimitada para almacenar grandes volúmenes de información, se deberá pensar en memoria secundaria. Esto lleva a ligar el concepto con lo que en realidad, es la implementación de

un sistema de base de datos.

Posibles representaciones lineales en memoria principal

En memoria estática se puede utilizar un arreglo que guarde la información

en forma ordenada. Esta representación, típicamente, se conoce

con el nombre de tabla.

En memoria dinámica se puede utilizar una lista encadenada que guarde

ordenadamente la información. Esta representación, generalmente, se llama

lista ordenada.

En ambos casos, y analizando estas representaciones como un TDA, las

operaciones básicas necesarias para la estructura serían: inserción,

eliminación, actualización y consulta de un elemento. Se puede observar que estas operaciones requieren realizar búsquedas para ubicar la información

en la que se va a trabajar, por lo que la búsqueda se vuelve un proceso

fundamental en estos TDA.

En ambos casos, y analizando estas representaciones como un TDA, las

operaciones básicas necesarias para la estructura serían: inserción,

eliminación, actualización y consulta de un elemento. Se puede observar que estas operaciones requieren realizar búsquedas para ubicar la información

en la que se va a trabajar, por lo que la búsqueda se vuelve un proceso

fundamental en estos TDA.

¿Cómo se puede implementar el proceso de búsqueda en una

estructura lineal?

Hay dos algoritmos básicos para implementar este proceso:

La búsqueda secuencial es el algoritmo más obvio y el que tiene una

implantación intuitiva. Consiste en comparar a partir del primer elemento

de la estructura, secuencialmente, hasta que el elemento buscado se encuentra, o un elemento mayor al

buscado (en cuyo caso se puede dejar de buscar, pues los elementos restantes son mayores al estar

ordenada la información, y es evidente que el elemento por buscar no existe).

Este algoritmo no es apropiado cuando se tiene una tabla con mucha

información, ya que, en el peor caso, este algoritmo requiere realizar n

comparaciones (donde n es la cantidad de elementos).

La búsqueda binaria consiste en dividir sucesivamente la estructura en mitades, descartando del proceso de

búsqueda la mitad en que no se puede encontrar el elemento que se busca. El proceso parte la estructura en mitades

cada vez más pequeñas, lo que asegura que tarde o temprano se

encuentre el elemento buscado o bien, se decide que el elemento no se

encontró.

Este algoritmo tiene un comportamiento eficiente si lo comparamos con la búsqueda secuencial. Está comprobado

matemáticamente que, para este algoritmo, el peor caso requiere

realizar log2 n + 1 comparaciones (donde n es la cantidad de elementos

en la estructura).

Por lo tanto, para grandes cantidades de información, este algoritmo es más

apropiado.

Algoritmo de búsqueda binaria

O Encontrar el elemento de la mitad de la tabla.

O Si su valor es igual a la llave buscada: se termina y se reporta que 9 hubo éxito en la búsqueda.

O Si no, se toma la mitad de la tabla apropiada según el valor buscado y se repite este proceso hasta llegar a un segmento de tabla que contenga sólo un elemento.

O Si el último elemento verificado en la tabla no es igual al valor buscado, se termina y se reporta el fracaso en la búsqueda.

¿Qué ventajas y desventajas ofrece la representación de una tabla en

memoria estática?

La principal ventaja es que el algoritmo de la búsqueda binaria se puede

implementar fácilmente, considerando que las mitades se pueden calcular con base en los índices de un arreglo, por lo tanto, el proceso de búsqueda es

eficiente.

Sin embargo, ya que los algoritmos de búsqueda presuponen que la

información está compactada (no hay huecos en el arreglo), el proceso para

insertar y borrar información en la tabla se vuelve ineficiente.

Analizando la implementación bajo estas consideraciones, la inserción de

un elemento implica hacer un hueco en el arreglo, recorriendo todos los

elementos que se encuentren, a partir de esa posición, una posición hacia

abajo.

Por otro lado, la eliminación de un elemento, de la misma manera, para

no dejar un hueco al borrar el elemento, implica recorrer todos los elementos una posición hacia arriba

como indica la siguiente figura:

¿Qué ventajas y desventajas ofrece la representación de una lista

ordenada en memoria dinámica?

Definitivamente, el problema de los corrimientos de información, que

apareció como una desventaja en una tabla, no es una característica propia

de una estructura que utiliza encadenamientos,

por lo que, comparativamente, la eficiencia en las operaciones de

inserción y eliminación de elementos es una ventaja de esta representación.

Sin embargo, la única estrategia de búsqueda que se puede aplicar sobre esta representación es la búsqueda

secuencial, debido a que la información está almacenada en forma dispersa.

El algoritmo de la búsqueda binaria, aunque se puede implantar en esta

representación, se volvería ineficiente, pues el cálculo de las mitades en una lista implicaría recorrer sus elementos

desde el inicio.

El algoritmo de la búsqueda binaria, aunque se puede implantar en esta

representación, se volvería ineficiente, pues el cálculo de las mitades en una lista implicaría recorrer sus elementos

desde el inicio.

Por lo tanto, se puede concluir que ninguna de las dos propuestas de representación lineal cumplen, al

mismo tiempo, con las condiciones de eficiencia (inserción, eliminación y

búsqueda). Esto nos lleva a suponer que se necesita una estructura de

datos diferente que cumpla con ambas características, como se estudiará en el

siguiente capítulo.

EJERCICIOS CAPÍTULO VII

1. Defina los siguientes conceptos: O Tabla

O Búsqueda Secuencial

O Búsqueda Binaria