Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Definición de congruencia
Dado m ∈ Z , m> 1, se dice que a, b ∈ Z son congruentes módulo
m si y sólo si m|(ab). Se denota esta relación como a ≡ b (mod m),
m es el módulo de la congruencia. Ejercicio.
La relación de congruencia como equivalencia. El conjunto
de residuos.
La relación de congruencia módulo m es una relación de
equivalencia para todo m ∈ Z. Es decir, cumple las propiedades
reflexiva, simétrica y transitiva. Como en toda relación de
equivalencia, podemos definir el conjunto cociente de las clases de
Congruencias en Z módulo m. La
equivalencia originadas por la relación de congruencia. En este
caso la relación clasifica a cualquier entero a según el resto
aritmética en Zm
obtenido al dividirlo por el módulo m.
1
Congruencias en Z módulo m. La
aritmética en Zm
Llamaremos Zm al conjunto cociente de Z respecto de la relación de
congruencia módulo m. A la clase de equivalencia de un elemento a ∈ Z
se la denota por [a]m o simplemente [a].
Para todo a ∈ Z se tiene que [a] = [r] en Zm, donde r es el resto de
dividir a entre m. Por lo tanto, el conjunto Zm es finito y tiene m
elementos: Zm = { [0]m, [1]m, ... , [m1]m}, donde la clase [i]m
representa al conjunto de todos los enteros que son congruentes con i
mod m. A este conjunto cociente se le conoce como el conjunto de
restos o residuos (módulo m) .
Aritmética Modular , en Zm
Definición
En Zm podemos definir dos operaciones binarias internas:
+ , . : Zm x Zm⇒ Zm que llamamos suma y producto, y están definidas
de la siguiente manera, para cualesquiera a, b ∈ Z: 2
[a] + [b] = [a+b]
[a] . [b] = [a.b]
Congruencias en Z módulo m. La
aritmética en Zm
Propiedades
Son operaciones cerradas, conmutativas y asociativas
Cumplen la propiedad distributiva
Tienen elemento neutro. [0] es el elemento neutro para ( Zm , + ) y [1]
es el elemento neutro para ( Zm , . )
En el caso de ( Zm , + ) existe el elemento opuesto: [a] = [a]
Propiedad cancelativa para ( Zm , . ) : si [a].[c] = [b].[c] en Zm, entonces
[a] = [b] en Z(m/mcd (m,c)) .
Un caso especial es cuando mcd (m,c)=1 , ya que entonces se cumple la
propiedad cancelativa para el producto en Zm: si [a][c] = [b][c] en Zm ⇒
[a] = [b] en Zm .
Si m es primo, (Zm, .) tendrá la propiedad cancelativa del producto para
todo c, entonces Zm es un Cuerpo.
3
Congruencias en Z módulo m. La
aritmética en Zm
Veamos un ejemplo de estas operaciones en Z5
Podemos ver que en esta clase, todo elemento distinto de cero tiene
un inverso multiplicativo, de modo que Z5 es un Cuerpo.
Esto no siempre es asi!!!!!
TEOREMA: ZM ES UN CUERPO SI Y SOLO SI M ES PRIMO 4
Ecuaciones de congruencias lineales
Una congruencia de la forma:
ax ≡ b (mod m)
donde m es un entero positivo, a y b son números enteros y x es
una variable entera, se llama congruencia lineal o ecuación de
congruencia lineal (lineal por aparecer la variable x como
potencia de grado uno, únicamente).
Resolver esta ecuación consiste (como en el caso de la aritmética
entera) en encontrar todos los enteros x que satisfagan la ecuación
diofántica equivalente ax+my=b.
En el caso de Zm, la ecuación tendrá solución si y solo si
mcd(a,m)|b , y en este caso tendrá exactamente d=mcd(a,m)
soluciones distintas en Zm de la forma: x= x0 + (m.t)/d ,
t=0,1,2,...,d1 en donde x0 es una solución particular de la ecuación
5
diofántica ax + my = b.
Aplicaciones de las ecuaciones de congruencias
Generación de números pseudoaleatorios
lineales
Lo primero que hay que notar acerca de los algoritmos generadores de
números aleatorios que usan los software es que ¡los números que
generan no son aleatorios!. Los software usan algoritmos
determinísticos y por tanto es más correcto llamarles generadores de
numeros pseudoaleatorios, ya que generan una secuencia de números
que eventualmente pueden volver a repetirse y solamente se aproxima a
una secuencia aleatoria.
Las congruencias lineales se han utilizado tradicionalmente para la
implementación de funciones generadoras de números pseudoaleatorios
en las bibliotecas de programación de la mayoría de los lenguajes de
programación clásicos como C, Fortran, Basic, etc. Los generadores
congruenciales lineales de números aleatorios fueron propuestos por
primera vez por D.H. Lehmer en 1951, y utilizan una congruencia lineal
de la siguiente forma:
Xn = (aXn1+c) (mod M)
Los parámetros a,c y M deben ser elegidos cuidadosamente para asegurar
un largo período (número de enteros generados antes de que se repita la 6
secuencia) y que la secuencia generada tenga buenas propiedades
estadísticas de aleatoriedad y uniformidad.
Aplicaciones de las ecuaciones de congruencias
lineales
Para empezar el algoritmo se requiere un valor inicial X0, al que se
llama la semilla.
Así, para referirnos a un generador congruencial lineal determinado
usamos la notación GCL(a, c, M, X0). Cuando el generador utiliza
como constante de incremento c=0, se le llama generador
multiplicativo puro. Muchas veces se deja al programador elegir la
semilla inicial, y se emplea entonces la notación GCL(a, c, M).
Una vez que se obtiene el entero Xn puede dividirse (división real)
entre M para obtener valores reales distribuidos uniformemente en
[0,1).
Un buen generador lineal tendrá un período tan largo como sea
posible (es decir, M). Para los generadores mixtos (los que no son
multiplicativos puros) este máximo se alcanza si y sólo si se cumplen
las tres siguientes condiciones que fueron enunciadas por Donald
Knuth en su famoso libro The Art of Computer Programming:
c es primo con M 7
a1 es múltiplo de p para todo primo p que divida a M
a1 es múltiplo de 4 siempre que M sea múltiplo de 4
Aplicaciones de las ecuaciones de congruencias
lineales
Estas condiciones se cumplen, por ejemplo, si se escogen M=2k, a=4t+1, y c
número impar, siendo t, k enteros mayores que 0.
Los GCL son sencillos de implementar, pero en la práctica las secuencias
pseudoaleatorias generadas presentan correlaciones altas entre los números
generados en la secuencia, lo que les hace poco útiles como fuente de números
aleatorios en simulaciones por computadora medianamente complejas.
También el hecho de que la secuencia de números generados es totalmente
predecible los hace inefectivos para la generación segura de bits aleatorios
usables en criptografía.
Ejemplos clásicos de GCLs
GCL(75, 0, 2311): El generador multiplicativo inventado por IBM para su
serie 360. Tiene el máximo período posible para un generador multiplicativo:
M1 (= 2312). Se ha utilizado posteriormente en muchas otras ocasiones (por
ejemplo MATLAB utiliza este generador), tanto que se le ha llamado
"generador estándar mínimo".
GCL(65539, 0, 231):El generador RANDU (IBM, años 60). Su módulo y
multiplicador fueron elegidos así para facilitar la computación de los valores
8
generados. No tiene el período máximo, y sus propiedades estadísticas no son
las mejores...
GCL(259, 0, 215):. RANDU usado para microprocesadores de 16 bits.
Aplicaciones de Congruencias.
Los enteros modulo n y la aritmética modular tienen muchas
aplicaciones en y fuera de las matemáticas. Algunas de las aplicaciones
que se usan mucho actualmente son aplicaciones a la criptografía y a
la teoría de códigos. Las herramientas utilizadas en estas áreas se
parecen pero los objetivos de cada una de ellas son muy distintos.
La criptografía se usa para “esconder” información para que personas no
autorizadas no puedan entenderla y la teoría de códigos se usa para que
la información llegue (si es posible) sin errores y que sea entendible por
todo el que la reciba.
Por ejemplo, si vas a enviar el numero de una tarjeta de crédito por
internet no quieres que nadie intercepte el mensaje y pueda saber el
numero de la tarjeta. Para esto, en el momento en que entras el numero,
un programa lo encifra antes de transmitirlo. Lo que se transmite no es
el numero sino una sucesión de símbolos que no tienen sentido a menos
que se descifre. 9
Aplicaciones de Congruencias
Ejemplos en el caso de los códigos son las comunicaciones entre
teléfonos celulares, la música en un disco compacto, la transmisión de
satélites.
En todos estos casos pueden ocurrir errores por interferencia, etc.
Para poder corregirlos, cada mensaje (o música) que se almacena o
transmite se codifica de modo que cuando se reciba, el código nos
ayude a determinar si ocurrieron errores y, si es posible, corregirlos
para que la información llegue correcta.
El código de barras EAN13
Sin duda, el código de barras mas extendido en el mundo es el llamado
EAN13
Este codigo data de 1977 y es para Europa el análogo al codigo UPC de
Estados Unidos (Universal Product Code) o al código JAN de Japón
(Japanese Article Number ).
El nombre del código, EAN, procede de las iniciales de European
Article Numbering ,mientras que el 13 hace referencia al numero de
dígitos que van impresos en la parte inferior del código, de los que las 10
barras son su representación grafica.
El EAN13 es no significativo, es decir, no proporciona ninguna
información adicional que no este contenida en los 13 dígitos que lo
Aplicaciones de Congruencias
Los 13 dígitos del código EAN13, c1,…., c13, se calculan como sigue:
1.Código del país: Son los dos primeros dígitos (algunos países utilizan
3).
2.Código de la empresa: Los siguientes 5 u 8 dígitos, c3,…, c10, se
reservan para las diferentes empresas registradas en cada país.
3. Código del producto: Son los dígitos que restan hasta 12 (entre 2 y
5),
c8;.., c12, y están a disposición del propietario de la marca.
4. Digito de control : El ultimo digito, c13, se calcula a partir de los 12
dígitos anteriores y permite decidir si el código de barras se ha leído
correctamente. Su expresión es:
A modo de verificacion una vez determinada la ultima cifra se
calcula: 11
Aplicaciones de Congruencias
Puede observarse la distribucion de los 13 digitos. Los dos digitos
iniciales 8 y 4 corresponden a España , mientras que 7 y 7
corresponden a Argentina.
12
Aplicaciones de Congruencias
Para determinar el código EAN13 de un producto ficticio se calculan los 13
dígitos de que consta y se determina el código de barras correspondiente.
Si la empresa es Española los dos primeros dígitos
serán 84, es decir, c1 = 8, c2 = 4. Si el código de la empresa tiene los
dígitos 765432, estos serán los siguientes, es decir, c3 = 7, c4 = 6, c5 = 5,
c6 = 4, c7 = 3 y c8 = 2. Si 0209 son los 4 dígitos que el propietario de la
marca asigna al articulo ficticio, entonces c9 = 0, c10 = 2, c11 = 0 y c12 = 9.
Según esto, los dígitos para el código de barras son: 847654320209c13.
Para calcular el digito de control se procede como se indica en la expresión
que vimos anteriormente:
Luego el codigo de barra
correspondiente se puede observar a
la izquierda. 13
Aplicaciones de Congruencias
El codigo de control, nos sirve para detectar si hubo algun error en la
escritura del codigo, por ejemplo cuando el lector laser no funciona y se
debe ingresar el codigo manualmente, el error mas comun es invertir
digitos consecutivos, este tipo de error es detectado a traves del digito de
control. ( No podemos saber en que digito ocurrio el error, solo
detectarlo).
A continuacion se escriben codigos de barra de productos alimenticios,
podrias detectar si cometi algun error al escribirlos?
1.7798085370073 ( Manteca)
2.7793360005107 (Atun)
3.7794000595025 (Sopa en Sobre)
4.7794000594458 (Caldos)
5.7794000401280 (Mayonesa)
14
Aplicaciones de Congruencias
Los codigos ISBN y EAN13
El código ISBN (International Standar Book Number), es un sistema
internacional de numeración e identificación de libros surgido en
1965, y aunque no sea un código de barras propiamente dicho, es posible
elaborar un código EAN13 para cada código ISBN ,de modo que pueda ser
tratado informáticamente.
El código ISBN contiene 10 dígitos (ISBN10) divididos en cuatro grupos
por tres guiones. Dado que las posiciones de los guiones son irrelevantes
para el código, no se tienen en cuenta. El ultimo digito es el de control (la
letra X si su valor es 10) y se calcula mediante la siguiente expresión:
15
Aplicaciones de Congruencias
Para determinar el código de barras EAN13 a partir de un código ISBN
dado
b1b2b3b4b5b6b7b8b9b10,
basta con calcular los 13 dígitos que le corresponden en formato EAN13.
En primer lugar se eliminan los guiones y el digito de control:
b1b2b3b4b5b6b7b8b9.
A continuación se añaden los dígitos 978 al inicio del código ISBN de modo
que
Luego se determina el digito de control como lo vimos anteriormente.
16
Congruencias en Z módulo m. La
aritmética en Zm
Relojes
Son las 11 am. ¿Que hora será dentro de 4 horas?
Son las 9 pm. ¿Que hora será dentro de 20 horas?, ¿Dentro de 54 horas?
¿Puedes dar un método para calcular esto?
Nota que el conjunto de posibles horas es: {1; 2; 3; … ; 12} y que los
resultados de tus operaciones tienen que “caer” dentro de este conjunto. Una
de los posibles métodos para calcular sumas en este conjunto es el sumar y
luego tomar el residuo al dividir por 12. La hora será el residuo al dividir
por 12, excepto si el residuo es 0.
En este ultimo caso la hora será las 12.
Este tipo de procedimiento lo podemos extender para cualquier reloj con
“otra cantidad de horas”. Por ejemplo, si nuestro reloj tiene 7 horas, ¿que
hora será dentro de 8 horas si son las 6 pm?
Son las 5 pm. ¿Que hora será dentro de 37 horas?
17