29
ALGORITMOS DIGITALES II Ing. Hugo Fdo. Velasco Peña Universidad Nacional © 2006

Algoritmos univ colombia

Embed Size (px)

Citation preview

Page 1: Algoritmos univ colombia

ALGORITMOSDIGITALES II

Ing. Hugo Fdo. Velasco PeñaUniversidad Nacional© 2006

Page 2: Algoritmos univ colombia

OBJETIVOS

Conocer los principios básicos de los algoritmos.Establecer paralelos entre los algoritmos, los programas y las máquinas de estado.

Page 3: Algoritmos univ colombia

ALGORITMIA

DefiniciónCiencia del cálculo aritmético y algebraico; teoría de los números.

La algoritmia es uno de los pilares de la programación y su relevancia se muestra en el desarrollo de cualquier aplicación, más allá de la mera construcción de programas.

Page 4: Algoritmos univ colombia

ALGORITMO

Un algoritmo es un conjunto de pasos claramente definidos, que a partir de una cierta entrada produce una determinada salida.

Page 5: Algoritmos univ colombia

CARACTERÍSTICAS DE UN ALGORITMO

Todo algoritmo debe tener las siguientes características:

Debe ser preciso, es decir, cada instrucción debe indicar de forma inequívoca que se tiene que hacer. Debe ser finito, es decir, debe tener un número limitado de pasos. Debe ser definido, es decir, debe producir los mismos resultados para las mismas condiciones de entrada.

Page 6: Algoritmos univ colombia

ALGORITMOS Y PROGRAMAS

Debemos distinguir algoritmo de programa un algoritmo es independiente del lenguaje en el cual se programa, de la maquina en la cual se implemente y de otras restricciones que hacen a la puesta en operación del algoritmo.

Desde el punto de vista del estudio de los algoritmos los mismos pueden considerarse como entidades matemáticas abstractas independientes de restricciones tecnológicas.

Page 7: Algoritmos univ colombia

VALIDACIÓN DE UN ALGORITMO

Un algoritmo es correcto si el resultado que produce siempre resuelve un determinado problema a partir de una entrada valida.

Demostrar ya sea en forma rigurosa o intuitiva que un algoritmo es correcto es el primer paso indispensable en el análisis de un algoritmo.

Los algoritmos que no son correctos a veces pueden ser útiles si por ejemplo producen una respuesta aproximada a un problema particularmente difícil en forma eficiente.

Page 8: Algoritmos univ colombia

ALGORITMOS DETERMINISTICOS

Un algoritmo es deterministico si la respuesta que produce se puede conocer a partir de los datos de entrada.

Un algoritmo es no deterministico cuando no es deterministico.

Que un algoritmo sea o no sea deterministicono aporta dato alguno sobre la validez del algoritmo.

Page 9: Algoritmos univ colombia

ÁREAS DE LA ALGORITMIA

El estudio de los algoritmos se puede dividir en dos grandes categorías:

Análisis de algoritmos.Diseño de algoritmos.

Page 10: Algoritmos univ colombia

ANÁLISIS DE ALGORITMOS

El analisis intenta determinar que tan eficiente es un algoritmo para resolver un determinado problema.

En general el aspecto mas interesante a analizar de un algoritmo son sus costos de espacio y tiempo.

Page 11: Algoritmos univ colombia

COSTOS DE TIEMPO

Suele ser el mas importante indica cuanto tiempo insume un determinado algoritmo para encontrar la solución a un problema.Se mide en función de la cantidad o del tamaño de los datos de entrada.

Page 12: Algoritmos univ colombia

COSTO DE ESPACIO

Mide cuanta memoria (espacio) necesita el algoritmo para funcionar correctamente.

Page 13: Algoritmos univ colombia

DISEÑO DE ALGORITMOS

El diseño de algoritmos se encarga de encontrar cual es el mejor algoritmo para un problema determinado. En general existen algunos paradigmas básicos que pueden aplicarse para encontrar un buen algoritmo.Es claro que esta es una tarea dificil que requiere de conocimientos especicos y de una habilidad particular.

Page 14: Algoritmos univ colombia

DISEÑO DE ALGORITMOS

Algunas de las técnicas mas utilizadas en el diseño de algoritmos son las siguientes:

Dividir para conquistarAlgoritmos aleatorizadosProgramación dinámicaAlgoritmos golosos GreedyAlgoritmos de heurísticosReducción a otro problema conocidoUso de estructuras de datos que solucionen el problema

Page 15: Algoritmos univ colombia

MODELOS COMPUTACIONALES

Para poder estudiar en detalle un algoritmo debemos establecer un marco en el cual podamos probar y analizar un algoritmo, así como también que permita comparar dos algoritmos entre si.Este ambiente necesario para el estudio de los algoritmos se conoce como modelo computacional.

Page 16: Algoritmos univ colombia

MAQUINA DE TURING

La maquina de Turinges el mas básico de los modelos computacionales y fue propuesta por el celebre matemático Alan Turing.

Page 17: Algoritmos univ colombia

MAQUINA DE TURING

La maquina de Turing maneja tres símbolos que llamaremos, a, b y espacio.Además cuenta con una memoria infinita que puede verse como una cinta infinita.La maquina es capaz de leer en cada paso un símbolo de la cinta escribir el mismo u otro símbolo en la cinta y avanzar o retroceder una posición.

Page 18: Algoritmos univ colombia

MAQUINA DE TURINGEl cómputo es determinado a partir de una tabla de estados de la forma:

Esta tabla toma como parámetros el estado actual de la máquina y el carácter leído de la cinta, dando la dirección para mover el cabezal, el nuevo estado de la máquina y el valor a ser escrito en la cinta.Con este aparato extremadamente sencillo es posible realizar cualquier cómputo que un computador digital sea capaz de realizar.

(estado, valor)→(nuevo estado, nuevo valor, dirección)

Page 19: Algoritmos univ colombia

MAQUINA DE TURINGUna máquina de Turing con una sola cinta puede ser definida como una 6-tupl, dondeQ es un conjunto finito de estadosΓ es un conjunto finito de símbolos de cinta, el alfabeto de cinta

es el estado inicial es un símbolo denominado blanco, y es el único

símbolo que se puede repetir un número infinito de veces

es el conjunto de estados finales de aceptación es una función parcial

denominada función de transición, donde L es un movimiento a la izquierda y R es el movimiento a la derecha.

Page 20: Algoritmos univ colombia

MÁQUINA UNIVERSAL DE TURING

Una máquina de Turing computa una determinada función parcial de carácter definido, y unívoca, definida sobre las secuencias de posibles cadenas de símbolos de su alfabeto.

En este sentido se puede considerar como equivalente a un programa de ordenador, o lo que es lo mismo, a un algoritmo.

Page 21: Algoritmos univ colombia

MÁQUINA UNIVERSAL DE TURING

En 1947, Turing indicó:Se puede demostrar que es posible construir una máquina especial de este tipo que pueda realizar el trabajo de todas las demás. Esta máquina especial puede ser denominada máquina universal.

Esto pudo ser demostrado, y por lo tanto cualquier problema que una computadora pueda resolver puede resolverse en una maquina de Turing

Page 22: Algoritmos univ colombia

REPRESENTACIÓN DE LA MAQUINA DE TURING

Podemos representar un programa para la maquina de Turingcomo un autómata de estados finitos donde cada estado tiene la siguiente notación

donde s1 es el símbolo que la maquina lee de la cinta, s2 es el símbolo que la maquina escribe en la cinta en la misma posición donde leyó s1 y el +1 o -1 indica si se avanza o se retrocede una posición en la cinta. La flecha indica cual es el estado hacia el cual se desplaza la maquina que podría ser el mismo estado donde estaba antes.

Page 23: Algoritmos univ colombia

Ejemplo 1

En algún lugar de la cinta se pueden encontrar dos o mas letras “a” seguidas. Copiar una “b” a continuación de la última “a”

λaaaλ → λaaabλ

Page 24: Algoritmos univ colombia

Ejemplo 2

Copiar todas las “a” de la memoria a continuación de las “b”

λλλλaaaλλλbbbbbλλλλλ→λλλλλλλbbbbbaaaλλλ

Page 25: Algoritmos univ colombia

COSTOSEn la maquina de Turing, y en general para cualquier algoritmo, los costos se pueden medir de la siguiente forma:

Costo de tiempoCosto de espacio

Page 26: Algoritmos univ colombia

COSTO DE TIEMPO

Es la cantidad de transiciones cambios de estado que realiza la maquina, contando también aquellas transiciones que parten de un estado y vuelven al mismo.

Por ejemplo nuestro programa para la máquina de Turing del ejemplo 1 Para el caso λaaaaλ insume 5 transiciones y la cinta queda de la forma λaaaabλ

Page 27: Algoritmos univ colombia

COSTO DE ESPACIOSe puede medir como la cantidad de estados del programa.

Cada estado en la maquina de Turingrepresenta una cierta memoria por lo que medir la cantidad de estados es una buena forma de medir el costo espacial.

Nuestro primer algoritmo para la maquina de Turing tiene 4 estados.

Page 28: Algoritmos univ colombia

EFICIENCIA DE UN ALGORITMO

En la maquina de Turing el análisis de la eficiencia de un algoritmo pasa por averiguar si no existe un programa que pueda resolver el mismo problema en forma mas rápida empleando menos transiciones o bien utilizando menos espacio menor cantidad de estados.

Page 29: Algoritmos univ colombia

EFICIENCIA DE UN ALGORITMO

Desarrolle un algoritmo para cambiar una bombilla.