Conceptos Básicos de los Algoritmos.

Introducción

Frase que hace pensar que cualquier persona es capaz de todo, siempre  que sepa pensar, a un nivel más abstracto todo el mundo debería saber cómo resolver problemas mediante un algoritmo. Los seres humanos somos entes pensantes y con capacidades únicas en cada uno de nosotros, capacidades que como sociedad hemos agrupado en diversas ramas del conocimiento con la finalidad de transformar nuestra habilidad en una herramienta para alcanzar metas en nuestro entorno. Según Gardner todos los seres humanos tenemos un tipo de inteligencia y un método de aprendizaje distinto, entre ellas, destaca la habilidad lógico-matemática, inteligencia considerada como la inteligencia en bruto, es aquella que como su nombre indica es la que vincula a la habilidad ante el razonamiento lógico y la resolución de problemas matemáticos. Mediante un test de inteligencias múltiples, desarrollado por Gardner, se puede medir el nivel desarrollado de cada inteligencia y el resultado indica que habilidades se tienen más desarrolladas, sin embargo no indica que las habilidades o inteligencias no se pueden desarrollar. Al explotar cada una de las inteligencias se vuelven en habilidades, por ejemplo un artista que tiene en el la inteligencia musical, en base a ensayos y a un estudio del arte musical logra convertir la inteligencia en una habilidad para apreciar y criticar música, es decir al explotar su inteligencia obtiene una habilidad. Tener una inteligencia distinta no indica que no pueda desarrollarse una habilidad en otro campo, indica que costará más trabajo obtener la habilidad.

Objetivos


Desarrollar la inteligencia lógico-matemática en realidad no es una tarea difícil, es una tarea que requiere de retar al cerebro a pensar, de encontrar diversos caminos para resolver un problema y principalmente de elegir el indicado.

El presente ensayo reúne definiciones, metodología básica y ejercicios para la resolución de problemas mediante algoritmos.



 Definición

Un algoritmo es una secuencia precisa de operaciones (pasos) que resuelven un problema en un tiempo finito. ∃Solución(problema) ⇔ ∃ALGORITMO(Solución(problema)) Pasos para la resolución de un problema

 :


Resumen: 
Proceso de creación de un programa 
• Planteamiento del problema a resolver. Antes de nada debemos conocer perfectamente el problema y los resultados a obtener. • Representación de los datos. Escoger los tipos de datos a usar. • Diseño de un algoritmo. • Comprobación y optimización de algoritmos. Debemos asegurarnos que el algoritmo realiza la tarea correctamente. • Codificación del programa. Debemos transcribir el algoritmo a un lenguaje de programación concreto para que pueda ser utilizado. • Depuración del programa. El programa debe estar libre de errores. • Documentación del programa. 

El pseudocódigo 

El pseudocódigo es la representación narrativa (no hay reglas sintácticas estrictas) de un algoritmo, escrita en lenguaje natural utilizando las estructuras de control típicas de algún Lenguaje de Programación y algunos símbolos algebraicos. La utilización de pseudocódigo presenta las ventajas de ser más compacto que un organigrama, ser más fácil de escribir y ser más fácil de transcribir a un lenguaje de programación. 
Las estructuras de control deciden qué camino hay que seguir en función de una condición. Son las siguientes: 
1. Estructura secuencial: consiste en colocar una instrucción tras otra, de manera que se van ejecutando de arriba abajo. 
2. Estructura selectiva o condicional (si, si no): permiten ejecutar un conjunto de instrucciones u otras en función de si se cumple o no una condición 
3. Estructura iterativa o de repetición (mientras, repetir, para): permite repetir una instrucción o grupo de ellas un nº fijo de veces o mientras (o hasta que) una condición sea cierta. Estructura secuencial Pseudocódigo de un algoritmo que calcule la media de tres números:
Leer (n1); Leer (n2); 
Leer (n3); suma = n1 + n2 + n3; 
media = suma / 3; escribir (media);
El orden en el que se realizan las operaciones es importante: no puede calcularse la media sin antes haber leído los números.
Estructura selectiva o condicional El formato de esta estructura es el siguiente:
si (se cumple la condición) 
inicio 
 conjunto de acciones;
 fin 
sino 
inicio 
 conjunto de acciones; 
fin
Es decir, primero se examina la condición: si resulta verdadera, se ejecutan las acciones asociadas al si , en caso contrario se ejecutan las acciones asociadas al sino. La instrucción si no no es obligatoria en una estructura condicional (si no queremos hacer nada en caso que la condición sea falsa).


Sus generalidades.

La resolución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto.
Los pasos para la resolución de un problema son:
1.    Diseño de algoritmo, que describe la secuencia ordenada de pasos que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo).
2.    Expresar el algoritmo como un programa de lenguaje de programación adecuado. (Fase decodificación.)
3.    Ejecución y validación del programa por la computadora.
Para llegar a la realización de un programa es necesario el diseño previo de algoritmo, de modo que sin algoritmo no puede existir un programa. 
Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como dela computadora que lo ejecuta. 
La definición de un algoritmo debe definir tres partes: Entrada, Proceso y Salida.

Características de los Algoritmos:
Las características fundamentales que debe cumplir todo algoritmo son:

  • Un algoritmo debe ser preciso e indicar el orden de realización de cada paso
  • Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
  • Un algoritmo debe ser finito. Si se sigue un algoritmo se debe terminar en algún momento; o sea, debe tener un numero finito de pasos.
Lenguaje de Programación:

Un lenguaje de programación es tan solo un medio para expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efectúe el proceso correspondiente.

Se puede ahora empezar con el proceso de desarrollar programas para una computadora. Un programa es simplemente un conjunto de instrucciones para la computadora particular, en conjunto se les llama Software.

Aproximaciones

La mayor parte de las técnicas tiene la característica de poseer errores. aunque la perfección es una meta digna de alabarse, es difícil, si no imposible, alcanzarla. Sin embargo, sus distribuciones aleatorias se agrupa muy próxima alrededor de la predicción.

En algunos conceptos básicos de los Métodos Numéricos podemos encontrar los siguientes: Cifra Significativa, Precisión, Exactitud, Incertidumbre Y Sesgo. Que forman parte a las aproximaciones y predicciones numéricas adecuadas.

Cifras significativas: Cuando se emplea un número en un cálculo, debe haber seguridad de que pueda usarse con confianza. El concepto de cifras significativas tiene dos implicaciones importantes en el estudio de los métodos numéricos.

1.- Los métodos numéricos obtienen resultados aproximados. Por lo tanto, se debe desarrollar criterios para especificar qué tan precisos son los resultados obtenidos.

2.- Aunque ciertos números representan número específicos, no se pueden expresar exactamente con un número finito de cifras.

Por lo que podemos tener un Algoritmos De Aproximación

Dado un problema completo, es probable que no sepamos resolverlo de manera precisa y completa utilizando un algoritmo polimico en tiempo. Para este tipo de problemas, los algoritmos que no conducen a una solución óptima se llaman algoritmos de aproximación. Sin embargo, resulta parcialmente interesante que estos garanticen una cota en el margen de imprecisión.

Exactitud y Precisión: La exactitud se refiere a que tan cercano está el valor calculado o medido del valor verdadero. La precisión se refiere a qué tan cercano está un valor individual medido o calculado respecto a los otros.


Características de los Algoritmos

Las características fundamentales que debe cumplir todo algoritmo son: Asimismo, los algoritmos presentan una serie de características comunes. Son:

  • Precisos. Objetivos, sin ambigüedad. 
  • Ordenados. Presentan una secuencia clara y precisa para poder llegar a la solución.
  • Finitos. Contienen un número determinado de pasos.
  • Concretos. Ofrecen una solución determinada para la situación o problema planteados.
  • Definidos. El mismo algoritmo debe dar el mismo resultado al recibir la misma entrada.



Tipos de algoritmos y ejemplos

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. Asimismo, si requieren o no el empleo de un ordenador para su resolución, se clasifican en computacionales y no computacionales.

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
1.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.

2. 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.
3. 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.

4. 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 su problemas 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 su problemas superpuestos. Es decir, que en él se puedan usar soluciones óptimas de su problemas para encontrar la solución óptima del problema en su conjunto y que el problema se pueda dividir en su problemas que se reutilizan para ofrecer el resultado global.

5. 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 

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.
Realizar un Ejemplo de los pasos para la resolución de un problema algorítmico (Básico-sencillo). 



  1. Análisis previo del problema. 
  2. Diseño del Algoritmo. 
  3. Configuración del entorno de desarrollo y codificación. 
  4. Compilación y pruebas. 
  5. Documentación y mantenimiento.

Variables
 
Son valores que van cambiando durante la ejecución de los procesos del algoritmo, en estas variables se van a guardar las operaciones que el algoritmo realice para resolver el problema. Cada variable tiene un identificador, pues es el nombre con el que se encuentra y un tipo de dato, que indica que datos podrá guardar que pueden ser números, letras o valores cierto o falso.

  • Mencione y explique una característica de los algoritmos.



Todo algoritmo debe cumplir con estas características básicas:

  • Tienen inicio y fin: todo algoritmo comienza en un estado inicial con una serie de datos específicos, y culmina con una solución o salida.
  • Funcionan en secuencia: un algoritmo está compuesto por una serie de pasos ordenados.
  • Las secuencias son concretas: cada paso es claro y no deja lugar a la ambigüedad.
  • Los algoritmos son abstractos: son modelos o guías para ordenar procesos.
  • La cantidad de pasos de un algoritmo es finita.

Las características fundamentales que debe cumplir todo algoritmo son:

1. Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.

2. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.

3. Un algoritmo debe ser finito. el algoritmo se debe terminar en algún momento; o sea, debe tener un número finito de pasos. 

4. Un algoritmo debe ser legibles: El texto que lo describe debe ser claro, tal que permita entenderlo y leerlo fácilmente.

5. Un algoritmo debe definir tres partes: Entrada, Proceso y Salida. Ejemplo: el algoritmo de receta de cocina se tendrá:

• Entrada:  ingrediente y utensilios.

• Proceso:  Elaboración de la receta en la cocina.

• Salida:  Terminación del plato (por ejemplo, Pollo al horno).


                                                 Conclusiones

El diseño de algoritmos es realmente un arte que ayuda al desarrollo de la inteligencia lógico matemática, el hecho de resolver problemas no solo de índole lógico matemática permite aclarar el panorama y elegir la mejor opción para resolver la problemática. Las definiciones y metodología aquí mostrada, así como conceptos permiten entender todos los elementos de un algoritmo y que de esta forma se puedan diseñar los propios para resolver prácticamente cualquier problemática bien planteada.




Bibliografía

https://sites.google.com/site/metodosnumericosmecanica/home/unidad-i/1-1-conceptos-basicos-algoritmos-y-aproximaciones

http://xn--jesusnuez-r6a.com/wp-content/uploads/Anexo_Pseudocodigo-2.pdf
http://www.uhu.es/04004/material/Transparencias2.pdf
https://www.significados.com/algoritmo/
https://sites.google.com/site/portafoliodeacarlosmolina/caracteristicas-y-elementos-para-construir-un-algoritmo
https://www.uaeh.edu.mx/scige/boletin/prepa4/n10/e1.html

Comentarios

  1. Esta muy bien realizado este Blog ya que especifica cada paso de como realizar un algoritmo con todos sus conceptos .

    ResponderEliminar
  2. Me pareció interesante ya que pude saber nas del tema en sí.

    ResponderEliminar
  3. Esta genial! Contiene Información completa y precisa, gracias.
    Saludos

    ResponderEliminar
  4. Esta exelente la iformacion dada en eo blog, explicando muy bien el tema tratado💯

    ResponderEliminar
  5. Interesante el tema compañera me encantó mucho 😍😍😍

    ResponderEliminar
  6. Muy interesante el blog, tiene muy buena información 👌🏼

    ResponderEliminar
  7. Excelente información compañera😊

    ResponderEliminar
  8. Este blog es un tema general sobre los temas tratados contiene buena información resumida y clara.

    ResponderEliminar

Publicar un comentario