sábado, 29 de septiembre de 2012

¿Qué es un Algoritmo?

Los algoritmos están en la base, y son uno de los conceptos más importantes, de la computación. Un algoritmo es una solución por pasos a un problema de cómputo. Éstos pasos individuales pueden ser repetidos una y otra vez, pero no deben ser ambigüos y, eventualmente, tienen que terminar. Una analogía muy usada para dejar claro qué es un algoritmo, son las recetas de cocina. Éstas incluyen una serie de pasos a realizar en los que el orden es importante y que eventualmente terminan. Por ejemplo, para cocinar huevos con jamón, una receta típica diría:

Paso 1) Pique y fría en mantequilla el jamón hasta que adquiera
        un tono dorado
Paso 2) Agregue uno por uno los huevos y revuelva hasta obtener
        una mezcla homogénea 
Paso 3) Añada una pizca de sal.
Paso 4) Revuelva de vez en cuando hasta que la mezcla esté bien 
        cocida
Paso 5) Sirva con pan tostado.

La tarea es cocinar huevos revueltos, pero ésta ha sido dividida en pasos más pequeños en los cuales el orden es importante. Por ejemplo, vamos a suponer que la cocinera no realiza los pasos en el órden 1) 2) 3) 4) 5), sino en ésta variante: 1), 3), 4), 2), 5). Todos los pasos se ha realizado, pero en éste caso desafortunado, en vez de tener el desayuno servido, tendremos pedazos salados de jamón revueltos con huevos crudos. Éstas instrucciones presentan ambigüedades, por lo cual no se pueden considerar propiamente un algoritmo: hay personas para las que "una pizca de sal" es una cucharada cafetera, y "un tono dorado" puede significar "fría los jamones hasta que se deshidraten tanto que queden crujientes". Desde luego, cualquier cocinera buena evitaría hacer semejantes desastres, pero no debemos confiar mucho en que las cocineras harán un buen desayuno a base de una mala receta, de la misma manera en que no debemos confiar mucho en que el poder ciego de las computadoras va a ejecutar un buen programa a base de un mal algoritmo.
LLevando más lejos incluso la comparación, podemos decir que escribir programas de computación es bastante parecido, al menos conceptualmente, a escribir recetas de cocina. Una receta inicia con una lista de ingredientes y continúa con las instrucciones necesarias para elaborar el platillo. Un programa de cómputo inicia con una declaración de variables que hacen las veces de ingredientes y continúa con instrucciones en las que éstos datos se manipulan para dar un resultado.
Los algoritmos son el grial de la computación. Su importancia se resume en ésta frase, tomada del libro Introducción al diseño y análisis de algoritmos, Un enfoque estratégico, de Lee, Tseng, Chang y Tsai:

"Si usted es rico, y no conoce mucho sobre algoritmos, tal vez no esté preparado para competir con alguien pobre que sepa mucho de algoritmos"

La frase apunta a un hecho bastante común: suele pensarse que para obtener grandes velocidades de cómputo, basta un procesador que realice una gran cantidad de ciclos de instrucción por segundo. Desde luego ésto no es cierto. Se estudian algoritmos para resolver problemas de cómputo de manera eficiente, aún cuando se disponga de los mejores procesadores. Tampoco es cierto que el estudio de los algoritmos haya surgido con la cibernética. Por poner un ejemplo, La Criba de Eratóstenes, un algoritmo para encontrar números primos, fue desarrollado hace 2300 años. Y, finalmente, los algoritmos constituyen la base de la computación no solamente en el software, sino en el hardware. Las operaciones aritméticas llevadas a cabo por la Unidad Aritmética, están basadas en algoritmos, y se ha construído un hardware optimizado cuando se han descubierto algoritmos más eficientes para realizar operaciones aritméticas a nivel de bits.
En las siguientes entradas veremos un par de métodos que los estudiosos de la computación usan para representar algorimos: El Seudocódigo y Los Diagramas de Flujo.
_________________________________________________________________________________________
_________________________________________________________________________________________

Esta entrada forma parte del Curso de C con Programas Explicados Línea por Línea
Índice
Anterior
Siguiente


2 comentarios:

  1. Donde puedo encontrar información de como crear los pseudocodigos y diagrmas de flujo para crear progrmas en c/c++

    ResponderEliminar
    Respuestas
    1. Páginas de internet no se me ocurren. A mí me gusta mucho cómo explican los Deitel en sus libros la manera de crear seudocódigos y diagramas de flujo. Puedes consultar cualquiera de ellos, ya que la redacción es la misma, pero tal vez uno de C/C++ sea lo mejor. El problema es que el de C/C++ en México sólo lo publicaron hasta la segunda edición, de hace más de 10 años, y ya está obsoleta. El de C++ lo encuentras en cualquier librería. También puedes revisar cualquier libro que tenga por título "Introducción a la Programación", como el de Luis Joyanes. Espero te sirva, y si encuentras por ahí una buena página, no dejes de mandarme el link.
      Saludos.

      Eliminar

Related Posts Plugin for WordPress, Blogger...