









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Este documento proporciona una introducción detallada a los algoritmos, su importancia y aplicaciones en diversos campos. Abarca temas como la definición de algoritmo, sus características, tipos de variables, análisis de eficiencia, técnicas de diseño (diagramas de flujo y pseudocódigo) y estructuras secuenciales. Se enfoca en comprender los conceptos clave de los algoritmos, su papel en la informática y el desarrollo de sistemas, así como las herramientas y metodologías utilizadas para su implementación. Este documento sería útil para estudiantes universitarios interesados en la programación, la ciencia de la computación y el diseño de sistemas, proporcionando una base sólida para entender los fundamentos de los algoritmos y su relevancia en la resolución de problemas.
Tipo: Resúmenes
1 / 16
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
En un sentido amplio, dado un problema y un dispositivo donde resolverlo, es necesario proporcionar un método preciso que lo resuelva, adecuado al dispositivo. A tal método lo denominamos algoritmo. Libro: Tecnica de Diseño de algoritmos Los algoritmos son una parte fundamental de la ciencia de la computación y juegan un papel crucial en prácticamente todos los aspectos de la tecnología moderna. En términos simples, un algoritmo es un conjunto ordenado de instrucciones precisas diseñadas para llevar a cabo una tarea o resolver un problema específico. Estas instrucciones pueden incluir operaciones matemáticas, lógicas, de procesamiento de datos o cualquier combinación de estas. Desde la creación de algoritmos simples para sumar números hasta algoritmos complejos utilizados en inteligencia artificial y criptografía, su aplicación abarca una amplia gama de campos. La eficiencia de un algoritmo, medida en términos de tiempo y espacio computacional, es esencial para determinar su utilidad práctica en diferentes situaciones. El estudio de los algoritmos abarca temas como la complejidad computacional, donde se evalúa la cantidad de recursos necesarios para ejecutar un algoritmo en función del tamaño de la entrada. Además, la teoría de la computación se centra en la clasificación y el análisis de algoritmos según sus capacidades y limitaciones teóricas. Los seres humanos somos entes pensantes y con capacidades únicas en cada uno de nosotros, capacidades que como sociedad hemos agrupado en diversas ramas del conocimiento con la finalidad de transformar nuestra habilidad en una herramienta para alcanzar metas en nuestro entorno. Según Gardner todos los seres humanos tenemos un tipo de inteligencia y un método de aprendizaje distinto, entre ellas, destaca la habilidad lógico- matemática, inteligencia considerada como la inteligencia en bruto, es aquella que como su nombre indica es la que vincula a la habilidad ante el razonamiento lógico y la resolución de problemas matemáticos. La palabra algoritmo se deriva de la traducción al latín de la palabra árabe alkhowarizmi, nombre de un matemático astrónomo árabe que escribió un tratado sobre manipulación de números y ecuaciones en el siglo IX. Un algoritmo es una serie de pasos organizados, que describe el proceso que se debe seguir, para dar solución a un problema específico. (Fadul, 2004).
Como tal pensar en un algoritmo, es pensar la forma en la que podemos resolver un problema paso a paso, si no se resuelve un paso del problema no se puede pasar al siguiente. Los algoritmos se caracterizan principalmente porque son: Precisos: La palabra preciso indica que se distingue con claridad, de igual manera un algoritmo es claro en cada uno de sus pasos. Definido: El algoritmo está delimitado, solo procesa la información y las operaciones que tiene, no realiza operaciones “fantasma”, si se realiza el algoritmo dos o más veces con los mismo datos siempre dará el mismo resultado. Finito: Refiriéndose esta característica a que un algoritmo siempre va a tener un fin, mediante esta característica el algoritmo se culmina la estructura de un algoritmo. Los algoritmos son pilares en la informática así como del desarrollo de sistemas, por lo cual la siguiente estructura no es solo de los algoritmos, es como tal la estructura del tratamiento automático de la información también conocido como procesamiento de datos. 1. Entrada: En los procesos informáticos, la entrada representa todos los datos que necesita el algoritmo para ser procesados, es la alimentación necesaria para que se puedan procesar los datos, pueden ser datos que introduzca el usuario del algoritmo o bien que se obtengan de alguna otra fuente. 2. Proceso Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados". (Stallings), es decir, un proceso es la ejecución paso a paso de las instrucciones, cabe mencionar que un proceso consiste en un conjunto de pasos y nunca un paso puede saltarse otro. 3. Salida Son los resultados que se desean obtener en la ejecución del algoritmo, cabe mencionar que aquí debe obtenerse la o las respuestas que resuelvan la problemática planteada para resolver mediante el algoritmo.
programación que se utilice para crear los programas, por consiguiente, al momento de estudiar algún lenguaje de programación en especial se deben dar a conocer esas clasificaciones. Se denominarán variables de tipo entero a todas aquellas cuyo valor no tenga valores decimales; contrario a las de tipo real, la cual podrá tomar valores con decimales. Como ejemplo de variables enteras se puede considerar el número de personas, días trabajados, edad de una persona, etcétera. Y para el caso de reales, se puede considerar el sueldo de una persona, el porcentaje de equis cantidad, etcétera. En caso de que las variables tomen valores de caracteres, se designarán string o de cadena; como ejemplo de éstas se pueden mencionar el sexo de una persona, falso o verdadero, el nombre de una persona, el tipo de sangre, etcétera. Problemario de Algoritmos Resueltos con Diagramas de flujo y pesudocódigo. Francisco Javier Pinales Delgado César Eduardo Velázquez Amador 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. Una vez dispongamos de un algoritmo que funciona correctamente, es necesario definir criterios para medir su rendimiento o comportamiento. Estos criterios se centran principalmente en su simplicidad y en el uso eficiente de los recursos. A menudo se piensa que un algoritmo sencillo no es muy eficiente. Sin embargo, la sencillez es una característica muy interesante a la hora de diseñar un algoritmo, pues facilita su verificación, el estudio de su eficiencia y su mantenimiento. De ahí que muchas veces prime la simplicidad y legibilidad del código frente a alternativas más crípticas y eficientes del algoritmo. Este hecho se pondrá de manifiesto en varios de los ejemplos mostrados a lo largo de este libro, en donde profundizaremos más en este compromiso. Respecto al uso eficiente de los recursos, éste suele medirse en función de dos parámetros: el espacio, es decir, memoria que utiliza, y el tiempo, lo que tarda en ejecutarse. Ambos representan los costes que supone encontrar la solución al problema planteado mediante un algoritmo. Dichos parámetros van a servir además para comparar algoritmos entre sí, permitiendo determinar el más adecuado de entre varios que solucionan un mismo problema. En este capítulo nos centraremos solamente en la eficiencia temporal.
El tiempo de ejecución de un algoritmo va a depender de diversos factores como son: los datos de entrada que le suministremos, la calidad del código generado por el compilador para crear el programa objeto, la naturaleza y rapidez de las instrucciones máquina del procesador concreto que ejecute el programa, y la complejidad intrínseca del algoritmo. Hay dos estudios posibles sobre el tiempo: 1. Uno que proporciona una medida teórica (a priori), que consiste en obtener una función que acote (por arriba o por abajo) el tiempo de ejecución del algoritmo para unos valores de entrada dados. Y otro que ofrece una medida real (a posteriori), consistente en medir el tiempo de ejecución del algoritmo para unos valores de entrada dados y en un ordenador concreto. Ambas medidas son importantes puesto que, si bien la primera nos ofrece estimaciones del comportamiento de los algoritmos de forma independiente del ordenador en donde serán implementados y sin necesidad de ejecutarlos, la segunda representa las medidas reales del comportamiento del algoritmo. Estas medidas son funciones temporales de los datos de entrada Entendemos por tamaño de la entrada el número de componentes sobre los que se va a ejecutar el algoritmo. Por ejemplo, la dimensión del vector a ordenar o el tamaño de las matrices a multiplicar. La unidad de tiempo a la que debe hacer referencia estas medidas de eficiencia no puede ser expresada en segundos o en otra unidad de tiempo concreta, pues no existe un ordenador estándar al que puedan hacer referencia todas las medidas. Denotaremos por T(n) el tiempo de ejecución de un algoritmo para una entrada de tamaño n. Teóricamente T(n) debe indicar el número de instrucciones ejecutadas por un ordenador idealizado. Debemos buscar por tanto medidas simples y abstractas, independientes del ordenador a utilizar. Para ello es necesario acotar de alguna forma la diferencia que se puede producir entre distintas implementaciones de un mismo algoritmo, ya sea del mismo código ejecutado por dos máquinas de distinta velocidad, como de dos códigos que implementen el mismo método. Una consideración importante a la hora de diseñar algoritmos: Divide y Vencerás es el reparto de la carga entre los subproblemas, puesto que es importante que la división en subproblemas se haga de la forma más equilibrada posible. En caso contrario nos podemos encontrar con “anomalías de funcionamiento” como le ocurre al algoritmo de ordenación Quicksort. Éste es un representante claro de los algoritmos Divide y Vencerás, y su caso peor aparece cuando existe un desequilibrio total en los subproblemas al descomponer el vector original en dos subvectores FUENTE:
Citando a Einstein, “si tuviera una hora para salvar el mundo, se iba a gastar cincuenta y cinco minutos definiendo el problema, y sólo cinco minutos para encontrar la solución”, invertir tiempo en la definición del problema nos ayuda a no gastar tiempo replanteando el algoritmo. Este paso de la metodología debemos plantearnos la pregunta ¿Cuál es el problema en concreto?, visualizar la delimitación del problema, ¿Hasta dónde abarcará la solución del problema? y si es posible resolver el algoritmo o no, se sugiere documentar todo en un formato similar al siguiente 2. Análisis: Una vez identificado y delimitado el problema, esta fase tiene el objetivo de dividir el problema en sus componentes y examinar de qué manera pueden unirse, en esta fase se deben contestar las siguientes preguntas: o a. ¿Qué se necesita para resolver el problema? o b. ¿Qué pasos son necesarios para resolver el problema? o c. ¿Qué se debe obtener para resolver el problema? Una vez resueltas estas preguntas, es muy útil escribirlas en papel o en un medio electrónico con la finalidad de consultarlas cuando en las siguientes fases de la metodología 3. Diseño El eminente matemático Donald E. Knuth, expresa en su famosa obra: El arte de programar computadoras, lo siguiente: "El proceso de preparar programas para una computadora digital tiene un atractivo especial, no sólo porque puede ser recompensado económica y científicamente, sino también porque puede ser una experiencia estética como la poesía y la música." Haciendo uso de alternativas de solución como lo son diagramas de flujo y pseudocódigo se indican los pasos que deberá seguir el algoritmo para obtener la solución del problema. 4. Verificación Definido como la acción de comprobar o examinar la verdad de algo, aplicado al tema actual, es la fase que nos permite saber si el algoritmo cumplió o no su objetivo, para realizar la comprobación se le dan variables de entrada al algoritmo y se observan los resultados que arroja, por otra
que indica que datos podrá guardar que pueden ser números, letras o valores cierto o falso. e. Constantes: Son datos que su valor no va a cambiar durante todo el desarrollo del algoritmo, las constantes pueden tener o no un identificador, pues estos valores pueden escribirse directamente al usar las operaciones o bien asignarle un identificador, las constantes también tienen un tipo de dato. f. Operadores y expresiones: Son símbolos que tienen una función predefinida (suma, resta, multiplicación etc.) y que recibe sus argumentos de manera infija (luzumisu, s.f.), los operadores más utilizados son: Aritméticos Son los operadores que permiten realizar operaciones aritméticas y se enlistan en la siguiente tabla: Relacionales Estos operadores permiten evaluar la relación entre un par de operando (constantes o variables) y permiten devolver valores de cierto o falso.
Lógicos Son operadores que permiten conectar un par de propiedades, es decir, nos permiten obtener una respuesta lógica de la comparación de dos operaciones. Diseño de Algoritmo (alternativas de solución) Mediante las herramientas de diseño de algoritmos se pueden desarrollar los mismos, las alternativas de diseño de algoritmos son principalmente dos: Diagrama de flujo Representan de forma visual el flujo de los datos a través del tratamiento de información. Los diagramas de flujo describen que operaciones y en que secuencia se requieren para solucionar un problema dado. Los diagramas de flujo se dibujan generalmente usando algunos símbolos estándares. Algunos símbolos estándares, que se requieren con frecuencia para diagramar programas de computadora se muestras a continuación
Se debe evitar el cruce de líneas, para lo cual se quisiera separar el flujo del diagrama a un sitio distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario. No deben quedar líneas de flujo sin conectar Todo texto escrito dentro de un símbolo debe ser legible, preciso, evitando el uso de muchas palabras. Todos los símbolos pueden tener más de una línea de entrada, a excepción del símbolo final. Solo los símbolos de decisión pueden y deben tener más de una línea de flujo de salida (unam.mx, s.f.). Pseudocódigo Es una técnica que sirve para escribir programas de computadora en lenguaje natural de tal manera que se facilite la comprensión, prueba y posterior codificación en un lenguaje de programación específico Los pseudocódigos son representaciones de alto nivel de algoritmos, diseñados para ser entendidos por humanos antes de ser traducidos a un lenguaje de programación específico para su implementación en computadoras. Aquí hay algunas formas en que se relacionan los pseudocódigos con los algoritmos:
sin preocuparse por detalles como la sintaxis o las características específicas de un lenguaje.
que representen la solución del problema que se planteó. Los algoritmos tienen como fin actuar sobre los datos proporcionados por el usuario, a los que se les aplican procesos con el fin de generar la información o un resultado. Para resolver un problema mediante la utilización de cualquier herramienta es necesario entender y establecer con qué datos se cuenta, los procesos que se deben realizar y la secuencia apropiada para obtener la solución que se desea. En este tipo de estructura las instrucciones se realizan o se ejecutan una después de la otra y, por lo general, se espera que se proporcione uno o varios datos, los cuales son asignados a variables para que con ellos se produzcan los resultados que representen la solución del problema que se planteó. Los algoritmos tienen como fin actuar sobre los datos proporcionados por el usuario, a los que se les aplican procesos con el fin de generar la información o un resultado (Delgado). Los algoritmos secuenciales son un tipo fundamental de algoritmo que ejecutan instrucciones de manera secuencial, es decir, una tras otra, en orden lineal. Aquí tienes toda la información relevante sobre los algoritmos secuenciales: Definición y Características Los algoritmos secuenciales se caracterizan por seguir una secuencia lineal de pasos, donde cada paso depende del anterior y precede al siguiente. Estos algoritmos son simples en estructura y se utilizan principalmente para tareas que no requieren ramificaciones o iteraciones complejas. En este contexto, Fadul explica que los algoritmos secuenciales son aquellos "que describen la secuencia exacta de instrucciones necesarias para resolver un problema" (p. 48). Estructura de un Algoritmo Secuencial Un algoritmo secuencial generalmente consta de tres partes básicas: Entrada: Donde se reciben los datos necesarios para resolver el problema. Proceso: Donde se realizan las operaciones específicas, paso a paso, para transformar los datos de entrada en los resultados deseados. Salida: Donde se presentan los resultados obtenidos después de procesar los datos.