Sunteți pe pagina 1din 17

Algortmica III Induccin y recurrencias 2017 - I

GUIA II INDUCCION MATEMATICA


RECURSION- DIVIDE Y VENCERAS
Tres clases hay de ignorancia: no saber lo que debiera
saberse, saber mal lo que se sabe, y saber lo que no
debiera saberse.

Faccois de la Rochefoucald
(1613-1680) Escritor francs

Donald Ervin Knuth Nacido el 10 de enero de


1938, es uno de los ms renombrados cientficos
de la computacin, profesor emrito de la
Universidad de Stanford. Es conocido como
autor de mltiples volmenes: El arte de la
programacin de computadoras, considerado
como una referencia en el rea de ciencias de la
computacin, prcticamente fue el creador del
anlisis de algoritmos y contribuyo
significativamente a varias ramas de teora de
las ciencias de la computacin

I INDUCCION MATEMATICA
Consideremos que la proposicin P(n) definida en un dominio. Se desea
demostrar que P(n) es verdadera para todo n en el dominio. Si verificamos que:

1 P(k) es verdadera, para k un entero (positivo, negativo o cero) fijo.


2 Si P(h) es verdadera para todo h > k llamada (hiptesis inductiva)
implica que P(h+1) es verdadera.
3 P(n) es verdadera para todo n en su dominio.

Quiere decir que si se cumple los pasos 1 y 2 entonces por el principio de induccin
afirmamos que se cumple el paso 3, es decir P(n) es verdadera para todo n.

Ejemplo 1
i = 1 + 2 + 3 +... n = n . (n + 1)
2
sea el enunciado
P(n) = 1 + 2 + 3 +... n = n . (n + 1)
2

Augusto Cortez Vsquez Pag. 1/17


Algortmica III Induccin y recurrencias 2017 - I

1 para n = 1 P(1) = 1 = 1 . 2 = 1
2

2 supongamos que para n=h > 1, P(h) es verdadera hiptesis


inductiva

es decir P(h) = 1 + 2 + 3 +... h = h.(h + 1)


2
tenemos que
3 P(h + 1) = 1 + 2 + 3 +... h + h+1

= (1 + 2 + 3 +... h) + h+1

= h.(h + 1)+h+1
2
= (h+1) . (h+2)
2

por el principio de induccin matemtica se sigue que P(n) es verdadera para todo n 1.

Ejemplo 2
Probar i3 = ( i )2
sea el enunciado
3 3 3 3 2
P(n) = 1 + 2 + 3 +...n =(1 + 2 + 3 +... n)
3 2
1 para n = 1 P(1) = 1 = 1 = 1

2 Supongamos que para n=h>1, P(n) es verdadera hiptesis inductiva.


3 3 3 3 2
es decir P(h)=1 + 2 + 3 +...h =(1 + 2 + 3 +... h)
tenemos que :
3 3 3 3
3 P(h + 1) = 1 + 2 + 3 +...h
3 3 3 3 3
= (1 +2 +3 +...h )+ (h+1)
2 3
= (1 + 2 + 3 +... h) +(h+1)
2
= (1 + 2 + 3 +... h+ h+1)

por el principio de induccin matemtica se sigue que P(n) es verdadera para todo n1.

Augusto Cortez Vsquez Pag. 2/17


Algortmica III Induccin y recurrencias 2017 - I

Ejemplo 3

FUNCION CUADRADO(A) A

INICIO
K 0
S 0
MIENTRAS K < A
S S + A
K K + 1
A*A
FIN MIENTRAS
RETORNAR(S)
RETORNAR

El algoritmo recibe como entrada A y devuelve S= A*A


Sea la proposicin P(n) : Sn = A x Kn

donde Sn y Jn son los valores de S e K despus de haber pasado por el ciclo


MIENTRAS i veces.

para n = 0
P(0) : S0 = 0 = A x K0 = A * 0
porque S e K no han pasado an por el ciclo MIENTRAS

Para n = h 0

supongamos que P(h) : es verdadero para h 0

Sh = A x Kh hipotesis inductiva

para n = h+1 se tiene:

Sh+1 = Sh + A ............(a)

Kh+1 = Kh + 1 .............(b)

De aqu se tiene que:

Reemplazando h.i. en (a)

Sh+1 = A x Kh + A = A x (Kh +1 )

Augusto Cortez Vsquez Pag. 3/17


Algortmica III Induccin y recurrencias 2017 - I

= A x Kh+1 por (b)

luego, se cumple Sh+1 = A x Kh+1

por lo cual P(n) es verdadero para todo n

Ejemplo 4
FUNCION CUADRADO(X,Y) X
INICIO
Y 0
B 0
MIENTRAS B X
Y Y + X
B B + 1
FIN MIENTRAS Y= X*X
RETORNAR

El algoritmo recibe como entrada X y devuelve Y = X * X


Sea la proposicin P(n) : Yn = X . Bn

donde Yn y Bn son los valores de Y y B despus de haber pasado por el


ciclo MIENTRAS n veces.
para n = 0

P(0) : Y0 = 0 = X . B0 = X * 0

pues Y y B no han pasado an por el ciclo MIENTRAS

Para n = h 0

Supongamos que P(h) : es verdadero para h 0

Yh = X x Bh hiptesis inductiva
Para n = h+1 se tiene:

Yh+1 = Yh + X ............(a)

Bh+1 = Bh + 1 .............(b)

De aqu se tiene que:

Reemplazando h.i. en (a)

Yh+1 = X x Bh + X = X x ( Bh +1 )

= X x Bh+1 por (b

Augusto Cortez Vsquez Pag. 4/17


Algortmica III Induccin y recurrencias 2017 - I

Luego, se cumple Yh+1 = X x Bh+1

Por lo cual P(n) es verdadero para todo n

II Recursin
La recursin es un mtodo que, directa o indirectamente, se hace una llamada as
mismo. Esto puede parecer un circulo vicioso: cmo un mtodo F puede resolver un
problema llamndose a si mismo?
La clave esta en que el mtodo F se llama as mismo pero en instancias diferentes, mas
simples, en algn sentido adecuado

Ejemplo

Los ficheros en un computador se almacenan generalmente en directorios. Los


usuarios pueden crear directorios, que a su vez almacenan mas ficheros y
directorios. Suponga que deseamos examinar cada fichero de un directorio D,
incluyendo todos los ficheros de sus subdirectorios ( y sus subdirectorios, y as
sucesivamente). Esto se puede hacer examinando recursivamente los ficheros de
cada subdirectorio junto con todos los ficheros en el directorio D.

la recursion es una tcnica que se utiliza en la vida cotidiana

La recursin es un concepto fundamental en matemticas e informtica. La definicin


mas sencilla es que una funcin se llama recursiva si se llama a si mismo. Una funcin
recursiva es aquella funcin que se define en trminos de si mismo. Una programa o
funcin recursiva requiere una condicin de terminacin que autorice al programa o
funcin a dejar de llamarse a si mismo.
Los lenguajes de programacin mas conocidos permiten la implantacin de algoritmos
recursivos. Esta es una metodologa que se emplea para la solucin de problemas de
computacin y en muchos casos facilita resolverlos.

Augusto Cortez Vsquez Pag. 5/17


Algortmica III Induccin y recurrencias 2017 - I

Ejemplo 5
Definicion recursiva de tren

TREN : Locomotora + Vagones

Vagones : Vagon + Vagones / Vagon

Ejemplo 6
Sea S(N) : suma de los N primeros nmeros. S(N) puede definirse :

Forma recursiva
Algoritmo iterativo

S(1) = 1
S(N) = S(N-1) +N Entero S(Entero N)
Inicio
S=0
Para i desde 1 hasta N
Forma explicita
S = S +i
FinPara
S(N) = N*(N+1) /2
Retornar( S)
Fin
Algoritmo recursivo
Entero Suma()
Inicio
Leer N Entero S(Entero N)
Algoritmo
Inicio recursivo
Escribir S(N)
Fin Si N = 1
Retornar 1
Sino
Retornar( S(N-1)+N)
Fin si
Fin
La funcin Suma lee N y luego escribe
S(N) que es la suma de los N primeros nmeros

Augusto Cortez Vsquez Pag. 6/17


Algortmica III Induccin y recurrencias 2017 - I

Debemos tener en cuenta que la recursin no siempre es apropiada. En ocasiones las


llamadas recursivas consumen tiempo y limitan el valor de N para el cual se puede
ejecutar el programa. No es conveniente, por ejemplo usar la recursin para sustituir
un simple bucle.

Ejemplo 7

Funcion Potencia(a:entero; n:natural) dev (p:entero)


Caso n=0 retornar 1
Caso n >0 return a * Potencia(a,n-1)
Fin
Accion Principal()
Inicio
Leer a,n
Escribir Potencia(a,n)
Fin

Augusto Cortez Vsquez Pag. 7/17


Algortmica III Induccin y recurrencias 2017 - I

Definicin: Una funcin f es recursiva si en su cuerpo contiene una aplicacin de f, es


decir, si se puede activarse a si misma.

Si la llamada sucede dentro de la propia funcin se dice que es directamente recursiva.


En cambio si la funcin llama a otra y esta a su vez llama a la primera se dice que es
recursin indirecta.

El objetivo del programa recursivo, es realizar una serie de llamadas hasta que la
secuencia se define en un punto.

Las directrices para una funcin recursiva son:


- Cada vez que se hace una llamada recursiva en una funcin, el programa deber
comprobar que se satisface una condicin bsica con un determinado parmetro
puesto al valor mnimo.
- Cada vez que se hace la llamada a la funcin, los parmetros enviados a la misma,
debern ser de algn modo ms simple, es decir, su valor tender a la condicin
bsica.

Ejemplo 8
La funcin Factorial puede ser desarrollada iterativamente o recursivamente.
Matemticamente de define como:

1 si
n01

n
!
n
(
n1
) si
n1

Ejemplo 9
La funcin factorial anterior es recursiva lineal.

Para factorial(4) de tiene las siguientes entradas y salidas.

Ejemplo: la secuencia de fibonacci son 1, 1, 2, 3, 5, 8, ... los cuales se determinan por la


funcin:
1 si n <= 1
Fib(n)
Fib(n-1)+fib(n-2) si n>1

fib(int n)
{
if(n==0 || n==1) return 1; /* condicin bsica */
else
return (fib(n-1)+fib(n-2)); /* doble llamada */
}

Para fib(4) se tienen las siguientes entradas y salidas.

Augusto Cortez Vsquez Pag. 8/17


Algortmica III Induccin y recurrencias 2017 - I

En este caso se puede observar que la solucin planteada de fibonacci es impracticable


para valores de n grandes. Cada fib() realiza dos llamadas, por lo que el nmero de
llamadas aumenta en proporcin geomtrica.
Conviene usar recursin siempre? Que pasa con la memoria?

Caso iterativo para fibonacci


Fib(int i)
{ int i,j,k;
if(n>0) {
i=0;
j=1;
for(k=2; k<=n; k++)
{
j=j+i;
i=j-i;
}
return(j);
else return(0);
}

Recursin de Cola

Una funcin f es recursiva de cola si devuelve un valor sin necesidad de recursin o si


devuelve un valor en cada activacin recursiva.
A veces las funciones recursivas pueden implantarse con eficiencia si se aplica
recursin de cola.

Ejemplo 10

Dada la funcin
a si n=0
G(n,a)=
G(n-1,n*a) si n>0

G(int n, int a)
{
if( n==0) return a;
else g(n-1,n*a);
}

Para g(3,1)=g(2,3)=g(1,6)=g(0,6)=6

Es otra forma de calcular 3!

Se puede observar que todo el trabajo de una funcin con recursin de cola se realiza en
la fase de activacin, es decir cuando se realiza la llamada. En el caso de la funcin
recursiva lineal este se realiza despus de que el control regresa.

Augusto Cortez Vsquez Pag. 9/17


Algortmica III Induccin y recurrencias 2017 - I

Ejemplo 11

factorial(3)=3*factorial(2) esta multiplicacin se realiza despus de que el control


regresa de la activacin de factorial(2).

Construccin de una solucin recursiva:


1.- definir un problema en trminos de problemas idnticos en naturaleza pero ms
pequeo.
2.- el tamao del problema debe reducirse en las llamadas anteriores.
3.- encontrara el caso degenerado y asegurar que se llegue a este.

Relacin de recurrencia

La relacin de recurrencia an+1 = 3 an para n 0 no define una nica progresin


geomtrica, pues la secuencia: 7, 21, 63, 189, tambin satisface la relacin. Para
distinguir una sucesin particular descrita necesitamos conocer uno del trmino de la
sucesin. Por tanto
an+1 = 3 an n 0 donde a0 = 5 define 5, 15, 45, 135.

Mientras que
an+1 = 3 an n 0 donde a0 = 3 define 3, 19, 27, 81.

Relacin de recurrencia de primer orden

La ecuacin an+1 = 3 an es una recurrencia, ya que el valor de an+1depende de an .


Como cada elemento depende solo de su predecesor inmediato decimos que es de
primer orden

Relacin de recurrencia homognea lineal de primer orden

En la ecuacin an+1 = K an , an depende solo de su predecesor inmediato

Los valores a0 y a1 que se dan adems de la relacin de recurrencia se denominan


condiciones de frontera. En la expresin a0=A , donde A es una constante, tambin se
conoce como condicin inicial.

La relacin an+1 = K an se dice lineal porque, puede expresarse de la forma


an+1 - K an= 0
Cada trmino con subndice aparece elevado a la primera potencia.

Solucin general de una recurrencia

La solucin general de una recurrencia :


an+1 = K an n 0 donde K es una constante, y a0 = A
es nica y esta dada por :

Augusto Cortez Vsquez Pag. 10/17


Algortmica III Induccin y recurrencias 2017 - I

an = AKn n0
n
As la solucin an = AK , n 0 , define una funcin discreta cuyo dominio es el
conjunto N de los enteros no negativos

Una recurrencia puede ser de tipo homognea o no


homognea
Recurrencia homognea
Una recurrencia es homognea con coeficientes constantes, si tiene la forma

a0tn + a1tn-1 + a2tn-2 +... aktn-k = 0 para todo ai constante

en donde los t i son los valores que estamos buscando . La combinacin


lineal de los tn-i es igual a 0.

Ejemplo 12

an = a n 1 + a n2

podemos reescribir an - a- n 1 - a- n 2 = 0 Rec. homogenea

la recurrencia corresponde a la serie de fibonacci.

Donde K = 2, a0 = 1 a1 = a2 = -1
n
Podemos remplazar tn por x
donde x es uma constante desconocida por el momento

a0 x n + a1 x n-1 + a2 x n-2 +... ak x n = 0


La ecuacin se satisface si x = 0 siendo la solucin trivial
en caso contrario la ecuacin se satisface si existe k tal que

a0 x k + a1 x k-1 + a2 x k-2 +... ak = 0 ecuacion caracterstica

P(x) : a0 x k + a1 x k-1 + a2 x k-2 +... ak polinmio caracterstico

Las races de esta ecuacin estn en alguno de los tres casos siguientes:

r1, r2 son nmeros reales distintos


r1, r2 son nmeros complejos conjugados
r1, r2 son nmeros reales iguales

Augusto Cortez Vsquez Pag. 11/17


Algortmica III Induccin y recurrencias 2017 - I

en todos los casos r1, r2 son las raices caractersticas

Ejemplo 13

an +an-1 - 6an-2 = 0 donde n 2 a0 =1 a1 = 2

P(x) : x2 + x 6 polinomio caracterstico

Cuya solucin esta dada por (x+3)(x-2)

Con races r1 = 2 y r2 = -3

La solucin general es de la forma

an = c1 r1 n + c2 r2 n = c1 2 n + c2 (-3) n

cuando n = 0
a0 = 1= c1 20 + c2 (-3)0 = c1 + c2 (a)
cuando n = 1
a1 = 2 = c1 21 + c2 (-3)1 = 2c1 - 3 c2 (b)

resolviendo (a) y (b)

c1 = 1 y c2 = 0
por tanto
an = 2 n
para n 0

Es la nica solucin de la recurrencia dada.

Recurrencia no homognea
Una recurrencia es no homognea cuando la combinacin lineal no es igual a
cero, es decir, no es cierto que toda la combinacin lineal de las soluciones sea
una solucin

a0tn + a1tn-1 + a2tn-2 +... aktn-k = bn P(n) para todo b, ai constante


P(n) es um polinomio en n

Ejemplo 14

an 2 a n 1 = 3 n b=3 P(n) = 1 (a)

multiplicando (a) por 3

Augusto Cortez Vsquez Pag. 12/17


Algortmica III Induccin y recurrencias 2017 - I

3an 6 a n 1 = 3 n+1 (b)

Sustituyendo n por n-1 en (b)

3an-1 6 a n 2 = 3 n (c)

Restando (a) y (c)

an 5 a n 1 + 6 a n-2 = 0 (d)

(d) es una ecuacion homogenea y se resuelve con la tcnica antes


expuesta.

Solucion de una recurrencia mediante remplazos sucesivos

Ejemplo 15

Consideremos la siguiente serie S : 2, 5, 8, 11, 14...


Se quiere hallar la suma de los N primeros nmeros de la serie
S puede definirse de la siguiente forma

an = an-1 + 3 para n > 1 a1 = 2


Asi
n 1 2 3 4 5
an 2 5 8 11 14

Solucion iterativa
Accion Principal()
Inicio
Leer N Accion SUMA(K)
Escribir SUMA(N) Inicio
S=2
V=5
Fin
Para i desde 1 hasta K-1
S=S+V
V=V +3
FinPara
Retornar S
Fin

Augusto Cortez Vsquez Pag. 13/17


Algortmica III Induccin y recurrencias 2017 - I

Solucion recursiva

Accion Principal()
Inicio
Leer N Accion SUMA(K)
S=0 Inicio
Para i desde 1 hasta N Si k=1
S = S + SUMA(i) Retornar 2
FinPara Sino
Escribir S Retornar SUMA(K-1) + 3
Fin FinSi

De que orden es el algoritmo ?


an = a n 1 +3 a1 = 2 (a)

esta recurrencia puede resolverse mediante la tcnica de polinomio


caracterstico o mediante remplazos sucesivos

si remplazamos n con n-1 en (a) tenemos


an-1 = a- n 2 +3 (b)

sustituimos (b) en (a)


tenemos an = a- n 2 +3 + 3 = a n 2 +3 * 2 (c)

nuevamente
si remplazamos n con n-1 en (a) tenemos
an-2 = a- n 3 +3 (d)

sustituimos (d) en (c)


an = a- n 3 +3 + 3*2 = a n 3 +3 * 3
em general

an = a n k +k * 3
si hacemos K = n-1 tenemos
an = a 1 +(n-1) * 3
y como a1 = 2
tenemos finalmente
an = 2 +3 * (n-1)

As decimos que el algoritmo con ecuacin de recurrencia es de


orden O(3n)

Augusto Cortez Vsquez Pag. 14/17


Algortmica III Induccin y recurrencias 2017 - I

Laboratorio
Implemente una solucin recursiva para hallar la suma de los
primeros N trminos de la sucesin

3, 5, 11, 22, 44

Ejercicios Propuestos

1 Proporcione 2 ejemplos de proposiciones. Demustrelas por el mtodo


de induccin matemtica

2 Probar por el mtodo de induccin que:

a) FUNCION ABC(B, Y; W)
INICIO
W 1
MIENTRAS Y > 0
W W * B
Y Y - 1
FIN MIENTRAS
RETORNAR

Y
El algoritmo recibe como entrada B y Y, y devuelve W = B
Y Y
Sea la proposicin P(n) : Wn * B n = B

donde Wn y Yn son los valores de W y Y despus de haber pasado por el


ciclo MIENTRAS n >=0 veces.

b) FUNCION COMPARA(C, B; X)
INICIO
X C
D B
MIENTRAS D > 0
X X + B
D D - 1
FIN MIENTRAS
RETORNAR

El algoritmo recibe como entrada C y B, y devuelve :


2
X = C+ B

Augusto Cortez Vsquez Pag. 15/17


Algortmica III Induccin y recurrencias 2017 - I

3 Construya un algoritmo para hallar el cociente de dos enteros


sin realizar divisiones. Demuestre por induccion que el
algoritmo funciona

RECURSION

4 Dada la serie S, construya un algoritmo no recursivo para hallar la suma de


los n primeros elementos de S
a) 2, 5, 11,
b) 3, 8, 23.

5 Construya algoritmos recursivos para hallar la pregunta 4

6 Proporcione tres casos de aplicacin de recursion en la vida practica (real)

7 Proporcione una especificacin recursiva para


a) Sumar los N primeros nmeros naturales mltiplos de 5
b) Sumar los elementos de un vector
c) Hallar A*B
d)
Hallar AB

8 Construya un algoritmo recursivo para


a) Invertir el orden de un vector
b) Comparar si dos listas son iguales o no
c) Sumar los elementos de una lista enlazada
d) Hallar la suma de los elementos de un vector en forma recursiva dicotmica

9 Torres de Hannoi

Problema: Se dispone de 3 columnas en las cuales se apilan n discos, unos


encima de otros, de mayor a menor dimetro.
En la posicin inicial todos los discos estn en la primera columna de manera
que los dimetros de los discos aumentan al descender en la pila. Construya el
algoritmo iterativo y otro recursivo. Determine su complejidad temporal y
complejidad espacial. Cual es su orden de complejidad.

10 Resuelva las siguientes recurrencias por el mtodo de polinomio caracterstico y


por el mtodo de reemplazos sucesivos

H(n) = n si n 1
H(n-1) + H(n-2) Si n>1

Dn = 0 si n=0
2 Dn-1 + n + 2n otro caso

tn = 1 si n=0
4 tn-1 - 2n otro caso

Augusto Cortez Vsquez Pag. 16/17


Algortmica III Induccin y recurrencias 2017 - I

an = 2a n 1 a0 = 1

11 Determine el orden de complejidad del

a) Algoritmo de Hanoi
b) Ordenamiento MergeSort (clasificacion)
c) Ordenamiento dicotomico

LABORATORIO
Impresin de nmeros en cualquier base
Construir una aplicacin para hallar leer un numero entero positivo. Cada
digito debera almacenarse en cada nodo de una lista enlazada. La aplicacin
deber mostrar la lista con la direccin de cada nodo.

REFERENCIAS BIBLIOGRAFICAS
a. [HERNANDEZ 2001] Hernandez, R.; Lazaro, J.C.; Dormido, R.; Ros, S.
Estructura de Datos y Algoritmos; Prentice Hall 2001, Madrid Espaa.
b. [BRASSARD 1998] Brassard,G. Bratley,P. Fundamentos de Algoritmia,
Prentice Hall 1998 Madrid
c. [CORTEZ 1999] Cortez Vasquez,Augusto. Matematica Discreta, Edit San
Marcos Lima 2011
d. [CORTEZ 2010] Cortez Vsquez,Augusto. Algortmica, EDit EsVega Lima
Peru 2010.
e. [CORTEZ 2013] Cortez Vasquez,Augusto. Algoritmia, Tecnicas
Algoritmicas, Edit CEPREDIM UNMSM Lima 2013
f. [JAIME 2002] Jaime, Alberto. Estructuras de datos y Algoritmos; Prentice
Hall 2002 Bogota D.C.
g. [JOHNSONBAUGH 1999] Johnsonbaugh Richard Mateamticas Discretas;
Prentice Hall 1999, Pags

Augusto Cortez Vsquez Pag. 17/17

S-ar putea să vă placă și