Algoritmos
Upcoming SlideShare
Loading in...5
×
 

Algoritmos

on

  • 4,452 views

 

Statistics

Views

Total Views
4,452
Views on SlideShare
4,443
Embed Views
9

Actions

Likes
2
Downloads
73
Comments
0

3 Embeds 9

http://www.slideshare.net 5
http://programacionquessep.blogspot.com 3
http://programacionquessep.blogspot.mx 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Algoritmos Algoritmos Presentation Transcript

  • ALGORITMOS DIGITALES II Ing. Hugo Fdo. Velasco Peña Universidad Nacional © 2006
  • OBJETIVOS Conocer los principios básicos de los algoritmos. Establecer paralelos entre los algoritmos, los programas y las máquinas de estado.
  • ALGORITMIA Definición Ciencia 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.
  • ALGORITMO Un algoritmo es un conjunto de pasos claramente definidos, que a partir de una cierta entrada produce una determinada salida.
  • 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.
  • 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.
  • 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.
  • 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 deterministico no aporta dato alguno sobre la validez del algoritmo.
  • Á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.
  • 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.
  • 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.
  • COSTO DE ESPACIO Mide cuanta memoria (espacio) necesita el algoritmo para funcionar correctamente.
  • 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.
  • DISEÑO DE ALGORITMOS Algunas de las técnicas mas utilizadas en el diseño de algoritmos son las siguientes: Dividir para conquistar Algoritmos aleatorizados Programación dinámica Algoritmos golosos Greedy Algoritmos de heurísticos Reducción a otro problema conocido Uso de estructuras de datos que solucionen el problema
  • 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.
  • MAQUINA DE TURING La maquina de Turing es el mas básico de los modelos computacionales y fue propuesta por el celebre matemático Alan Turing.
  • 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.
  • MAQUINA DE TURING El cómputo es determinado a partir de una tabla de estados de la forma: (estado, valor)→(nuevo estado, nuevo valor, dirección) 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.
  • MAQUINA DE TURING Una máquina de Turing con una sola cinta puede ser definida como una 6-tupl, donde Q 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.
  • 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.
  • 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
  • REPRESENTACIÓN DE LA MAQUINA DE TURING Podemos representar un programa para la maquina de Turing como 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.
  • 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λ
  • Ejemplo 2 Copiar todas las “a” de la memoria a continuación de las “b” λλλλaaaλλλbbbbbλλλλλ→λλλλλλλbbbbbaaaλλλ
  • COSTOS En la maquina de Turing, y en general para cualquier algoritmo, los costos se pueden medir de la siguiente forma: Costo de tiempo Costo de espacio
  • 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λ
  • COSTO DE ESPACIO Se puede medir como la cantidad de estados del programa. Cada estado en la maquina de Turing representa 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.
  • 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.
  • EFICIENCIA DE UN ALGORITMO Desarrolle un algoritmo para cambiar una bombilla.