0% encontró este documento útil (0 votos)
9 vistas47 páginas

CIC611 Cap2

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 47

Capı́tulo 2

Inducción matemática,
recursividad y aritmética
modular

2.1. Inducción matemática


2.1.1. Introducción
La inducción matemática es una técnica que permite probar la veracidad de
muchos resultados que involucran a los números enteros positivos. Este método
de demostración será útil en varios temas que se desarrollarán más adelante. En
Informática, esta técnica se usa en la verificación del correcto funcionamiento y
en el análisis de eficiencia de algoritmos. El método de inducción matemática se
apoya fundamentalmente en el principio del buen orden.

2.1.2. Principio del buen orden


Denotemos con Z+ al conjunto de todos los enteros positivos, es decir

Z+ = {n ∈ Z; n > 0}

El principio del buen orden afirma


Cualquier subconjunto de Z+ tiene un elemento mı́nimo
o también se dice que
Z+ es un conjunto bien ordenado.

Axioma 2.1.1 (Axioma de la inducción matemática) Si A ⊂ Z+ cumple


con las siguientes propiedades:

29
30 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

i) 1 ∈ A

ii) Si k ∈ A, entonces k + 1 ∈ A,

entonces A contiene a todos los enteros positivos.

Teorema 2.1.2 Sea S(n) una proposición matemática que depende de n ∈ Z+ .


Si S(n) cumple las siguientes propiedades:

a) S(1) es verdadera.

b) La veracidad de S(k), k ∈ Z+ , implica la veracidad de S(k + 1),

entonces S(n) es verdadera para todo n ∈ Z+ .


Prueba.- Sea F = {n ∈ Z+ ; S(n) es falsa }. La prueba del teorema es equivalente
a probar que F = ∅.
Supongamos que F 6= ∅, entonces por el principio del buen orden, existe n ∈ F
mı́nimo. Siendo S(1) verdadera, entonces n > 1 y n − 1 ∈/ F lo que significa que
S(n − 1) es verdadera y por la hipótesis b) S(n) también es verdadera o sea que
n ∈/ F lo cual es una contradicción que proviene de haber supuesto que F 6= ∅.
Por tanto F = ∅.

Observaciones 2.1.1 En el teorema 2.1.2

1. La hipótesis a) se denomina base de la inducción y la hipótesis b) se


denomina paso inductivo.

2. La condición que S(1) sea verdadera se puede sustituir por la condición que
S(n0 ) sea verdadera para algún n0 ∈ Z+ , como veremos más adelante.
n
X n(n + 1)
Ejemplo 2.1.1 Para cualquier n ∈ Z+ , i=
2
i=1

Solución.- Para cada n ∈ Z+ llamemos S(n) a la proposición


n
X n(n + 1)
i= , es decir
2
i=1
Xn
n(n + 1)
S(n) : i=
2
i=1
luego

a) La base de la inducción es
1
X 1(1 + 1)
S(1) : i=1=
2
i=1

M. González
2.1. Inducción matemática 31

b) El paso inductivo es
S(k) implica S(k + 1), k ∈ Z+
Xk
k(k + 1)
S(k) : i=
2
i=1
Probaremos que S(k + 1) es también verdadera
k+1
X k
X k(k + 1) (k + 1)(k + 2)
S(k + 1) : i= i + (k + 1) = + (k + 1) =
2 2
i=1 i=1

Por tanto, del teorema 2.1.2, S(n) es verdadera ∀n ∈ Z+ , es decir que se cumple
la igualdad
n
X n(n + 1)
i= , ∀n ∈ Z+
2
i=1

Ejemplo 2.1.2 Probar que todos los números de la forma 7n − 2n , n ∈ Z+ , son


divisibles por 5.

Solución.- Sea
P (n) : 7n − 2n es divisible por 5.
Obsevar que la proposición
P (1) : 7 − 2 es divisible por 5
es verdadera.
Supongamos ahora que la proposición
P (k) : 7k − 2k es divisible por 5
es verdadera.
Probaremos que la proposición
P (k + 1) : 7k+1 − 2k+1 es divisible por 5
es también verdadera.
En efecto,
7k+1 − 2k+1 = 7k+1 − 7 · 2k + 7 · 2k − 2k+1
= 7(7k − 2k ) + 2k (7 − 2)
= 7(7k − 2k ) + 5 · 2k
Luego
P (k + 1) : 7k+1 − 2k+1 es divisible por 5
es una proposición verdadera.
Por lo tanto
7n − 2n es divisible por 5, ∀n ∈ Z+ .

Modificando un poco el axioma de inducción matemática en la forma,

M. González
32 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Axioma 2.1.3 Si A ⊂ Z+ es un conjunto para el cual se cumplen las siguientes


condiciones:

a) n0 ∈ A

b) Si k ∈ A, k ≥ n0 , entonces k + 1 ∈ A,

entonces A contiene a todos los enteros n ≥ n0 .

se puede enunciar el teorema 2.1.2 de manera más general.

Teorema 2.1.4 Si n0 es un entero positivo y para cada n ≥ n0 asociamos una


proposición P (n) que satisface las siguientes dos condiciones:

a) P (n0 ) es verdadera.

b) Si P (k) es verdadera para cada k ≥ n0 , entonces P (k + 1) es verdadera,

entonces P (n) es verdadera para todo n ≥ n0 .

Prueba.- Se deja como un ejercicio para el lector.

Ejemplo 2.1.3 Si a ∈ R, a > −1, a 6= 0, entonces

(1 + a)n > 1 + n a , ∀n ≥ 2

Solución.- Sea P (n) : (1 + a)n > 1 + n a.


Observar que P (1) es falsa.
P (2) : (1 + a)2 > 1 + 2 a es verdadera ya que
(1 + a)2 = 1 + 2 a + a2 > 1 + 2 a, pues a 6= 0
Sea k ≥ 2 y supongamos que P (k) es verdadera, es decir que se cumple

(1 + a)k > 1 + k a

probaremos que P (k + 1) es también verdadera, o sea que


(1 + a)k+1 > 1 + (k + 1) a. En efecto,
(1 + a)k+1 = (1 + a)k (1 + a)
> (1 + k a)(1 + a)
= 1 + (k + 1)a + k a2
> 1 + (1 + k)a pues k a2 > 0
Por lo tanto P (k + 1) es verdadera y en consecuencia

(1 + a)n > 1 + n a , ∀n ≥ 2

M. González
2.2. Recursividad 33

2.2. Recursividad
2.2.1. Introducción
La recursividad es un concepto fundamental tanto en Matemátca como en
Informática. En matemática aparece, por ejemplo, en la definición de sucesiones,
mientras que en Informática es una poderosa herramienta para definir estructu-
ras de datos (listas, árboles, etc.) y para escribir programas. Al respecto Niklaus
Wirth afirma:
... de todas formas, los algoritmos recursivos son apropiados principalmente cuan-
do el problema a resolver, la función a calcular o la estructura de datos a procesar
están ya definidos en forma recursiva.

2.2.2. Definiciones y ejemplos


Definición 2.2.1 Un proceso P es recursivo si P está definido en términos de él
mismo, es decir que

P=f(P,Q)

donde f es una función que depende de P y Q, siendo Q un proceso dependiente


o independiente de P. Si el proceso Q no depende de P, el proceso P se denomina
directamente recursivo, si por el contrario

P=f(Q) y Q=g(P,R)

el proceso P se denomina indirectamente recursivo.


La clave para el buen funcionamiento de la recursividad es que obligatoriamente
debe existir una condición terminal con la finalidad de detener las múltiples in-
vocaciones que se puedan hacer al proceso, en caso contrario el proceso ingresa
en un lazo infinito y nunca finaliza. Cuando esto último ocurre en computación
origina un agotamiento de memoria ya que en cada invocación al proceso se crean
copias independientes de las variables que intervienen en dicho proceso.
A continuación se presenta varios ejemplos de procesos recursivos.

Ejemplo 2.2.1 Los números naturales se definen en forma recursiva.

a) 1 es un número natural.

b) El sucesor de un número natural es un número natural.

Ejemplo 2.2.2 El factorial de un número natural, n!, que se denotará mediante


F act(n) = n!.

a) Fact(0)=1

M. González
34 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

b) Fact(n)=n*Fact(n-1) , n ≥ 1

Un programa recursivo para calcular el factorial de un número natural escrito en


lenguaje de programación Pascal es

Program factorial;
var N:Integer;
Function Fact(N:Integer):Integer;
begin
If N=0 Then
Fact:=1
Else
Fact:=N*Fact(N-1)
end;
begin
write(”Ingrese un entero no negativo : ”);
read(N);
while N< 0 do
begin
write(”Ingrese un entero no negativo : ”);
read(N);
end;
writeln;
writeln(Fact(N))
end.

Ejemplo 2.2.3 La potencia entera y no negativa de un número entero positivo


a, an , donde n es un entero no negativo.

a) a0 = 1

b) an = a ∗ an−1 , n ≥ 1

Un programa en Pascal para calcular la potencia entera y positiva de un nú-


mero entero positivo es

Program Potencia;
var a,n:Integer;
Function Pot(a,n:Integer):Integer;
begin

M. González
2.2. Recursividad 35

if n=0 then
Pot:=1
else
Pot:=a*Pot(a,n-1)
end;
begin
write(”Ingrese un entero positivo (base) : ”);
read(a);
while a<= 0 do
begin
write(”Ingrese un entero positivo (base) : ”);
read(a);
end;
write(”Ingrese un entero no negativo (exponente): ”);
read(n);
while n< 0 do
begin
write(”Ingrese un entero no negativo (exponente) : ”);
read(n);
end;
writeln(Pot(a,n))
end.

Ejemplo 2.2.4 Una cadena de caracteres.


a) La cadena vacı́a es una cadena de caracteres.
b) Un carácter seguido de una cadena de caracteres es una cadena de caracte-
res.

Ejemplo 2.2.5 Los números de Fibonacci:


1, 1, 2, 3, 5, 8, 13, 21, · · ·
cada término de esta sucesión, a partir del tercero, se obtiene sumando los dos
términos anteriores. Denotando el n−ésimo número de Fibonacci con F ibo(n),
dicha sucesión se puede escribir en la forma
a) Fibo(0)=1, Fibo(1)=1
b) Fibo(n+1)=Fibo(n)+Fibo(n-1), n ≥ 1
Un progama recursivo en Pascal para calcular el n−ésimo número de Fibonacci es

M. González
36 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Program Fibonacci;
var n:Integer;
Function Fibo(n:Integer):Integer;
begin
if (n=0) or (n=1) then
Fibo:=1
else
Fibo:=Fibo(n-1)+Fibo(n-2)
end;
begin
write(”Ingrese un entero no negativo : ”);
read(n);
while n< 0 do
begin
write(”Ingrese un entero no negativo : ”);
read(n);
end;
writeln;
writeln(Fibo(n))
end.

Observación 2.2.1 No siempre es recomendable usar recursividad en los pro-


gramas de computadora como lo demuestra el ejemplo anterior. Al calcular por
ejemplo Fibo(6) requiere invocar 25 veces a la función Fibo hecho que se muestra
en el árbol generado para realizar todo el proceso (Figura 2.1).

FiboH6L

FiboH5L FiboH4L

Figura 2.1: Árbol de Fibonacci

M. González
2.2. Recursividad 37

Ejemplo 2.2.6 Dado el conjunto X={0,1} encuentre una expresión recursiva


para calcular el número de cadenas de longitud n formadas por 0 y 1 que no
tienen ceros consecutivos.

Solución.- Sean X n el conjunto de cadenas de longitud n formadas con los ele-


mentos de X, An el subconjunto de X n cuyos elementos no contienen ceros con-
secutivos y s(n) el número de elementos de An , s(n) = η(An ). Algunos conjuntos
An son los siguientes:
A1 ={ 0,1 } s(1) = 2
A2 ={01, 11, 10} s(2) = 3
A3 ={ 010, 011,101, 110, 111} s(3) = 5 = s(2) + s(1)
A4 ={0111,0110,0101,1011,1010,1101,1110,1111} s(4) = 8 = s(3) + s(2)
Para obtener una expresión recursiva para s(n) consideremos n ≥ 3 y contemos
los elementos de An en términos del número de elementos de An−1 y de An−2 ,
es decir hallar s(n) en función de s(n − 1) y s(n − 2).
Observando que cada cadena de An termina en 1 ó 0, consideremos dos casos

i) Si una cadena de An termina en 1, éste puede estar precedido por cualquier


cadena en An−1 , pero An−1 tiene s(n−1) cadenas. En consecuencia existen,
en An , s(n − 1) cadenas que terminan en 1.

ii) Si una cadena de An termina en 0, entonces los dos últimos sı́mbolos de


dicha cadena son 10 y éstos pueden estar precedidos por cualquier cadena
de An−2 . Esto quiere decir que en An existen s(n − 2) cadenas que terminan
en 0.

Luego, como todas las cadenas de An terminan en 0 ó en 1, entonces


s(1) = 2;
s(2) = 3;
s(n) = s(n − 1) + s(n − 2) , ∀n ≥ 3

Ejemplo 2.2.7 Con palillos de fósforos se forma figuras en filas como las mos-
tradas en la Figura 2.2. ¿Cuántos palillos de fósforos se tendrá en la n-ésima fila
?

Solución.- Sea s(n) el número de palillos de fósforos que se tendrá en la fila


n-ésima. Para encontrar el valor de s(n) veamos algunos casos particulares.
En la primera fila se requiere 3 palillos de fósforos, es decir que s(1) = 3.
La segunda fila se forma agregando dos palillos de fósforos a cada lado de la figura
formada en la primera fila, es decir que se tendrá 3 + 4 = 7 palillos de fósforos, o
sea s(2) = s(1) + 4.
La tercera fila se obtiene agregando dos palillos a cada lado de la segunda fila, es
decir que en la tercera fila se tendrá s(3) = 7 + 4 = s(2) + 4, (Figura 2.2). A partir

M. González
38 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Fila 1

Fila 2

Fila 3

Figura 2.2: Figuras con palillos de fósforos

de aquı́, es claro que para construir la fila n-ésima basta agregar dos palillos a
cada lado de la figura correspondiente a la fila anterior, fila (n − 1)- ésima, en
consecuencia, se tiene la sucesión
s(1) = 3
s(n) = s(n − 1) + 4; ∀n ≥ 2.

Ejemplo 2.2.8 Las Torres de Hanoi es un juego inventado por el matemático


francés Edouard Lucas en el siglo XIX. Requiere de tres clavijas y n discos de
radios distintos con una perforación en el centro. Ubicar los discos en una de las
clavijas de manera que el disco de mayor radio se encuentre en la parte inferior y
los demás se ubican de manera que sus radios vayan decreciendo como se muestra
en la Figura 2.3. El juego consiste en pasar todos los discos a otra de las clavijas

Figura 2.3: Torres de Hanoi

de acuerdo a las siguientes reglas:

1. En cada movimiento solamente se mueve un disco.

2. Sobre un disco cualquiera, solamente, se puede colocar uno de menor radio.

Gana el jugador que use el menor número de movimientos para pasar todos los
discos de una clavija a otra.

M. González
2.2. Recursividad 39

Solución.- Si se tiene n discos, los nombraremos con d1 , d2 , d3 · · · , dn de


acuerdo al orden decreciente de sus radios r1 > r2 > r3 > · · · > rn > 0, res-
pectivamente. Sea T (n) el número de movimientos necesarios para pasar los n
discos de una clavija a otra bajo las reglas establecidas. Podemos suponer que,
inicialmente, los discos se encuentran en la clavija A.
Algunos valores particulares de T (n) son los siguientes:
Si n = 1, es decir, se dispone de un solo disco, no requiere de ninguna explicación,
T (1) = 1.
Si n = 2, se debe hacer al menos los siguientes movimientos:
d2 : A −→ B , d1 : A −→ C y d2 : B −→ C
De esta manera los dos discos se ubicarán en la clavija C y en consecuencia
T (2) = 3.
Si n = 3, se hará los siguientes movimientos:
d3 : A −→ C, d2 : A −→ B, d3 : C −→ B, d1 : A −→ C, d3 : B −→ A, d2 : B −→
C y d3 : A −→ C
de esta manera, nuevamente, los discos se ubican en la clavija C y T (3) = 7
Si n = 4, se puede seguir el mismo proceso. Pero, es más apropiado desarrollar el
siguiente argumento: considerar los cuatro discos en dos grupos G1 = {d2 , d3 , d4 }
y G2 = {d1 }. Para pasar los discos del grupo G1 de la clavija A a la clavija B se
requiere T (3) movimientos.
Luego hacer el movimiento d1 : A −→ C y finalmente pasar los discos del grupo
G1 de la clavija B hacia la clavija C para lo cual se requiere, nuevamente, de
T (3) movimientos. Con esto, otra vez, todos los discos estarán en la clavija C. En
consecuencia, T (4) = T (3) + 1 + T (3) = 2 T (3) + 1.

En general, para pasar los n discos de la clavija A a la clavija C, primero se


debe pasar los n − 1 discos, dn , dn−1 , · · · , d2 , de la clavija A a la clavija B que
requiere de T (n − 1) movimientos. Luego se pasa el disco d1 de A hacia C (1
movimiento) y finalmente se pasa los n − 1 discos, dn , dn−1 , · · · , d2 , de B hacia
C para lo cual se requiere, nuevamente, de T (n − 1) movimientos. En total, para
pasar todos los discos desde la clavija A hacia la clavija C, se requiere de

T (n) = 2 T (n − 1) + 1 ; ∀n ≥ 2

movimientos.

2.2.3. Técnica de diseño divide y vencerás


Esta técnica consiste en dividir un problema en subproblemas más pequeños,
se resuelve los subproblemas y luego se combina sus soluciones para obtener la
solución del problema original. Como los subproblemas, casi siempre, son del mis-
mo tipo que el problema original, la estrategia “divide y vencerás”, generalmente,

M. González
40 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

se implementa mediante un algoritmo recursivo como el que se muestra a conti-


nuación

DyV(problema P)
Inicio
Si P ¹ pequeño Entonces
devolver solucion trivial(P)
en otro caso
Inicio
dividir P en P1 , P2 , ..., Pn
desde i = 1 hasta n
solucioni ← DyV(Pi )
Devolver combinacion(solucion1 , solucion2 , ..., solucionn )
Fin
Fin

Divide y vencerás es una técnica natural para definir estructuras de datos ya


que, por definición, éstas están compuestas por piezas. Cuando una estructura de
tamaño finito se divide, las últimas piezas ya no podrán ser divididas.
Un ejemplo tı́pico de esta técnica se encuentra en el algoritmo de búsqueda bi-
naria, donde se divide el conjunto de búsqueda en subconjuntos cuyo orden de
magnitud es aproximadamente la mitad del anterior. Tener en cuenta que para
usar este algoritmo los elementos del conjunto deben estar ordenados.

2.2.4. Ecuaciones en diferencias


A continuación se trata un caso especial de sucesiones definidas en forma recur-
siva.
Considere la sucesión a(n) = 2n + 1, n ≥ 0.
Algunos elementos de esta sucesión son :
a(0) = 2, a(1) = 2 + 1 = 3, a(2) = 22 + 1 = 5, a(3) = 23 + 1 = 9
En general, si se desea calcular a(n) para cualquier n ≥ 0 no se requiere conocer
ningún otro valor de a(k) con k < n ya que a(n) tiene una fórmula explı́cita,
a(n) = 2n + 1.
En cambio, para la sucesión b(n) definida mediante

a) b(0) = 1, b(1) = 1

b) b(n + 1) = 2 b(n) + 3 b(n − 1), n ≥ 1,

M. González
2.2. Recursividad 41

no es posible calcular directamente el valor de b(n) sin conocer previamente los


valores de b(k) para k < n.
Aquı́ se presenta un método para construir la fórmula explı́cita de las sucesiones
definidas en forma recursiva similares a la sucesión b(n), también conocidas con
el nombre de ecuaciones en diferencias.
Sean s0 y s1 valores especificados y
s(0) = s0
s(1) = s1

s(n) = a s(n − 1) + b s(n − 2); n ≥ 2; a, b ∈ R (2.1)

Veamos que ocurre con la sucesión para los diferentes valores de a y b.

i) Si a = b = 0, se tiene el caso trivial.

ii) Si a 6= 0 y b = 0,
s(2) = a s(1)
s(3) = a s(2) = a2 s(1)
s(4) = a s(3) = a3 s(1)
..
.
s(n) = a s(n − 1) = an−1 s(1)
Ası́ se tiene una fórmula explı́cita para s(n),

s(n) = an−1 s(1) , n ≥ 2

iii) Si a = 0 y b 6= 0,
s(2) = b s(0)
s(3) = b s(1)
s(4) = b s(2) = b2 s(0)
s(5) = b s(3) = b2 s(1)
s(6) = b s(4) = b3 s(0)
s(7) = b s(5) = b3 s(1)
En general,
s(2k) = bk s(0) , k ≥ 1
s(2k + 1) = bk s(1) , k ≥ 1
Con lo cual, también, se tiene una fórmula explı́cita para s(n)

iv) Si a 6= 0 y b 6= 0.
Observando los casos anteriores, supongamos que s(n) = c rn para alguna
constante c 6= 0. Luego reemplazando en la ecuación (2.1) resulta

M. González
42 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

c rn = a c rn−1 + b c rn−2

r2 = a r + b, r 6= 0
esto significa que si s(n) = c rn , entonces r debe ser una raı́z de la ecuación
cuadrática
x2 − a x − b = 0
que se denomina ecuación caracterı́stica de la sucesión s(n).

El desarrollo realizado es una prueba “no formal” del siguiente teorema.

Teorema 2.2.1 Dada la sucesión s(n) definida en forma recursiva

s(0) = s0
s(1) = s1
s(n) = a s(n − 1) + b s(n − 2) ; n ≥ 2

con ecuación caracterı́stica

x2 − a x − b = 0; a, b ∈ R.

a) Si la ecuación caracterı́stica tiene dos raices reales y diferentes r1 y r2 ,


entonces

s(n) = c1 r1n + c2 r2n

para ciertas constantes c1 y c2 .

b) Si la ecuación caracterı́stica tiene una sola raı́z r, entonces

s(n) = c1 rn + c2 n rn

para ciertas constantes c1 y c2 .

c) Si la ecuación caracterı́stica tiene dos raices complejas r1 y r2


(r1 = r cos θ + i r sen θ y r2 = r cos θ − i r sen θ), entonces

s(n) = c1 rn cos(n θ) + c2 rn sen(n θ), r = |r1 | = |r2 |

para ciertas constantes c1 y c2 .

Observaciones 2.2.1

1. Las constantes c1 y c2 se calculan usando los valores iniciales s0 y s1 .

M. González
2.2. Recursividad 43

2. Para probar la parte c) del teorema se usa la fórmula de De Moivre

(cos θ + i sen θ)n = cos(n θ) + i sen(n θ)

El desarrollo anterior se puede generalizar a ecuaciones de la forma

cn s(n) + cn−1 s(n − 1) + · · · + cn−k s(n − k) = f (n) (2.2)

para n ≥ k, k ∈ Z+ y cn , cn−1 , · · · , cn−k ∈ R con cn 6= 0 y cn−k 6= 0 y f una


función de n.

La expresión (2.2) define una ecuación en diferencias lineal de orden k. Cuando


f (n) = 0 decimos que la ecuación en diferencias es homogénea, en caso contrario
se denomina no homogénea.

Si bien es cierto que no existe un método general para hallar la solución de


una ecuación en diferencias no homogénea para f (n) cualquiera, sı́ es posible
hallar una forma explı́cita para ciertas funciones f (n), como por ejemplo para
f (n) = P (n), siendo P (n) un polinomio en la variable n con coeficientes reales o
también cuando f (n) = P (n) rn , r ∈ R. En efecto, sea s(h) (n) la solución general
de la ecuación homogénea

cn s(n) + cn−1 s(n − 1) + · · · + cn−k s(n − k) = 0

y s(p) (n) una solución particular de la ecuación no homogénea

cn s(n) + cn−1 s(n − 1) + · · · + cn−k s(n − k) = f (n)

la solución general de la ecuación (2.2) es

s(n) = s(h) (n) + s(p) (n)

La solución s(h) (n) se construye con las raices de la ecuación caracterı́stica de la


ecuación homogénea,

cn xk + cn−1 xk−1 + · · · + cn−k = 0.

Para hallar una solución particular de la ecuación (2.2) se puede recurrir al


método de coeficientes indeterminados, para lo cual se procede de la siguiente
manera:

M. González
44 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Si f (n) es un polinomio de grado m,


P (n) = am nm + am−1 nm−1 + · · · + a1 n + a0 con ai ∈ R, i = 0, 1, 2, · · · , m,
entonces considerar como solución particular un polinomio completo del
mismo grado, es decir

s(p) (n) = Bm nm + Bm−1 nm−1 + · · · + B1 n + B0 con B0 , B1 , · · · , Bm ∈ R

y sustituyendo s(p) (n), s(p) (n − 1), · · · , s(p) (n − k) en la ecuación (2.2) se


obtiene los coeficientes B0 , B1 , · · · , Bm .

Si f (n) = c rn , c, r ∈ R, en este caso considerar la solución particular de la


forma s(p) (n) = B rn , con B ∈ R y sustituir en (2.2) para obtener el valor
de la cosntante B.

En general, si f (n) = P (n) rn con P (n) un polinomio de grado m y r ∈ R,


r 6= 0, se debe considerar una solución particular de la forma s(p) (n) =
Q(n) rn donde Q(n) es un polinomio completo del mismo grado de P (n)
con coeficientes reales que al sustituir s(p) (n), s(p) (n − 1), · · · , s(p) (n − k)
en la ecuación (2.2) se obtiene dichos coeficientes.

Ejemplo 2.2.9 Hallar una fórmula explı́cita para la sucesión


s(0) = 1, s(1) = 1
s(n) = 2 s(n − 1) + s(n − 2), n ≥ 2

Solución.- La ecuación caracterı́stica es: x√2 − 2 x − 1 = 0 ó (x − 1)2 = 2



las raices de dicha ecuación son r1 = 1 + 2 y r2 = 1 − 2 .
En consecuencia √ √
s(n) = c1 (1 + 2)n + c2 (1 − 2)n
Usando los valores iniciales s(0) = 1 y s(1) = 1 se obtiene el sistema de ecuaciones
s(0) = 1 = c1 + c2 √ √
s(1) = 1 = c1 (1 + 2) + c2 (1 − 2)
cuya solución es
1 1
c1 = y c2 =
2 2
con lo cual
1 √ 1 √
s(n) = (1 + 2)n + (1 − 2)n ; n ≥ 0
2 2
Ejemplo 2.2.10 Hallar la solución de la ecuación en diferencias

s(n + 1) + s(n) − 2s(n − 1) = n 2n−1 , n ≥ 2

Solución.- Hallaremos primero la solución general de la ecuación homogénea

s(n + 1) + s(n) − 2s(n − 1) = 0

M. González
2.3. División en los números enteros 45

que tiene como ecuación caracterı́stica es x2 + x − 2 = 0 y cuyas raices son x = 1,


x = −2, en consecuencia, la solución de la ecuación homogénea es
s(h) (n) = C1 + C2 (−2)n , n ≥ 2.
Ahora hallaremos una solución particular de la ecuación no homogénea
s(n + 1) + s(n) − 2s(n − 1) = n 2n−1 , n ≥ 2.
Por la forma que tiene el término independiente debemos considerar un polinomio
de grado 1 es decir de la forma Q(n) = A n + B, entonces la solución particular
será
s(p) (n) = (A n + B)2n−1
Sustituyendo s(p) (n + 1), s(p) (n) y s(p) (n − 1) en la ecuación no homogénea resulta
(A(n + 1) + B)2n + (An + B)2n−1 − 2(A(n − 1) + B)2n−2 = n 2n−1
haciendo las simplificacines correspondientes se obtiene el sistema de ecuaciones
½
2A = 1
3A + 2B = 0
1 3
cuya solución es A = y B = − .
2 4
Ası́, la solución particular es
µ ¶
(p) 1 3
s (n) = n− 2n
4 8
Finalmente, la solución general de la ecuación no homogénea es
µ ¶
n 1 3
s(n) = C1 + C2 (−2) + n− 2n , n ≥ 2
4 8
que constituye una forma explı́cita de la ecuación en diferencias.

Teorema 2.2.2 Para cada proceso recursivo existe un poceso iterativo y recı́-
procamente.

2.3. División en los números enteros


2.3.1. Introducción
Para m, n ∈ Z, sabemos que m + n, m n, m − n ∈ Z es decir que Z es cerrado
respecto a la adición, la multiplicación y la sustracción, pero si pasamos a la
m
división esta propiedad en Z se pierde ya que, en general, para m, n ∈ Z, ∈
/ Z,
n
es decir que Z no es cerrado respecto a la división. En esta sección consideraremos
una división restringida en los enteros positivos, Z+ , operación que nos permitirá
estudiar varias propiedades interesantes y útiles en este conjunto.

M. González
46 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

2.3.2. Algoritmo de la división


Para m, n ∈ Z+ se puede escribir
m m−r+r m−r r
= = +
n n n n
donde 0 ≤ r < n y m − r es el mayor múltiplo de n menor o igual que m. Esto
significa que existe un número entero p tal que
m−r =pn, 0≤r <n

m=pn+r , 0≤r <n

Definición 2.3.1 Los números enteros p y r se denominan cociente y residuo


de la división de m entre n, respectivamente.
Para mostrar el algoritmo de la división entera consideraremos m y n enteros
positivos.

Algoritmo de la división

1. Inicio
2. Ingrese dos numeros enteros positivos m y n {*division m entre n*}
3. P ←0
4. R←m
5. Si R < n hacer
p←P
r←R
en otro caso hacer
P ←P +1
R←R−n
volver al paso 5
6. Escribir: cociente p y residuo r
7. Fin del algoritmo

Este resultado se formaliza en el siguiente teorema.

Teorema 2.3.1 Si m, n ∈ Z+ , entonces existen números enteros p y r, 0 ≤ r <


n, tales que
m = pn + r
Los números p y r son únicos.

M. González
2.3. División en los números enteros 47

Definición 2.3.2 Si r = 0, es decir m es múltiplo de n, se dice que n divide a


m y se escribe

n|m : se lee “n divide a m”

Si r > 0, es decir m no es múltiplo de n, entonces se escribe

n|/ m : se lee “n no divide a m”.

2.3.3. Propiedades de la divisibilidad


Sean a, b, c ∈ Z con a 6= 0. Se cumplen las siguientes propiedades:

1. 1|b , a|0

2. Si a|b y a|c, entonces a|(b ± c)

3. Si a|b, entonces a|bx , ∀x ∈ Z

4. Si a|b y b|c , b 6= 0, entonces a|c

5. Si a|b y b|a , b 6= 0, entonces a = ±b

6. Si x = y + z donde x, y, z ∈ Z y a divide a dos de los tres enteros x, y ó z,


entonces a divide al tercero.

2.3.4. Los números primos


Definición 2.3.3 Un número entero p ∈ Z+ , p > 1, es primo si los únicos
enteros positivos que lo dividen son 1 y p.
Si n ∈ Z+ no es un número primo, se denomina compuesto.

Lema 2.3.2 Si n ∈ Z+ es un número compuesto, entonces existe un número


primo p que lo divide, p|n.
Prueba.- Suponga lo contrario, es decir que no existe número primo alguno que
divide a n.
Sea C = {x ∈ Z+ ; x es compuesto y no tiene divisores primos }.
El conjunto C 6= ∅, pues n ∈ C, entonces C tiene un elemento mı́nimo m. Siendo
m compuesto, existen m1 , m2 ∈ Z+ con 1 < m1 < m y 1 < m2 < m tales que
m = m1 · m2 .
Como m1 ∈/ C entonces m1 es un número primo o tiene un divisor primo, esto
significa que existe un entero primo p tal que p|m1 y en consecuencia p|m, que es
una contradicción. Por lo tanto C = ∅.

Teorema 2.3.3 (Euclides) Existen infinitos números primos.

M. González
48 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Prueba.- Suponga que existe un número finito de números primos


p1 , p2 , · · · , pk .
Sea m = p1 p2 · · · pk + 1. Como m > pi , 1 ≤ i ≤ k entonces m no es primo, m es
compuesto. Por el lema 2.3.2 existe un número primo pj , 1 ≤ j ≤ k tal que pj |m
y también pj |p1 p2 · · · pk , por una de las propiedades de la divisibilidad pj |1 que
es una contradicción. Por tanto existen infinitos números primos.

Algunos números primos son

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, · · ·

Dado un m ∈ Z+ , para verificar que m es primo o no, se tendrá que probar si m es


divisible por todos los enteros entre 2 y m−1. Si ninguno de estos enteros divide a
m, entonces m es primo. Como se puede imaginar, cuando m es grande, el proceso
es largo y tedioso. Veamos que este proceso se puede simplificar observando lo
siguiente: si k es un entero, 2 ≤ k ≤ m−1, que divide a m, entonces existe n ∈ Z+
tal que m = kn donde k ≤ n ó n ≤ k. Suponga que k ≤ n entonces m = kn ≥ kk
√ √
de donde k ≤ m y ası́ 2 ≤ k ≤ m.
Además, si m tiene un divisor par, entonces 2 divide a m. En consecuencia,
después de verificar la división por 2 se pueden omitir los enteros pares durante
el proceso anterior.
El desarrollo que acabamos de realizar es una prueba del siguiente teorema:

Teorema 2.3.4 Si m es un entero compuesto, entonces existe k ∈ Z+ ,



2 ≤ k ≤ m tal que k|m.

Teorema 2.3.5 (Teorema Fundamental de la Aritmética) Todo entero n >


1 puede escribirse en la forma

n = pk11 pk22 pk33 · · · pkl l

donde p1 < p2 < p3 < · · · < pl son los distintos números primos que dividen a
n y ki es un entero positivo que indica el número de veces que pi aparece como
factor de n, i = 1, 2, 3, · · · , l.

Solución.- La prueba es consecuencia del lema 2.3.2.

Corolario 2.3.6 El número de divisores positivos de un entero n ∈ Z+ es

(k1 + 1)(k2 + 1)(k3 + 1) · · · (kl + 1)

donde

n = pk11 pk22 pk33 · · · pkl l

M. González
2.3. División en los números enteros 49

2.3.5. Máximo común divisor


Definición 2.3.4 Sean a, b ∈ Z+ . Si k|a y k|b se dice que k es un divisor común
de a y b. El mayor de los divisores comunes de a y b se denomina máximo
común divisor de a y b y se escribe

M CD(a, b)

Algoritmo de Euclı́des
El algoritmo de Euclı́des permite determinar el máximo común divisor de dos
enteros positivos a y b.
Para mostrar como funciona este algoritmo consideremos dos enteros positivos a
y b que, sin pérdida de generalidad, podemos suponer a > b > 0.
Por el algoritmo de la división existen k1 , r1 ∈ N; k1 > 0, 0 ≤ r1 < b tales que

a = k1 b + r1

usando el mismo argumento para b y r1 (cuando r1 > 0) existen k2 , r2 ∈ N tales


que

b = k2 r1 + r2 ; 0 ≤ r2 < r1

repitiendo el proceso para r1 y r2 existen k3 , r3 ∈ N tales que

r1 = k3 r2 + r3 ; 0 ≤ r3 < r2

continuando con el proceso se tiene

r2 = k4 r3 + r4 ; 0 ≤ r4 < r3
r3 = k5 r4 + r5 ; 0 ≤ r5 < r4
..
.
rj = kj+2 rj+1 + rj+2 ; 0 ≤ rj+2 < rj+1
..
.
rn−1 = kn+1 rn + rn+1 ; 0 ≤ rn+1 < rn

de este desarrollo se obtiene una sucesión de números enteros no negativos

a > b > r1 > r2 > · · · > rn > rn+1

esto significa que rn+1 = 0 para algún n.


Afirmación.- Si rn+1 = 0 , entonces rn = M CD(a, b)
Antes de probar la afirmación, probaremos la siguiente proposición:

Proposición 2.3.1 c ∈ Z+ es divisor de a y b si y sólo si c es divisor de b y r1 .

M. González
50 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Prueba.-
⇒) Si c divide a a y b, como a = k1 b + r1 , entonces c|r1 .
⇐) Si c divide a b y a r1 , siendo a = k1 b + r1 , entonces c|a.
Volviendo a la prueba de la afirmación vemos que, por la proposición 2.3.1, los
divisores comunes de a y b son los mismos que los divisores comunes de b y r1 ,
en consecuencia

M CD(a, b) = M CD(b, r1 )

repitiendo el argumento para r1 y r2 se tiene

M CD(b, r1 ) = M CD(r1 , r2 )

usando, repetidamente, el mismo argumento se obtiene

M CD(a, b) = M CD(b, r1 ) = · · · = M CD(rn−1 , rn )

Si rn+1 = 0 entonces rn−1 = kn+1 rn de aquı́ se deduce que M CD(rn−1 , rn ) = rn .


Por lo tanto

M CD(a, b) = rn

Teorema 2.3.7 Si a, b ∈ Z+ , a > b, entonces M CD(a, b) = M CD(a − b, b).


Prueba.- Sean
d = M CD(a, b) (1)
y
d1 = M CD(a − b, b) (2)
De (1) se tiene que d| a y d| b, luego d| (a − b) y en consecuencia d| d1 .
De (2) se tiene que d1 | (a − b) y d1 | b, luego d| (a − b + b) y en consecuencia d1 | d.
Si d| d1 y d1 | d, entonces d = d1 .

Este teorema se puede traducir inmediatamente a un algoritmo para hallar el


máximo común divisor de dos enteros positivos como el que se desarrola a conti-
nuación.

Funcion MCD(a, b)
1. Repetir mientras a 6= b
Si a > b entonces
a←a−b
en otro caso
b←b−a
2. Retornar (a)
3. Fin del algoritmo

M. González
2.3. División en los números enteros 51

Teorema 2.3.8 Si a, b ∈ Z+ entonces existen t, s ∈ Z tales que

M CD(a, b) = s a + t b

Prueba.- Sea
X = {sa + tb > 0; s, t ∈ Z}
Se puede ver fácilmente que X es un subconjunto no vacio de Z+ . Por el principio
del buen orden X tiene elemento mı́nimo. Sea d = min{sa + tb > 0; s, t ∈ Z}, es
decir que d = s0 a + t0 b para ciertos enteros s0 , t0 ∈ Z.
Afirmación

a) d| x; ∀ x ∈ X

b) d = M CD(a, b)

En efecto,

a) Suponga lo contrario, es decir que existe un x1 ∈ X, d < x1 , tal que d /| x1


siendo x1 = s1 a + t1 b para ciertos enteros s1 , t1 ∈ Z. Por el teorema 2.3.1
existen p, r ∈ Z+ tales que

x1 = p d + r ; 0 < r < d


s1 a + t1 b = p d + r ; 0 < r < d.
Luego

r = s1 a + t1 b − p(s0 a + t0 b) = (s1 − p s0 )a + (t1 − p t0 )b

lo que significa que r ∈ X que contradice el hecho de ser d el mı́nimo de X.


Por lo tanto d| x; ∀ x ∈ X.

b) Considerando s = 1 y t = 0, de la parte a), se tiene que d| a. En forma


análoga, considerando s = 0 y t = 1 se tiene que d| b, en consecuencia
d| M CD(a, b).
Por otro lado como, M CD(a, b)| a y M CD(a, b)| b, entonces
M CD(a, b)| (s0 a + t0 b) = d.
Con lo cual se prueba que M CD(a, b) = d.

Definición 2.3.5 Dos enteros a, b ∈ Z+ se denominan coprimos si


M CD(a, b) = 1.

M. González
52 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Corolario 2.3.9 Si a, b ∈ Z+ son coprimos, entonces existen s0 , t0 ∈ Z tales que

s0 a + t0 b = 1

Ejemplo 2.3.1 Halle el máximo común divisor de 475 y 4323

4323 = 475 × 9 + 48
475 = 48 × 9 + 43
48 = 43 × 1 + 5
43 = 5 × 8 + 3
5=3×1+2
3=2×1+1
2=1×2+0

Luego M CD(475, 4323) = 1, es decir que 475 y 4323 son coprimos.

Ejemplo 2.3.2 Halle el máximo común divisor de 428 y 384

428 = 384 × 1 + 44
384 = 44 × 8 + 32
44 = 32 × 1 + 12
32 = 12 × 2 + 8
12 = 8 × 1 + 4
8=4×2+0

Luego M CD(428, 384) = 4.


Por otro lado

4 = 12 − 8 × 1
= 12 − (32 − 12 × 2) = 12 × 3 − 32
= (44 − 32 × 1) × 3 − 32 = 44 × 3 − 32 × 4
= 44 × 3 − (384 − 44 × 8) × 4 = 44 × 35 − 384 × 4
= (428 − 384) × 35 − 384 × 4
= 428 × 35 − 384 × 39
= 35 × 428 + (−39) × 384

Ası́ se tiene los enteros s = 35 y t = −39 tales que

4 = 35 × 428 + (−39) × 384

M. González
2.3. División en los números enteros 53

Aplicaciones del algoritmo de Euclides


Además de usarse en el cálculo del máximo común divisor de dos enteros posi-
tivos, una aplicación inmediata del algoritmo de Euclides está en la simplificación
de fracciones.
a
Sea una fracción de manera que a y b no son coprimos y c = M CD(a, b),
b
entonces a
a
= ac
b c
Otra aplicación del algoritmo de Euclides la encontramos al expresar una fracción
como fracciones continuas.
a
Sea una fracción tal que a y b no son coprimos, entonces existen q ∈ Z+ y
b
r ∈ N, 0 ≤ r < b tal que a = qb + r. Si r 6= 0, entonces
a r
=q+
b b
1
=q+ b
r
si b > r el proceso se repite.
37
Ejemplo 2.3.3 Expresar como fracciones continuas la fracción .
15
Solución.- Observar que
37 7
=2+
15 15
1
= 2 + 15
7
1
=2+ 1
2+ 7
El algoritmo de Euclides también se usa en el cálculo del mı́nimo común
múltiplo de dos enteros positivos.

2.3.6. Mı́nimo común múltiplo


Definición 2.3.6 Sean a, b ∈ Z+ . Un número k ∈ Z+ es múltiplo común de a y
b si a|k y b|k. El menor múltiplo común de a y b se denomina mı́nimo común
múltiplo de a y b. Se denota mediante M CM (a, b).

Teorema 2.3.10 Si a, b ∈ Z+ , entonces M CD(a, b) · M CM (a, b) = a · b


Solución.- Sean p1 , p2 , · · · , pk todos los factores primos de a ó b, entonces se
puede escribir
mk
a = pm1 m2
1 p2 · · · pk y b = pn1 1 pn2 2 · · · pnk k

M. González
54 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

donde algunos de los enteros mi ó nj , i, j = 1, 2, 3, · · · , k pueden ser ceros.


Luego
min{m1 ,n1 } min{m2 ,n2 } min{mk ,nk }
M CD(a, b) = p1 p2 · · · pk
max{m1 ,n1 } max{m2 ,n2 } max{mk ,nk }
M CM (a, b) = p1 p2 · · · pk
de aquı́ resulta
M CD(a, b) · M CM (a, b) = pm
1
1 +n1 m2 +n2
p2 · · · pm
k
k +nk

¡ 1 m2 mk ¢ ¡ n1 n2 ¢
= pm 1 p2 · · · pk p1 p2 · · · pnk k
=a·b

2.4. Anillos y aritmética modular


En las aplicaciones de Matemática discreta en Informática aparece una es-
tructura algebraica denominada anillo, particularmente los anillos finitios. Por
esta razón se ha incluido esta sección dedicada a este tema con la finalidad de
discutir, especialmente, el anillo de los números enteros módulo n.

2.4.1. Anillos
Definición 2.4.1 Sea A un conjunto no vacı́o. En él se definen dos operaciones
binarias denotadas con ⊕ y ¯

⊕ : A × A −→ A ¯ : A × A −→ A
(a, b) Ã a ⊕ b (a, b) Ã a ¯ b

La terna (A, ⊕, ¯) es un anillo si las operaciones ⊕ y ¯ satisfacen las siguientes


condiciones:

1. a ⊕ b = b ⊕ a; ∀a, b ∈ A (propiedad conmutativa de la operación ⊕)

2. a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c (propiedad asociativa de la operación ⊕)

3. Existe un único elemento e ∈ A tal que ∀a ∈ A, a⊕e = e⊕a = a (existencia


del elemento neutro o elemento identidad para la operación ⊕)

4. Para cada elemento a ∈ A existe b ∈ A tal que a ⊕ b = b ⊕ a = e (existencia


del elemento inverso aditivo)

5. a ¯ (b ¯ c) = (a ¯ b) ¯ c (propiedad asociativa de la operación ¯)

6. a ¯ (b ⊕ c) = (a ¯ b) ⊕ (a ¯ c) (propiedad distributiva de la operación ¯


respecto a la operación ⊕)

M. González
2.4. Anillos y aritmética modular 55

Ejemplo 2.4.1 El conjunto de números enteros, (Z, +, ·), con la adición, (+), y
la multiplicación, (·), habituales, es un anillo. Donde e = 0 y el inverso aditivo de
n ∈ Z es −n . También el conjunto de números racionales, (Q, +, ·), y el conjunto
de números reales, (R, +, ·), son anillos.

Ejemplo 2.4.2 Sea


½· ¸ ¾
a b
M2 (Z) = ; a, b, c, d ∈ Z
c d
Defina las operaciones
+:M2 (Z) ×M2 (Z) −→M2 (Z)
µ· ¸ · ¸¶ · ¸
a b e f a+e b+f
, −→
c d g h c+g d+h
· :M2 (Z) ×M2 (Z) −→M2 (Z)
µ· ¸ · ¸¶ · ¸
a b e f ae + bg af + bh
, −→
c d g h ce + cg cf + dh
· ¸
0 0
Se prueba que (M2 (Z), +, ·) es un anillo con e = y el inverso aditivo de
0 0
· ¸ · ¸
a b −a −b
es
c d −c −d

Observaciones 2.4.1

1. En el anillo (R, +, ·) se tiene

i) a · b = b · a
ii) a · b = 0 si y sólo si a = 0 ó b = 0 (el elemento identidad no tiene
divisores propios).

2. En (M2 (Z), +, ·)

i) la multiplicación (·) no es conmutativa, ya que


· ¸· ¸ · ¸
1 2 1 1 3 3
=
3 4 1 1 7 7
· ¸· ¸ · ¸
1 1 1 2 4 6
=
1 1 3 4 4 6
ii) la identidad tiene divisores propios, ya que
· ¸· ¸ · ¸
−1 1 1 2 0 0
=
1 −1 1 2 0 0

M. González
56 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Definición 2.4.2 Sea (A, ⊕, ¯) un anillo con elemento identidad aditivo e.


1. Si ∀ a, b ∈ A, a ¯ b = b ¯ a, entonces (A, ⊕, ¯) se denomina anillo conmu-
tativo.
2. Si para elementos cualesquiera a, b ∈ A, a ¯ b = e implica que a=e ó b=e se
dice que A no tiene divisores propios de la identidad.
3. Si existe un elemento u ∈ A tal que ∀a ∈ A, a ¯ u = u ¯ a = a, u se
denomina identidad multiplicativa o elemento unitario de A y en tal
caso (A, ⊕, ¯) se denomina anillo con elemento unitario.

Ejemplo 2.4.3 (R, +, ·) es un anillo conmutativo con elemento unitario u=1 que
no tiene divisores propios de cero.
· ¸
1 0
Ejemplo 2.4.4 (M2 (Z), +, ·) es un anillo con elemento unitario u =
0 1
que tiene divisores propios de la identidad (observaciones 2.4.1.2.ii).

Ejemplo 2.4.5 Sea X = {0, 1} y A = ℘(X) = {∅, {0}, {1}, {0, 1}} y definamos
en A las operaciones ⊕ y ¯ mediante
R ⊕ S = R∆S y R¯S =R∩S
Ası́, (A, ⊕, ¯) es un anillo conmutativo con elemento unitario u = {0, 1} que tiene
divisores propios de la identidad. Identifique el elemento identidad, e, y pruebe
que tiene divisores propios.

Teorema 2.4.1 Sea (A, ⊕, ¯) un anillo con elemento identidad e. Para cualquier
a ∈ A se cumple que
a¯e=e¯a=e
Solución.- Si e es el elemento identidad de A entonces e ⊕ e = e y para cualquier
elemento a ∈ A
a ¯ e = a ¯ (e ⊕ e) = (a ¯ e) ⊕ (a ¯ e)
Pero (a ¯ e) ⊕ e = a ¯ e, entonces

(a ¯ e) ⊕ e = (a ¯ e) ⊕ (a ¯ e)

luego, “sumando” el inverso aditivo de a ¯ e se tiene que a ¯ e = e.


En forma similar se prueba que e ¯ a = e.

Definición 2.4.3 Sea (A, ⊕, ¯) un anillo con elemento identidad e y elemento


unitario u. Si para cada a ∈ A, a 6= e, existe b ∈ A tal que a ¯ b = b ¯ a = u, el
elemento b se denomina inverso multiplicativo de a y se denota con a−1 , es
decir b = a−1 .

M. González
2.4. Anillos y aritmética modular 57

Definición 2.4.4 Sea A un anillo conmutativo con elemento unitario u.

a) Si A no tiene divisores propios de la identidad, A se denomina dominio


entero.

b) Si todo elemeto de A distinto del elemento identidad tiene inverso mutlti-


plicativo, A se denomina campo.

Ejemplo 2.4.6 El anillo (Z, +, ·) es un dominio entero pero no es un campo,


ningún elemento de Z tiene inverso multiplicativo. En cambio (Q, +, ·) y (R, +, ·)
son dominios enteros y también campos.

Teorema 2.4.2 Sea (A, ⊕, ¯) un anillo conmutativo con elemento unitario u. A


es un dominio entero si y sólo si para elementos cualesquiera a, b, c ∈ A tales que
a 6= e, a ¯ b = a ¯ c implica que b = c.
Prueba.-

⇒) Si A es un dominio entero, entonces para cualesquiera a, b, c ∈ A tales que


a 6= e, a ¯ b = a ¯ c implica que b = c.
Para a, b, c ∈ A , a 6= e , a ¯ b = a ¯ c. Sea d el inverso aditivo de c,
entonces (a ¯ b) ⊕ (a ¯ d) = (a ¯ c) ⊕ (a ¯ d) = a ¯ (c ⊕ d) = a ¯ e = e; de
donde se tiene que a ¯ (b ⊕ d) = e, pero a 6= e, entonces b ⊕ d = e. Luego
(b ⊕ d) ⊕ c = e ⊕ c = c. Por otro lado b ⊕ (d ⊕ c) = b ⊕ e = b. De aquı́ resulta
que b = c.

⇐) Recı́procamente, si A es un anillo conmutativo con elemento unitario u y


para cualesquiera a, b, c ∈ A, a 6= e, a ¯ b = a ¯ c implica que b = c,
entonces A es un dominio entero (x ¯ y = e implica que x = e ó y = e).
Sean x, y ∈ A con x ¯ y = e
Si x = e, no hay nada que probar.
Si x 6= e, como x ¯ e = e, entonces se puede escribir

x¯y =e=x¯e

de donde se tiene que y = e.


De esta manera se observa que no existen divisores propios de la identidad
y en consecuencia A es un dominio entero.

Teorema 2.4.3 Si (A, ⊕, ¯) es un campo, entonces (A, ⊕, ¯) es un dominio


entero.
Solución.- Sean e el elemento identidad, u el elemento unitario, x, y ∈ A tales
que x ¯ y = e.
Si x = e, no hay nada para probar.

M. González
58 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Si x 6= e, entonces existe el inverso multiplicativo de x, x−1 y


x−1 ¯ (x ¯ y) = x−1 ¯ e = e
por otro lado
(x−1 ¯ x) ¯ y = e de donde se tiene que u ¯ y = e y en consecuencia y = e.
Ası́, (A, ⊕, ¯) no tiene divisores propios de la identidad, en consecuencia es un
dominio entero.

Teorema 2.4.4 Si (A, ⊕, ¯) es un dominio entero finito, entonces (A, ⊕, ¯) es


un campo.
Solución.- Si A es finito entonces podemos suponer que tiene n elementos,

A = {a1 , a2 , · · · , an }.

Sea b ∈ A, b 6= e y

b ¯ A = {b ¯ a1 , b ¯ a2 , · · · , b ¯ an },

entonces b ¯ A ⊂ A ya que A es cerrado respecto a ¯.


Afirmación.- η(b ¯ A) = n
Supongamos que η(b ¯ A) < n, entonces b ¯ ai = b ¯ aj para algunos i, j,
1 ≤ i < j ≤ n. Como b 6= e y A es un dominio entero, entonces ai = aj lo que es
una contradicción, en consecuencia η(b ¯ A) = n de donde se tiene que b ¯ A = A.
Luego b ¯ ai = u, el elemento unitario, para algún i, 1 ≤ i ≤ n, entonces b es el
inverso de ai . Como b es arbitrario se sigue que (A, ⊕, ¯) es un campo.

2.4.2. Enteros módulo n


Definición 2.4.5 Sea n ∈ Z , n > 1. Para a, b ∈ Z se dice que a es congruente
con b módulo n si n|(a − b) ó a = k n + b para algún k ∈ Z.
Si a es congruente con b módulo n se escribe

a ≡ b (mod n)

Ejemplos 2.4.1

a) 13 ≡ 8 (mod 5) ; pues 5|(13 − 8) ó 13 = 1 × 5 + 8

b) 10 ≡ 4 (mod 3) ; pues 3|(10 − 4) ó 10 = 2 × 3 + 4

Teorema 2.4.5 Sea n ∈ Z , n > 1

1) a ≡ a (mod n) ; ∀a ∈ Z

2) Si a ≡ b (mod n), entonces b ≡ a (mod n) ; a, b ∈ Z

M. González
2.4. Anillos y aritmética modular 59

3) Si a ≡ b (mod n) y b ≡ c (mod n), entonces a ≡ c (mod n)

Sea n ∈ Z , n > 1 y a ∈ Z, denotemos con


[a] = {b ∈ Z; b ≡ a (mod n)} = {a + kn; k ∈ Z}
= {· · · , a − 3n, a − 2n, a − n, a, a + n, a + 2n, a + 3n, · · · }
Ası́ para n = 2
[0] = {· · · , −6, −4, −2, 0, 2, 4, 6, · · · }
[1] = {· · · , −5, −3, −1, 1, 3, 5, · · · }
[2] = {· · · , −6, −4, −2, 0, 2, 4, 6, · · · }
Para n = 3
[0] = {· · · , −9, −6, −3, 0, 3, 6, 9, · · · }
[1] = {· · · , −8, −5, −2, 1, 4, 7, 10, · · · }
[2] = {· · · , −7, −4, −1, 2, 5, 8, 11, · · · }
[3] = {· · · , −9, −6, −3, 0, 3, 6, 9, · · · }
En general, para n ∈ Z , n > 1
[0] = {· · · , −3n, −2n, −n, 0, n, 2n, 3n, · · · }
[1] = {· · · , 1 − 3n, 1 − 2n, 1 − n, 1, 1 + n, 1 + 2n, 1 + 3n, · · · }
[2] = {· · · , 2 − 3n, 2 − 2n, 2 − n, 2, 2 + n, 2 + 2n, 2 + 3n, · · · }
..
.
[n − 1] = {· · · , −1 − 2n, −1 − n, −1, n − 1, 2n − 1, 3n − 1, · · · }
[n] = {· · · , −3n, −2n, −n, 0, n, 2n, 3n, · · · }.
Como se puede observar [n] = [0] y también [n + 1] = [1], [n + 2] = [2], etc. Esto
significa que los únicos conjuntos diferentes son [0], [1], · · · , [n − 1].
El conjunto {[0], [1], [2], · · · , [n − 1]} constituye una partición de Z y cada ele-
mento [k] , k = 0, 1, 2, ..., n − 1, se denomina clase de equivalencia, siendo k el
representante principal de dicha clase.
Denotemos con Zn = {[0], [1], [2], · · · , [n − 1]} y definamos en este conjunto dos
operaciones binarias + y · de la siguiente manera:
+ : Zn × Zn −→ Zn · : Zn × Zn −→ Zn
([a], [b]) Ã [a + b] ([a], [b]) Ã [a · b]

Observaciones 2.4.2

1. Las operaciones a + b y a · b son la adición y multiplicación ordinarias en


Z, respectivamente.

M. González
60 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

2. Las operaciones en Zn están bien definidas, es decir que no dependen del


elemento que se elija como representante de cada clase de equivalencia.
En efecto,
Sean [a], [b], [c] y [d] ∈ Zn con a 6= c y b 6= d tales que [a] = [c] y [b] = [d],
entonces a = k1 n + c y b = k2 n + d.
Luego
a + b = (k1 n + c) + (k2 n + d) = (k1 + k2 )n + (c + d)
esto significa que [a + b] = [c + d], en consecuencia [a] + [b] = [c] + [d].
También
a · b = (k1 n + c) · (k2 n + d) = (k1 k2 n + k1 d + k2 c)n + c · d
es decir [a · b] = [c · d], en consecuencia [a] · [b] = [c] · [d]

Teorema 2.4.6 Para n ∈ Z, n > 1, (Zn , +, ·) es un anillo conmutativo con


elemento unitario [1].

Solución.- La prueba del teorema se deja como ejercicio para el lector.


Notación.- En lo que sigue la clase de equivalencia [a] la denotaremos simple-
mente con a.

Ejemplos 2.4.2

a) Consideremos Z4 y denotando con a la clase de equivalencia [a] ∈ Z4 se


tiene
+ 0 1 2 3 · 0 1 2 3
0 0 1 2 3 0 0 0 0 0
1 1 2 3 0 1 0 1 2 3
2 2 3 0 1 2 0 2 0 2
3 3 0 1 2 3 0 3 2 1
Observar que Z4 tiene divisores propios de la identidad (2 · 2 = 0), en
consecuencia Z4 no es un dominio entero y por tanto no es un campo.

b) Consideremos ahora Z5
+ 0 1 2 3 4 · 0 1 2 3 4
0 0 1 2 3 4 0 0 0 0 0 0
1 1 2 3 4 0 1 0 1 2 3 4
2 2 3 4 0 1 2 0 2 4 1 3
3 3 4 0 1 2 3 0 3 1 4 2
4 4 0 1 2 3 4 0 4 3 2 1
En Z5 todos los elementos distintos de cero tienen inverso multiplicativo,
en consecuencia Z5 es un campo.

M. González
2.4. Anillos y aritmética modular 61

El siguiente teorema proporciona una caracterización para que Zn sea un campo.

Teorema 2.4.7 Zn es un campo si y sólo si n es primo.


Solución.-
⇒) Si Zn es un campo, entonces n es primo, o equivalentemente, si n no es
primo entonces Zn no es un campo.
Si n no es primo, entonces es compuesto, es decir existen n1 , n2 ∈ Z+ ,
1 < n1 , n2 < n tales que n = n1 · n2 lo que quiere decir que [n1 ] 6= [0] y
[n2 ] 6= [0] . Pero [n1 ] · [n2 ] = [n1 · n2 ] = [n] = [0] esto implica que Zn ni
siquiera es un dominio entero, por tanto no puede ser un campo.

⇐) Si n es primo, entonces Zn es un campo.


Basta probar que cualquier elemento no nulo de Zn tiene inverso multipli-
cativo.
Sea [a] 6= [0] un elemento cualquiera de Zn , entonces 0 < a < n y
M CD(a, n) = 1 lo que implica que existen s, t ∈ Z tales que 1 = tn +
sa , s 6= 0. Ası́ que s a ≡ 1 (mod n) lo que implica que [s · a] = [1] ó
[s] · [a] = [1], es decir que [a]−1 = [s] esto significa que Zn es un campo.

Corolario 2.4.8 Si n ∈ Z, n > 1 es compuesto, Zn no es un dominio entero.

Teorema 2.4.9 Sea [a] ∈ Zn , [a] tiene inverso multiplicativo si y sólo si


M CD(a, n) = 1
Solución.-
Sea [a] ∈ Zn .
⇒) Si [a] tiene inverso multiplicativo, entonces M CD(a, n) = 1.
Si [a] tiene inverso multiplicativo, entonces existe s ∈ Z, 0 < s < n , tal que
[a]−1 = [s]. Pero [a · s] = [a] · [s] = [1] o que es lo mismo a s ≡ 1 (mod n) ó
a s = 1 + t n , para algún t ∈ Z de donde 1 = s a + (−t)n.
Por otro lado, si M CD(a, n) 6= 1, entonces existe un entero p, 1 < p < n
tal que p|a y p|n, en consecuencia p|1 que es una contradicción.
Por tanto M CD(a, n) = 1.

⇐) Si M CD(a, n) = 1, entonces [a] tiene inverso multiplicativo.


Si M CD(a, n) = 1, entonces existen enteros no nulos s, t ∈ Z tales que
1 = s n + t a ó t a ≡ 1 (mod n) de donde [t · a] = [1] ó [t] · [a] = [1] lo que
significa que [a]−1 = [t].

Ejemplo 2.4.7 Halle el inverso multiplicativo de 6 en Z11

M. González
62 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Solución.- Usando el algoritmo de Euclides se tiene


11 = 1 × 6 + 5
6=1×5+1
como el último residuo es 1, haciendo el proceso inverso se obtiene
1 =6−5
= 6 − (11 − 6)
= 2 × 6 − 11
la última igualdad significa que 1 ≡ 2 × 6 (mod 11) ó que es lo mismo
2 × 6 ≡ 1 (mod 11), lo que indica que el inverso multiplicativo de 6 en Z11 es 2 y
recı́procamente.

Ejemplo 2.4.8 Halle el inverso multiplicativo de 18 en Z61


Solución.- El algoritmo de Euclides nos permite obtener
61 = 3 × 18 + 7
18 = 2 × 7 + 4
7=1×4+3
4=1×3+1
como el último residuo es 1, siguiendo el proceso inverso resulta
1 =4−3
= 4 − (7 − 4) = 2 × 4 − 7
= 2 × (18 − 2 × 7) − 7 = 2 × 18 − 5 × 7
= 2 × 18 − 5 × (61 − 3 × 18) = 17 × 18 − 5 × 61
la última igualdad significa que 1 ≡ 17 × 18 (mod 61) ó que es lo mismo
17 × 18 ≡ 1 (mod 61), lo que indica que el inverso multiplicativo de 18 en Z61 es
17 y recı́procamente.

Definición 2.4.6 Sea n ∈ Z, n > 1 y

Sn = {a ∈ {1, 2, 3, 4, · · · , n}; M CD(a, n) = 1}.

La función
ϕ : Z+ −→ Z+
n à ϕ(n) = η(Sn )
donde ϕ(n) = η(Sn ) =número de enteros entre 1, 2, 3, 4, · · · n que son coprimos
con n, se denomina función de Euler.
Algunos valores de esta función son

a) S2 = {1} en consecuencia ϕ(2) = 1

b) S3 = {1, 2} en consecuencia ϕ(3) = 2

M. González
2.4. Anillos y aritmética modular 63

c) S4 = {1, 3} en consecuencia ϕ(4) = 2

d) S5 = {1, 2, 3, 4} en consecuencia ϕ(5) = 4

e) S6 = {1, 5} en consecuencia ϕ(6) = 2

f) S7 = {1, 2, 3, 4, 5, 6} en consecuencia ϕ(7) = 6


En general, para hallar el valor de ϕ(n) se requiere hallar todos los enteros menores
que n que son coprimos con n, procedimiento largo y tedioso cuando n es grande.
Pero, si n es primo, el valor de ϕ(n) es fácil de calcular, como muestra el siguiente
teorema.

Teorema 2.4.10 Si p ∈ Z+ es primo, entonces ϕ(p) = p − 1.


Solución.- Si p es un número primo, entonces Sp = {1, 2, 3, · · · , p − 1}, en
consecuencia ϕ(p) = p − 1

Teorema 2.4.11 Si p, q ∈ Z+ son números primos distintos, entonces

ϕ(p q) = (p − 1)(q − 1).

Solución.- Si p, q ∈ Z+ , se tiene los números 1, 2, 3, · · · , p q. De esta lista elimi-


namos los múltiplos de p y los múltiplos de q que son divisores de p q. Como se
puede ver claramente hay p múltiplos de q y q múltiplos de p. Además el único
múltiplo común de p y q es p q.
Luego

ϕ(p q) = p q − p − q + 1 = (p − 1)(q − 1)

Teorema 2.4.12 Sean a, n ∈ Z+ . Si M CD(a, n) = 1, entonces

aϕ(n) ≡ 1 (mod n)

Solución.- Sea
Sn = {r1 , r2 , r3 , · · · , rϕ(n) },
el conjunto de los enteros entre 1, 2, 3, · · · , n que son coprimos con n.
Afirmación 1
Si M CD(a, n) = 1, entonces los enteros

a r1 , a r2 , a r3 , · · · , a rϕ(n)

también son coprimos con n.


En efecto, si algún a ri ; 1 ≤ i ≤ ϕ(n) no fuera coprimo con n, entonces existirı́a

M. González
64 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

un entero k > 1 tal que k|a ri y k|n lo cual implica que (k|a ó k|ri ) y k|n o
que es lo mismo (k|a y k|n) ó (k|ri y k|n), cualquier caso contradice al hecho que
M CD(a, n) = 1 ó al hecho M CD(ri , n) = 1.
Afirmación 2
Los enteros a r1 , a r2 , a r3 , · · · , a rϕ(n) no son congruentes dos a dos módulo n.
En efecto,
supongamos lo contrario, es decir que para algunos i, j con 1 ≤ i < j ≤ ϕ(n)

a ri ≡ arj (mod n)

Como M CD(a, n) = 1, por el teorema 2.4.9, existe d ∈ Zn tal que

d a ≡ 1 (mod n)

luego
ri ≡ 1 · ri (mod n)
≡ (d a) ri (mod n)
≡ d (a ri ) (mod n)
≡ d (a rj ) (mod n)
≡ (d a) rj (mod n)
≡ rj (mod n)
que es una contradicción.
La afirmación 2 nos permite concluir que cada uno de los números
a r1 , a r2 , a r3 , · · · , a rϕ(n) es congruente mod n con solamente uno de los enteros
r1 , r2 , r3 , · · · , rϕ(n) .
En consecuencia
r1 r2 r3 · · · rϕ(n) ≡ (a r1 ) (a r2 ) (a r3 ) · · · (a rϕ(n) )(mod n)
≡ aϕ(n) r1 r2 r3 · · · rϕ(n) (mod n)

Pero M CD(r1 r2 r3 · · · rϕ(n) , n) = 1, entonces por el teorema 2.4.9 existe un


entero s ∈ Zn tal que

r1 r2 r3 · · · rϕ(n) s ≡ 1 (mod n)

Luego
1 ≡ r1 r2 r3 · · · rϕ(n) s (mod n)
≡ (aϕ(n) r1 r2 r3 · · · rϕ(n) ) s (mod n)
≡ aϕ(n) (r1 r2 r3 · · · rϕ(n) s)(mod n)
≡ aϕ(n) (mod n)

M. González
2.4. Anillos y aritmética modular 65

o equivalentemente
aϕ(n) ≡ 1 (mod n)

Corolario 2.4.13 Sean a, n ∈ Z+ . Si M CD(a, n) = 1, entonces el inverso


multiplicativo de a en Zn es aϕ(n)−1

Solución.- Del teorema se tiene que

aϕ(n) ≡ 1 (mod n)

luego
aϕ(n)−1 a ≡ 1 (mod n)
de donde se concluye la afirmación del corolario.

2.4.3. Aplicaciones de los enteros módulo n


Una aplicación interesante de los enteros módulo n, Zn , en Informática es la
generación de claves para la codificación y decodificación de información. Proce-
dimiento conocido con el nombre de Criptografı́a.

Criptografı́a de llave pública


Uno de los métodos de encriptación de mensajes de llave pública es conocido
como el método RSA debido a sus creadores Ron Rivest, Adi Shamir y Len Ad-
leman y fue publicado en Scientific American en agosto de 1977.

Sistema RSA
Este método de encriptación de mensajes se apoya fundamentalmente en el teo-
rema 2.4.12 y en el hecho de que se requiere de mucho tiempo para factorizar
números enteros grandes (de más de 200 dı́gitos). La idea es bastante simple. Se
considera dos números primos diferentes p y q suficientemente grandes, de alre-
dedor de 100 dı́gitos cada uno. Los valores de p y q constituyen parte de la clave
secreta, mientras que el valor de n = p q es parte de la clave pública y se denomina
el módulo del código. El valor de la función de Euler de n, ϕ(n) = (p−1)(q −1),
también debe ser guardado en secreto.

Antes de codificar un mensaje se identifican los caracteres a usar con números


naturales menores que n, con lo cual se tiene el mensaje precodificado. Dicha
identificación debe ser conocida tanto por el emisor como por el receptor del
mensaje.

M. González
66 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Supongamos ahora que se tiene un sistema con m usuarios. A cada usuario i,


1 ≤ i ≤ m, se le asigna una clave pública ei y una clave privada di . Estas claves
son números enteros tales que

M CD(ei , ϕ(n)) = 1

y
ei di ≡ 1 (mod ϕ(n))
Supongamos que un usuario cualquiera del sistema desea enviar al usuario i
un mensaje precodificado x (x ∈ Z+ , x < n).
El mensaje codificado, C(x, ei ) = c, se obtiene mediante

C(x, ei ) = c ≡ xei (mod n); 0<c<n

Cuando el ususario i recibe el mensaje codificado c puede decodificarlo, D(c, di ) =


y, usando la expresión

D(c, di ) = y ≡ cdi (mod n); 0 < y < n

donde di es su clave personal secreta e y es el mensaje decodificado que podrá leer


recurriendo a la identificación preestablecida entre los caracteres y los números
naturales.

Observaciones 2.4.3

1. La seguridad del método RSA se basa en el hecho de que para decodificar un


mensaje se requiere conocer los enteros p y q es decir factorizar el número
compuesto n = p q (número de más de 200 dı́gitos), proceso que requiere de
mucho tiempo.

2. La razón de guardar en secreto el número de Euler ϕ(n) es la siguiente:


conociendo ϕ(n) y teniendo en cuenta que n es de conocimiento público se
puede escribir

ϕ(n) = (p − 1)(q − 1) = p q − p − q + 1 = n − p − q + 1

de donde se tiene
p + q = n − ϕ(n) + 1 (2.3)
Por otro lado

(p − q)2 = p2 − 2p q + q 2 = (p + q)2 − 4p q = (n − ϕ(n) + 1)2 − 4n (2.4)

Si los valores de n y ϕ(n) son conocidos, fácilmente de (2.3) y (2.4) se


puede conocer p + q y p − q y en consecuencia p y q.
Calcular el valor de ϕ(n) es una tarea tan difı́cil como hallar p y q.

M. González
2.4. Anillos y aritmética modular 67

3. Si se envı́a el mismo mensaje a diferentes usuarios estos recibirán diferentes


mensajes codificados c debido a que cada usuario tiene una clave pública ei
diferente.
4. La condición ei di ≡ 1 (mod ϕ(n)) asegura que el mensaje decodificado, y,
sea el mensaje original enviado por el emisor. Esta condición garantiza la
existencia de un entero ki ∈ Z tal que
ei di = ki ϕ(n) + 1
con lo cual se tiene
y ≡ cdi (mod n)
≡ (xei )di (mod n)
≡ xei di (mod n)
≡ xki ϕ(n)+1 (mod n)
≡ (xϕ(n) )ki x (mod n)
≡ x (mod n)
gracias al teorema 2.4.12.
En la siguiente tabla se muestra como se distribuye la información sobre las claves
del sistema RSA.

Conocimiento Secreto para Conocimiento solamente del


público el usuario i responsable del sistema
n; e1 , e2 , · · · , em di p, q; ϕ(n)

Todo lo descrito antes se puede resumir en el siguiente algoritmo:

Algoritmo RSA
1. Generar dos números primos diferentes p, q.
2. Calcular n = p q, ϕ(n) = (p − 1)(q − 1).
3. Elegir enteros (llaves públicas) e1 , e2 , · · · , em con 1 < ei < ϕ(n)
tales que M CD(ei , ϕ(n)) = 1; i = 1, 2, · · · , m
4. Calcular enteros (llaves privadas) di ; i = 1, 2, · · · , m
donde di ei ≡ 1 (mod ϕ(n)).
5. El emisor calcula c ≡ xei (mod n) con la llave
pública (n, ei ) {* mensaje codificado *}
6. El receptor recupera el mensaje mediante x ≡ cdi (mod n),
con su llave privada di {* mensaje decodificado *}
7. Fin

M. González
68 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

Con la finalidad de mostrar un ejemplo del sistema RSA, identifiquemos a


los caracteres alfanuméricos con números enteros como se muestra en la siguiente
tabla (al código ASCII le sumamos 55):

A B C D E F G H I J K L M N
120 121 122 123 124 125 126 127 128 129 130 131 132 133
O P Q R S T U V W X Y Z ···
134 135 136 137 138 139 140 141 142 143 144 145 ···

A continuación se presenta el algoritmo anterior implementado en Mathematica


v 6.1.0.1

(* SISTEMA RSA EN MATHEMATICA*)

(* cambio de linea *)
nl := FromCharacterCode[13];
(* Funcion de Euler *)
FuncionEuler[n_] := Dimensions[
DeleteCases[Table[If[GCD[k, n] == 1, k, 0], {k, 1, n}], 0]][[1]];
i = 11; (* para usar el i-esimo numero primo como el valor de p *)
j = 7; (* para usar el j-esimo numero primo como el valor de q *)
p=Prime[i]; q = Prime[j];
n = p*q;

(* numero de usuarios del sistema *)


userNumber = 5;
(* lista de usuarios *)
usuarios := Table[k, {k,1, userNumber}];
(* Generacion de las posibles claves individuales publicas *)
ClavesPersonalesPublicas := DeleteCases[ Table[If[GCD[k,
FuncionEuler[n]] == 1, k, 0], {k, 1,FuncionEuler[n]}], 0];

(* Generacion de claves *)

(* generacion aleatoria de las claves personales publicas*)


Clavepub= RandomSample[ClavesPersonalesPublicas, userNumber];

(* claves personales privadas *)

M. González
2.4. Anillos y aritmética modular 69

Clavepri := Table[PowerMod[Clavepub[[k]],
FuncionEuler[FuncionEuler[n]] - 1,
FuncionEuler[n]], {k, 1, Dimensions[Clavepub][[1]]}];

(* Impresión de las claves publicas y privadas *)

Print["Claves publicas ", nl, MatrixForm[usuarios],


MatrixForm[Clavepub], nl, "Claves privadas ", nl,
MatrixForm[usuarios], MatrixForm[Clavepri]]

(* Codificacion y decodificacion del mensaje *)

(* mensaje original *)

mensaje := "HOLA";

(* mensaje precodificado: al codigo ASCII de cada caracter se le


suma \ 55 *)

mensajeprecod :=ToCharacterCode[mensaje] + 55;

(* mensaje codificado *)
mcod := Table[ PowerMod[mensajeprecod[[j]], Clavepub[[i]], n], {i,
1, Dimensions[Clavepub][[1]]}, {j, 1,
Dimensions[mensajeprecod][[1]]}];

(* mensaje decodificado *)
mdecod := Table[PowerMod[mcod[[j]][[i]], Clavepri[[j]], n], {j, 1,
Dimensions[Clavepri][[1]]}, {i, 1, Dimensions[mensajeprecod][[1]]}];

(* mensaje original recibido por el receptor *)

mensajeOut:=FromCharacterCode[mdecod[[1]] - 55];

(* impresion de resultados *)

Print[nl, nl, "p= ", p, " ; ", "q= ", q, " ; ", "n= ", n, " ; ", "\
\[Phi](n)= ", FuncionEuler[n], nl,
nl, "Mensaje original", nl, mensaje, nl, nl, "Mensaje precodificado \
", nl, mensajeprecod, nl, nl,
"Claves publicas", nl, MatrixForm[usuarios],
MatrixForm[Clavepub], nl, nl, "Mensaje codificado ", nl,

M. González
70 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

MatrixForm[usuarios],
MatrixForm[mcod], nl, nl, "Claves privadas", nl,
MatrixForm[usuarios],
MatrixForm[Clavepri], nl, nl, "Mensaje decodificado", nl,
MatrixForm[usuarios],
MatrixForm[mdecod], nl, nl, "Mensaje final", nl, mensajeOut]

Para mostrar una corrida del algoritmo consideremos el siguiente ejemplo. Por
razones obvias se considera los números primos p y q pequeños.
Consideremos los números primos p = 17 y q = 31 entonces n = 527 y
ϕ(527) = (17 − 1)(31 − 1) = 480

Para elegir las claves tanto públicas como privadas se requiere hallar elemen-
tos de Z480 que tienen inverso multiplicativo. Para ello bastará hallar, según el
teorema 1.8, enteros, a, coprimos con 480.
Asumiremos que se tiene 5 usuarios y sus respectivas claves son

Usuario Clave personal Clave personal


pública privada
1 e1 = 443 d1 = 467
2 e2 = 43 d2 = 67
3 e3 = 209 d3 = 209
4 e4 = 161 d4 = 161
5 e5 = 269 d5 = 389

Observar que para cada i , 1 ≤ i ≤ 5, ei di ≡ 1 (mod 480)

Ahora suponga que el responsable del sistema envı́a a todos los usuarios el
mensaje
HOLA
El mensaje precodificado, de acuerdo a las identificaciones previamente estable-
cidas, es
127 134 131 120
El mensaje codificado que recibirá cada usuario se muestra en la siguiente tabla:

Usuario 127 134 131 120 Mensaje codificado


443 443 443 443
1 127 = 104 134 = 417 131 = 227 120 = 494 104 417 227 494

2 12743 = 427 13443 = 9 131143 = 329 12043 = 494 427 9 329 494

3 127209 = 331 134209 = 338 131209 = 505 120209 = 426 331 338 505 428

4 127161 = 416 134161 = 236 131161 = 454 120161 = 120 416 236 454 120
269 269 269
5 127 = 145 134 = 121 131 = 133 120269 = 426 145 121 133 426

M. González
2.5. Ejercicios 71

El mensaje decodificado por cada usuario, i, según su clave secreta, di , se


muestra en la siguiente tabla:

Usuario Mens. decodificado

1 104467 = 127 417467 = 134 227467 = 131 494467 = 120 127 134 131 120

2 42767 = 127 967 = 134 32967 = 131 49467 = 120 127 134 131 120

3 331209 = 127 338209 = 134 505209 = 131 426209 = 120 127 134 131 120

4 416161 = 127 236161 = 134 454161 = 131 120161 = 120 127 134 131 120

5 145389 = 127 121389 = 134 133389 = 131 426389 = 120 127 134 131 120

la última columna de la tabla muestra los mismos valores para todas las filas, que
al ser traducidos en caracteres, cada usuario recibe el mensaje original

HOLA

Observación 2.4.1 Notar que en ambas tablas las potencias se calculan módulo
527.

2.5. Ejercicios
1. Usando inducción matemática pruebe la veracidad de las siguientes propo-
siciones:

a) 2 + 4 + 6 + · · · + 2n = n(n + 1)
b) 1 + 3 + 5 + · · · + (2n − 1) = n2
Xn
n(n + 1)(2n + 1)
c) i2 =
6
i=1
n
X 1 n
d) =
i(i + 1) n+1
i=1
e) 2n−1 ≤ n! , ∀n ∈ Z+
n
X (2n + 1)2
f) i<
8
i=1
g) (cos θ + ı sen θ)n = cos(n θ) + ı sen(n θ); n ≥ 1

2. Pruebe que n2 ≤ 2n , ∀n ≥ 4

3. Los números armónicos se definen en la forma


1 1 1 1
H(n) = 1 + + + + · · · + , n ∈ Z+
2 3 4 n
a) Pruebe que H(2n ) < 1 + n , n ∈ Z+

M. González
72 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular
n
X
b) Pruebe que H(j) = (n + 1)H(n) − n , n ∈ Z+
j=1
1
c) Pruebe que H(2n) ≥ H(n) + , ∀n ≥ 1
2
n n
d) Pruebe que H(2 ) > , ∀n ≥ 1
2
4. Dado un conjunto de N números reales, escriba algoritmos recursivos para
calcular
a) La suma de los N números.
b) El producto de los N números.
c) El promedio de los N números.
5. La sucesión de Fibonacci se define mediante
F (0) = 1 ; F (1) = 1
F (n + 1) = F (n) + F (n − 1) ; n ≥ 1
a) Encuentre una fórmula explı́cita para F (n).
b) Pruebe que
F (n) ≤ ( 53 )n ; n ≥ 0
Pn
c) F 2 (k) = F (n) · F (n + 1)
k=1
d) Pruebe que √
lı́m FF(n+1)
(n) =
1+ 5
2
n→+∞ √
1+ 5
El número 2 se denomina razón aúrea o número de oro.
e) Pruebe que para todos los enteros positivos n y m tales que n > m se
cumple la siguiente igualdad:

F 2 (n) − F (n + m) F (n − m) = (−1)n−m F 2 (m)

f) Escriba un algoritmo iterativo para calcular los números F (n).


g) Encuentre una expresión recursiva para calcular el número de veces
que se invoca a la función F al hallar el valor de F (n).
6. Escriba una expresión recursiva para la sucesión
a(n) = 2n + 1 ; n ≥ 0.
7. Escriba un algoritmo recursivo para resolver el problema de las torres de
Hanoi para n ∈ Z+ cualquiera.
8. Encuentre una forma explı́cita para la expresión recursiva obtenida para el
número de movimientos en las torres de Hanoi (Ejemplo 2.2.8.)

M. González
2.5. Ejercicios 73

9. Halle una fórmula explı́cita para la sucesión


a(0) = 0 ; a(1) = 1
a(n) = a(n − 1) + 2 a(n − 2) ; n ≥ 2

10. Dado un conjunto ordenado A = {a1 , a2 , · · · , an } escriba el algoritmo de


búsqueda binaria en forma recursiva para buscar un elemento en el conjun-
to A. Sugerencia: almacene los elementos del conjunto A en un arreglo
udimensional.

11. Halle la solución general para cada una de las ecuaciones en diferencias
siguientes:

a) a(n + 1) − 2 a(n) − 3 a(n − 1) = 0, n > 1


b) a(n + 1) − a(n) − 5 a(n − 1) = n2 + 2n − 3, n > 1
c) a(n + 2) − 2 a(n + 1) − 4 a(n) + 6 a(n − 1) = 2 × 3n , n > 1

12. Escriba un algoritmo para hallar la solución general de la ecuación en dife-


rencias
a(n + 1) + A a(n) + B a(n − 1) = 0, n > 1
donde A y B son constantes reales.

13. Pruebe que en cualquier lista de n enteros consecutivos uno de ellos es


divisible por n.

14. Dado un entero n > 1. Escriba un algoritmo para verificar si n es primo.

15. Usando el algoritmo del ejercicio anterior escriba un algoritmo para en-
contrar todos los números primos menores o iguales a un entero positivo
dado.

16. Dado un entero n ∈ Z , n > 1. Escriba un algoritmo para hallar el mayor


número primo menor o igual a n.

17. Dado un entero n ∈ Z , n > 1. Escriba un algoritmo para hallar el menor


número primo mayor o igual a n.

18. Dado un n ∈ Z+ , escriba un algoritmo para calcular el n-ésimo número


primo.

19. Sea E = N − {0, 1}. Para cada i ∈ E defina Xi = {ik; k ∈ E}. Determine el
S
+∞
conjunto E− Xi .
i=2

20. Pruebe que si M CD(a, c) = 1 y M CD(b, c) = 1, entonces M CD(a b, c) = 1.

21. Sea F (n) la sucesión de Fibonacci.

M. González
74 Capı́tulo – 2. Inducción matemática, recursividad y aritmética modular

a) Halle el M CD(F (7), F (8))


b) ¿Es posible generalizar el proceso anterior para hallar el M CD(F (n), F (n+
1))?. Comente.

22. Escriba un algortimo para hallar el MCD de a1 , a2 , · · · , an ∈ Z+ .

23. Escriba un algortimo para hallar el MCM de a1 , a2 , · · · , an ∈ Z+ .

24. a) Los números de Fermat se definen de la siguiente manera:


n
F (n) = 22 + 1; n = 0, 1, 2, 3, · · ·

Usando inducción, pruebe que

F (0) · F (1) · F (2) · ... · F (n − 1) = F (n) − 2

b) Pruebe que F (n) y F (m), para m 6= n, son primos relativos.


ver

25. Halle el inverso multiplicativo de


a) 5 en Z16 b) 20 en Z53 c) 35 en Z77

26. Cuántos elementos en Z88 tienen inverso multiplicativo?

27. Escriba un algoritmo para calcular el inverso multiplicativo de un entero a


en Zn cuando a y n son coprimos.

28. Resuelva la ecuación 3x + 2 = 4 en Z5

29. Resuelva en, Z7 , el sistema de ecuaciones


½
2x + 3y = 1
5x + 4y = 4

30. Resuelva el sistema de ecuaciones


½
5x + 4y = 7
6x − 8y = 9
en Z11 .

31. Calcule los valores de n para los cuales la función de Euler ϕ es

a) ϕ(n) = 18
b) ϕ(n) = 10
c) ϕ(n) = 14

32. Halle el valor de ϕ(12), ϕ(14), ϕ(18), ϕ(7919), ϕ(104729).

M. González
2.5. Ejercicios 75

33. Escriba un algoritmo para calcular la función de Euler, ϕ(n) , siendo n un


entero positivo.

34. Escriba algoritmos para construir tablas de sumar y de multiplicar en Zn ,


n ∈ Z+ .

M. González

También podría gustarte