UNIDADIII-Analisis de Algoritmos

Anuncio
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
Descargar