La palabra algoritmo deriva del nombre de un matemático árabe del siglo IX, llamado Al-Khuwarizmi, quien estaba interesado en resolver ciertos problemas de aritmética y describió varios métodos para resolverlos. Estos métodos fueron presentados como una lista de instrucciones específicas (como una receta de cocina) y su nombre se utiliza para referirse a dichos métodos.
Un algoritmo es, en forma intuitiva, una receta, un conjunto de instrucciones o de especificaciones sobre un proceso para hacer algo. Ese algo generalmente es la solución de un problema de algún tipo. Se espera que un algoritmo tenga varias propiedades. La primera es que un algoritmo no debe ser ambiguo, o sea, que si se trabaja dentro de cierto marco o contexto, cada instrucción del algoritmo debe significar sólo una cosa.
Una posible definición de algoritmo es un conjunto de reglas que permiten obtener un resultado determinado a partir de ciertas reglas definidas. Otra definición sería, algoritmo es una secuencia finita de instrucciones, cada una de las cuales tiene un significado preciso y puede ejecutarse con una cantidad finita de esfuerzo en un tiempo finito. Ha de tener las siguientes características: legible, correcto, modular, eficiente, estructurado, no ambiguo y a ser posible se ha de desarrollar en el menor tiempo posible.
Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Un programa normalmente implementa (traduce hacia un lenguaje de programación concreto) un algoritmo. Puede haber programas que no se ajusten a un algoritmo (pueden no terminar nunca), en cuyo caso se denomina procedimiento a tal programa. Los programas suelen subdividirse en partes menores (módulos), de modo que la complejidad algorítmica de cada una de las partes es menor que la del programa completo, lo cual ayuda al desarrollo del programa.
Una definición informal (no se considera aquí una definición formal, aunque existe): conjunto finito de reglas que dan una secuencia de operaciones para resolver todos los problemas de un tipo dado. De forma más sencilla, podemos decir que un algoritmo es un conjunto de pasos que nos permite obtener un dato. Además debe cumplir estas condiciones:
- Finitud: El algoritmo debe acabar tras un número finito de pasos. Es más, es casi fundamental que sea en un número razonable de pasos.
- Definibilidad: El algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigüedad al definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemático o de programación para un computador.
- Entrada: El algoritmo tendrá cero o más entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen además a conjuntos especificados de objetos. Por ejemplo, pueden ser cadenas de caracteres, enteros, naturales, fraccionarios, etc. Se trata siempre de cantidades representativas del mundo real expresadas de tal forma que sean aptas para su interpretación por el computador.
- Salida: El algoritmo tiene una o más salidas, en relación con las entradas.
- Efectividad: Se entiende por esto que una persona sea capaz de realizar el algoritmo de modo exacto y sin ayuda de una máquina en un lapso de tiempo finito.
A menudo los algoritmos requieren una organización bastante compleja de los datos, y es por tanto necesario un estudio previo de las estructuras de datos fundamentales. Dichas estructuras pueden implementarse de diferentes maneras, y es más, existen algoritmos para implementar dichas estructuras. El uso de estructuras de datos adecuadas pueden hacer trivial el diseño de un algoritmo, o un algoritmo muy complejo puede usar estructuras de datos muy simples.
Aplicaciones de los Algoritmos:
A primera vista, se puede pensar que el conocimiento de estos algoritmos y estructuras de datos no tienen una aplicación práctica inmediata. Sin embargo, su conocimiento y correcta aplicación sirven para producir programas mejores, en el sentido de que aprovechan mejor la memoria del sistema, son más rápidos, eficientes, robustos y tolerantes a fallos.
Las aplicaciones de estos algoritmos en algunos casos son inmediatas; por ejemplo, hallar el trayecto más corto entre dos estaciones es algo que interesa a muchos viajeros del metro y se pueden obtener aproximaciones bastante buenas del mundo real utilizando algunos de los algoritmos que obtienen distancias mínimas. Otros algoritmos sirven para procesar cadenas, lo cual sirve de base para analizadores léxicos o algoritmos criptográficos, por ejemplo.
Además, tener conocimientos adecuados de algoritmia y estructuras de datos facilita el poder pasar de un lenguaje de programación a otro con mucha mayor facilidad: puesto que ya se tiene la base, sólo hace falta superar las dificultades técnicas particulares de cada lenguaje.
Ejemplos
Ejemplo 1:
Problema: Indique la manera de salar una masa.
Ejemplos
Ejemplo 1:
Problema: Indique la manera de salar una masa.
Incorrecto: Ponerle algo de sal a la masa.
Correcto: Agregarle una cucharadita de sal a la masa.
Ejemplo 2:
Problema: Determinar si el número 7317 es primo.
Correcto: Agregarle una cucharadita de sal a la masa.
Ejemplo 2:
Problema: Determinar si el número 7317 es primo.
Incorrecto: Divida el 7317 entre sus anteriores buscando aquellos que lo dividan exactamente.
Correcto: Divida el numero 7317 entre cada uno de los números 1, 2, 3, 4, ..., 7315, 7316. Si una de las divisiones es exacta, la respuesta es no. Si no es así, la respuesta es sí.
Esta es una solución no ambigua para este problema. Existen otros algoritmos mucho más eficaces para dicho problema, pero esta es una de las soluciones correctas.
Ejemplo 3:
Correcto: Divida el numero 7317 entre cada uno de los números 1, 2, 3, 4, ..., 7315, 7316. Si una de las divisiones es exacta, la respuesta es no. Si no es así, la respuesta es sí.
Esta es una solución no ambigua para este problema. Existen otros algoritmos mucho más eficaces para dicho problema, pero esta es una de las soluciones correctas.
Ejemplo 3:
Problema: Volcar un montículo de arena en una zanja.
Algoritmo:
Algoritmo:
Tome una pala.
Mientras haya arena en el montículo cargue la pala con arena y vuélquela en la zanja.
Dejar la pala.
Ejemplo 4:
Desarrolle un algoritmo que describa la manera en que te levantas todas las mañanas para ir a la Universidad.
Salir de la cama
Quitarse el pijama
Ducharse
Vestirse
Desayunar
Arrancar el auto para ir al trabajo
Ejemplo 5:Ejemplo 4:
Desarrolle un algoritmo que describa la manera en que te levantas todas las mañanas para ir a la Universidad.
Salir de la cama
Quitarse el pijama
Ducharse
Vestirse
Desayunar
Arrancar el auto para ir al trabajo
Diseñar un algoritmo para cambiar una llanta a un coche.
Inicio.
Traer gato.
Levantar el coche con el gato.
Aflojar tornillos de las llantas.
Sacar los tornillos de las llantas.
Quitar la llanta.
Poner la llanta de repuesto.
Poner los tornillos.
Apretar los tornillos.
Fuente: weblidi.info.unlp.edu.ar/catedras/ingreso/Material2013/IAI/Cap1.pdf
No hay comentarios.:
Publicar un comentario