Anda di halaman 1dari 14

Repblica Bolivariana De Venezuela Ministerio Del Poder Popular Para La Educacin Superior Instituto Universitario de Tecnologa Jos Antonio

Anzotegui El Tigre Edo. Anzotegui.

Prof.: Ali Guerra Seccin MM01 Ctedra: Procesamiento de Datos

Integrantes: Emmanuel, Moya C.I: 18229127

Mayo de 2012

ALGORITMO:

1.- Es una secuencia de pasos o procesos lgicamente relacionados entre s a fin de obtener la solucin a un problema planteado. 2.- Es una lista de instrucciones para efectuar paso a paso un proceso. 3.- Conjunto FINITO de pasos o instrucciones, seguidas en un orden lgico, los cuales nos llevan a la solucin de un problema especfico. 4.- Una serie de instrucciones colocadas en cierta secuencia, necesarias para la descripcin de las operaciones que llevan a la solucin de un problema. 5.- Es un procedimiento completo para resolver un problema especfico en un nmero FINITO de pasos. 6.- Es un mtodo para resolver un problema mediante una serie de datos precisos, definidos y finitos.

PASOS PARA PLANTEAR LA SOLUCIN A UN PROBLEMA:

1.- Anlisis del problema. 2.- Identificar las entradas, procesos y salidas del problema, declaracin de variables. 3.- Diseo del Algoritmo: Describe la secuencia ordenada de los pasos, sin ambigedad, es decir, siendo preciso y veraz en la bsqueda de la solucin al problema. 4.- Codificacin del Algoritmo: Es la expresin en un lenguaje de programacin de los pasos definidos en el algoritmo. 5.- Ejecucin y validacin del programa por el computador.

CARACTERSTICAS DE ALGORITMOS:

Las caractersticas fundamentales que debe cumplir todo algoritmo son: 1.- Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso.

2.- Un algoritmo debe estar bien definido, es decir, si se sigue la ejecucin dos veces del mismo se debe obtener la misma secuencia lgica. El algoritmo debe definirse de forma precisa para cada paso, es decir, hay que evitar toda ambigedad al definir cada paso. Puesto que el lenguaje humano es impreciso, los algoritmos se expresan mediante un lenguaje formal, ya sea matemtico o de programacin para un computador. 3.- Un algoritmo debe ser FINITO, Si se sigue un algoritmo se debe terminar en algn momento; o sea, debe tener un numero finito de pasos. 4.- Entrada: El algoritmo tendr cero o ms entradas, es decir, cantidades dadas antes de empezar el algoritmo. Estas cantidades pertenecen adems 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 interpretacin por el computador. 5.- Salida: El algoritmo tiene una o ms salidas, en relacin con las entradas.

CLASIFICACIN DE LOS ALGORITMOS:

Directos: Son aquellos que permiten encontrar la solucin

al problema de manera instantnea o directa, en un nmero determinado de pasos. Ejemplo: 23 = 2*2*2 = 8

Indirecto: Se ignora el nmero de pasos. Son aquellos donde se desconocen el nmero de pasos para

lograr la solucin de un problema.

Estos a su vez, se clasifican en:

Finito: El nmero de pasos a realizar son conocidos as como la factibilidad de solucin al problema planteado, o sea, que va a ver una respuesta al proceso. Infinito: Se desconoce el nmero de pasos a realizar, as como la imposibilidad de encontrar la solucin al problema planteado. Cuando realmente es imposible lograr la solucin, por ms vueltas que le demos al problema. Ejemplo: 20 ; +" ; -2 3 -"

Descripcin de un algoritmo en forma grfica:

Cuando una secuencia de actividades que definen un problema es muy simple en su naturaleza, es decir que slo implique seguir una serie de pasos, uno despus de otro, y que no tenga decisiones lgicas ni alternativas a tomar, es muy fcil describirlo en palabras. Pero si esta secuencia de actividades se hace ms compleja ser no slo difcil describirlo en palabras sino tambin retener todas las alternativas.

Para ilustrar lo anterior, analicemos la secuencia de eventos que tienen lugar todas las maanas para un estudiante de Universidad que tiene clase los lunes y los mircoles a las 08:00 am y los martes y jueves a las 09:00 am.

Una vez que el estudiante se despierta mira el reloj y si no son an las 06:30 am, contina durmiendo. Los lunes y los mircoles, procura levantarse entre las 06:30 am y las 07:30 am. Si llegara a despertarse despus de la hora como frecuentemente ocurre, pensar nuevamente en la falta que le hace el reloj despertador, pero toma la decisin de no ir a clases en esa maana, sin embargo, despus de esta decisin, se baa, se desayuna y se dedica a estudiar.

Si se despierta entre las 06:30 am y las 07:30 am, los lunes o los mircoles se baa, se desayuna y se dedica a leer el peridico hasta que sean ms de las 07:30 am, luego toma el bus y llega a la Universidad. Entra a clase solamente si han transcurrido menos de 15 minutos desde su comienzo, de otra manera, no entra a clase y se dedica a leer las carteleras y a esperar la prxima clase.

Los martes y los jueves, procuran levantarse entre las 07:30 am y las 08:30 am; si se despierta despus de las 08:30 am realizar las mismas actividades que tendran lugar si se levantara los lunes o los mircoles despus de las 07:30 am. De otra forma se baa, se desayuna y lee el peridico hasta que sean ms de las 08:30 am, luego realiza las mismas actividades que tienen lugar los lunes o lo mircoles cuando sale de su casa.

Los dems das de la semana, procura dormir hasta las 08:30 am, despus de esta hora se baa, se desayuna y se dedica a estudiar.

Es dudoso que quien lea por primera vez lo anterior est en capacidad de seguir y mantener fielmente en su memoria la cantidad de actividades, secuencias, decisiones y alternativas que tiene el ejemplo. Su respuesta obvia para remediar lo anterior ser dibujar un grfico, y aun sin conocer todas las tcnicas de los diagramas de flujo ser mucho ms fcil para una persona seguir las actividades a travs de un grfico.

Algoritmos computacionales

Es importante el estudio y conocimiento de lo que hoy conocemos como Algoritmos Computacionales, que desde su aparicin hasta nuestros das es, y seguir siendo; vital para el desarrollo de aplicaciones para computadoras y el manejo y dominio de la lgica de programacin para resolver problemas.

Marco Histrico Un algoritmo es un conjunto de operaciones y procedimientos que deben seguirse para resolver un problema. La palabra algoritmo se deriva del nombre latinizado del gran Matemtico rabe Mohamed Ibn Al Kow Rizmi, el cual escribi sobre los aos 800 y 825 su obra Quitad Al Mugabala, donde se recoga el sistema de numeracin hind y el concepto del cero. Fue Fibinacci, el que tradujo la obra al latn y el inicio con la palabra: Algoritmi Dicit.

El lenguaje algortmico es aquel por medio al cual se realiza un anlisis previo del problema a resolver y encontrar un mtodo que permita resolverlo. El conjunto de todas las operaciones a realizar y de orden en que se deben efectuarse, se le denomina algoritmo.

Generalidades

El programador de computadoras es antes que nada una persona que resuelve problemas, por lo que para llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y sistemtico. A la metodologa necesaria para resolver problemas mediante programas se denomina Metodologa de la Programacin. El eje central de esta metodologa es el concepto, ya tratado, de algoritmo.

Un algoritmo es un mtodo para resolver un problema. Aunque la popularizacin del trmino ha llegado con el advenimiento de la era informtica, algoritmo proviene de Mohammed al-Khowarizmi, matemtico persa que vivi durante el siglo IX y alcanzo gran reputacin por el enunciado de las reglas para sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn del apellido de la palabra algorismus derivo posteriormente en algoritmo. Euclides, el gran matemtico griego (del siglo IV antes de Cristo) que invento un mtodo para encontrar el mximo comn divisor de dos nmeros, se considera con AlKhowarizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos).

El profesor Niklaus Wirth, inventor de Pascal, Modula-2 y Oberon, titulo uno de sus ms famosos libros, Algoritmos + Estructuras de Datos = Programas, significndonos que solo se puede llegar a realizar un buen programa con el diseo de un algoritmo y una correcta estructura de datos.

Esta ecuacin ser de una de las hiptesis fundamentales consideradas en esta obra.

La resolucin de un problema exige el diseo de un algoritmo que resuelva el problema propuesto.

Los pasos para la resolucin de un problema son:

Diseo de algoritmo, que describe la secuencia ordenada de

pasos que conducen a la solucin de un problema dado. (Anlisis del problema y desarrollo del algoritmo).

Expresar el algoritmo como un programa de lenguaje de

programacin adecuado. (Fase de codificacin.)


Ejecucin y validacin del programa por la computadora.

Para llegar a la realizacin de un programa es necesario el diseo previo de algoritmo, de modo que sin algoritmo no puede existir un programa.

Los algoritmos son independientes tanto del lenguaje de programacin en que se expresan como de la computadora que lo ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programacin y ejecutarse en una computadora distinta; sin embargo, el algoritmo ser siempre el mismo. As, por ejemplo, en una analoga con la vida diaria, una receta de un plato de cocina se puede expresar en espaol, ingles o francs, pero cualquiera que sea el lenguaje, los pasos para la elaboracin del plato se realizaran sin importar el idioma del cocinero.

En la ciencia de la computacin y en la programacin, los algoritmos son ms importantes que los lenguajes de programacin o las computadoras. Un lenguaje de programacin es tan solo un medio para expresar un algoritmo y una computadora es solo un procesador para ejecutarlo. Tanto el lenguaje de programacin como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efecte el proceso correspondiente.

Dada la importancia del algoritmo en la ciencia de la computacin, un aspecto muy importante ser el diseo de algoritmos. El diseo de la mayora de los algoritmos requiere creatividad y conocimientos profundos de la tcnica de la programacin. En esencia, la solucin de un problema se puede expresar mediante un algoritmo.

La definicin de un algoritmo debe definir tres partes: Entrada, Proceso y Salida. En el algoritmo de receta de cocina citado anteriormente se tendr:

Entrada: ingrediente y utensilios empleados. Proceso: elaboracin de la receta en la cocina. Salida: terminacin del plato (por ejemplo, cordero).

Los pasos del algoritmo son:


inicio leer el pedido examinar la ficha del cliente si el cliente es solvente aceptar pedido; en caso contrario,

rechazar pedido

fin

Diseo del Algoritmo:

En la etapa de anlisis del proceso de programacin se determina que hace el programa. En la etapa de diseo se determina como hace el programa la tarea solicitada. Los mtodos ms eficaces para el proceso de diseo se basan en el conocido por Divide y Vencers, es decir, la resolucin de un problema complejo se realiza dividiendo el problema en sub problemas y a continuacin dividir estos sub problemas en otros de nivel ms bajo, hasta que pueda ser implementada una solucin en la computadora. Este mtodo se conoce tcnicamente como diseo descendente (Top Down) o modular. El proceso de romper el problema en cada etapa y expresar cada paso en forma ms detallada se denomina refinamiento sucesivo.

Cada sub programa es resuelto mediante un modulo (sub programa) que tiene un solo punto de entrada y un solo punto de salida.

Cualquier programa bien diseado consta de un programa principal (el modulo de nivel ms alto) que llama a sub programas (mdulos de nivel ms bajo) que a su vez pueden llamar a otros sub programas. Los programas estructurados de esta forma se dice que tienen un diseo modular y el mtodo de romper el programa en mdulos ms pequeo se llama Programacin Modular. Los mdulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso por diferentes programadores) y a continuacin combinarlos entre s. El proceso implica la ejecucin de los siguientes pasos hasta que el programa se termina:

Programar mdulo. Comprobar el mdulo. Si es necesario, depurar el modulo. Combinar el modulo con los mdulos anteriores.

El proceso que convierte los resultados del anlisis del problema en un diseo modular con refinamiento sucesivo que permitan una posterior traduccin al lenguaje se denomina diseo de algoritmo.

El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar posteriormente.

5. Tcnica de diseo de algoritmos Diseo de Algoritmos: Hasta ahora se han realizado algunos comentarios respecto a la necesidad de disear algoritmos correctos y eficientes utilizando los elementos de un lenguaje de programacin .Es necesario en este momento mencionar algo sobre cmo hacerlo. El acto de disear un algoritmo puede considerarse como una tarea que difcilmente podr ser del todo automatizada.

Todo problema algortmico es un reto para su diseador, algunos resultan inmediatos de resolver, otros son bastante complejos. La investigacin en esta rea ha permitido descubrir un conjunto de mtodos o esquemas de diseo hacia los cuales puede orientarse la realizacin de muchos algoritmos.

No obstante, y a pesar de que resulta ms adecuado en bastantes casos utilizar alguno de estos esquemas que realizar un diseo desde cero, idear un algoritmo continua siendo una labor bastante creativa donde los conocimientos y la experiencia del propio diseador tiene un papel fundamental.

El diseo de un algoritmo que resuelva un problema es, en general, una tarea difcil. Una forma de facilitar esta labor consiste en recurrir a tcnicas conocidas de diseo de algoritmos, es decir, a esquemas muy generales que pueden adaptarse a un problema particular al detallar las partes generales del esquema.

Muchos problemas pueden resolverse buscando una solucin fcil y directa pero, a la vez bastante ineficiente. Este mtodo, llamado de fuerza bruta, puede ser muy directo, pero con un poco de anlisis puede encontrarse algoritmos ms eficientes. El esquema ms sencillo quizs sea el llamado divide y vencers, basado en la descomposicin de un problema en subproblemas.

Otros esquemas requieren un anlisis minucioso del problema de forma que la solucin se vaya construyendo en etapas. Si puede preverse que decisin conviene en cada etapa para producir cierto tipo de mejor resultado, tenemos una solucin voraz, si la decisin en una etapa, solo puede tomarse tras considerar varias soluciones de otras etapas ms simples, la solucin es dinmica. Aun as, hay problemas cuya solucin no puede hallarse sino mediante un proceso de bsqueda, a pesar de lo complejas que son las operaciones de bsqueda, su uso adecuado mediante el esquema de bsqueda con retroceso (o backtracking) permite ganar gran eficiencia respecto a soluciones de fuerza bruta.

Por ltimo, conviene conocer otros mtodos de diseo de algoritmos que tambin resultan de utilidad prctica. Nos estamos refiriendo a mtodos basados en la mejora de la eficiencia (por ejemplo, el uso de parmetros de acumulacin al resolver problemas utilizando divide y vencers, y el empleo de tablas como estructura auxiliar para la resolucin eficiente de problemas donde se aplica programacin dinmica), y a mtodos basados en transformaciones del dominio para encontrar una solucin ms fcilmente a un problema en un dominio transformado, siendo dicha solucin finalmente adaptada al dominio original.

Consideraciones generales: Si el hbil programador dispone de un recetario de algoritmos de donde poder seleccionar el ms adecuado para cada problema, su tarea se simplifica. Supongamos que disponemos de una especificacin precisa, completa y consistente del problema a resolver y queremos obtener un algoritmo en el que, dados uno datos de entrada valido, se produzca cierto resultado. Si no nos importa la eficiencia del algoritmo, podramos utilizar un algoritmo general llamado algoritmo del museo britnico. Se programa un computador de manera que parta de un conjunto de axioma matemticos y los que use para reducir aleatoriamente teoremas validos.

Aprender los principios bsicos del diseo de algoritmos podemos preguntarnos por un mtodo aceptable. El mas entendido, y quizs el mejor, es

organizar el diseo sobre un esquema de algoritmo o una tcnica de diseo que haya demostrado su utilidad para otros problemas. Este mtodo de trabajo es practicable, puesto que existe un nmero reducido de esquema y tcnicas de diseo.

El conocimiento de tcnicas de diseo es solo un primer paso para el diseador, que debe completarse con otros conocimientos y, sobre todo, con la experiencia. A menudo los algoritmos requieren una organizacin 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 ms, existen algoritmos para implementar dichas estructuras. El uso de estructuras de datos adecuadas pueden hacer trivial el diseo de un algoritmo, o un algoritmo muy complejo puede usar estructuras de datos muy simples.

Uno de los algoritmos ms antiguos conocidos es el algoritmo de Euclides. El trmino algoritmo proviene del matemtico Muhammad ibn Musa alKhwarizmi, que vivi aproximadamente entre los aos 780 y 850 d.C. en la actual nacin Iran. El describi la realizacin de operaciones elementales en el sistema de numeracin decimal. De al-Khwarizmi se obtuvo la derivacin algoritmo.

Clasificacin de algoritmos

Algoritmo determinista: en cada paso del algoritmo se

determina de forma nica el siguiente paso.

Algoritmo no determinista: deben decidir en cada paso de la

ejecucin entre varias alternativas y agotarlas todas antes de encontrar la solucin. Todo algoritmo tiene una serie de caractersticas, entre otras que requiere una serie de recursos, algo que es fundamental considerar a la hora de implementarlos en una mquina.

Estos recursos son principalmente: El tiempo: perodo transcurrido entre el inicio y la finalizacin del algoritmo. La memoria: la cantidad (la medida vara segn la mquina) que necesita el algoritmo para su ejecucin.

Obviamente, la capacidad y el diseo de la mquina pueden afectar al diseo del algoritmo.

En general, la mayora de los problemas tienen un parmetro de entrada que es el nmero de datos que hay que tratar, esto es, N. La cantidad de recursos del algoritmo es tratada como una funcin de N. De esta manera puede establecerse un tiempo de ejecucin del algoritmo que suele ser proporcional a una de las siguientes funciones:

1 : Tiempo de ejecucin constante. Significa que la mayora

de las instrucciones se ejecutan una vez o muy pocas.

logN : Tiempo de ejecucin logartmico. Se puede

considerar como una gran constante. La base del logaritmo (en informtica la ms comn es la base 2) cambia la constante, pero no demasiado. El programa es ms lento cuanto ms crezca N, pero es inapreciable, pues logN no se duplica hasta que N llegue a N2.

N : Tiempo de ejecucin lineal. Un caso en el que N valga

40, tardar el doble que otro en que N valga 20. Un ejemplo sera un algoritmo que lee N nmeros enteros y devuelve la media aritmtica.

NlogN : El tiempo de ejecucin es NlogN. Es comn

encontrarlo en algoritmos como Quick Sort y otros del estilo divide y vencers. Si N se duplica, el tiempo de ejecucin es ligeramente mayor del doble.

N2 : Tiempo de ejecucin cuadrtico. Suele ser habitual

cuando se tratan pares de elementos de datos, como por ejemplo un bucle anidado doble. Si N se duplica, el tiempo de ejecucin aumenta cuatro

veces. El peor caso de entrada del algoritmo Quick Sort se ejecuta en este tiempo.

N3 : Tiempo de ejecucin cbico. Como ejemplo se puede

dar el de un bucle anidado triple. Si N se duplica, el tiempo de ejecucin se multiplica por ocho.

2N : Tiempo de ejecucin exponencial. No suelen ser muy

tiles en la prctica por el elevadsimo tiempo de ejecucin. El problema de la mochila resuelto por un algoritmo de fuerza bruta -simple vuelta atrs- es un ejemplo. Si N se duplica, el tiempo de ejecucin se eleva al cuadrado. Algoritmos polinomiales: aquellos que son proporcionales a

Nk. Son en general factibles. Algoritmos exponenciales: aquellos que son proporcionales

a kN. En general son infactibles salvo un tamao de entrada muy reducido.

Anda mungkin juga menyukai