1. Definición
  2. Educación 🎓
  3. Algoritmo

Algoritmo

En matemáticas, ciencias de la computación y otras doctrinas relacionadas, el algoritmo se define como un conjunto de preceptos establecidos e inequívocos, encontrados metódicamente y de manera limitada que permiten efectuar cómputos, procesar ciertas informaciones, dar soluciones a problemas y llevar a cabo diversas actividades. Una vez que se parte de un estado inicial y una entrada, siguiendo los procedimientos requeridos, se llega al estado final y se obtiene un resultado. Los algoritmos son el objeto de indagación de la algoritmia y aunque muchos no lo crean, éstos también se pueden usar en todos los aspectos de la vida cotidiana.

Algoritmo 1


Publicidad

Qué es un algoritmo

En informática se suele delimitar como una sucesión de instrucciones secuenciales, en el que se llevan a cabo algunos procesos con la finalidad de dar respuestas a determinadas decisiones o necesidades. De la misma manera, los algoritmos son usados frecuentemente en lógica y matemáticas, además que son el fundamento de la elaboración de manuales de usuario, panfletos ilustrativos, entre otros. Unos de los más distinguidos en las matemáticas, es el atribuido al geómetra Euclides, para alcanzar el máximo común divisor de dos enteros que sean positivos y el conocido “método de Gauss” para determinar los sistemas de ecuaciones lineales.

En relación con las ciencias de la computación, este cálculo puede ser conocido como la secuencia de pautas a seguir para la determinación de un problema a través del uso de un computador.

Por consiguiente, la algoritmia se entiende como una disciplina que se centra en el análisis y el diseño de los algoritmos. En consideración a lo primero, se busca examinar propiedades como su correctitud y su eficacia respecto al tiempo y el espacio, para comprender los problemas que se pueden resolver algorítmicamente. En cuanto a lo segundo, se busca estudiar los paradigmas ya establecidos y propone nuevos ejemplares.

La algoritmia se localiza en el centro del progreso de la informática y es importante en las distintas áreas de la misma. De este modo, sería imposible que servicios tan exitosos como Facebook y Google puedan manejar la magnitud de información que poseen sin la colaboración de algoritmos o de estructuras de datos especializados. Sin embargo, en la vida diaria también se emplean algoritmos, un ejemplo de esto es el encendido de la estufa, pues inicia al momento en el que la persona se dirige a la cocina, la observa y tiene su fin, cuando ésta procede a encenderla.

Características de un algoritmo

algoritmo-2

A pesar de que el algoritmo se conoce como el conjunto ordenado y finito de diversos pasos que conducen a la resolución de un problema, se dice que la naturaleza de estas dificultades varían según el contexto en el que se encuentren, de esta manera, existen problemas químicos, matemáticos, filosóficos, entre otros. Así, se puede decir que su naturaleza es variada y no es necesaria su ejecución mediante el computador. Más allá de todo lo anteriormente explicado, los algoritmos poseen características que son elementales para determinar lo que hoy en día son y a continuación se hará mención de éstas.

  • Las directrices contenidas en un algoritmo deben ser especificas para evitar dejar margen en cualquier tipo de confusiones, esto significa que se deben seguir las instrucciones correspondientes de manera adecuada o por el contrario la representación gráfica de flujo en el que se está inscribiendo no facilitará la solución correcta.
  • Debe estar en perfecta definición, tratando en lo posible de seguirlo cuantas veces sea necesario, para así obtener el mismo resultado y en caso de que ocurra lo opuesto, el algoritmo no será confiable y tampoco servirá como guía a la hora de tomar alguna decisión.
  • Se conocen por la particularidad de ser finitos, éstos suelen terminar en algún instante y más adelante arrojan un resultado al final de cada paso. Si el algoritmo se extiende indefinidamente, retornando a algún punto inicial que no se puede resolver jamás, existe la presencia de una paradoja o el muy conocido “loop” de repeticiones.
  • Por último, se dice que la legibilidad de los algoritmos es el elemento clave, pues si su argumento es ininteligible no se podría seguir las instrucciones correspondientes, además, conlleva una redacción directa, clara y lacónica del texto que se encuentra en cada uno.

Partes de un algoritmo

Toda operación algoritmica posee tres partes distintas que se someten a la estructura básica de un sistema y estas son:

  • Entrada: también llamada cabecera o punto de partida, es la instrucción inicial que representa el génesis del algoritmo y la que motiva su lectura.
  • Proceso: también llamado declaración, es la elaboración precisa que ofrece el algoritmo y se trata básicamente del tronco de sus claves para la formulación de instrucciones.
  • Salida: en esta ultima fase se encuentran las instrucciones puntuales determinadas por el algoritmo, ejemplo, sus comandos o resoluciones.

Ejemplos de algoritmos

Entre los ejemplos más comunes de cálculos matemáticos se encuentran 2+3=5 en suma y 15-9=6 en resta. Otra forma de visualizar algoritmos sencillos es en las recetas de cocinas ya que en éstas se describe un proceso concreto y ordenado, por ejemplo, “primero se debe colocar a calentar media olla de agua, luego se le debe agregar una pizca de sal y finalmente se va a dividir el pimiento para extraer las semillas y los nervios.” En este modelo se presenta un inicio, un proceso y un fin, que básicamente son lo que definen a los algoritmos.

Tipos de algoritmo

algoritmo-3

Entre los diversos tipos de algoritmos existentes en el mundo entero, se hace hincapié en aquellos que se clasifican de acuerdo a un sistema de signos y otros en correspondencia con su función. El algoritmo es básicamente la mejor solución que se conoce para la resolución de cualquier problema en particular y según sus estrategias y sus funciones existen diversos tipos de éstos, entre los que se destacan los dinámicos, al reverso, de fuerza bruta, oportunistas, de marcaje, aleatorios, etc. Además de los algoritmos anteriormente mencionados, existen miles de éstos que son apropiados para resolver dificultades en cualquier área.

Según su sistema de signos

En esta categoría se ubican los cualitativos y los cuantitativos.

  • Los algoritmos cualitativos se caracterizan por poseer elementos verbales, un ejemplo de éstos son las instrucciones o los reconocidos “paso a paso” que se confieren de forma oral, como las recetas de artes culinarias o los procedimientos para realizar trabajos manuales.
  • Los algoritmos cuantitativos son todo lo contrario a los cualitativos, debido a la presencia de ciertos elementos numéricos y a la utilización de las matemáticas para la realización de cálculos, por ejemplo, cuando se halla la raíz cuadrada o se resuelven ecuaciones.

Dentro de esta clasificación también se encuentran los algoritmos computacionales y los no computacionales. Los computacionales se efectúan mediante una computadora y se caracterizan por ser tan complejos al punto de requerir de una máquina para poder ser realizados, además de esto, son algoritmos cuantitativos que se puede llegar a optimizar. Los no computacionales no tienen la obligación de ser ejecutados mediante una máquina o computadora; un claro ejemplo de ésto es la programación de un televisor.

Según su función

En esta clasificación se localizan los siguientes.

1. Algoritmo de marcaje

Este se caracteriza por emplear la automatización para establecer los precios de una forma diligente, enfocándose en factores como el comportamiento de los usuarios y también se conoce como la habilidad de determinar automáticamente los precios para los componentes en devaluación, para lograr incrementar las ganancias de los vendedores. Ésta ha desempeñado un papel muy importante en las prácticas comunes de las industrias aéreas desde los comienzos de la década de 1990.

El algoritmo de marcaje se distingue por ser una de las prácticas más comunes en las industrias altamente competitivas, haciendo referencia a las agencias de viajes o aquellos establecimientos en línea. Esta clase de algoritmo puede llegar a ser extremadamente compleja o relativamente sencilla, pues en muchos casos se advierte que son optimizadas o auto aprendidas con la continuidad de ciertas pruebas. Más allá de todo eso, los algoritmos de marcaje también pueden llegar a ser impopulares con la clientela a medida que los individuos tienden a valorar tanto la estabilidad como la imparcialidad.

2. Algoritmos probabilísticos

Son aquellos en las que la forma en la que se obtienen los resultados dependen de las probabilidades, éstas se conocen comúnmente como algoritmos aleatorios.

En algunas aplicaciones el manejo de este tipo de operación es habitual, como por ejemplo, cuando se simula la conducta de cualquier sistema existente o ideado a lo largo de un tiempo, en el que se obtiene como consecuencia una solución fortuita. En otras circunstancias el problema que debe ser resuelto suele ser determinista pero existe la posibilidad de transformarlo en uno fortuito, para así lograr resolverlo aplicando el algoritmo de probabilidad. Lo positivo de los aleatorios es que su aplicación no necesita de estudios matemáticos muy perfeccionados.

Además, dentro de este grupo existen tres tipos principales que se conocen como el numérico, el Montecarlo y Las Vegas.

  • Los algoritmos numéricos pueden proporcionar un resultado aproximado del problema y son generalmente aplicados en la ingeniería.
  • Los algoritmos de Montecarlo pueden arrojar la solución correcta o la incorrecta y poseen un cierto margen de error y por último.
  • Los algoritmos de Las Vegas se distinguen por no dejar nunca una respuesta incorrecta, de hecho, éstas encuentran la solución correcta o sencillamente te informan del posible fallo.

La programación dinámica hace referencia al método en el que el algoritmo computa los resultados. En ocasiones, las soluciones de ciertos elementos que poseen los problemas, dependen de resultados de otros problemas más reducidos. De modo que, para la resolución de estos se deben volver a calcular los mismos valores para así resolver los subproblemas más diminutos, sin embargo, esto puede llegar a crear un desperdicio de ciclos. Para remendar esto, se puede emplear la programación dinámica y en este caso se recuerda la solución de cada subproblema, para utilizar este mismo valor en vez de repetirlo varias veces.

3. Algoritmos heurísticos

Se distinguen por encontrar soluciones y aún así no garantizan que la mejor de las respuestas sea encontrada, por esta razón, pueden llegar a ser considerados como algoritmos aproximados. Estos pueden utilizarse cuando se considera imposible el hallazgo de alguna solución mediante una vía normal. Los heurísticos proporcionan los usos que se explicarán a continuación. En la planificación, son empleados para la programación de actividades en un corto período de tiempo, en el diseño son utilizados para la delineación de sistemas eléctricos o digitales y en la simulación son usados para la verificación de determinados procedimientos.

4. Algoritmos de vuelta atrás

Se conocen como estrategias recursivas que resuelven problemas como los rompecabezas, laberintos o piezas similares, en el que se realiza una búsqueda profunda para hallar una posible solución. Su nombre hace referencia al hecho de que en las indagaciones realizadas para encontrar algún resultado, siempre se va volviendo al punto anterior para poder tantear alternativas. Éstos suelen ser revocados para observar su impacto en la economía, en los mercados, en el marcaje de precios, en ciertas operaciones y hasta en la misma sociedad.

5. Algoritmo voraz

Se conoce como el destructor o el goloso y es aplicable en los problemas de optimización, en cada paso de este algoritmo se toma una elección lógica y óptima para finalizar con la mejor de las soluciones globales. Sin embargo, se debe tomar en cuenta que una vez que se llega a un juicio no se puede hacer absolutamente nada para corregirlo o cambiarlo en un futuro. Esta operación posee este nombre porque en cada paso se elige la mejor fracción que es capaz de “engullir” sin preocuparse de lo que pase más adelante.

Propiedades de un algoritmo

algoritmo-4

Diversos autores han intentado definir a los algoritmos de una manera formal mientras utilizan modelos matemáticos. Sin embargo, estos ejemplares están íntimamente relacionados a un tipo peculiar de información que incluye números, símbolos y algunas gráficas, mientras que funcionan sobre una extensa cantidad de distribución de datos. Por lo general, la participación común de cada una de las definiciones se ve resumida en las siguientes tres propiedades:

Enunciado del problema

La resolución de problemas por medio de un ordenador, puede consistir en aquél proceso en el que se describe un problema y se permite desarrollar algún programa capaz de resolverlo. En este proceso se exige el análisis del problema, el diseño de un algoritmo y su transformación en un programa, además de la realización y validación de la misma. Los dos primeros pasos son los más complejos en este proceso, pero una vez examinado el problema y obtenido un algoritmo que pueda resolverlo, su tarea se basa principalmente en traducirlo al lenguaje de programación que se desea.

Análisis de la solución general

Una vez definido el problema, es momento de analizar lo siguiente:

  • La informacion de las entradas que nos porporcionan.
  • Los resultados que se desean.
  • El dominio de trabajo, enunciados u otros elementos necesarios.

El análisis de los algoritmos se conocen como la parte más importante de la teoría de complejidad computacional más amplia, pues suministra cálculos teóricos para los recursos que requieren de cualquier algoritmo para la resolución de un problema computacional dado. A la hora de ejecutar una investigación teórica, es frecuente calcular sus complicaciones en un sentido asintótico para obtener un tamaño de entrada lo suficientemente grande. La cota superior asintótica junto a las notaciones theta y omega, se emplean con esa finalidad y cabe destacar que la medida no asintótica puede llegar a ser computarizada.

Las medidas precisas de eficiencia son realmente útiles para aquellos que realmente emplean los algoritmos, pues éstas poseen más precisión y esto les permite determinar el tiempo que tomará la ejecución. Para algunos individuos como los creadores de videojuegos, la constante oculta puede llegar a significar una gran diferencia entre el éxito y el fracaso. Las evaluaciones del tiempo pueden llegar a depender de cómo se defina un determinado paso y para que el análisis cobre sentido se debe garantizar que el tiempo se encuentre acotado notablemente por una constante.

Elaboración del algoritmo

Para llevar a cabo el desarrollo de una operación es importante que se realice una serie de procedimientos para cumplir con la resolución de un problema propiamente dado. Para comenzar se debe realizar un análisis previo de la dificultad y esto se efectúa mediante un estudio que demuestre el verdadero funcionamiento del problema mucho antes de realizar cualquier algoritmo. Por consiguiente, se evalúa la definición de requerimientos, en éste paso se debe tener clara la idea de cuáles son los problemas a solucionar, ya sea la suma de dos números, el ordenamiento de una lista de números, etc.

Más adelante se ejecuta la respectiva identificación de módulos, pues de ésta depende la correcta realización de algoritmos para dar las posibles soluciones a las exigencias que se identificaron anteriormente.

Finalmente se implementa el càlculo en un lenguaje de programación que sea comprensible por una computadora para que sea capaz de comprender las instrucciones que él mismo modela y así las pueda efectuar alcanzando el resultado esperado. En este último procedimiento ya se puede hablar de un programa que está compuesto por una serie de instrucciones que se ordenan unas tras otras y logran dar solución a requerimientos establecidos.

algoritmo-5

Es importante mencionar que en el tiempo secuencial, los algoritmos desempeñan su función en un tiempo discretizado y buscan definir las secuencias de estados computacionales en cada entrada que se considere válida. En el estado abstracto, estas operaciones son elementos independientes y se considera que en ellos las estructuras de primordial orden pueden llegar a ser invariantes bajo el isomorfismo. En la exploración acotada, Las transiciones de un estado a otro quedan completamente establecidas por una explicación permanente y finita, en el que entre un estado y el siguiente, sólo se toma en cuenta la cantidad limitada de los términos del estado actual.

Tampoco hay que dejar pasar inadvertido que los algoritmos suelen expresarse a través de lenguajes de programación «pseudocódigos» la lengua habitual e incluso los conocidos diagramas de flujo. Asimismo, es importante mencionar que los algoritmos cumplen un papel fundamental en la informática debido a su representación de datos como sucesiones de bits. Desde otro ángulo, se define que un programa es el algoritmo que expresa a la computadora aquellos pasos determinados que debe seguir para cumplir adecuadamente ciertas actividades. Por otro lado, aprender a escribir pseudocódigo permite que la programación sea más sencilla y por ende se explicará más adelante.

Los lenguajes de programación, se conocen como una lengua formal o artificial por poseer reglas gramaticales que se encuentran bien definidas, ésta tiene la capacidad de proporcionarle al programador la capacidad de textualizar una serie de instrucciones o sucesiones de reglamentos en forma de algoritmos con la finalidad de mantener un control en cuanto al comportamiento físico y lógico de la computadora, de esta manera, se puede alcanzar los diversos tipos de información. A este conjunto de preceptos escritos por medio de un lenguaje de programación se le designa como programa.

Los lenguajes de programación suelen estar formados por un conjunto de símbolos y reglas gramaticales y semánticas que definen las estructuras vigentes de la lengua y su significado. Desde otra perspectiva, los lenguajes informáticos también engloban a los lenguajes de programación, un claro ejemplo de esto es el HTML que es el que cumple determinadas instrucciones para poder llevar a cabo el contenido de distintos documentos. El lenguaje de programación puede permitir que se especifique de manera precisa aquellos datos que deben ser operados por un software específico bajo una surtida escala de circunstancias.

Por otro lado, el pseudocódigo es el lenguaje de descripción algorítmico que emplea las convenciones elementales de un lenguaje de programación real, pero que está diseñado para la lectura humana en vez de la lectura a través de una máquina, manteniendo independencia de cualquier otro tipo de lenguaje de programación. El pseudocódigo ignora detalles que no se consideran esenciales para el entendimiento humano del algoritmo, tales como códigos propios de un sistema, declaraciones de variables e incluso algunas subrutinas. De este modo, el lenguaje de programación busca complementarse con descripciones precisas en lenguaje natural o con notaciones matemáticas compactas.


Bibliografía

Pérez, Mariana. ( Última edición:25 de enero del 2020). Definición de Algoritmo. Recuperado de: https://conceptodefinicion.de/algoritmo/. Consultado el 4 de junio del 2020