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.

Filtradas unas patentes con nuevas funciones del Iphone 5 Novedades para el iPhone 5. Además del carrusel de rumores y filtraciones que desde hace meses ahogan la actualidad sobre el próximo teléfono de A...
Opencart Module for Dimensional Weight Shipping This extension allows you to set advanced shipping rates for your shop, and can be calculated by Dimensional Weight with Postal Code and Category supp...
Ahora Facebook permite descargar todos tus archivos Puedes bajarte tus fotos, videos, posts, historial de amigos y de equipos desde donde iniciaste sesión Facebook permite desde hace un tiempo a ...
Como Elegir un Logotipo Adecuado Muchas personas encuentran muy difícil seleccionar un logotipo entre las distintas alternativas surgidas durante el proceso de diseño. A continuación...
Firefox 9 para Android Solo unos días después de salir la versión final de Firefox 9, Mozilla ha sacado su última versión del famoso navegador para tablets, Firefox 9 pa...
Facebook tendrá un botón para “simpatizar” con estados de ánimo Facebook es un lugar de encuentro aparentemente ideado para compartir pensamientos, fotos, vídeos y casi cualquier cosa que se te ocurra con tu red de...
Strings on PHP A string is series of characters, therefore, a character is the same as a byte. That is, there are exactly 256 different characters possible. This a...
La Historia del Logo de Facebook Más de 800 millones de usuarios lo ven cada día en sus móviles, sus tabletas y sus computadoras y otros cuantos millones más lo reconocen. El l...
Ya estan fabricando el Ipad Mini Es otro de los dispositivos más esperados del año, aunque lo cierto es que la firma americana Apple todavía no ha llegado a confirmar o desmentir su e...
Scripts to install database management systems phpMyAdmin phpMyAdmin is a free software tool written in PHP intended to handle the administration of MySQL over the World Wide Web. phpMyAdmin suppo...