Está en la página 1de 23

MDULO 1

INTRODUCCIN AL ANLISIS Y DISEO DE ALGORITMOS

QU ES UN PROBLEMA?

Un problema computacional consiste en una caracterizacin de:


un conjunto de datos de entrada, junto con una especificacin de la salida deseada en base a cada entrada Un problema es una funcin o asociacin de entradas con salidas. Un problema puede tener muchos algoritmos.

ALGORITMO
Podemos definir algoritmo como un "conjunto de reglas operacionales inherentes a un cmputo". Se trata de un mtodo sistemtico, susceptible de ser realizado mecnicamente, para resolver un problema dado. Hay que hacer nfasis en dos aspectos para que un algoritmo exista:
1. El nmero de pasos debe ser finito. De esta manera el algoritmo debe terminar en un tiempo finito con la solucin del problema, 2. El algoritmo debe ser capaz de determinar la solucin del problema.
3

CARACTERSTICAS DE UN ALGORITMO
1. Entrada: definir lo que necesita el algoritmo 2. Salida: definir lo que produce. 3. No ambiguo: explcito, siempre sabe qu comando ejecutar. 4. Finito: El algoritmo termina en un nmero finito de pasos. 5. Correcto: Hace lo que se supone que debe hacer. La solucin es correcta 6. Efectividad: Cada instruccin se completa en tiempo finito. Cada instruccin debe ser lo suficientemente bsica como para que en principio pueda ser ejecutada por cualquier persona usando papel y lpiz. 7. General: Debe ser lo suficientemente general como para contemplar todos los casos de entrada.

ALGORITMO
As podemos, decir que un Algoritmo es un conjunto finito de instrucciones precisas para resolver un problema. El algoritmo ms famoso de la historia procede de un tiempo anterior al de los antiguos griegos: el algoritmo de Euclides para calcular el mximo comn divisor de dos enteros. Si el problema es visto como una funcin, entonces el algoritmo toma una entrada y la transforma en la salida.

FORMULACIN Y RESOLUCIN DE PROBLEMAS

Un algoritmo puede ser caracterizado por una funcin lo cual asocia una salida: s= f (E) a cada entrada E.

Se dice entonces que un algoritmo calcula una funcin f. Entonces la entrada es una variable independiente bsica en relacin a la que se producen las salidas del algoritmo, y tambin los anlisis de tiempo y espacio.

FORMULACIN Y RESOLUCIN DE PROBLEMAS

Un programa es una instanciacin de un algoritmo en un lenguaje de programacin.

Un programa consiste en la especificacin formal de un algoritmo por medio de un lenguaje de programacin, de forma que pueda ser ejecutado por una computadora

FORMULACIN Y RESOLUCIN DE PROBLEMAS


Si ya se ha realizado la formulacin del problema podemos cuestionarla con el fin de entender bien la naturaleza del problema.
En nuestra rea, el anlisis de un problema tiene dos etapas claramente definidas y relacionadas:
Formulacin o planteamiento del problema. Resolucin del problema.

FORMULACIN Y RESOLUCIN DE PROBLEMAS


A su vez, la formulacin la podemos descomponer en tres etapas:
Definicin del problema. Supuestos: aserciones y limitaciones suministradas. Resultados esperados.

La fase de planteamiento del problema lo que pretende un algoritmo es sintetizar de alguna forma una tarea, clculo o mecanismo antes de ser transcrito al computador (anlisis previo del problema, primera visin de solucin, resultados parciales y totales, etc)

FORMULACIN Y RESOLUCIN DE PROBLEMAS


La

fase de resolucin del problema se puede descomponer en tres etapas:


Anlisis de alternativas y seleccin de la solucin. Especificacin detallada del procedimiento solucin. Adopcin o utilizacin de una herramienta para su implementacin, si es necesaria.

10

FORMAS DE REPRESENTACIN DE ALGORITMOS


Dentro de las formas de representacin de algoritmos ms conocidas, sobresalen:
La descripcin narrativa El Flujograma convencional El pseudocdigo, o tambin conocido como lenguaje estructurado.

11

ALGORITMIA
La algoritmia es el estudio sistemtico del diseo y anlisis de algoritmos.

12

REA DE ESTUDIO DE LOS ALGORITMOS


Cmo construir algoritmos? Enfoques:

Divide y vencers, programacin dinmica, exacta, estocstica

Cmo expresar algoritmos? Enfoques:


Programacin lgica

estructurada,

de

objetos,

funcional,

Cmo validar algoritmos? Verificacin formal Cmo analizar algoritmos?

Complejidad computacional, robustez, amigabilidad

13

REFINAMIENTO POR PASOS


Una vez que se tiene un modelo matemtico apropiado para un problema, puede formularse un algoritmo basado en ese modelo. Las versiones iniciales del algoritmo a menudo estn mezcladas con proposiciones generales que debern refinarse despus en instrucciones ms pequeas y definidas. Es necesario pasar por varias etapas de formalizacin hasta llegar a un programa cuyos pasos tengan un significado formalmente definido en el manual de algn lenguaje de programacin.

14

REFINAMIENTO POR PASOS

15

REFINAMIENTO POR PASOS


La primera etapa es la modelacin, en esta etapa la solucin del problema del algoritmo expresado de manera muy informal. En la siguiente etapa, el algoritmo se escribe en seudolenguaje. En algn punto del proceso, el programa en seudolenguaje estar suficientemente detallado para que las operaciones que se deban realizar con los distintos tipos de datos estn bien determinados. Entonces se crean los tipos de datos abstractos para cada tipo de dato, dando un nombre de procedimiento a cada operacin y sustituyendo los usos de las operaciones por invocaciones a los procedimientos correspondientes.

16

REFINAMIENTO POR PASOS

En la tercera etapa, se elige una aplicacin para cada tipo de dato abstracto y se escribe el procedimiento que corresponde a cada operacin de ese tipo. Tambin se reemplaza por cdigo en lenguaje de programacin toda la proposicin informal que quede en el algoritmo en seudolenguaje. El resultado ser un programa ejecutable.

17

TIPO DE DATO

El tipo de datos de una variable es el conjunto de valores que sta puede tomar. Los tipos de datos bsicos varan de un lenguaje a otro. Las reglas para construir tipos de datos compuestos a partir de los datos bsicos tambin varan de un lenguaje a otro.

18

TIPO DE DATO ABSTRACTO

Un TDA es un modelo matemtico, junto con varias operaciones definidas sobre ese modelo. Se disean los algoritmos en funcin de un TDA, debe de encontrarse una manera de representar los TDA en funcin de los tipos de datos y las operaciones manejados por un lenguaje establecido. Para representar el modelo matemtico bsico de un TDA, se emplean estructuras de datos que son conjunto de variables, quiz de tipos distintos, conectadas entre s de diversas formas.
19

ALGORITMO DE EUCLIDES
Permite obtener el m.c.d. de dos nmeros: Sean a, b los nmeros ( a > b ) Procedimiento 1 ) Se efecta la divisin entera a : b y obtenemos un cociente c1 y un resto r1 2 ) Se efecta la divisin del divisor b entre el resto r1 y obtenemos un cociente c2 y un resto r2 3 ) Se divide r1 entre r2 y obtenemos c3 y r3 Y as reiteradamente hasta llegar a una divisin exacta, de resto cero. Conclusin: el ltimo divisor empleado es el m.c.d.
20

ALGORITMO MCD
Inicio
variables m, n, r de tipo entero

obtener (m, n)
r = m mod n while (r 0) do m=n n=r r = m mod n end while imprimir (n)

Fin

21

EJEMPLO DEL ALGORITMO DE EUCLIDES


Paso 1 2 3 Operacin Significado

2366 dividido entre 273 es 8 y sobran 182 mcd(2366,273) = mcd(273,182) 273 dividido entre 182 es 1 y sobran 91 182 dividido entre 91 es 2 y sobra 0 mcd(273,182) = mcd(182,91) mcd(182,91) = mcd(91,0)

22

#include using namespace std; int mcd(int x , int y){ int t; x = (x < 0) ? -x:x; y = (y < 0) ? -y:y; t = (x < y) ? x : y; while ( (x % t) || (y % t)) --t; return t; } int euc(int x,int y){ return (!y) ? x : euc(y,x%y); }

int main() { int x,y; cout << "x: "; cin >> x; cout << "y: "; cin >> y; cout << "MCD: " << mcd(x,y) << endl; cout << "MCD (euclides): " << euc(x,y) << endl; }

CDIGO

23

También podría gustarte