Algoritmo

Algoritmo representa un grupo finito de operaciones ordenadas que facilita y permite la resolución de un problema. La palabra o término proviene del árabe y representa el nombre del matemático Al-Khwarizmi, originario de lo que se conoce hoy en día como Uzbekistán durante la edad media. Este inició sus estudios en Bagdad y fue un personaje con gran connotación e importancia en la historia ya que, debido a sus investigaciones, introdujo el sistema numérico. Hoy en día es considerado el padre del álgebra.

Se puede decir que, básicamente representa todo lo que funciona seguidamente, es decir, paso a paso, donde cada paso se puede describir sin ambigüedades y sin hacer referencia a una computadora en particular, y también tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer. Esta definición amplia abarca tanto los algoritmos prácticos como los que solo funcionan en teoría, por ejemplo, el método de Newton y el trabajo de eliminación de Gauss-Jordan, al menos en principio, con números de precisión infinita; sin embargo, no es posible programar la precisión infinita en una computadora, y eso no deja de ser algoritmos.
Tabla de Contenidos

Qué es un algoritmo

El término consiste principalmente en una lista ordenada de operaciones que tienen el propósito de encontrar la solución a un problema ya sea; de matemáticas, ciencias de la computación (algoritmos computacionales o algoritmo informática) y disciplinas relacionadas a estas. La palabra algoritmo proviene del latín ¨tardío alborarismus¨. también es una abreviatura del clásico árabe ḥisābu lḡubār, que significa «cálculo con números árabes».
Algunos creen que la palabra algoritmo proviene del griego, debido a su similitud con el logaritmo, que proviene de λόγος, razón y ἀριθμός, número. No, proviene del nombre del matemático persa que lo definió: un Abu Abdallah Muḥammad ibn Mūsā al-Jwārizmī, abreviado como Al-Juarismi. Y también le debemos la palabra «nicho».
Al-Juarismi como ya se mencionó, fue un estudioso de las matemáticas, álgebra y aritmética, vivió en el siglo IX. Se cree que nació en la actual república de Uzbekistán, aunque fue educado y trabajó en el entorno intelectual y científico del Bagdad de la Casa de la Sabiduría. Fue el introductor del sistema de numeración árabe, que se utiliza casi universalmente. A su nombre y sus numerosos y extensos estudios en el área de la matemáticas, álgebra y aritmética se le debe algunas palabras fundamentales en español.
El DRAE expresa sobre algoritmo que tal vez el término proviene del algoritmo latino tardío ¨algorismus¨, y esta es la abreviatura del clásico árabe ḥisābu lḡubār
¨cálculo con números arábigos¨. es definido, como: un conjunto ordenado y finito de operaciones que permite encontrar la solución a un problema.
En el Diccionario de María Moliner donde da más detalles del significado, con ese toque informativo que caracteriza a la obra. Puntualiza el término algoritmo proveniente del nombre del matemático ¨Alhuwãrizmi¨, a través del latín»y lo define, de manera más plana, como «Procedimiento preciso para resolver un problema. Por ejemplo el usado para resolver raíces cuadradas o divisiones«.
Las Corominas, magno diccionario etimológico crítico castellano e hispano, puntualiza o refiere al término como «figura», allí lo definen como «una figura que expresa una cantidad«, y proviene del antiguo alguarismo, «arte de contar, aritmética», y este de Al-huwãrizmî, apodo del matemático árabe Abu Yafar Mohámmed Abenmusa, cuyas traducciones introdujeron, la aritmética en la europa medieval.
Ahora bien, a lo largo de la historia y los cambios que se desarrollan con el pasar del tiempo, diversos autores autores han tratado de definir formalmente éste término, utilizando modelos matemáticos para su conceptualización. En el caso de Alonzo Church en 1936 quien impulsó el concepto de «cálculo efectivo» basado en su cálculo lambda y por Alan Turing basado en la máquina de Turing. Los dos enfoques son equivalentes, ya que exactamente los mismos problemas se pueden resolver con ambos enfoques. Sin embargo, estos modelos están sujetos a un tipo particular de datos como números, símbolos o gráficos, mientras que, en general, los algoritmos funcionan en una gran cantidad de estructuras de datos.
Es que, esta notación permite trabajar desde un estado básico o inicial y, después de seguir los pasos propuestos, llegar a una solución. Se debe tener en cuenta que aunque los algoritmos están generalmente asociados con el campo matemático (ya que permiten, para citar casos específicos, encontrar el cociente entre un par de dígitos o determinar, cuál es el divisor común más grande entre dos figuras que pertenecen al grupo de enteros), no siempre implican la presencia de números.

Características de un algoritmo

Debe cumplir con las siguientes características:
Entrado, salida y proceso (Un algoritmo debe definir estas tres partes fundamentales).

  • Debe ser finito:el algoritmo debe terminarse en algún punto; es decir, debe tener un número finito de pasos.
  • Debe ser preciso: debe indicar el orden de finalización de cada paso.
  • Se debe definir un algoritmo:si un este se sigue dos veces, se debe obtener el mismo resultado cada vez.
  • Debe ser legible:el texto que lo describe debe ser claro, para que se pueda entender y leer fácilmente.

Se puede decir que, el término algoritmo expresa la definición de una ciencia que se caracteriza por los cálculos aritméticos y algebraicos, junto con la teoría de los números. Es uno de los pilares que tiene la programación y su relevancia se muestra al desarrollar cualquier tipo de aplicación, en lugar de la simple construcción de los programas.
Por su parte el algoritmo informático es independiente del lenguaje de programación. El algoritmo en cada problema se puede escribir y luego ejecutar en un lenguaje de programación diferente. Éstos deben estar compuestos de tres partes principales ya mencionadas que son: la entrada, proceso y salida. Y pueden representarse como: algoritmos no computacionales, algoritmos computacionales, algoritmos cuantitativos y algoritmos cualitativos.

Partes de un algoritmo

Las instrucciones y los pasos contenidos en un algoritmo deben ser precisos, es decir, no deben dejar espacio para ningún tipo de ambigüedad.
Esto se debe a que sus instrucciones deben poder seguirse y entenderse por completo, o bien el diagrama de flujo en el que se registran no arrojará el resultado correcto.
La definición: cada algoritmo debe estar perfectamente definido, es decir, debe seguirse tantas veces como sea necesario, obteniendo siempre el mismo resultado cada vez.
De lo contrario, el algoritmo no será confiable y no servirá de guía para la toma de decisiones.
Los algoritmos deben ser finitos, deben finalizar en algún momento o arrojar un resultado al final de sus pasos.
Si el algoritmo se prolonga indefinidamente, volviendo a un punto inicial sin poder resolverlo, estaremos en presencia de una paradoja o un «bucle» de repeticiones.
La legibilidad de los algoritmos es clave, porque si su contenido es incomprensible, no se pueden seguir las instrucciones apropiadas. Esto implica una escritura directa, clara y concisa del texto contenido en cada uno.

Ejemplos de algoritmos

Ejemplo 1:
Crea un algoritmo que te permita ir de la casa a la escuela.
Objetivo: ir de casa a la escuela.
Comienzo
-Salir de casa
-Si está fuera de la escuela, tome un medio de transporte que lo deje cerca.
-Si no estás lejos de la escuela, ve caminando hacia ti mismo.
-Llegar a la puerta de la escuela.
Fin..
Ejemplo 2 : Crea un algoritmo que te permita comprar un boleto para ir al cine.
Objetivo: Adquirir un boleto para ir al cine.
Comienzo
-Diríjase hacia el teatro donde quieres ver la película.
-Si hay personas esperando el boleto, haga la fila y muévase hasta que llegue a la taquilla.
-Si no hay personas esperando para comprar el boleto, vaya a la taquilla.
-Compre el boleto para ver la película.
Fin..
Es importante destacar que, los algoritmos no son solo programas de computadora, sino también manuales que explican paso a paso cómo construir una biblioteca o activar el teléfono celular nuevo. Incluso una receta de cocina puede ser un algoritmo.
En matemáticas, algunos ejemplos de algoritmos son:

  • La multiplicación: donde se mantiene una secuencia de operaciones para obtener el producto.
  • La división: que permite determinar el cociente de dos números.
  • El algoritmo de Euclides: en donde se obtiene el mayor divisor común de dos enteros positivos.

Asimismo, se puede rastrear un algoritmo, por ejemplo, en un diagrama de flujo donde se especifique cada una de las tareas a realizar, con sus acciones y posibles alternativas, hasta el cumplimiento final de la tarea.

Tipos de algoritmo

Existen varias clasificaciones de los algoritmos, basadas en diferentes características. Los algoritmos más comunes son: los algoritmos convencionales que son lo que las personas hacen todos los días en sus diferentes actividades para resolver problemas del trabajo o de la vida cotidiana. Y los algoritmos computacionales que son aquellos que usan la computadora a través de programas diseñados por desarrolladores de software y programadores para resolver problemas de cálculo o manejo de información. También se pueden clasificar:

Según su sistema de signos

De acuerdo con la forma en que describen los pasos a seguir, se puede puntualizar:

  • Algoritmos cuantitativos. Utilizan cálculos numéricos y operaciones algebraicas. Por ejemplo, una multiplicación.
  • Algoritmos cualitativos. Utilizan texto y caracteres verbales para impartir sus instrucciones. Por ejemplo, una receta para cocinar.

Según su función

De acuerdo con las funciones del algoritmo, se puede puntualizar:
Clasificación de algoritmos. Establecen una secuencia de algún tipo para la entrada de algún tipo de datos.

  • Algoritmos de enrutamiento: determinan qué proceso seguirá una instrucción o cómo debe transmitirse un conjunto de datos. Pueden ser adaptativos (se adaptan al problema) o estáticos (siempre funcionan igual).
  • Algoritmos de búsqueda: como su nombre lo indica, le permite recuperar una serie de elementos específicos de una lista específica.

Según su estrategia

Según el método o estrategia que se utilice para mostrar sus resultados, podemos estar en presencia de:

  • Algoritmos heurísticos: se utilizan cuando los métodos tradicionales no logran lanzar una solución, ya que abandonan algún objetivo para lograr un posible resultado.
  • Algoritmos probabilísticos: ofrecen un margen de probabilidad como resultado, por lo que no hay una certeza completa de su exactitud.
  • Algoritmos de escalada: modifican el proceso ya que la solución no es satisfactoria (no cumple con la entrada y la salida) hasta que se acerca a lo que se busca.
  • Algoritmos deterministas: operan de manera lineal, de modo que sus resultados pueden predecirse y aplicarse a procesos controlados.
  • Algoritmos diarios: aquellos utilizados en la toma diaria de decisiones y que pertenecen al campo de los más simples.

Propiedades de un Algoritmo

Las propiedades de un algoritmo son puntos de guía o punto de partida para seguir su correcta elaboración, ya que esta, permite y facilita un mejor desarrollo del problema.
Enunciado del problema. La declaración del problema debe ser clara y completa. Es importante que sepamos exactamente lo que queremos que haga la computadora. Mientras esto no se entienda, no tiene sentido pasar a la siguiente etapa.
Análisis de la solución general. Entendido el problema, para resolverlo, es necesario analizar:

  • Los datos que proporcionan.
  • El proceso al que se requiere enviar estos datos para obtener los resultados esperados.
  • Los datos o resultados que se esperan.
  • Áreas de trabajo, fórmulas y otros recursos necesarios.
  • Definir condiciones si hay.

Diferentes alternativas de solución. Al analizar el problema, podemos tener varias formas de resolverlo. Lo importante es determinar cuál es la mejor alternativa, la que produce los resultados esperados en el menor tiempo.

Enunciado del problema

El enunciado es el proceso inicial para solventar o resolver un problema es el planteamiento y estructura formal de la idea, para su elaboración es fundamental tres elementos que son:

  1. La presentación y descripción del problema: donde, en forma declarativa o de pregunta, se comunicará qué se investigará y se definirá el problema.
  2. Justificación del problema: que dice para qué o con qué fin, se debe calcular y resolver?.
  3. Objetivos: que establecen qué se pretende .

En el enfoque del problema, las partes interesadas, los intereses, el problema percibido y las partes involucradas deben ser consideradas, ya que al tener estos elementos claramente identificados, será mucho más fácil responder a todas las preguntas que se formulen sobre ellos.

Análisis del problema

El análisis de problemas es un conjunto de técnicas para: analizar la situación desde el punto de vista de las partes involucradas; identificar los principales problemas en este contexto; visualizar las relaciones causa – efecto en el árbol de problemas; mostrar las interrelaciones entre los problemas; y mostrar el camino para resolver los problemas.
Una vez, especificado, seleccionado y definido el problema. Se debe identificar las principales causas del problema textual. En esta fase, el objetivo es analizar el problema y dividirlo en sus partes componentes, examinando cómo van juntos. Es necesario comprender el contexto del problema y cómo algunas partes afectan a otras.
Esta es una etapa preparatoria para la generación de soluciones potenciales y la preparación de planes de acción, pero se sabe que las decisiones no son mejores que la información en la que se basan. Por lo tanto, es necesario verificar continuamente si tiene los datos necesarios para continuar, de lo contrario, es mejor detenerse y pensar cómo obtenerlo antes del siguiente paso. Es necesario separar los supuestos de los hechos.
Para realizar un buen análisis del problema es ideal reunir a los involucrados realizar una actividad de identificación en donde se hace entrega de una hoja en blanco en donde ello deberán colocar el problema observado por ellos mismos, esta s una técnica ideal para llegar al corazón de toda la situación.

Elaboración del algoritmo

En la programación, un algoritmo establece, de forma genérica e informal, la secuencia de pasos o acciones que resuelven un determinado problema y, para representarlo, se utiliza fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo.
A continuación los pasos para la elaboración del algoritmo:

  • Análisis previo del problema: antes de realizar cualquier paso es necesario establecer un análisis del problema antes de llevar a cabo cualquier algoritmo.
  • Definición de requisitos: aca van incluidos todos y cada uno de los problemas a resolver por ejemplo: multiplicar, sumar, dividir y ordenar los número o una lista de números para generar un informe.
  • Realización de algoritmos: el algoritmo debe poseer ciertas características (indicadas anteriormente), para una implementación posterior en un lenguaje de programación comprensible y claro para una computadora.
  • Identificación de los módulos: la identificación de los módulos es tan importante como la correcta identificación de los requisitos, esto se debe a que la correcta identificación de los módulos simplifica considerablemente la realización de los algoritmos que darán solución a los requisitos identificados en el paso anterior.
  • Implementación de algoritmos: la implementación de los algoritmos debe realizarse en un lenguaje de programación correcto, con el fin de que una computadora pueda comprender las instrucciones que el algoritmo modela y establece para ejecutarlos y lograr el resultado esperado.

Se puede hablar en un último paso, de una aplicación o programa de computadora, que consiste en un instructivo o una serie de instrucciones ordenadas, para representar el diseño de los algoritmos y así brindar una solución a los requisitos identificados.
Herramientas para la representación de algoritmos:

Pseudocódigo

Es un pseudo-lenguaje intermedio entre el nativo del programador y el lenguaje de programación seleccionado, considerando así un lenguaje de pseudo programación.
El pseudocódigo no posee una sintaxis estándar para la utilización de una combinación de lenguaje natural (basado en el lenguaje nativo del programador) y una serie de símbolos, términos y otras características de los lenguajes de programación de alto nivel como Pascal o APL.

Características del pseudocódigo

  • Es fácil de aprender y usar.
  • Es conciso.
  • Es independiente del lenguaje de programación que se utilizará.
  • Cambiar el lenguaje del programa si es necesario (al lenguaje del programador).
  • Es fácil de mantener.

Sus principales ventajas sobre las técnicas de diagramación que veremos a continuación son su facilidad de creación, evolución y mantenimiento, y la facilidad para expresar el pseudocódigo en cualquier lenguaje de programación.
Cada documento en pseudocódigo debe permitir la descripción de:

  • Instrucciones primitivas.
  • Instrucciones de proceso.
  • Instrucciones de control.
  • Instrucciones compuestas.
  • Instrucciones de descripción.

Estructura de un pseudocódigo

  • Programa.
  • Módulo.
  • Tipo de datos.
  • Constantes
  • Variables

Cuerpo de un pseudocódigo

  • Comienzo.
  • Instrucciones.
  • Fin.

Diagramas de flujo

Son herramientas gráficas para la representación visual y gráfica de algoritmos, compuestas por una serie de símbolos icónicos vinculados por flechas.

Tipos de diagramas de flujo

  • El horizontal. Va de derecha a izquierda, según el orden de la lectura.
  • Vertical. Va de arriba a abajo, como una lista ordenada.
  • Panorámico. Permiten ver todo el proceso en una sola hoja, utilizando los modelos vertical y horizontal.
  • Arquitectónico. Representa un itinerario de trabajo o un área de trabajo.

Para presentar un mecanismo de control y descripción de procesos. El diagrama de flujos representan un mecanismo para controlar y describir procesos, que permiten una mayor organización, evaluación o replanteamiento de secuencias de actividades y procesos de diferentes tipos, dado que son versátiles y simples. A menudo se emplean en disciplinas como programación, computación, economía, finanzas, procesos industriales e incluso psicología cognitiva.

Características del diagrama de flujo

  • Los símbolos representan acciones o funciones en el programa.
  • Las flechas representan el orden de realización de las acciones o funciones, marcando la dirección lógica o el flujo del algoritmo.
  • Cada símbolo tendrá al menos una flecha que conduce a él y una flecha que comienza desde él, excepto los terminadores y conectores.
  • Se leen de arriba a abajo y de izquierda a derecha.

Sus principales ventajas son que, al ser visuales, son muy fáciles de entender y utilizan símbolos estándar. Su mayor desventaja es la dificultad de mantenimiento y actualización, ya que deben utilizarse editores gráficos.

Cabe destacar que, el diagrama de fluidos hace énfasis o representa una secuencia o continuidad específica de actividades, es decir, un pasos a seguir, por ejemplo: en computación los procesos son secuencias iniciadas por disparadores programados dentro del sistema o por intervenciones del usuario del sistema. Cada uno tiene una direcciona donde dirigirse, un propósito que buscar y una serie de pasos que cubre.