algoritmos. tecnicas de formulación de algoritmos algoritmo (del latín, dixit algorithmus y éste...

40
Algoritmos

Upload: eva-maria-botella-ramirez

Post on 25-Jan-2016

225 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Algoritmos

Page 2: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Tecnicas de formulación de algoritmos

Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista bien definida, ordenada y finita de operaciones que permite hallar la solución a un problema.

Page 3: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Dado un estado inicial y una entrada, a través de pasos sucesivos y bien definidos se llega a un estado final, obteniendo una solución. Los algoritmos son objeto de estudio de la algoritmia.

Page 4: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

El concepto de algoritmo, aunque similar y obviamente relacionado, no debe confundirse con el concepto de programa.

Page 5: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Mientras el primero es la especificación de un conjunto de pasos (operaciones, instrucciones, órdenes,...) orientados a la resolución de un problema (método), el segundo es ese conjunto de operaciones especificadas en un determinado lenguaje de programación y para un computador concreto, susceptible de ser ejecutado (o compilado o interpretado).

Page 6: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Características de los algoritmos

El científico de computación Donald Knuth ofreció una lista de cinco propiedades, que son ampliamente aceptadas como requisitos para un algoritmo:• Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos". • Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".

Page 7: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

• Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas de conjuntos específicos de objetos".

• Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica con las entradas".

Page 8: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

• Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz y papel".

Page 9: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

A partir del carácter finito y de la salida se deduce que ante una misma situación inicial (o valores de entrada) un algoritmo debe proporcionar siempre el mismo resultado (o salida), con excepción de los algoritmos algoritmos probabilistas.probabilistas.

Page 10: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Medios de expresión de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje lenguaje natural, pseudocódigo, diagramas de natural, pseudocódigo, diagramas de flujo y lenguajes de programaciónflujo y lenguajes de programación entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas.

Page 11: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Lenguaje natural

El término lenguaje naturallenguaje natural se refiere al estudio de las propiedades computacionales y de otro tipo implicadas en la comprensión, producción y uso de las lenguas naturales.

Page 12: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Pseudocódigo

Un pseudocódigopseudocódigo (falso lenguaje), es una serie de normas léxicas y gramaticales parecidas a la mayoría de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis de estos ni a la fluidez del lenguaje coloquial.

Page 13: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Pseudocódigo

Esto permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de Software, o en el estudio de un algoritmo.

Page 14: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Pseudocódigo

Pseudocódigo es la descripción de un algoritmo que asemeja a un lenguaje de programación pero con algunas convenciones del lenguaje natural.

Page 15: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Pseudocódigo

Tiene varias ventajas con respecto a los diagramas de flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas.

Page 16: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Pseudocódigo

El pseudocódigo no está regido por ningún estándar. pseudo viene de falso y por ende es un código al que aunque es entendible no se aplica al proceso que debe realizar la maquina.

Page 17: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Diagrama de flujo

Un diagrama de flujodiagrama de flujo es una forma más tradicional de especificar los detalles algorítmicos de un proceso y constituye la representación gráfica de un proceso multifactorial.

Page 18: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Diagrama de flujo

Los diagramas de flujo son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de instrucciones y están regidos por ISO.

Page 19: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

¿Cuándo utilizarlos?

Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos, descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.

Page 20: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Descripción de un algoritmo

Utiliza tres niveles (usualmente)

Descripción de alto nivel. Se establece el problema, se selecciona un modelo matemático y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

Page 21: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Descripción de un algoritmo

Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que encuentran la solución.

Page 22: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Descripción de un algoritmo

Implementación. Se muestra el algoritmo expresado en un lenguaje de programación específico o algún objeto capaz de llevar a cabo instrucciones.

Page 23: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Análisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempomemoria y tiempo) que consume el algoritmo. El análisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la evolución del gasto de tiempo y memoria en función del tamaño de los valores de entrada.

Page 24: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Análisis de algoritmos

El análisis y estudio de los algoritmos es una disciplina de las ciencias de la computación y, en la mayoría de los casos, su estudio es completamente abstracto sin usar ningún tipo de lenguaje de programación ni cualquier otra implementación; por eso, en ese sentido, comparte las características de las disciplinas matemáticas.

Page 25: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Análisis de algoritmos

•Así, el análisis de los algoritmos se centra en los principios básicos del algoritmo, no en los de la implementación particular. Una forma de plasmar (o algunas veces "codificar") un algoritmo es escribirlo en pseudocódigo o utilizar un lenguaje muy simple tal como Léxico, cuyos códigos pueden estar en el idioma del programador.

Page 26: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Tipos de algoritmos según su función

ΩAlgoritmo de ordenamiento

ΩAlgoritmo de búsqueda.

Page 27: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Algoritmo de ordenamiento

Un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada.

Page 28: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Algoritmo de búsqueda

Es aquel que está diseñado para localizar un elemento concreto dentro de una estructura de datos (es una forma de organizar un conjunto de datos elementales con el objetivo de

facilitar su manipulación).

Page 29: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Algoritmo de búsqueda

Consiste en solucionar un problema booleano de existencia o no de un elemento determinado en un conjunto finito de elementos, es decir al finalizar el algoritmo este debe decir si el elemento en cuestión existe o no en ese conjunto (si pertenece o no a él), además, en caso de existir, el algoritmo podría proporcionar la localización del elemento dentro del conjunto.

Page 30: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Algoritmos voracesAlgoritmos voraces: (greedy): seleccionan los elementos más prometedores del conjunto de candidatos hasta encontrar una solución. En la mayoría de los casos la solución no es óptima.

Page 31: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Algoritmos paralelosAlgoritmos paralelos: permiten la división de un problema en subproblemas de forma que se puedan ejecutar de forma simultánea en varios procesadores.

Page 32: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Algoritmos probabilísticos: Algoritmos probabilísticos: algunos de los algunos de los pasos de este tipo de algoritmos están en pasos de este tipo de algoritmos están en función de valores pseudoaleatoriosfunción de valores pseudoaleatorios

Page 33: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Algoritmos determinísticosAlgoritmos determinísticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene únicamente un paso sucesor y otro ancesor.

Page 34: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Algoritmos no determinísticosAlgoritmos no determinísticos: El comportamiento del algoritmo tiene forma de árbol y a cada paso del algoritmo puede bifurcarse a cualquier número de pasos inmediatamente posteriores, además todas las ramas se ejecutan simultáneamente

Page 35: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Divide y vencerásDivide y vencerás: dividen el problema en subconjuntos disjuntos obteniendo una solución de cada uno de ellos para después unirlas, logrando así la solución al problema completo.

Page 36: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

MetaheurísticasMetaheurísticas: encuentran soluciones aproximadas (no óptimas) a problemas basándose en un conocimiento anterior (a veces llamado experiencia) de los mismos.

Page 37: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Programación dinámicaProgramación dinámica: intenta resolver problemas disminuyendo su coste computacional aumentando el coste espacial.

Page 38: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Ramificación y acotaciónRamificación y acotación: se basa en la construcción de las soluciones al problema mediante un árbol implícito que se recorre de forma controlada encontrando las mejores soluciones.

Page 39: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Técnicas de diseño de algoritmos

Vuelta atrásVuelta atrás (backtracking): se construye el espacio de soluciones del problema en un árbol que se examina completamente, almacenando las soluciones menos costosas.

Page 40: Algoritmos. Tecnicas de formulación de algoritmos Algoritmo (del latín, dixit algorithmus y éste a su vez del matemático persa al-Jwarizmi) es una lista

Las fases de la programación

Requiere unaMetodología sistemática

Ciclo de desarrollo del software