You are on page 1of 18

Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-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 francés

Donald Ervin Knuth Nacido el 10 de enero de


1938, es uno de los más renombrados científicos
de la computación, profesor emerito de la
Universidad de Stanford. Es conocido como
autor de múltiples volúmenes: El arte de la
programación de computadoras, considerado
como una referencia en el área de ciencias de la
computación, prácticamente fue el creador del
análisis de algoritmos y contribuyo
significativamente a varias ramas de teoría de
las ciencias de la computación

Objetivos de aprendizaje

1. Conocer las técnicas de inducción matemática


2. Conocer La técnica de recursividad y recurrencias
3. Conocer La técnica divide y vencerás

I INDUCCION MATEMATICA
Consideremos que la proposición 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 (hipótesis 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 inducción
afirmamos que se cumple el paso 3, es decir P(n) es verdadera para todo n.

Augusto Cortez Vásquez Pag. 1/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

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

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

2 supongamos que para n=h > 1, P(h) es verdadera hipótesis


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 inducción matemática 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 hipótesis 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 inducción matemática se sigue que P(n) es verdadera para todo n1.

Augusto Cortez Vásquez Pag. 2/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

Ejemplo 3

FUNCION CUADRADO(A)
Inicio
B  0
S  0
MIENTRAS (B < A)
A A2
S  S + A
B  B + 1
FIN MIENTRAS
RETORNAR(S)
Fin

El algoritmo recibe como entrada A y devuelve S= A2


Sea la proposición P(n) : Sn = A * Bn

donde Sn y Bn son los valores de S e B después de haber pasado por el ciclo


MIENTRAS i veces.

para n = 0
P(0) : S0 = 0 = A x B0 = A * 0
porque S e B no han pasado aún por el ciclo MIENTRAS

Para n = h  0

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

Sh = A x Bh hipotesis inductiva
para n = h+1 se tiene:
Sh+1 = Sh + A ............(a)

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

De aquí se tiene que:


Reemplazando h.i. en (a)
Sh+1 = A * Bh + A = A * (Bh +1 )
= A x Bh+1 por (b)

luego, se cumple Sh+1 = A * Bh+1

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

Augusto Cortez Vásquez Pag. 3/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

II Recursion
La recursión es un método que, directa o indirectamente, se hace una llamada así
mismo. Esto puede parecer un circulo vicioso: ¿cómo un método F puede resolver un
problema llamándose a si mismo?
La clave esta en que el método F se llama así mismo pero en instancias diferentes, mas
simples, en algún 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 recursión es una técnica que se utiliza en la vida cotidiana

La recursión es un concepto fundamental en matemáticas e informática. La definición


mas sencilla es que una función se llama recursiva si se llama a si mismo. Una función
recursiva es aquella función que se define en términos de si mismo. Una programa o
función recursiva requiere una condición de terminación que autorice al programa o
función a dejar de llamarse a si mismo.

Los lenguajes de programación mas conocidos permiten la implantación de algoritmos


recursivos. Esta es una metodología que se emplea para la solución de problemas de
computación y en muchos casos facilita resolverlos.

Augusto Cortez Vásquez Pag. 4/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

Ejemplo 4
Definicion recursiva de tren

TREN : Locomotora + Vagones

Vagones : Vagon + Vagones / Vagon

Ejemplo 5
Sea S(N) : suma de los N primeros números. 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
S(N) = N*(N+1) /2 FinPara
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 función Suma lee N y luego escribe
S(N) que es la suma de los N primeros números

Augusto Cortez Vásquez Pag. 5/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

Debemos tener en cuenta que la recursión 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 recursión para sustituir
un simple bucle.

Ejemplo 6

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 Vásquez Pag. 6/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

Definición: Una función f es recursiva si en su cuerpo contiene una aplicación de f, es


decir, si se puede activarse a si misma.

Si la llamada sucede dentro de la propia función se dice que es directamente recursiva.


En cambio si la función llama a otra y esta a su vez llama a la primera se dice que es
recursión 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 función recursiva son:


- Cada vez que se hace una llamada recursiva en una función, el programa deberá
comprobar que se satisface una condición básica con un determinado parámetro
puesto al valor mínimo.
- Cada vez que se hace la llamada a la función, los parámetros enviados a la misma,
deberán ser de algún modo más “simple”, es decir, su valor tender a la condición
básica.

Ejemplo 7
La función Factorial puede ser desarrollada iterativamente o recursivamente.
Matemáticamente de define como:

N! = N (N-1)! Para N>1 1!=1

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

Fib(n) = Fib(n-1) + Fib(n-2) si n>1,


Fib(n)=1 si n <= 1

fib(int n)
{
if(n==0 || n==1) return 1; /* condición básica */
else
return (fib(n-1)+fib(n-2)); /* doble llamada */
}

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

En este caso se puede observar que la solución planteada de fibonacci es impracticable


para valores de n grandes. Cada fib() realiza dos llamadas, por lo que el número de
llamadas aumenta en proporción geométrica.
¿ Conviene usar recursión siempre?¿ Que pasa con la memoria?

Caso iterativo para fibonacci

Augusto Cortez Vásquez Pag. 7/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

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);
}

Relación de recurrencia

La relación de recurrencia an+1 = 3 an para n ≥ 0 no define una única progresión


geométrica, pues la secuencia: 7,21,63,189, también satisface la relación. Para
distinguir una sucesión particular descrita necesitamos conocer uno del término de la
sucesión. 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….

Relación de recurrencia de primer orden

La ecuación 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

Relación de recurrencia homogénea lineal de primer orden

En la ecuación an+1 = K an , an depende solo de su predecesor inmediato

Los valores a0 y a1 que se dan además de la relación de recurrencia se denominan


condiciones de frontera. En la expresión a0=A , donde A es una constante, también se
conoce como condición inicial.

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


an+1 - K an= 0
Cada término con subíndice aparece elevado a la primera potencia.

Solución general de una recurrencia

La solución general de una recurrencia :


an+1 = K an n ≥ 0 donde K es una constante, y a0 = A

Augusto Cortez Vásquez Pag. 8/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

es única y esta dada por :


an = AKn n≥0
n
Así la solución an = AK , n ≥ 0 , define una función discreta cuyo dominio es el
conjunto N de los enteros no negativos

Una recurrencia puede ser de tipo homogénea o no


homogénea
Recurrencia homogénea
Una recurrencia es homogénea 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 combinación


lineal de los tn-i es igual a 0.

Ejemplo 9

an = a n – 1 + a n–2

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 ecuación se satisface si x = 0 siendo la solución trivial
en caso contrario la ecuación se satisface si existe k tal que

a0 x k + a1 x k-1 + a2 x k-2 +... ak = 0 ecuacion característica

P(x) : a0 x k + a1 x k-1 + a2 x k-2 +... ak polinômio característico

Las raíces de esta ecuación están en alguno de los tres casos siguientes:

r1, r2 son números reales distintos

Augusto Cortez Vásquez Pag. 9/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

r1, r2 son numeros complejos conjugados


r1, r2 son numeros reales iguales

en todos los casos r1, r2 son las raices características

Ejemplo 10

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

P(x) : x2 + x – 6 polinômio caracteristico

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

Con raices r1 = 2 y r2 = -3

La solucion 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 solución de la recurrencia dada.

Recurrencia no homogénea
Una recurrencia es no homogénea cuando la combinación lineal no es igual a
cero, es decir, no es cierto que toda la combinación lineal de las soluciones sea
una solución

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


P(n) es um polinomio en n

Ejemplo 11

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

Augusto Cortez Vásquez Pag. 10/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

multiplicando (a) por 3

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 uma ecuacion homogenea y se resuelve com la técnica antes


expuesta.

Solucion de una recurrencia mediante remplazos sucesivos

Ejemplo 12

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


Se quiere hallar la suma de los N primeros numeros 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 Vásquez Pag. 11/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-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 tecnica de polinomio


caracteristico o mediante remplzazos 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 ecuación de recurrencia es de


orden O(3n)

Augusto Cortez Vásquez Pag. 12/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

MERGESORT

La recursión puede utilizarse para desarrollar algoritmos subcuadraticos [WEISS,


2000]. Un algoritmo divide y vencerás en el cual se resuelven recursivamente dos
problemas con la mitad del tamaño, con una sobrecarga de O(N), es un algoritmo
O(NLOg N). Mergesort es uno de estos algoritmos, ofreciendo una mejor cota, al menos
a nivel teórico, que las afirmadas para Shellsort. [CORTEZ 1999]
EL algoritmo Mergesort consta de tres pasos:

1 Si el numero de elementos a ordenar es 0 o 1, finalizar


2 Ordenar recursivamente las dos mitades del vector
3 Mezclar las dos mitades ordenadas en un vector ordenado.

El algoritmo realiza lo siguiente

Accion Merge_Sort(S,i,j)
Inicio
Si i = j retornar
M=(i+j)/2
Merge_Sort(S, i, m)
Merge_Sort(S , m+1, j)
Merge(S, i , m, j, C)
Para k dese i hasta j
Sk = Ck
FinPara
Fin

Para afirmar que el algoritmo es O(N Log N), es suficiente demostrar que la mezcla
ordenada de dos vectores ordenados puede realizarse en tiempo lineal. En la siguiente
subsección veremos como mezclar dos vectores A y B, colocando el resultado en un
tercer vector. Después mostraremos una implementación sencilla de mergesort. La
rutina de mezcla es la piedra angular de muchos algoritmos de ordenación externa.

Augusto Cortez Vásquez Pag. 13/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

private static void mergesort (int [] a, int [] Temp, int izq, int der)
{ if(izq < der )
int centro (izq + der ) / 2;
mergesort (a , temp , izq, centro)
mergesort (a , temp , centro +1 , der)
mezclar (a, temp, izq, centro+1, der)
}

private static void clasificar (int [] a)


{ int [] temp = new int [a.length];
mergesort (a,temp,0,a.length-1);
}

private static void mezclar (int [] a , int [] temp, int posizq, int posder, int posfin )
{ int finizq = posder -1
int posaux = posizq
int numelem = posfin – posder +1
// ciclo principal
While( posizq <=finizq && posder <= posfin)
if(a[posizq].menorque(a[posder]))
temp[posaux++] = a[posizq++];
else
temp[posaux++] = a[posder++];
// copia el resto de la primera mitad
While( posizq <=finizq )
temp[posaux++] = a[posizq++];
// copia el resto de la segunda mitad
While( posder <=posfin )
temp[posaux++] = a[posder++];
// copia el vector temporal en el original
for(int i = 0; i < numelem ; i++ , posfin--)
a[i] = temp[i]

Augusto
} Cortez Vásquez Pag. 14/18
Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

Análisis del método de intercalación es un ejemplo clásico de las técnicas con


que se analizan las rutinas recursivas

¿ De que orden asintótico es el Merge_Sort ?

El algoritmo realiza dos llamadas recursivas de orden T(n/2), y una llamada a intercala
de orden O(n), por tanto

Tenemos que T(n) = 2T(n/2) +n (a)

Sustituimos n por n/2


2T(n/2) = 2 (2T(n/4) +n) = 4 T(n/4) + n
Remplazamos en (a)
T(n) = 4T(n/4) +2n (b)

Sustituimos n por n/4


4T(n/4) = 4 (2T(n/8) +n) = 8 T(n/8) + n
Remplazamos en (b)
T(n) = 8T(n/8) +3n
Sucesivamente, tenemos que
T(n) = 2kT(n/2k) +kn (c)

Hacemos k = log n luego n = 2k


En (c)

T(n) = nT(1) +n log n = n + nlog n


Por tanto el algoritmo es de orden O(nlog n)

TEOREMA

El ordenamiento por fusion es O(nlogn) en el peor de los casos

Otro metodo de demostrar que Merge_Sort es de orden O(nlogn)

Tenemos que T(n) = 2T(n/2) +n (a)

Dividiendo (a) entre n obtenemos

T(n) / n = T(n/2) / (n/2) +1 (b)

Haciendo n = n/2 en (b) obtenemos

T(n/2) / (n/2) = T(n/4) / (n/4) +1 (c)

Haciendo n = n/4 en (b) obtenemos

T(n/4) / (n/4) = T(n/8) / (n/8) +1 (c)

Augusto Cortez Vásquez Pag. 15/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

Si seguimos tenemos finalmente

T(2) / 2 = T(1) / 1 +1 (d)

Si sumamos ambos lados de todas las ecuaciones, tenemos


T(n)/n = T(1)/ 1 +1 +1+1…+1
Como T(1) = 1, y hay log n unos en el lado derecho , tenemos
T(n)/n = 1 + log n
Multiplicamos por n y tenemos T(n) = n + n log n

Por tanto Merge_Sort es de orden O(nlogn)

Ejercicios Propuestos
1 Proporcione 3 ejemplos de proposiciones matemáticas.
Demuéstrelas por el método de inducción matemática

2 Probar por el método de inducción que:

a) FUNCION ABC(Q, Y; A)
INICIO
A  1
MIENTRAS Y > 0
A  A *Q
Y  Y - 1
FIN MIENTRAS
RETORNAR

Y
El algoritmo recibe como entrada Q y Y, y devuelve A = Q
Y Y
Sea la proposición P(n) : An * Q n = Q

donde An y Yn son los valores de A y Y después de haber pasado por el


ciclo MIENTRAS n >=0 veces.

b) FUNCION COMPARA(N, B; A)
INICIO
A  N
D  B
MIENTRAS D > 0
A  A + B
D  D - 1
FIN MIENTRAS
RETORNAR

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


2
A = N+ B

Augusto Cortez Vásquez Pag. 16/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

3 Construya un algoritmo para hallar el cociente de dos enteros


sin realizar divisiones. Demuestre por inducción que el
algoritmo funciona

RECURSION

4 Defina los siguientes conjuntos en forma recursiva


a) El conjunto de todas las expresiones aritméticas
b) El conjunto de los números enteros positivos múltiplos de K
c) El conjunto de todas las proposiciones del calculo proposicional.

5 Construya un algoritmo recursivo para


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

6 Resuelva las siguientes recurrencias por el método de polinomio característico y


por el método de reemplazos sucesivos

a) an = 2a n – 1 a0 = 1

b) an = 2a n – 1 +5 a0 = 2

7 Especifique la solucion. ¿ De que orden es el algoritmo? Construya el


algoritmo. Determine el orden y compare el orden obtenido con lo que
supuso.
a. Intercalar dos vectores ordenados en uno igualmente ordenado
b. Multiplicar dos matrices
c. Hallar el producto de los elementos de la matriz diagonal

8 Especifique, implemente y evalúe

a. Algoritmo de Hanoi
b. Suma dicotómica de un vector

9 Especifique, implemente y evalúe

a. Ordenamiento MergeSort (clasificación divide y vencerás)


b. Hallar la subsecuencia de suma máxima (divide y vencerás)
c. Búsqueda dicotómica en un vector

REFERENCIAS BIBLIOGRAFICAS
1. [HERNANDEZ 2001] Hernández, R.; Lázaro, J.C.; Dormido, R.; Ros, S.
“Estructura de Datos y Algoritmos”; Prentice Hall 2001, Madrid España.

Augusto Cortez Vásquez Pag. 17/18


Algoritmica III – Inducción, recurrencias y Divide y Venceras 2009-I

2. [BRASSARD 1998] Brassard,G. Bratley,P. ”Fundamentos de Algoritmia”, Prentice


Hall 1998 Madrid

3. [CORTEZ 1999] Cortez Vásquez, augusto. ”Matemática Discreta”, UNMSM FISI


Lima 1999.
4 [CORTEZ 2002] Cortez Vásquez, augusto. ”Algorítmica y Programación”, UCSS
Lima 2002.
5 [CORTEZ 2002] Cortez Vásquez, augusto. ”Estructura de datos y algoritmos,
estructuras no lineales”, URP Lima 2002.

6 [GRASSMANN 1996] Grassmann W., Tremblay J.”Matemática Discreta y Lógica”;


Prentice Hall 1996.

7 [GRIMALDI 1994] Grimaldi Ralph ”Matemáticas Discreta y Combinatoria”;


Addison-Wesley 1994

8 [GUTIERREZ 1993] Gutiérrez Xavier Franch ”Estructuras de datos,


Especificación, diseño e implementación”; Edición UPC Barcelona España 19934

9 [JAIME 2002] Jaime, Alberto. ”Estructuras de datos y Algoritmos”; Prentice Hall


2002 Bogota D.C.

10 [JOHNSONBAUGH 1999] Johnsonbaugh Richard ”Mateamticas Discretas”;


Prentice Hall 1999, Pags.

11 [LIPSCHUTZ 1987] Lipschutz Seymour ”Estructura de datos”, Mc Graw-


Hill,1987

12 [CARMONA 1999] Carmona, Poyato Angel y Otros ”Estructuta de Datos”, Caja


Sur Universidad de Cordova España 1999

13 [SEDGEWICK 1993] Stroustrup Bjarne ”El C++ Lenguaje de programacion”;


Addison-Wesley 1993 , Wilmington-Delaware EUA.

14 [TENEMBNAUM 1993] Tenembaum,A.Langsam Y.Augenstein M. ”Estructuras


de datos en C”, Prentice Hall 1993.

15 [WEISS 2000] Weiss, Mark Allen. ”Estructuras de datos en JAVA”; Addison-


Wesley, 2000.

Augusto Cortez Vásquez Pag. 18/18

You might also like