Informe De Algoritmos

  • Uploaded by: Carpenito Jhonny
  • 0
  • 0
  • February 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Informe De Algoritmos as PDF for free.

More details

  • Words: 1,983
  • Pages: 9
Loading documents preview...
Análisis y Diseño de Algoritmos

  INTRODUCCIÓN A LOS ALGORITMOS 1.

¿Qué es análisis?, ¿Qué es diseño?, ¿Qué es algoritmo?.

Análisis: Distinción y separación de las partes de un todo hasta llegar a conocer los principios o elementos de este. Diseño: El diseño se define como el proceso previo de configuración mental, "pre-figuración", en la búsqueda de una solución en cualquier campo. Utilizado habitualmente en el contexto de la industria, ingeniería, arquitectura, comunicación y otras disciplinas creativas. Algoritmo: Un algoritmo es como un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema. 2.

Definir Análisis y Diseño de Algoritmos.

El análisis y diseño de algoritmos tiene como objetivo establecer propiedades sobre la eficiencia permitiendo la comparación entre soluciones alternativas y predecir los recursos que usará un algoritmo. Estas estimaciones resultan ser bastante útiles en la búsqueda de algoritmos eficientes. A la hora de realizar un análisis teórico de algoritmos es común calcular su complejidad en un sentido asintótico, es decir, para un tamaño de entrada suficientemente grande. La cota superior asintótica, y las notaciones omega (cota inferior) y theta (caso promedio) se usan con esa finalidad. Por ejemplo, la búsqueda binaria decimos que se ejecuta en una cantidad de pasos proporcional a un logaritmo, en O(log(n)), coloquialmente "en tiempo logarítmico". Normalmente las estimaciones asintóticas se utilizan porque diferentes implementaciones del mismo algoritmo no tienen por qué tener la misma eficiencia. No obstante la eficiencia de dos implementaciones "razonables" cualesquiera de un algoritmo dado están relacionadas por una constante multiplicativa llamada constante oculta. Las medidas exactas de eficiencia son útiles para quienes verdaderamente implementan y usan algoritmos, porque tienen más precisión y así les permite saber cuánto tiempo pueden suponer que tomará la ejecución. Para algunas personas, como los desarrolladores de videojuegos, una constante oculta puede significar la diferencia entre éxito y fracaso. En ingeniería del software, el diseño de algoritmos es un método específico para poder crear un modelo matemático ajustado a un problema específico para resolverlo. El diseño de algoritmos es una teoría de la Investigación de operaciones. 3.

Origen de los algoritmos

Estos surgieron a mediados del siglo IX por el matemático distinguido y astrónomo Mohammed Ibn Musa -aljarizm: pero podemos ver que Al_yebr-mugabata es otro que desarrollo fórmulas para posibilitar que con un número limitado de procesos fuese posible resolver ecuaciones de primer y segundo grado. La historia del algoritmo nace por necesidad de hacer cálculos matemáticos a través, de ella se fundamenta el paso inicial de entender acabadamente cualquier problema planteada.

Análisis y Diseño de Algoritmos

  Pero también tengamos en cuenta que los algoritmos están en el corazón mismos de los ordenadores y que los leguajes de computación solo son un medio de expresarlos. En la teoría de los algoritmos podemos mencionar que los algoritmos empezaron a dar inicio aproximadamente a lo largo de la historia en el siglo 19 aunque ya para este entonces se tenía cierto conocimiento de estos. 4.

Evolución de los algoritmos

Para ver la evolución que han tenido los algoritmos a lo largos de los años en necesario entender que estos fueron evolucionando según las necesidades de cómputo y la arquitectura física de los computadores, diversos problemas requieren diversos enfoques para resolverlos estos virtualmente dio origen a los distintos paradigmas de programación. Los paradigmas de la programación son: Paradigma Imperativo Paradigma Declarativo Paradigma Estructurado Paradigma Orientado a Objetos: Paradigma Funcional Paradigma lógico Cada paradigma tiene un diferente enfoque y está orientado a un grupo de problemas específicos las características que tienen estos paradigmas son: Paradigma Imperativo: describe la programación como una secuencia instrucciones o comandos que cambian el estado de un programa. El código máquina en general está basado en el paradigma imperativo. Su contrario es el paradigma declarativo, En este paradigma se incluye el paradigma procedimental(procedural) entre otros. Paradigma Declarativo: No se basa en el cómo se hace algo(cómo se logra un objetivo paso a paso), sino que describe(declara) cómo es algo. En otras palabras, se enfoca en describir las propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto de instrucciones) usado para encontrar esa solución. Es más complicado de implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solución de determinados problemas. Paradigma Estructurado: la programación se divide en bloques (procedimientos y funciones) que pueden o no comunicarse entre sí. Además la programación se controla con secuencia, selección e iteración. Permite reutilizar código programado y otorga una mejor compresión de la programación. Es contrario al paradigma inestructurado, de poco uso, que no tiene ninguna estructura, es simplemente un “bloque”, como por ejemplo, los archivos batch (.bat). Paradigma Orientado a Objetos: está basado en la idea de encapsular estado y operaciones en objetos. En general, la programación se resuelve comunicando dichos objetos a través de

Análisis y Diseño de Algoritmos

  mensajes (programación orientada a mensajes). Se puede incluir (aunque no formalmente) dentro de este paradigma, el paradigma basado en objetos, que además posee herencia y subtipos entre objetos. Su principal ventaja es la reutilización de códigos y su facilidad para pensar soluciones a determinados problemas. Paradigma Funcional: este paradigma concibe a la computación como la evaluación de funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios comunes en otro tipo de programaciones. Paradigma lógico: se basa en la definición de reglas lógicas para luego, a través de un motor de inferencias lógicas, responder preguntas planteadas al sistema y así resolver los problemas. Ej.: prolog. 5.

Estructura de un algoritmo

La estructura de un algoritmo sirve para organizar a los elementos que aparecen en él. Todos los algoritmos tienen la misma estructura, la cual viene definida por tres secciones: ·

Cabecera

·

Declaraciones

·

Cuerpo

Cabecera: En la cabecera de un algoritmo se debe de indicar el nombre (identificador) asignado al mismo. La sintaxis es: “Algoritmo <nombre_del_algoritmo>”. Ejemplo: Si se quiere diseñar el algoritmo de un programa que calcule el are de una circunferencia por lo tanto el algoritmo debe llevar en la cabecera “algoritmo Area_de_una_circuferencia” Declaraciones: En esta sección se declaran las constantes, los tipos de datos y las variables que se usan en un algoritmo. La sintaxis es la siguiente: Constantes <declaración_de_constantes> Tipos de datos <declaracion_de_tipos_de_datos> Variables <declaración_de_de_variables>

Análisis y Diseño de Algoritmos

  Ejemplo: Para resolver el problema planteado en el tema anterior, es necesario declarar una constante y dos variables Constantes PI=3.1416 Variables Real área, radio Cuerpo: En el cuerpo se escriben todas las instrucciones del algoritmo la sintaxis es: Inicio Fin Inicio y Fin Son palabras reservadas que marcan el principio y el final de la sección del cuerpo, que es donde está el bloque de instrucciones principal del algoritmo. Ejemplo Inicio Escribir (“introduzca radio: “) Leer (radio) Área =PI*radio**2 Escribir (“El área de la circunferencia es:”, área) Fin Comentarios. En los algoritmos es conveniente escribir comentarios para explicar el diseño y/0 funcionamiento del mismo. Ejemplo /* Cabecera */ Algoritmo Area_de_una_circuferencia

Análisis y Diseño de Algoritmos

  6.

Tipos de algoritmos

Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras. Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso. Existen varias técnicas de diseño de algoritmos que permiten desarrollar la solución al problema planteado, algunas de ellas son: 

Algoritmos 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.



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



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



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



Algoritmos 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.



Divide 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.



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



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



Ramificació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.



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

7.

¿Qué es ejecución de un programa?

Es la realización de las instrucciones de un exe por la CPU. Es entonces cuando el procesador accede al código máquina del programa y ejecuta sus acciones de forma secuencial.

Análisis y Diseño de Algoritmos

  8.

Corrida en frío de un algoritmo (traza de un algoritmo).

La traza de un Algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que lo componen. Así, la traza del siguiente algoritmo es el valor que van adoptando las variables a medida que se va ejecutando un programa. La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar el algoritmo al máximo e incrementar su eficacia y velocidad. De esta manera, el programador realiza una corrida en frío sobre el programa fuente escogiendo un conjunto de datos de entrada, ejecutando manualmente cada sentencia del programa fuente y verificando que los resultados obtenidos son los esperados de acuerdo al conjunto de datos de entrada. Como una técnica de depuración, el programador debe realizar este proceso utilizando conjuntos de datos que permitan ejecutar todos los “caminos” posibles del programa. Ejemplo: Realizar el análisis E-P-S y diseñar un algoritmo para calcular el área de superficie de un paralelepípedo de dimensiones l (largo), a (ancho) y h (altura). Codificación: float Area() { float l, h, a, AS; printf("Largo del paralelepipedo = "); scanf(“%f”,&l); printf("Ancho del paralelepipedo= "); scanf(“%f”,&a); printf("Altura del paralelepipedo= "); scanf(“%f”,&h); AS = 2 * (l * a + l * h + a * h); printf("Area de superficie del paralelepipedo = %f", AS); }

Corrida en frío: l = 3.0 a = 2.5 h = 7.3 AS = 2 x (3.0 x 2.5 + 3.0 x 7.3 + 2.5 x 7.3) = 95.3

Análisis y Diseño de Algoritmos

  9.

Ejemplos de un algoritmo.

1- Para que una persona pueda ejercer su voto en una elección de gobierno, debe ser mayor de edad y costarricense.

2- Para que una persona pueda casarse, debe ser mayor de edad y soltero.

3- Escriba un algoritmo que calcule la hipotenusa de un triángulo rectángulo, donde ambos catetos son iguales a 5.

Análisis y Diseño de Algoritmos

  4. Determine el descuento de un artículo por medio de la cantidad de unidades del mismo. si compras más de 5 artículos tienes un 5% de descuento, en caso contrario no tiene descuento.

Análisis y Diseño de Algoritmos

  BIBLIOGRAFÍA Wikipedia (2013). Análisis de Algoritmos. Disponible en http://es.wikipedia.org/wiki/An%C3%A1lisis_de_algoritmos Wikipedia (2013). Diseño de Algoritmos. Disponible en http://es.wikipedia.org/wiki/Dise%C3%B1o_de_algoritmos Müller G. (2008). Clase 9. Programación Modular. http://es.vbook.pub.com/doc/2959783/3/Corrida-en-frio-de-Algoritmo-Principal Acevedo, A. (2010). Algorítmica algoritmicayprogramacion.blogspot.com/

y

Programación.

Disponible

Disponible

en

http://pnfi-

Rivas A. (2012). Proyecto Algorítmica y Programación. Disponible en http://es.vbook.pub.com/doc/33942225/Poyecto-Algoritmica-y-programacion-1 Gómez, R. (2009). Curso de Lógica y Algoritmos 2009. Disponible en http://introduccioninformatica.wordpress.com/2010/04/09/ejercicios-resueltos-de-algoritmos/ Tadeo, M. (2010). Partes de un Algoritmo. Disponible en http://am55887.blogspot.com/

en

Related Documents


More Documents from "'Matias Sorrentino"