En el momento que se nos presenta un problema tratamos de solucionarlo lo más pronto posible, estudiando sus causas para actuar correctamente, tomando en cuenta que un algoritmo es una serie de pasos bien definidos que ayudan a llegar a la solución de algún problema. Es así como, mediante las diferentes técnicas de diseño de algoritmos, construimos soluciones que satisfagan los requerimientos del problema. Por eso la importancia de este tema, para identificar eficazmente todos los elementos posibles y así dar un resultado óptimo.
Si te interesa continuar con el tema te invito a seguir estudiando.
Geralt. (s. f.). Diagrama de flujo [fotografía]. Tomada de https://pixabay.com/es/marca-marcador-mano-deja-516277/
Un algoritmo es un conjunto detallado y lógico de pasos para alcanzar un objetivo o resolver un problema; por ejemplo, el instructivo para armar un modelo de avión a escala. Cualquier persona, si atiende de forma estricta la secuencia de los pasos, llegará al mismo resultado.
La construcción de algoritmos se basa en la abstracción de las características del problema, a través de un proceso de análisis que permitirá seguir con el diseño de una solución fundamentada en modelos, los cuales ven su representación tangible en el proceso de implementación del algoritmo.
Técnicas de diseño de algoritmos
Existen diferentes técnicas de diseño de algoritmos para construir soluciones que satisfagan los requerimientos de los problemas, entre las que destacan las siguientes.
Algoritmos voraces
Suelen utilizarse en la solución de problemas de optimización y se distinguen porque son…
Sencillos | Miopes | Eficientes |
En cuanto a su diseño y codificación. | Toman decisiones con la información que tienen disponible de forma inmediata, sin tener en cuenta sus efectos futuros. | Dan una solución rápida al problema (aunque ésta no sea siempre la mejor). |
Tabla sobre la distinción de los algoritmos voraces que se utilizan en la solución de problemas de optimización
Tienen las siguientes propiedades:
•Tratan de resolver problemas de forma óptima.
•Disponen de un conjunto o lista de candidatos.
A medida que avanza el algoritmo se acumulan dos conjuntos:
•Candidatos considerados y seleccionados.
•Candidatos considerados y rechazados.
Los algoritmos voraces suelen ser bastante simples. Se emplean sobre todo para resolver problemas de optimización; por ejemplo, encontrar la secuencia óptima para procesar un conjunto de tareas por una computadora; hallar el camino mínimo de un grafo, etcétera.
Por lo regular, intervienen estos elementos:
Otra técnica común en el diseño de algoritmos es divide y vencerás, que consta de dos partes:
Los problemas más pequeños se resuelven recursivamente (excepto, por supuesto, los casos base).
La solución del problema original se forma, entonces, a partir de las soluciones de los subproblemas.
Las rutinas en las cuales el texto contiene al menos dos llamadas recursivas se denominan algoritmos de divide y vencerás; no así aquéllas cuyo texto sólo comprende una.
La idea de la técnica divide y vencerás es dividir un problema en subproblemas del mismo tipo y, aproximadamente, del mismo tamaño; resolver los subproblemas recursivamente y combinar la solución de los subproblemas para dar una solución al problema original.
La recursión finaliza cuando el problema es pequeño y la solución fácil de construir directamente.
Programación dinámica
Inventada por el matemático Richard Bellman en 1953, es un método para reducir el tiempo de ejecución de un algoritmo mediante la utilización de subproblemas superpuestos y subestructuras óptimas. Una subestructura óptima significa que soluciones óptimas de subproblemas pueden ser usadas para encontrar las soluciones óptimas del problema en su conjunto.
En general, se pueden resolver problemas con subestructuras óptimas siguiendo estos pasos:
Los subproblemas se resuelven, a su vez, dividiéndolos en subproblemas más pequeños, hasta alcanzar el caso fácil, donde la solución al problema es trivial.
Los diagramas de flujo son la representación gráfica de los algoritmos. Elaborarlos implica diseñar un diagrama de bloque que contenga un bosquejo general del algoritmo, y con base en éste proceder a su ejecución con todos los detalles necesarios. Reglas para construir diagramas de flujo. Pulsa en las flechas o en los conceptos para navegar por la información.
Terminado el diagrama de flujo se realiza la prueba de escritorio; es decir, se le da un seguimiento manual al algoritmo, llevando el control de variables y resultados de impresión de forma tabular.
Ventajas:
1. Programas bien documentados.
2. Cada gráfico se codificará como una instrucción de un programa, realizando una conversión sencilla y eficaz.
3. Facilita la depuración lógica de errores.
4. Se simplifica su análisis al facilitar la comprensión de las interrelaciones.
Desventajas:
1. Su elaboración demanda varias pruebas en borrador.
2. Los programas muy grandes requieren diagramas laboriosos y complejos.
3. Falta de normatividad en su elaboración, lo que complica su desarrollo.
Algunos gráficos usados en los diagramas:
A continuación se presenta un ejemplo de diagrama de flujo.
Algoritmo: imprimir los factoriales para los números del 1 al 10.
Puede haber varias soluciones, pero una será la óptima.
Las estructuras básicas de un algoritmo están presentes en el modelado de soluciones. En este tema se estudiaron técnicas de diseño de algoritmos para construir soluciones que satisfagan los requerimientos de los problemas, como algoritmos voraces, divide y vencerás, programación dinámica y la representación gráfica de los algoritmos que son los diagramas de flujo.
Así, se ha mostrado un panorama general del diseño de algoritmos.
Actividad. Exponiendo soluciones
En el momento que se presenta una dificultad en nuestra vida intentamos darle la mejor solución posible. Identificando la causa que la originó se puede explicar de una forma gráfica, para así poder comprenderla totalmente. Es por esto que esta actividad te ayudará a reforzar los conceptos de diseño en la construcción de algoritmos.
Autoevaluación. El diseño de algoritmos
Suelen utilizarse en la solución de problemas diversos métodos posibles que nos lleven a identificar las causas que los originaron, para así modelar un diseño gráfico que nos ayude a comprender de mejor forma la solución que daremos. En la siguiente autoevaluación podrás identificar tu nivel de comprensión del tema.