Está en la página 1de 9

Anlisis y Diseo de Algoritmos

INTRODUCCIN A LOS ALGORITMOS


1.

Qu es anlisis?, Qu es diseo?, Qu es algoritmo?.

Anlisis: Distincin y separacin de las partes de un todo hasta llegar a conocer los principios o
elementos de este.
Diseo: El diseo se define como el proceso previo de configuracin mental, "pre-figuracin", en la
bsqueda de una solucin en cualquier campo. Utilizado habitualmente en el contexto de la
industria, ingeniera, arquitectura, comunicacin y otras disciplinas creativas.
Algoritmo: Un algoritmo es como un conjunto ordenado y finito de operaciones que permite hallar la
solucin de un problema.
2.

Definir Anlisis y Diseo de Algoritmos.

El anlisis y diseo de algoritmos tiene como objetivo establecer propiedades sobre la eficiencia
permitiendo la comparacin entre soluciones alternativas y predecir los recursos que usar un
algoritmo. Estas estimaciones resultan ser bastante tiles en la bsqueda de algoritmos eficientes.
A la hora de realizar un anlisis terico de algoritmos es comn calcular su complejidad en
un sentido asinttico, es decir, para un tamao de entrada suficientemente grande. La cota
superior asinttica, y las notaciones omega (cota inferior) y theta (caso promedio) se usan con esa
finalidad. Por ejemplo, la bsqueda binaria decimos que se ejecuta en una cantidad de pasos
proporcional a un logaritmo, en O(log(n)), coloquialmente "en tiempo logartmico". Normalmente las
estimaciones asintticas se utilizan porque diferentes implementaciones del mismo algoritmo no
tienen por qu tener la misma eficiencia. No obstante la eficiencia de dos implementaciones
"razonables" cualesquiera de un algoritmo dado estn relacionadas por una constante multiplicativa
llamada constante oculta.
Las medidas exactas de eficiencia son tiles para quienes verdaderamente implementan y usan
algoritmos, porque tienen ms precisin y as les permite saber cunto tiempo pueden suponer que
tomar la ejecucin. Para algunas personas, como los desarrolladores de videojuegos, una
constante oculta puede significar la diferencia entre xito y fracaso.
En ingeniera del software, el diseo de algoritmos es un mtodo especfico para poder crear un
modelo matemtico ajustado a un problema especfico para resolverlo. El diseo de algoritmos es
una teora de la Investigacin de operaciones.
3.

Origen de los algoritmos

Estos surgieron a mediados del siglo IX por el matemtico distinguido y astrnomo Mohammed Ibn
Musa -aljarizm: pero podemos ver que Al_yebr-mugabata es otro que desarrollo frmulas para
posibilitar que con un nmero limitado de procesos fuese posible resolver ecuaciones de primer y
segundo grado.
La historia del algoritmo nace por necesidad de hacer clculos matemticos a travs, de ella se
fundamenta el paso inicial de entender acabadamente cualquier problema planteada.

Anlisis y Diseo de Algoritmos

Pero tambin tengamos en cuenta que los algoritmos estn en el corazn mismos de los
ordenadores y que los leguajes de computacin solo son un medio de expresarlos.
En la teora de los algoritmos podemos mencionar que los algoritmos empezaron a dar inicio
aproximadamente a lo largo de la historia en el siglo 19 aunque ya para este entonces se tena
cierto conocimiento de estos.
4.

Evolucin de los algoritmos

Para ver la evolucin que han tenido los algoritmos a lo largos de los aos en necesario entender
que estos fueron evolucionando segn las necesidades de cmputo y la arquitectura fsica de los
computadores, diversos problemas requieren diversos enfoques para resolverlos estos
virtualmente dio origen a los distintos paradigmas de programacin.
Los paradigmas de la programacin son:
Paradigma Imperativo
Paradigma Declarativo
Paradigma Estructurado
Paradigma Orientado a Objetos:
Paradigma Funcional
Paradigma lgico
Cada paradigma tiene un diferente enfoque y est orientado a un grupo de problemas especficos
las caractersticas que tienen estos paradigmas son:
Paradigma Imperativo: describe la programacin como una secuencia instrucciones o comandos
que cambian el estado de un programa. El cdigo mquina en general est basado en el
paradigma imperativo. Su contrario es el paradigma declarativo, En este paradigma se incluye el
paradigma procedimental(procedural) entre otros.
Paradigma Declarativo: No se basa en el cmo se hace algo(cmo se logra un objetivo paso a
paso), sino que describe(declara) cmo es algo. En otras palabras, se enfoca en describir las
propiedades de la solucin buscada, dejando indeterminado el algoritmo (conjunto de
instrucciones) usado para encontrar esa solucin. Es ms complicado de implementar que el
paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en la solucin de
determinados problemas.
Paradigma Estructurado: la programacin se divide en bloques (procedimientos y funciones) que
pueden o no comunicarse entre s. Adems la programacin se controla con secuencia, seleccin
e iteracin. Permite reutilizar cdigo programado y otorga una mejor compresin de la
programacin. Es contrario al paradigma inestructurado, de poco uso, que no tiene ninguna
estructura, es simplemente un bloque, como por ejemplo, los archivos batch (.bat).
Paradigma Orientado a Objetos: est basado en la idea de encapsular estado y operaciones en
objetos. En general, la programacin se resuelve comunicando dichos objetos a travs de

Anlisis y Diseo de Algoritmos

mensajes (programacin orientada a mensajes). Se puede incluir (aunque no formalmente) dentro


de este paradigma, el paradigma basado en objetos, que adems posee herencia y subtipos entre
objetos.
Su principal ventaja es la reutilizacin de cdigos y su facilidad para pensar soluciones a
determinados problemas.
Paradigma Funcional: este paradigma concibe a la computacin como la evaluacin de funciones
matemticas y evita declarar y cambiar datos. En otras palabras, hace hincapi en la aplicacin de
las funciones y composicin entre ellas, ms que en los cambios de estados y la ejecucin
secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos
problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos secundarios
comunes en otro tipo de programaciones.
Paradigma lgico: se basa en la definicin de reglas lgicas para luego, a travs de un motor de
inferencias lgicas, responder preguntas planteadas al sistema y as resolver los problemas.
Ej.: prolog.
5.

Estructura de un algoritmo

La estructura de un algoritmo sirve para organizar a los elementos que aparecen en l. Todos los
algoritmos tienen la misma estructura, la cual viene definida por tres secciones:

Cabecera

Declaraciones

Cuerpo

Cabecera: En la cabecera de un algoritmo se debe de indicar el nombre (identificador) asignado al


mismo. La sintaxis es: Algoritmo <nombre_del_algoritmo>.
Ejemplo:
Si se quiere disear el algoritmo de un programa que calcule el are de una circunferencia por lo
tanto el algoritmo debe llevar en la cabecera algoritmo Area_de_una_circuferencia
Declaraciones: En esta seccin se declaran las constantes, los tipos de datos y las variables que
se usan en un algoritmo. La sintaxis es la siguiente:
Constantes
<declaracin_de_constantes>
Tipos de datos
<declaracion_de_tipos_de_datos>
Variables
<declaracin_de_de_variables>

Anlisis y Diseo de Algoritmos

Ejemplo:
Para resolver el problema planteado en el tema anterior, es necesario declarar una constante y
dos variables
Constantes
PI=3.1416
Variables
Real rea, radio
Cuerpo: En el cuerpo se escriben todas las instrucciones del algoritmo la sintaxis es:
Inicio
<Instruccin 1>

<Instruccin n>
Fin
Inicio y Fin Son palabras reservadas que marcan el principio y el final de la seccin del cuerpo,
que es donde est el bloque de instrucciones principal del algoritmo.
Ejemplo
Inicio
Escribir (introduzca radio: )
Leer (radio)
rea =PI*radio**2
Escribir (El rea de la circunferencia es:, rea)
Fin
Comentarios. En los algoritmos es conveniente escribir comentarios para explicar el diseo y/0
funcionamiento del mismo.
Ejemplo
/* Cabecera */
Algoritmo Area_de_una_circuferencia

Anlisis y Diseo de Algoritmos

6.

Tipos de algoritmos

Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
Cuantitativos: Son aquellos en los que se utilizan clculos numricos para definir los pasos del
proceso.
Existen varias tcnicas de diseo de algoritmos que permiten desarrollar la solucin al problema
planteado, algunas de ellas son:

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de


candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es ptima.

Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se


puedan ejecutar de forma simultnea en varios procesadores.

Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de
valores pseudoaleatorios

Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo
tiene nicamente un paso sucesor y otro ancesor.

Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a cada


paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente posteriores,
adems todas las ramas se ejecutan simultneamente.

Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de


cada uno de ellos para despus unirlas, logrando as la solucin al problema completo.

Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en


un conocimiento anterior (a veces llamado experiencia) de los mismos.

Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional


aumentando el coste espacial.

Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante


un rbol implcito que se recorre de forma controlada encontrando las mejores soluciones.

Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un rbol


que se examina completamente, almacenando las soluciones menos costosas.

7.

Qu es ejecucin de un programa?

Es la realizacin de las instrucciones de un exe por la CPU. Es entonces cuando el procesador


accede al cdigo mquina del programa y ejecuta sus acciones de forma secuencial.

Anlisis y Diseo de Algoritmos

8.

Corrida en fro de un algoritmo (traza de un algoritmo).

La traza de un Algoritmo se puede definir como la ejecucin manual de forma secuencial de las
sentencias que lo componen. As, la traza del siguiente algoritmo es el valor que van adoptando las
variables a medida que se va ejecutando un programa.
La funcin principal que posee realizar la traza de un algoritmo es la de comprobar que ste
funciona correctamente o para realizar la etapa de depuracin en la que se intenta corregir errores,
simplificar el algoritmo al mximo e incrementar su eficacia y velocidad.
De esta manera, el programador realiza una corrida en fro sobre el programa fuente escogiendo
un conjunto de datos de entrada, ejecutando manualmente cada sentencia del programa fuente y
verificando que los resultados obtenidos son los esperados de acuerdo al conjunto de datos de
entrada. Como una tcnica de depuracin, el programador debe realizar este proceso utilizando
conjuntos de datos que permitan ejecutar todos los caminos posibles del programa.
Ejemplo: Realizar el anlisis E-P-S y disear un algoritmo para calcular el rea de superficie de un
paraleleppedo de dimensiones l (largo), a (ancho) y h (altura).
Codificacin:
float Area()
{
float l, h, a, AS;
printf("Largo del paralelepipedo = ");
scanf(%f,&l);
printf("Ancho del paralelepipedo= ");
scanf(%f,&a);
printf("Altura del paralelepipedo= ");
scanf(%f,&h);
AS = 2 * (l * a + l * h + a * h);
printf("Area de superficie del paralelepipedo = %f", AS);
}

Corrida en fro:
l = 3.0
a = 2.5
h = 7.3
AS = 2 x (3.0 x 2.5 + 3.0 x 7.3 +
2.5 x 7.3) = 95.3

Anlisis y Diseo de Algoritmos

9.

Ejemplos de un algoritmo.

1- Para que una persona pueda ejercer su voto en una eleccin de gobierno, debe ser mayor de
edad y costarricense.

2- Para que una persona pueda casarse, debe ser mayor de edad y soltero.

3- Escriba un algoritmo que calcule la hipotenusa de un tringulo rectngulo, donde ambos catetos
son iguales a 5.

Anlisis y Diseo de Algoritmos

4. Determine el descuento de un artculo por medio de la cantidad de unidades del mismo. si


compras ms de 5 artculos tienes un 5% de descuento, en caso contrario no tiene descuento.

Anlisis y Diseo de Algoritmos

BIBLIOGRAFA
Wikipedia (2013). Anlisis de Algoritmos. Disponible en
http://es.wikipedia.org/wiki/An%C3%A1lisis_de_algoritmos
Wikipedia (2013). Diseo de Algoritmos. Disponible en
http://es.wikipedia.org/wiki/Dise%C3%B1o_de_algoritmos
Mller
G.
(2008).
Clase
9.
Programacin
Modular.
http://es.scribd.com/doc/2959783/3/Corrida-en-frio-de-Algoritmo-Principal
Acevedo,
A.
(2010).
Algortmica
algoritmicayprogramacion.blogspot.com/

Programacin.

Disponible

Disponible

en

http://pnfi-

Rivas A. (2012). Proyecto Algortmica y Programacin. Disponible en


http://es.scribd.com/doc/33942225/Poyecto-Algoritmica-y-programacion-1
Gmez, R. (2009). Curso de Lgica y Algoritmos 2009. Disponible en
http://introduccioninformatica.wordpress.com/2010/04/09/ejercicios-resueltos-de-algoritmos/
Tadeo, M. (2010). Partes de un Algoritmo. Disponible en http://am55887.blogspot.com/

en

También podría gustarte