Para cualquier proceso computacional, el algoritmo correspondiente debe estar rigurosamente definido, es decir, debe especificarse la forma en que se aplica a cada posible circunstancia que pueda surgir. Todos los casos deben estar contemplados, y el criterio que determina cada uno de ellos debe ser claro y computable.

En general, no existe un único algoritmo para cada problema que se quiere resolver.

Diferentes algoritmos pueden completar la misma tarea, requiriendo cada uno diferentes cantidades de tiempo, espacio o esfuerzo. Sin embargo, la especificación puede ser exactamente la misma para todos ellos.

Para especificar un algoritmo de forma tal que su implementación sea correcta –es decir, que haga exactamente lo que se espera de él– y que, a la vez, pueda implementarse con diferentes lenguajes o herramientas, un método consiste en definir sus entradas y salidas, con sus correspondientes precondiciones y poscondiciones.

A modo de ejemplo, veamos la especificación de un algoritmo que busca el máximo
número en una lista:
Algoritmo: BuscarMaximo
• Datos de entrada: una lista l de n elementos numéricos.
• Datos de salida: un número m.
• Precondiciones:
n es un número natural.
n es mayor que cero (o sea, la lista no puede estar vacía).
todos los elementos de l son números racionales.
• Poscondiciones:
m es un número racional.
m es el mayor de los elementos de l.

Esta especificación define de manera inequívoca cómo debe funcionar nuestro algoritmo. Sin embargo, por estar expresado en lenguaje natural –con toda su carga de ambigüedades–, puede prestarse a confusiones (quizá no en este caso, porque es un algoritmo muy simple, pero sí para casos más complejos). Por ese motivo, conviene expresar las especificaciones en un lenguaje más riguroso, como por ejemplo, las expresiones matemáticas usadas en el cálculo de predicados lógicos. Con tales consideraciones, podemos expresar nuestro algoritmo en forma más precisa:

Algoritmo: BuscarMaximo
• Datos de entrada: l1 … ln
• Datos de salida: m
• Precondiciones:
n ? N
n > 0
li ? Q ? 1 ? i ? n
• Poscondiciones:
m ? Q
m ? li ? 1 ? i ? n
No cabe duda de que esta especificación es más rigurosa, aunque seguramente es más
difícil de entender para quien no domina esta clase de expresiones matemáticas.
En el Capítulo 3 se analizan con mayor nivel de detalle las definiciones de precondiciones
y poscondiciones de algoritmos, aplicadas a la especificación de tipos
abstractos de datos (TADs).

 

Como es trabajar desde casa por Internet y como influye en nuestra vida Cuando preguntas a un profesional o alguien que tiene un trabajo desde casa que aspectos han cambiado en su vida diaria, la mayoría te darán las razon...
Casi 3 cuartas partes de los usuarios de Android no compraría un Iphone5 Sea como sea, la compañía Google – otrora conocida como gigante de las búsquedas – ha logrado hacerse con la parte más importante de usuarios de telef...
TweetReach, el analizador de Tweets TweetReach es un analizador web con el que de forma sencilla y gratuita podremos conocer lo lejos que ha llegado un tweet. El manejo de esta herra...
Opencart Module Advanced Shipping This extension allows you to set advanced shipping rates for your shop, and can be calculated by Quantity, SubTotal, Weight, Dimensional Weight or Vol...
Tabla de Colores para las Webs en Hexadecimal Tabla de Colores para las Webs en Hexadecimal Nombre Hexadecimal RGB Muestra R G B ...
Yahoo! tienta a los desarrolladores web con Cocktails Yahoo! quiere ayudar a los desarrolladores a crear aplicaciones utilizando tecnologías estándar como HTML5, JavaScript y CSS. En un post publicado ...
Nueva mejora en HTML que hará a la web más rápida Se trata de un nuevo elemento que gestionará de manera inteligente las imágenes. HTML es el lenguaje con que está escrita una página web: detrás de...
Curiosidades de la vida de Steve Jobs 1. Steven Paul Jobs nació un 24 de febrero de 1955 en San Francisco, California. Estaba casado con Laurene Powelly tuvo cuatro hijos. Murió el 05 de o...
Notepad ++ 5.9.5 El equipo de desarrollo de esta herramienta de edición ha liberado el nuevo Notepad ++ 5.9.5 apenas dos semanas después del lanzamiento de la última v...
ESPECIFICACIÓN DE ALGORITMOS
Tagged on: