Un algoritmo es un conjunto finito de instrucciones precisas que realizan una tarea,

la cual, dado un estado inicial, culminará por arrojar un estado final reconocible.

Esta definición asume que la ejecución del algoritmo concluye en algún momento,

dejando fuera los procedimientos que ejecutan permanentemente sin detenerse. Para

incluir a éstos en la definición, algunos autores prefieren obviar la condición de que

la ejecución concluya, con lo cual basta con que un procedimiento sea una secuencia

de pasos que puede ser ejecutada por una entidad para que se lo considere algoritmo.

En el caso que no haya un estado final reconocible, el éxito del algoritmo no

puede definirse como la culminación del proceso con un resultado significativo.

En cambio, se requiere una definición de éxito que contemple secuencias ilimitadas

de resultados, por ejemplo, un sistema de compresión/descompresión de

datos en tiempo real (como los utilizados en el manejo de voz sobre IP); en este

caso, el algoritmo no define por sí mismo la finalización del proceso, debiendo

seguir su funcionamiento mientras haya datos para procesar. El éxito del algoritmo

estará dado por el hecho de que los datos, una vez descomprimidos, sean

iguales que antes de comprimirse.

El concepto de algoritmo se ilustra frecuentemente comparándolo con una receta:

al igual que las recetas, los algoritmos habitualmente están formados por secuencias

de instrucciones que probablemente se repiten (iteran) o que requieren decisiones

(comparaciones lógicas) hasta que completan su tarea. Un algoritmo puede no ser

correcto, con lo cual, por más que sus pasos se lleven a cabo correctamente, el estado

final no será el esperado.

Normalmente, cuando un algoritmo está asociado con el procesamiento de información,

se leen datos de una fuente o dispositivo de entrada, se procesan y se emiten por

un dispositivo de salida, o bien se almacenan para su uso posterior. Los datos almacenados

se consideran parte del estado interno de la entidad que ejecuta el algoritmo.

Dado que un algoritmo es una lista precisa de pasos, el orden de ejecución será casi

siempre crítico para su funcionamiento. En general, se asume que las instrucciones

se enumeran explícitamente, y deben ejecutarse “desde arriba hacia abajo”, lo

cual se establece más formalmente según el concepto de flujo de control.

Esta forma de “pensar” el algoritmo asume las premisas del paradigma de programación

imperativa. Dicho paradigma es el más común, e intenta describir las tareas

en términos “mecánicos” y discretos. Los paradigmas de la programación funcional

y de la programación lógica describen el concepto de algoritmo en una forma ligeramente

diferente (en el Capítulo 2 se detallan los distintos tipos de paradigmas).

Hasta aquí hemos dado una definición ciertamente informal del concepto de algoritmo.

Para definirlo en forma matemáticamente precisa, Alan Mathison Turing

–famoso matemático inglés (1912-1954), cuyas contribuciones en el campo de la

matemática y de la teoría de la computación le han valido ser considerado uno de

los padres de la computación digital– ideó un dispositivo imaginario al que denominó

máquina de computación lógica (LCM, Logical Computing Machine), pero

que ha recibido en su honor el nombre de máquina de Turing. Lo que confiere a

este supuesto dispositivo su extraordinaria importancia es que es capaz de resolver

cualquier problema matemático, a condición de que el mismo haya sido reducido

a un algoritmo. Por este motivo, se considera que algoritmo es cualquier conjunto

de operaciones que pueda ser ejecutado por la máquina de Turing (o, lo que es lo

mismo, por un sistema Turing completo, tal como se explica más adelante).

La máquina de Turing

Una máquina de Turing es un autómata que se mueve sobre una secuencia lineal de

datos. En cada instante, la máquina puede leer un único dato de la secuencia (generalmente

un carácter) y realizar ciertas acciones en base a una tabla que tiene en cuenta

su estado actual (interno) y el último dato leído. Entre las acciones que puede realizar,

está la posibilidad de escribir nuevos datos en la secuencia, recorrer la secuencia en ambos

sentidos y cambiar de estado dentro de un conjunto finito de estados posibles.

Un sistema Turing completo es aquel que puede simular el comportamiento de

una máquina de Turing. Dejando de lado las limitaciones impuestas por la capacidad

de almacenamiento o la memoria, las computadoras actuales y los lenguajes de

programación de propósito general definen sistemas Turing completos.

Independientemente de su forma concreta, cualquier dispositivo que se comporte

como un sistema Turing completo puede en principio ejecutar cualquier cálculo

que realice cualquier computadora; lógicamente, esta afirmación no considera la

posible dificultad de escribir el programa correspondiente o el tiempo que pueda requerir

realizar el cálculo en cuestión.

Podemos consultar la sección de Servicios al lector para conocer los sitios en donde

obtener más información acerca de los sistemas Turing completos.

#Lollipop : Como resolver el problema de señal WiFi en Android 5.0 Lollipop Conviene indicar, en primera instancia, que los dispositivos que parecen experimentar una mayor incidencia son los más antiguos. Nos referimos a los N...
Dominios Tradicionales vs Dominios de Marca Por todos es sabido que para iniciar un proyecto web, bien sea personal o comercial, se necesita adquirir un dominio. Actualmente existen más de 125 m...
Cómo ahorrar batería mientras juegas a Pokemon Go Es uno de los juegos más esperados y deseados del momento, pero tiene un problema bastante grave: gasta mucha batería. Hablamos de Pokémon Go, un jueg...
LG presenta el primer smartphone de cuatro núcleos, Optimus 4X HD La compañía coreana LG irá cargada de sorpresas al Mobile World Congress de Barcelona, con uno de los catálogos de novedades en smartphones más comple...
Redes Sociales y la atención al cliente Hoy en día, muchas empresas tienen presencia en redes sociales como Facebook o Twitter y, a través de estos perfiles, establecen una relación mucho má...
Increible pero cierto, La Velocidad de Internet en Venezuela es menor que en Haití Venezuela destaca en los últimos lugares en el ranking de velocidad de bajada del servicio de Internet, de acuerdo al índice que elabora la empresa Oo...
Alineación en CSS Nos permite alinear los textos dentro de elementos de bloque de las siguientes formas: Izquierda (left). Centrado (center). Derecha (right). ...
Lanzamiento oficial de Windows Phone 8 Después de ver la presentación de hoy de Windows Phone 8 no cabe duda que los de Microsoft se han puesto las pilas y han creado un sistema operativo m...
Google Panda y la Ortografia Tras la última actualización del algoritmo de Google con el nombre de Panda, Webmasters de todo el mundo están preocupados por encontrar las claves qu...
Microsoft elimina el desarrollo de los Nokia con Android Cuando ya solo esperabamos que llegaran los telefonos Nokia X, X+ y XL para comprarlos , Microsoft elimina el proyecto.. Una de las principales atracc...
¿QUÉ SON LOS ALGORITMOS?
Tagged on: