馃摑Estudiemos Algoritmos 馃摑 - Educa Sistemas

Breaking

Post Top Ad

Post Top Ad

martes, 12 de marzo de 2019

馃摑Estudiemos Algoritmos 馃摑



La estructura de un algoritmo se resume en: entrada, proceso y salida; donde la entrada es el conjunto de datos que tenemos para la ejecuci贸n del algoritmo, el proceso el conjunto de instrucciones que se estar谩n ejecutando para obtener un resultado, y la salida es el valor resultante de nuestra ejecuci贸n la cual debe hacer match con los requerimientos planteados al inicio.
Conociendo la estructura de un algoritmo tambi茅n podemos intuir que existen diferentes maneras de representarlo, donde podemos destacar el pseudo c贸digo y el diagrama de flujo.


Pseudo C贸digo


El pseudo c贸digo es un lenguaje informal con el cual podemos definir el flujo de un algoritmo mediante una estructura de alto nivel, es decir, es un lenguaje que puede ser un poco arbitrario, pero que se comporta como un lenguaje de programacion sin la rigidez de su sintaxis. Con el pseudo c贸digo podemos dar respuesta a un algoritmo y hacer una ejecuci贸n por medio de un artilugio llamado corrida en frio, que nos permite dar esos primeros pasos para entender el comportamiento de una linea de c贸digo, b谩sicamente interpretamos el lenguaje mentalmente y vamos viendo las ejecuciones y simulando un resultado con unos valores de entrada.



Diagrama de flujo


Un diagrama de flujo es la forma gr谩fica de representar un algoritmo, al igual que el pseudo c贸digo nos permite ejecutar una corrida en frio para comprender cada instrucci贸n y resultado de nuestro algoritmo. Este posee un conjunto de s铆mbolos que representan desde el inicio del algoritmo, hasta condicionales y e instrucciones precisas, lo cual nos ayuda a visualizar de una forma estandarizada la estructura de una soluci贸n planteada.


Existen dos tipos de algoritmos: los cualitativos los cuantitativos. Un algoritmo cualitativo es aquel que se enfoca en caracter铆sticas y la mayor铆a de los datos que maneja son de tipo string (cadena de caracteres), aunque tambi茅n puede tratar con datos num茅ricos, pero solo en forma no calculo, mientras que los cuantitativos tienen como principio el calculo para la resoluci贸n de problemas.


En este articulo estudiaremos algunos algoritmos populares, pero sin profundizar demasiado en sus conceptos puesto que muchos requieren un articulo completo para ser explicados.

Algoritmos de ordenamiento


Los algoritmos de ordenamientos son muy utilizados en diferentes aplicaciones, ya que dependiendo de ciertos axiomas (condiciones) requerimos mostrar un conjunto de elementos de una forma u otra, un ejemplo claro son los filtros de las b煤squedas que realizamos en alguna plataforma de ecommerce, algunas b煤squedas pueden ir relacionadas con nuestros intereses y organizadas seg煤n el grado de importancia. Para la resoluci贸n de esta clase de problemas usamos alg煤n algoritmo de ordenamiento que se adecue a nuestras necesidades de rendimiento y funcionamiento.
  • M茅todo de la burbuja (burblesort): Es un algoritmo que recorre la lista comparando la posicion actual con la siguiente para obtener el resultado esperado.

Imagen extra铆da de wikipedia

  • Ordenamiento por 谩rbol binario( Binary tree sort ): Nos permite organizar los elementos a partir de la construcci贸n de un 谩rbol binario, entendiendo que un 谩rbol binario es una estructura de nodos cuyos elementos hijos solo pueden ser dos, uno izquierdo y uno derecho; la construcci贸n de dicho 谩rbol permite obtener el arreglo de elementos ordenados con su recorrido con la lectura inorden.
  • Ordenamiento por insercion ( Insertion sort ): En este algoritmo se mantiene una sub-lista donde se ejecuta el ordenamiento, mientras se hace el recorrido cada elemento es comparado y se a帽ade a la sub-lista en la posici贸n correspondiente.
  • Ordenamiento por m贸dulos ( Heapsort ): Es un algoritmo no recursivo y es considerado inestable ya que presenta problemas con elementos del mismo valor y no considera su orden de entrada. Se basa en dividir el arreglo en m贸dulos (heap) y va haciendo las comparaciones tomando en cuenta un elemento o nodo recurrente y una cima, que se refiere al menor o mayor valor seg煤n se defina, normalmente este algoritmo construye desde el final del arreglo hasta el inicio. Explicar su comportamiento requiere un articulo dedicado, as铆 que solo tomemos estos conceptos por ahora.

Algoritmos de ruta


Qu茅 programador no conoce los famosos algoritmos para conseguir la ruta m谩s corta, normalmente esta clase de algoritmos son vistos cuando hablamos de geolocalizaci贸n o incluso si queremos ubicar un valor en una direccion de memoria.
  • Dijkstra’s creo que es el 煤nico algoritmo que conozco hasta ahora para conseguir la ruta mas corta, b谩sicamente hacemos la b煤squeda a partir de un grafo, donde tenemos un nodo inicial y vamos a ir iterando sobre los siguientes que tengan el menor valor. Podr铆amos pasar todo un post hablando sobre este algoritmo, pero dejare por aca una implementaci贸n en ruby hecha por mi amigo Nardo Nyko艂yszyn que nos puede ir dando una idea hasta ese momento, el repositorio esta en github.


Muchos planteamientos matem谩ticos tambi茅n se representan de forma algor铆tmica, un ejemplo es la resoluci贸n del problema de como cortar un pastel de forma “equitativa” y “justa” que podemos encontrar en el libro de Ian Stewart Como cortar un pastel (Recomendado) el cual nos plantea que:
Si dos personas quieren compartir un pastel sin discutir , la soluci贸n cl谩sica es «yo corto, tu eliges». El problema se vuelve sorprendentemente espinoso hay mas de dos personas , y cuanto m谩s comensales haya, m谩s espinoso ser谩 todav铆a.


Es sumamente interesante puesto que explica las diferentes formas de resolver un planteamiento aparentemente sencillo, y aqu铆 entramos en materia de complejidad de aun algoritmo, esto b谩sicamente hace parte de la teor铆a de complejidad computacional que es un tema bastante extenso; donde estudiamos todo lo relacionado a los recursos que requiere un algoritmo para llevar a cabo la resoluci贸n de un problema expresado en un computador.

Post Top Ad

Responsive Ads Here