domingo, 17 de julio de 2022

Sobre el algoritmo

algoritmo informatico
Básicamente un algoritmo sirve para resolver paso a paso un problema.

Debes saber que la palabra «algoritmo» es un concepto comúnmente relacionado con el ámbito de la informática y está cada vez más presente en nuestro día a día. En este post, explicamos qué es un algoritmo informático y analizamos sus características, diseccionamos los principales tipos de algoritmos que existen y sugerimos algunos ejemplos. ¡Vamos allá!

¿Te has preguntado por qué ves algunas publicaciones en Facebook y otras no? La respuesta la encontrarás en la definición de qué es un algoritmo.

Empecemos a explicarlo con un ejemplo: EdgeRank, el algoritmo de Facebook, es capaz de aprender de tus hábitos y tiene la instrucción de hacer que inviertas más tiempo en la red social.

Su objetivo es tiempo de calidad, para ello registra cuánto pasas viendo cada publicación, tus interacciones y los momentos en los que haces scroll. Con base en esa información, deduce cuáles son tus intereses y decide qué te muestra en la sección de noticias.

 

Técnicamente, ¿qué es un algoritmo?

Para iniciar, primeramente veamos una definición.

En informática, un algoritmo es una secuencia de instrucciones definidas, ordenadas y secuenciales ―esto último sifnifica, que van uno después del otro― , gracias al cual pueden llevarse a cabo ciertos procesos y darse respuesta a determinadas necesidades o decisiones. En otras palabras, un algoritmo es un procedimiento paso a paso para conseguir un fin. A partir de un estado e información iniciales, se siguen una serie de pasos ordenados para llegar a la solución de una situación. 




Los diagramas de flujo sirven para representar algoritmos de manera gráfica

En programación, un algoritmo supone el paso previo a ponerse a escribir el código. Primero debemos encontrar la forma de obtener la solución al problema (definir el algoritmo informático), para luego, a través del código, poder indicarle a la máquina qué acciones queremos que lleve a cabo. De este modo, un programa informático no sería más que un conjunto de algoritmos ordenados y codificadosen un para poder ser ejecutados en un ordenador.

No obstante, los algoritmos no son algo exclusivo de los ámbitos de las matemáticas, la lógica y la computación. Utilizamos numerosos algoritmos para resolver problemas en nuestra vida cotidiana. Algunos de los ejemplos más habituales son los manuales de instrucciones o las recetas de cocina. 

Los algoritmos no tienen que ver con los lenguajes de programación, dado que un mismo algoritmo o diagrama de flujo puede representarse en diversos lenguajes de programación, es decir, se trata de un ordenamiento previo a la programación.

Visto así, un programa no es otra cosa que una serie compleja de algoritmos ordenados y codificados mediante un lenguaje de programación para su posterior ejecución en un computador.

Los algoritmos son el objeto de estudio de la algoritmia.

Algunos programadores afirman que el algoritmo es más importante que el lenguaje de programación y la computadora.

Hagamos la comparación con un edificio: el lenguaje de programación serían los conceptos que los albañiles entienden para ejecutar la obra; la computadora serán los ladrillos y los materiales para construirla, pero los planos serían el algoritmo.

Sin ellos nadie sabría qué hacer, y son los que garantizan que el edificio sea como se lo imaginó el arquitecto y funcione, de tal forma que no encuentres el baño adentro del elevador.

Los algoritmos también son frecuentes en la matemática y la lógica, y son la base de la fabricación de manuales de usuario, folletos de instrucciones, etc.

Su nombre proviene del latín algoritmus y éste apellido del matemático persa Al-Juarismi.

Uno de los algoritmos más conocidos de la matemática es el atribuido a Euclides, para obtener el máximo común divisor de dos enteros positivos, o el llamado “método de Gauss” para resolver sistemas de ecuaciones lineales.

ilustración animada del proceso de un algoritmo de ordenación de números.ilustración animada del proceso de un algoritmo de ordenación de números.

En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas determinados. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador de su patrón. Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el producto, el algoritmo de la división para calcular el cociente de dos números, el algoritmo de Euclides para obtener el máximo común divisor de dos enteros positivos, o el método de Gauss para resolver un sistema de ecuaciones lineales.

En general, la parte común en cualquier definición se puede resumir en las siguientes tres propiedades, siempre y cuando no consideremos algoritmos paralelos;

  • Tiempo secuencial. Un algoritmo funciona en tiempo discretizado –paso a paso–, definiendo así una secuencia de estados computacionales por cada entrada válida (la entrada son los datos que se le suministran al algoritmo antes de comenzar).
  • Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementación (los algoritmos son objetos abstractos), de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo.
  • Exploración acotada. La transición de un estado al siguiente queda completamente determinada por una descripción fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de términos del estado actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigüedad y sin hacer referencia a una computadora en particular, y además tiene un límite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Fuente: Wikipedia (ver bibliografía)


Ir a indice

Partes de un algoritmo

Todo algoritmo debe constar de las siguientes partes:

  • Input o entrada. El ingreso de los datos que el algoritmo necesita para operar y así poder ofrecer la solución esperada.
  • Proceso. Conjunto de pasos para que, a partir de los datos de entrada, llegue a la solución de la situación. Se trata de la operación lógica formal que el algoritmo emprenderá con lo recibido del input.
  • Output o salida.Resultados, obtenidos una vez terminada la ejecución del algoritmo, a partir de la transformación sobre los valores provenientes del proceso sobre el input.

De este modo, un algoritmo informático parte de un estado inicial y de unos valores de entrada, sigue una serie de pasos sucesivos y llega a un estado final en el que ha obtenido una solución.


En un algoritmo siempre debe haber un punto de inicio y un punto de terminacion (SON FINITOS) y estos deben ser únicos y deben ser fácilmente identificables.


Ir a indice

¿Para qué sirve un algoritmo?

Dicho muy llanamente, un algoritmo sirve para resolver paso a paso un problema. Se trata de una serie de instrucciones ordenadas y secuenciadas para guiar un proceso determinado.

En las Ciencias de la computación, no obstante, los algoritmos constituyen el esqueleto de los procesos que luego se codificarán y programarán para que sean realizados por el computador.


Ir a indice

Tipos de algoritmos

Existen diversas clasificaciones de algoritmos, en función de diferentes criterios.

Según su sistema de signos (cómo describen los pasos a seguir), se distingue entre algoritmos cuantitativos y cualitativos, si lo hacen a través de cálculos matemáticos o secuencias lógicas.

Algoritmos cualitativos. Se trata de un algoritmo en cuya resolución no intervienen cálculos numéricos, sino secuencias lógicas y/o formales.

Ejemplo: la inteligencia artificial ha permitido el desarrollo de programas para la detección de fraudes bancarios.

Descubrieron que la forma en la que tecleamos es única, por lo que han desarrollado softwares capaces de detectar si el titular de una cuenta está tratando de entrar a su homebanking o es un impostor con base en la fuerza y la velocidad con que teclea su nombre y su clave de usuario.

Algoritmos cuantitativos. Todo lo contrario, es un algoritmo que depende de cálculos matemáticos para dar con su resolución.

Ejemplo: volviendo a Facebook, muchas de las funciones de las métricas son cuantitativas. Por ejemplo, sumar cuántas vistas tuvo una publicación, el número de interacciones y el cruce resultante de ambos datos para tener una media.

Asimismo, si requieren o no el empleo de un ordenador para su resolución, se clasifican en computacionales y >no computacionales.

Algoritmos computacionales. Un algoritmo cuya resolución depende del cálculo, y que puede ser desarrollado por una calculadora o computadora sin dificultades.

Algoritmos no computacionales. Aquellos que no requieren de los procesos de un computador para resolverse, o cuyos pasos son exclusivos para la resolución por parte de un ser humano.

Pero, si nos fijamos en su función (qué hace) y su estrategia para llegar a la solución (cómo lo hace), encontramos muchos más tipos de algoritmos. Destacamos los siguientes cinco tipos de algoritmos informáticos:

Infografía de tipos de algoritmos informáticos
Infografía de tipos de algoritmos informáticos.

Algoritmos de búsqueda

Los algoritmos de búsqueda localizan uno o varios elementos que presenten una serie de propiedades dentro de una estructura de datos.

Ejemplos de algoritmos de búsqueda

Existen diversos tipos de búsquedas, entre las que sobresalen: 

  • Búsqueda secuencial. En la que se compara el elemento a localizar con cada elemento del conjunto hasta encontrarlo o hasta que hayamos comparado todos.
  • Búsqueda binaria. En un conjunto de elementos ordenados, hace una comparación con el elemento ubicado en el medio y, si no son iguales, continúa la búsqueda en la mitad donde puede estar. Y así sucesivamente en intervalos cada vez más pequeños de elementos.

Algoritmos de ordenamiento

Reorganizan los elementos de un listado según una relación de orden. Las más habituales son el orden numérico y el orden lexicográfico. Un orden eficiente optimiza el uso de algoritmos como los de búsqueda y facilitan la consecución de resultados legibles por personas y no solo máquinas.

Ejemplos de algoritmos de ordenamiento

Algunos algoritmos de ordenamiento son:

  • Ordenamiento de burbuja. Compara cada elemento de la lista a ordenar con el siguiente e intercambia su posición si no están en el orden adecuado. Se revisa varias veces toda la lista hasta que no se necesiten más intercambios.
  • Ordenamiento por selección. Vamos colocando el elemento más pequeño disponible en cada una de las posiciones de la lista de forma consecutiva.
  • Ordenamiento rápido. Elegimos un elemento del conjunto (pivote) y reubicamos el resto a cada uno de sus lados, en función de si son mayores o menores que el elemento que estamos tomando como referencia. Repetimos el procedimiento en cada subconjunto.

Algoritmos voraces

Los algoritmos voraces consisten en una estrategia de búsqueda que sigue una heurística en la que se elige la mejor opción óptima en cada paso local con el objetivo de llegar a una solución general óptima. Es decir, en cada paso del proceso escogen el mejor elemento (elemento prometedor) y comprueban que pueda formar parte de una solución global factible. Normalmente se utilizan para resolver problemas de optimización.

Ejemplos de algoritmos voraces

En ocasiones, estos algoritmos no encuentran la solución global óptima, ya que al tomar una decisión solo tienen en cuenta la información de las decisiones que han tomado hasta el momento y no las futuras que puede adoptar. Algunos casos en los que los algoritmos voraces alcanzan soluciones óptimas son:

  • Problema de la mochila fraccional (KP). Disponemos de una colección de objetos (cada uno de ellos con un valor y un peso asociados) y debemos determinar cuáles colocar en la mochila para lograr transportar el valor máximo sin superar el peso que puede soportar. 
  • Algoritmo de Dijkstra. Utilizado para determinar el camino más corto desde un vértice origen hasta los demás vértices de un grafo, que tiene pesos en cada arista.
  • Codificación Huffman. Método de compresión de datos sin perder información, que analiza la frecuencia de aparición de caracteres de un mensaje y les asigna un código de longitud variable. Cuanto mayor sea la frecuencia le corresponderá un código más corto.

Programación dinámica

La programación dinámica es un método de resolución de problemas en el que dividimos un problema complejo en subproblemas y calculamos y almacenamos sus soluciones, para que no haga falta volver a calcularlas más adelante para llegar a la solución del problema. La programación dinámica reduce el tiempo de ejecución de un algoritmo al optimizar la recursión.

Eso sí, para poder aplicarse a un problema, éste debe tener subestructuras óptimas y subproblemas superpuestos. Es decir, que en él se puedan usar soluciones óptimas de subproblemas para encontrar la solución óptima del problema en su conjunto y que el problema se pueda dividir en subproblemas que se reutilizan para ofrecer el resultado global.

Usos de programación dinámica

Algunos casos en los que se utiliza son:

  • La serie de Fibonacci. Sucesión de números que comienza con “0” y “1” y, a partir de ellos, cada número es resultado de la suma de los dos que le preceden. La relación de recurrencia la define. 
  • Problema de la mochila.

Algoritmos probabilísticos

Es una técnica que usa una fuente de aleatoriedad como parte de su lógica. Mediante un muestreo aleatorio de la entrada llega a una solución que puede no ser totalmente óptima, pero que es adecuada para el problema planteado.

Se utiliza en situaciones con limitaciones de tiempo o memoria y cuando se puede aceptar una buena solución de media, ya que a partir de los mismos datos se pueden obtener soluciones diferentes y algunas erróneas. Para que sea más probable ofrecer una solución correcta, se repite el algoritmo varias veces con diferentes submuestras aleatorias y se comparan los resultados. 

Tipos de algoritmos probabilísticos

Existen dos tipos principales de algoritmos probabilísticos:

  • Algoritmo de Montecarlo. Dependiendo de la entrada, hay una pequeña probabilidad de que no acierte o no llegue a una solución. Se puede reducir la probabilidad de error aumentando el tiempo de cálculo.
  • Algoritmo de Las Vegas. Se ejecuta en un periodo de tiempo concreto. Si encuentra una solución en ese tiempo ésta será correcta, pero es posible que el tiempo se agote y no encuentre ninguna solución.

 


Ir a indice

Características de los algoritmos

Algoritmo informático
Un algoritmo debe ofrecer un resultado en base a sus funciones.

Los algoritmos presentan las siguientes características:

  • Secuenciales. Los algoritmos operan en secuencia, debe procesarse uno a la vez.
  • Precisos. Los algoritmos han de ser precisos en su abordaje del tema, es decir, no pueden ser ambiguos o subjetivos. De manera que no cabe el saltarse de un paso 1 aun paso 4 y cosas semejantes que son las que dogmatiza esta propiedad. El problema tendrá solución, al cumplirse la secuencia de pasos en el orden establecido por el programador. Objetivos, sin ambigüedad. 
  • Ordenados. Los algoritmos se deben establecer en la secuencia precisa y exacta para que su lectura tenga sentido y se resuelva el problema.
  • Finitos. Toda secuencia de algoritmos ha de tener un fin determinado, no puede prolongarse hasta el infinito. Es decir, contienen un número determinado de pasos.
  • Concretos. Todo algoritmo debe ofrecer una solución determinada para la situación o problema planteados, en base a las funciones que cumple.
  • Definidos. Un mismo algoritmo ante los mismos elementos de entrada (input) debe dar siempre los mismos resultados. No importa cuantas veces ejecute un algoritmo, siempre debe dar la solución correcta para el cual se diseñó.

Ir a indice

Algoritmo que ya influyen en tu vida

Nuestra vida está totalmente atravesada por los algoritmos. Tienen un rango de influencia que muchas veces ni nos imaginamos, por ejemplo, al momento de solicitar un trabajo.

Cada vez es más común que las empresas utilicen sistemas digitales de reclutamiento, esto quiere decir que las hojas de vida de los candidatos primero son filtradas por un programa para elegir a los mejores, a partir de ahí recién son vistas por el personal de recursos humanos. Y aquí es pertinente hablar de los problemas que plantean los algoritmos: son realizados por personas, por lo que son susceptibles a sus prejuicios y sesgos.

Tal es el caso del desafortunado Tay, un robot de Twitter diseñado para contestar preguntas y establecer comunicaciones que tuvo que ser retirado porque no “sabía” lidiar con las bromas de los usuarios y terminó elaborando mensajes con contenido racista, sexista y xenófobo.

Si quieres pedir un préstamo, es muy probable que el algoritmo también influya. Históricamente los bancos analizaban la capacidad de pago del solicitante junto con sus ingresos y su historial crediticio.

Lo que es un hecho es que son una realidad en nuestra vida y no los podemos detener. La mejor herramienta al alcance de nuestra mano es la información.


Ir a indice

Ejemplos de algoritmos

Un par de ejemplos posibles de algoritmo son:

Algoritmo para elegir unos zapatos de fiesta:

  1. INICIO
  2. Entrar a la tienda y buscar la sección de zapatos de caballero.
  3. Tomar un par de zapatos.
  4. ¿Son zapatos de fiesta?

SI: (ir al paso 5) – NO: (volver al paso 3)

  1. ¿Hay de la talla adecuada?

SI: (ir al paso 6) – NO: (volver al paso 3)

  1. ¿El precio es pagable?

SI: (ir al paso 7) – NO: (volver al paso 3)

  1. Comprar el par de zapatos elegido.
  2. FIN

Algoritmo para calcular el área de un triángulo rectángulo:

  • INICIO
  • Hallar las medidas de la base (b) y altura (h)
  • Multiplicar: base por altura (b x h)
  • Dividir entre 2 el resultado (b x h) / 2
  • FIN




   
Ir a indice

 Fuentes:

https://concepto.de/

https://profile.es/

https://www.avantel.co/

https://es.wikipedia.org/


VIDEOS COMPLEMENTARIOS:






Etiquetas

algoritmo (1)