ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Algoritmos

russell1231027 de Diciembre de 2012

11.644 Palabras (47 Páginas)356 Visitas

Página 1 de 47

La idea de seleccionar el mejor algoritmo entre un grupo mayor o menor de variantes posibles, es relativa. Los principiantes suelen irse por la vía del que menor cantidad de pasos tiene, buscando una mayor velocidad de ejecución. Este aspecto aunque importante, no es el único a tener en cuenta, además se puede afirmar que no siempre el más pequeño es el más rápido. En computación existe una regla que se cumple generalmente y es que cuando se ahorra tiempo se gasta más espacio y viceversa.

? Ilustremos esta afirmación a través de un ejemplo. Se muestran dos fragmentos de programas elaborados en el lenguaje de programación Turbo Pascal, los cuales realizan un cálculo con 100 valores diferentes:

Monografias.com

Podemos apreciar que el fragmento B duplica al A (en cuanto a la cantidad de líneas), sin embargo se ejecuta mucho más rápido ya que calcula 800*A y 20*B una sola vez en lugar de las 100 que lo hace el fragmento A.

No obstante, a continuación se relacionan algunos consejos muy útiles y que de modo general nos permitirán encontrar sino el mejor, al menos un buen algoritmo de solución:

Escoger uno que no sea ni muy grande ni muy lento.

Que sea claro y se puedan entender fácilmente las operaciones que se realicen (no se puede olvidar que más tarde tendremos nosotros mismos que darle mantenimiento a estos algoritmos).

Escoger uno que dé el resultado correcto (criterio este considerado como el único que tiene que cumplirse de forma absoluta).

Si después de la selección, encontramos varios algoritmos que cumplen los puntos anteriores y tenemos dudas de cual elegir, podemos hacer lo siguiente: los ponemos a trabajar (entiéndase esto por entrarle valores a los datos primarios y evaluar los datos finales o de salida) a todos bajo situaciones similares a las que realmente se enfrentará el que nosotros determinemos. Durante esta prueba pasaremos a medir las características cuantitativas y evaluar las cualitativas de cada uno por separado. Al final de esta tarea, cuando confrontemos los resultados, estaremos mejor preparados para tomar una decisión.

Se nos puede dar el caso también que dentro del conjunto a seleccionar, uno de los algoritmos haya sido confeccionado por nosotros. Es aconsejable aquí acogernos siempre a nuestra creación, incluso aunque esta posea pequeñas desventajas con respecto a los otros. En el caso de que las desventajas fueran muy notables, entonces habría que empezar a pensar en un rediseño de nuestro algoritmo u optar por desechar el nuestro y seleccionar otro mejor.

Es recomendable escoger un algoritmo diseñado y confeccionado por nosotros, ya que es una solución que le hemos dado a un problema producto de un estudio y análisis realizado por nosotros mismos. Por lo tanto, a la hora de trabajar con él, de ejecutarlo, o de hacerle pequeñas o grandes modificaciones, vamos a estar más familiarizados y más seguros que si nos encontráramos en presencia de un algoritmo hecho por cualquier otra persona. Si nos viéramos obligados a seleccionar un algoritmo que no haya sido confeccionado por nosotros, debemos estudiarlo a fondo y tratar de entender cual fue el análisis que se hizo. En caso de que podamos interpretar bien cada paso y sepamos el por qué de cada dato usado, habremos aprendido algo y estaríamos en una situación muy parecida a como si lo hubiésemos diseñado nosotros mismos. Muchos programadores hacen de esto una técnica para adquirir experiencia y aumentar sus conocimientos.

Después de leer estos análisis vemos como la selección del mejor algoritmo es relativa y es un criterio que podrá variar mucho dentro de un grupo de diseñadores y programadores.

Características de los algoritmos

La confección de algoritmos es un trabajo de creación. No existen procedimientos estrictos que nos permitan elaborar algún algoritmo necesario. Todo, empezando por la elección de las palabras a utilizar y terminando por la estructura, depende completamente de las capacidades, gustos y habilidades creadoras del individuo. Lógicamente, esta "libertad de creación" presenta un número grande de ventajas y desventajas. No nos detendremos ahora a realizar un análisis detallado de cada una de ellas puesto que este es un tema muy discutido y sobre el cual los criterios difieren mucho. Sólo se expondrán dos ejemplos (una ventaja y una desventaja) donde la balanza de criterios se ha inclinado más a favor que en contra.

1- La falta de procedimientos generales y de reglas a la hora de confeccionar cualquier algoritmo tiene una importante ventaja y es que, todo el que desee puede plantear su solución a un problema determinado sin necesidad de estudiar un lenguaje de programación en específico y sin tener que memorizar una serie de palabras (muchas de ellas llamadas dentro de estos lenguajes como palabras reservadas) y reglas estrictas. Esto permite también que el que confecciona pueda concentrarse más en determinados aspectos del problema a solucionar y no pierda tiempo estructurando su trabajo ni adentrándose en los detalles del lenguaje empleado.

2- Como desventaja notable se plantea la poca (en algunos casos ninguna) universalidad y el muy mal entendimiento del algoritmo creado, o sea que lo que hacen unos muchas veces no lo entienden otros. Para evitar este problema se han desarrollado los llamados lenguajes de descripción de algoritmos.

Los lenguajes de descripción de algoritmos son muy fáciles de aprender ya que se basan en esquemas o símbolos que combinados con palabras y frases del lenguaje natural conforman la secuencia de pasos. Ejemplo de esto tenemos el llamado diagrama de bloques o como también se conoce diagrama de flujos, en el cual se va a representar cada operación con un símbolo diferente (cada uno recibe el nombre de bloque) en cuyo interior van a estar los datos con que se opera. Los bloques están conectados entre sí por flechas que indican el flujo de la ejecución. En el Capítulo III se estudian de forma detallada las características de este lenguaje. Otro ejemplo de lenguaje simbólico lo constituyen los estructugramas. Estos son empleados para describir pequeños módulos puesto que su estructura se complicaría demasiado al tratar de resolver un problema grande. No presentan flechas ni líneas de flujo y todos sus pasos se encierran dentro de un mismo paralelogramo donde son separados según correspondan.

Para resolver problemas largos se han creado lenguajes de descripción que emplean órdenes similares a algún lenguaje de programación de computadoras, pero donde no se siguen todas las rigurosas reglas y además se emplean frases del lenguaje natural. Estos son muy utilizados en la práctica debido a su fácil conversión cuando van a ser ejecutados en una computadora. Cada lenguaje de descripción ha sido adaptado por los propios programadores según sea el lenguaje de programación con que trabajen, por eso podemos ver lenguajes con una estructura que tiende al Turbo Pascal, otros al C++ y así.

El destino de todo algoritmo confeccionado en cualquier lenguaje de descripción será siempre su traducción a un lenguaje de programación para que pueda ser ejecutado por una máquina computadora. Estos algoritmos después de traducidos reciben el nombre de programas, los cuales tampoco son ejecutados directamente por la computadora, sino que esta última convierte todas esas instrucciones en códigos directamente entendibles por ella.

Una utilidad muy importante que se les ha dado a estos lenguajes de descripción es en los programas de educación, ya que estos han sido incorporados a asignaturas de introducción a la programación con el acertado propósito de enseñar a programar a los alumnos antes de que puedan trabajar con los lenguajes de programación.

Todos los algoritmos, independientemente del objetivo con que fueron diseñados y construidos, nos van a permitir distinguir en su interior tres partes, las cuales no siempre las podremos delimitar con claridad, estas son:

Introducción de la información (Entrada de datos): Constituida por todas aquellas instrucciones que toman datos de un dispositivo externo, almacenándolos para que puedan ser procesados.

Procesamiento de la información: Está formado por las diferentes instrucciones que modifican los objetos a partir de su estado inicial hasta el estado final.

Presentación de la información (Salida de los resultados): Es el conjunto de instrucciones que toman los datos finales y los envían a los diferentes dispositivos externos de salida.

A la hora de construir un algoritmo tenemos que tener en cuenta algunas características propias que siempre tienen que estar presentes, ellas son:

Objetividad o Finalidad: Cada algoritmo elaborado tiene como objetivo dar solución a un tipo de problema determinado y su resultado tiene que constituir dicha solución.

Precisión: Consiste en obtener siempre el mismo resultado, aplicando al algoritmo el mismo juego de datos iniciales. Por esta razón se dice que son unívocos.

Orden: La secuencia de pasos del algoritmo tiene un orden establecido para ejecutarse, en el caso de que dicho orden sea modificado casi siempre se deja de obtener el resultado esperado.

Efectividad: Un algoritmo es efectivo cuando todas sus operaciones puedan ser desarrolladas por una persona utilizando lápiz y papel.

Finitud: Todo algoritmo tiene que ser finito, o sea, que cuando lo ejecutemos, después

...

Descargar como (para miembros actualizados) txt (71 Kb)
Leer 46 páginas más »
Disponible sólo en Clubensayos.com