Estructuras II Estructura de Datos. Es una colección logica de elementos que se caracterizan por las operaciones de acceso utilizados para recuperar los elementos individuales. Principales Caracteristicas: a)Las E.D. pueden "descomponerse" b)La organización determina el acceso a los elementos. c)El manejo de las Estructuras de datos pueden "encapsularse". Tipos de Estructura de Datos: Simples y complejos. RECURSIVIDAD... Tecnica que permite que un subprogama se llama asi mismo para resolver una versión más pequeña que su problema original. Ejemplo. Torres de Hanoi....http://www.psicomed.com/juegos/hanoi/jg_hanoi.htm DIVIDE Y VENCERAS... Puede definirse como el metodo de resolver un problema dividiendo en 2 o mas subproblemas, cada uno semejante al original pero de menores dimensiones. Introduccion a los algoritmos. ¿QUE ES UN ALGORITMO? Es un conjunto de reglas para efectuar algún cálculo, bien sea a mano o más frecuentemente en una maquina. Ejemplo.. Métodos sistemáticos para calcular un resultado como Suma, Resta, Multiplicación y Dividir numeros. Es un conjunto de reglas para calcular la respuesta correcta a algún problema. Cuando nos disponemos a resolver un problema es posible que haya toda una gama de algoritmos. ¿Cual de ellos hay que utilizar? •Dependiendo de nuestras prioridades y de los límites del equipo que esten disponibles para nosotros. •El que requiera Menos tiempo •El que utiliza menos espacio. •El más fácil de programar. •Etc. Página No.1 Estructuras II La respuesta puede variar: •Tales como los no. Implicados •La forma en que se presenta el problema •La velocidad y capacidad de almacenamiento del equipo de computación disponible. •Ninguno de los casos---Nuevo La solución de un problema se puede expresar mediante un algoritmo. Problema ------> Diseño del Algoritmo-----> Programa de Computadora. La definición de un algoritmo debe escribir tres partes: Entrada, Proceso y Salida. Sus Caracteristicas fundamentales son: 1) Debe ser correcto. 2) Debe ser preciso. 3) Debe estar definido. 4) Debe ser finito. 5) Además debe ser legible,eficiente,modular, estructurado, no ambiguo y de ser posible que se desarrolle en el menor tiempo posible. IMPORTANCIA. En la ciencia de la computación y en la programación, los algoritmos son más importantes que los lenguajes de programación o las computadoras. Un lenguaje de programación es tan solo un medio para expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que el algortimo se ejecute y se efectué el proceso correspondiente. Es así que los algoritmos es la base de toda instrucción que recibe las computadoras, son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puedwe expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta, sin embargo el algoritmo siempre será el mismo. EFICIENCIA DE LOS ALGORITMOS. - Para seleccionar un algoritmo consiste en programar las técnicas competidoras e ir probándolas en distintos casos con ayuda de una Página No.2 Estructuras II computadora. - Determinar matemáticamente la cantidad de recursos necesarios para cada uno de los algoritmos como función del tamaño de los casos considerados. Los recursos que mas nos interesan son : * Tiempo de Ejecusión. * Espacio de Almacenamiento. En la eficiencia se toma en cuenta: -No. de Comparaciones. (Esta en función del arreglo- Orden de Magnitud)La O-Grande esta en función de N-Tamaño del problema.. -Los ciclos y las veces que se llaman las instrucciones. Tiempos de Ejecusión de un Programa. --medición de tiempos de ejecusión. Depende de los siguientes factores: - Los datos de entrada al programador. - La calidad del código generado por el compilador utilizado para crear el programa objeto. - La naturaleza y rapidez de las instrucciones de la máquina empleadas en la ejecusión del programa. - La complejidad de tiempo del algoritmo base del programa. --Notación asintótica OGrande. Mide el tiempo de ejecusión numero de veces que se ejecuta una instrucción dada dentro de un programa. Algoritmia. Es la ciencia que nos permite evaluar el efecto de estos diferentes factores externos sobre los algoritmos disponibles. • Es la ciencia que nos indica la forma de diseñar un nuevo algoritmo para una tarea concreta. Página No.3 Estructuras II Introduccion a los metodos de ordenacion. ORDENAR. Significa reagrupar o reorganizar un conjunto de datos u objetos en una secuencia especifica. Los procesos de ordenacion y busqueda son algo frecuente en nuestras vidas. Vivimos en un mundo desarrollado, automatizado, acelerado, donde la informacion representa un elemento de vital importancia. La sociedad debe estar informada y por lo tanto el busar y recuperar informacion es ahora una necesidad. La operacion de busqueda para recuperar informacion normalmente se hace sobre elementos ya ordenados, lo demuestra que si hay elementos que buscar y recuperarse el proceso de ordenacion estara presente. Los objetos ordenados aparecen por doquier. Directorios telefonicos, registros de pacientes de un hospital, etc. Ordenar significa permutar estos elementos de tal forma que los mismos queden en orden prestablecido. ejemplo: Ascendente o Descendente Existen 2 categorias. (Ordenacion de arreglos y ordenacion de archivos.) -Ordenacion Interna Los elementos o componentes del arreglo se encuentran en memoria principal de la computadora. Metodos Directos (n2) -Sus programas son cortos -De facil elaboracion y comprension -Son ineficientes cuando N ( El No. de elementos del arreglo) es medio o grande. SE UTILIZA: Cuando N es pequeno. Por intercambio Por insercion Metodos Logaritmicos(n*log n) -Son mas complejos que los directos -requieren de menos comparaciones y Por Seleccion movimientos para ordenar sus elementos pero su elaboracion y comprension resulta mas sofisticada y abstracta. SE UTILIZA: Cuando N es medio o grande -Ordenacion Externa Los elementos o componentes se encuentran en archivos que estan ordenados en dispositivos de almacenamiento secundario. Ejemplo discos, cintas, etc. Intercalacion de archivos Ordenacion de archivos. -Ordenacion X mezcla directa -Ordenacion X mezcla equilibrada Página No.4 Estructuras II Introduccion a los metodos de busqueda. Una de las operaciones mas importantes en el procesamiento de informacion: la busqueda permite recuperar datos previamente almacenados. El resultado que puede arrojar esta operacion es exito, si se encuentra el elemento buscado, o fracaso en otras circunstancias. La busqueda es una actividad relevante en la vida. Es necesario estar informados por lo tanto, buscar y recuperar informacion, se hacen tareas esenciales, se buscan numeros telefonicos en directorios, ofertas laborales en un periodico, libros, biblioteca, etc. La busqueda son generalmente sobre datos que ya estan ordenados. pero tambien se pueden hacer sobre elementos desordenados ejemplo: la localizacion de una ciudad dentro de un mapa. En el primer caso de que los elementos esten ordenados la busqueda sera mas rapida que si no estan ordenados. -Busqueda Interna Los elementos o componentes se encuentran en memoria principal. almacenado por ejemplo en arreglos o listas ligadas. -Ordenacion Externa Los elementos o componentes se encuentran en memoria secundaria. (Archivos almacenados en dispositivos tales como discos ) -Busqueda Secuencial -Consiste en revisar elemento por elemento hasta encontrar el dato buscado, o hasta llegar al final de la lista de datos disponibles. -Busqueda binaria -Consiste en dividir el intervalo de busqueda en dos partes comparando con el central. En caso de no ser iguales se redefinen los extremos del intervalo(segun el elemento central sea menor o mayor que el buscado) disminuyendo el espacio de busqueda.El proceso concluye cuando el elemento es encontrado o bien cuando el intervalo de busqueda se anula. Funciona unicamente para arreglos ordenados. Es mas eficiente que el secuencial. Dependen del numero de elementos para la busqueda. -Busqueda por transformacion de claves.(Hash) Permite aumentar la velocidad de busqueda sin necesidad de tener los elementos ordenados. Cuanta tambien con la ventaja de que el tiempo de busqueda es practicamente independiente del numero de componentes del arreglo. Trabaja basandose en una funcion de transformacion o funcion hash (H) que convierte una clave dada en una direccion (indice) dentro del arreglo. direccion <- H(Clave) -Busqueda en archivos secuenciales --Busqueda Secuenciales --Busqueda Secuencial usando bloques --Busqueda Secuencial con indices. -Busqueda binaria. -Busqueda por transformacion de claves (hash) Página No.5