Fundamentos Matemáticos

Transcrição

Fundamentos Matemáticos
Fundamentos Matemáticos
Instituto de Computação - UNICAMP
Julio López
Disciplina MC889
Agenda
Números inteiros
Divisão de Números
O Algoritmo de Euclides
Grupos
Corpos finitos
Julio López
Disciplina MC889
Números inteiros
Z é o conjunto dos números inteiros.
Sejam a e b números inteiros. Dezimos que a é divisı́vel por b
se existe inteiro q tal que a = qb. Nesse caso, b é divisor de a
3|21, mas 4 6 |15.
Um número inteiro p ≥ 2 é primo se é divisı́vel somente por 1
e por ele mesmo.
Teorema 1: Todo inteiro n ≥ 2 pode ser escrito como um produto
de potências de números primos; a fatoração de n.
n = p1e1 p2e2 · · · pkek
Julio López
Disciplina MC889
Divisão de Números
Definição 1: Sejam a, n números inteiros com n > 0. O resto ou
resı́duo da divisão de a por n é o único inteiro r , com
0 ≤ r ≤ n − 1, tal que a = qn + r para algum inteiro q, o
quociente da divisão.
Por essa definição o resto da divisão de 7 por 3 é 1 (com quociente
2), e o resto da divisão de −7 por 3 é 2 (com quociente −3).
Definição 2: Para a, n números inteiros com n > 0, a expressão
a mod n é a redução de a módulo n, definida como o resto da
divisão de a por n.
Portanto, 0 mod 5 = 0 e (3 − 8) mod 4 = −1 mod 4 = 3.
Julio López
Disciplina MC889
Aritmética modular
Definição 3: Dado um inteiro n ≥ 1, denotamos por Zn ao
conjunto {0, 1, . . . , n − 1} de resı́duos módulo n, isto é dos restos
possı́veis de divisões de números inteiros por n.
Como todo número inteiro produz um resto ao ser dividido por n,
Zn tem em si um representante para cada número inteiro. A
próxima definição captura essa idéia.
Definição 4: Para a, b, n números inteiros com n > 0, escrevemos
a ≡ b (mod n), quando a mod n = b mod n. Dizemos que a e b
são congruentes módulo n.
Assim, 0 ≡ 3 (mod 3) e 43 ≡ 1 (mod 2).
Proposição : a ≡ b (mod n) se e somente se a = b + kn para
algum inteiro k.
Julio López
Disciplina MC889
Aritmética modular
Proposição :
Se a ≡ b (mod n) e c ≡ d (mod n) então a + c ≡ b + d
(mod n)
Se a ≡ b (mod n) e c ≡ d (mod n) então a × c ≡ b × d
(mod n)
Se a ≡ b (mod n) e m é um inteiro positivo então
m × a ≡ m × b (mod n)
Exemplo:
5
≡
52 ≡
53 ≡
54 ≡
54 (mod 3) ?
2 (mod 3)
10 ≡ 1 (mod 3)
5 ≡ 2 (mod 3)
10 ≡ 1 (mod 3).
Julio López
Disciplina MC889
O máximo divisor comum (m.d.c)
Considere a, b dois números inteiros, não ambos nulos.
O máximo divisor comum de a e b, (mdc(a, b)), é o maior
inteiro d que divide ambos a e b.
mdc(20, 8) = 4
mdc(20, 0) = 20
mdc(20, 7) = 1
Quando mdc(a, b) = 1, dizemos que a e b são primos entre si
ou coprimos.
O Algoritmo de Euclides, é o método mais popular para o cálculo
do mdc.
Julio López
Disciplina MC889
O Algoritmo de Euclides
Entrada: inteiros a, b, com a > 0, b ≥ 0.
Saı́da: inteiro d, onde d = mdc(a, b).
mdc(a, b)
mdc(a, 0)
=
=
mdc (b, mdc(a, b));
a.
mdc(18, 4)
= mdc(4, 18 mod 4)
= mdc(4, 2)
= mdc(2, 4 mod 2)
= mdc(2, 0)
= 2.
Nota: a mod b = a − b · ba/bc.
Julio López
Disciplina MC889
O Algoritmo de Euclides
Entrada: inteiros a, b, com a > 0, b ≥ 0.
Saı́da: inteiro d, onde d = mdc(a, b).
1. se b = 0 então retorne a;
2. enquanto b > 0 faça
2.1 q ← a div b; r ← a − q ∗ b;
2.2 a ← b; b ← r ;
3. d ← a;
4. retorne d
Julio López
Disciplina MC889
Propriedades do Máximo Divisor Comúm
Teorema 2: Sejam a, b números inteiros. Então existem inteiros s
e t tais que sa + tb = mdc(a, b). Adicionalmente, o mdc(a, b) é o
menor número positivo que pode ser representado dessa forma.
Proposição 1: Se c| ab e mdc(a, c) = 1, então c| b. Em
particular, se p é primo e p| ab então p| a ou p| b.
Proposição 2: Se p|n e q|n, e mdc(p, q) = 1, então pq|n.
Julio López
Disciplina MC889
Aritmética modular em Z∗n
Definição 5: Dado um inteiro n ≥ 2, denotamos por Z∗n ao
conjunto {a | mdc(a, n) = 1, 1 ≤ a ≤ n − 1}. O tamanho de Z∗n é
representado por φ(n), a função de Euler.
Assim, Z∗10 = {1, 3, 7, 9} e φ(10) = 4. Também, φ(n) = n − 1
sempre que n for primo.
É fácil verificar que as operações de soma, subtração e
multiplicação modular são as mesmas da aritmética usual mas
com o resultado reduzido módulo n. A divisão é a única
exceção: (a/b) mod n é sempre escrita e intepretada como
ab −1 mod n.
Julio López
Disciplina MC889
Inversos
Definição 6: Para a, n números inteiros com n > 0, o inverso
aditivo de a módulo n é o inteiro b = −a mod n.; ou seja
a + b ≡ 0 (mod n).
Definição 7: Para a, n números inteiros com n > 0, o inverso
multiplicativo de a módulo n, se existir, é o único inteiro b,
1 ≤ b ≤ n − 1, tal que ab ≡ 1 (mod n). Denotamos o inverso
multiplicativo de a módulo n por a−1 mod n.
O inverso aditivo de 4 módulo 7 é 3.
O inverso multiplicativo de 2 módulo 5 é 3.
O inverso multiplicativo de 2 módulo 6 não existe.
Julio López
Disciplina MC889
Inversos
Proposição 3: Para a, n números inteiros com n > 0, o inverso
multiplicativo de a módulo n existe se e somente se mdc(a, n) = 1.
Se mdc(a, n) = 1, como calcular a−1 mod n?
Extensão do Algoritmo de Euclides:
1 = mdc(a, n) = sa + tn
1 = sa mod n
a−1 = s mod n.
Julio López
Disciplina MC889
Extensão do Algoritmo de Euclides
Dados a, n, a extensão do Algoritmo de Euclides, retorna inteiros
(r , s, t) onde r = mdc(a, n) e r = sa + tn. Isto é, sa ≡ r mod n.
Assim, quando mdc(a, n) = 1, o inteiro s é a−1 mod n.
r0 = a, r1 = b
mcd(r0 , r1 )
r0
=
r1
=
..
.
=
..
.
=
rm−2 =
rm−1 =
= mcd(r1 , r2 ) = · · · = mdc(rm−1 , rm ) = rm
q1 r1 + r2
0 < r2 < r1
q2 r2 + r3
0 < r3 < r2
..
..
.
.
..
..
.
.
qm−1 rm−1 + rm 0 < rm < rm−1
qm rm .
rj = sj a + tj b, 0 ≤ j ≤ m.
Julio López
Disciplina MC889
Extensão do Algoritmo de Euclides
Entrada: inteiros a, b, com a > 0, b ≥ 0.
Saı́da: inteiros r , s e t onde r = mdc(a, b) = sa + tb.
1. a0 ← a; b0 ← b; t0 ← 0; t ← 1;
2. s0 ← 1; s ← 0; q ← ba0 /b0 c; r ← a0 − qb0 ;
3. enquanto r > 0 faça
3.1 temp ← t0 − qt; t0 ← t; t ← temp;
3.2 temp ← s0 − qs; s0 ← s; s ← temp;
3.3 a0 ← b0 ; b0 ← r ; q ← ba0 /b0 c; r ← a0 − qb0 ;
4. r ← b0 ;
5. retorne (r , s, t)
Julio López
Disciplina MC889
Extensão do Algoritmo de Euclides
28−1 mod 75?
ti
i ri qi si
0 75 − 1
0
1
1 28 2 0
2 19 1 1 −2
3 9 2 −1 3
4 1 9 3 −8
3 × 75 − 8 × 28 = 1
28−1 mod 75 = −8 mod 75 = 67.
Julio López
Disciplina MC889
Inverso Multiplicativo
Entrada: inteiros a, b.
Saı́da: inteiro s onde 1 = sa mod b
1. a0 ← a; b0 ← b; s0 ← 1; s ← 0;
2. q ← ba0 /b0 c; r ← a0 − qb0 ;
3. enquanto r > 0 faça
3.1 temp ← s0 − qs mod b; s0 ← s; s ← temp;
3.2 a0 ← b0 ; b0 ← r ; q ← ba0 /b0 c; r ← a0 − qb0 ;
4. se r 6= 1 então a não tem inverso multiplicativo;
señao retorne (s).
Julio López
Disciplina MC889
Algoritmo Binário do MDC (Stein, 1961)
Entrada: inteiros a, b.
Saı́da: inteiro r , onde r = mdc(a, b).
1. u ← a; v ← b; k ← 1.
2. enquanto ambos u e v sejam pares faça
2.1 u ← u/2; v ← v /2; k ← 2k.
3. enquanto u 6= 0 faça
3.1 enquanto u seja par faça u ← u/2.
3.2 enquanto v seja par faça v ← v /2.
3.3 se u ≥ v faça u ← u − v ; senão v ← v − u.
4. retorne (r = kv )
Julio López
Disciplina MC889
Algoritmo Binário do MDC
mcd(18, 4) =?
u
18
9
9
8
..
.
v
4
2
1
1
..
.
1
0
1 2
1 2
k
1
2
2
2
..
.
mdc(18, 4) = kv = 2 × 1 = 2
Julio López
Disciplina MC889
Grupos
Definição 8: Um grupo é formado por um conjunto G e uma
operação +, com as seguintes propriedades, para todos a, b, c ∈ G:
1
(fechamento) a + b ∈ G;
2
(associatividade) (a + b) + c = a + (b + c);
3
(existência de elemento neutro ou identidade) existe um
elemento em G, denotado 0, tal que a + 0 = a;
4
(existência de inversos) para todo a ∈ G, existe em G um
elemento denotado −a, tal que a + (−a) = 0.
Um grupo é abeliano se a + b = b + a para todos a, b ∈ G.
Julio López
Disciplina MC889
Grupos (cont.)
Exemplos de grupos são:
números inteiros, racionais e reais com a soma usual;
os elementos de Zn = {0, 1, 2, . . . , n − 1}, n > 0, com a
operação de soma módulo n;
os elementos de Z∗p = {1, 2, . . . , p − 1}, p > 1, primo, com a
operação de multiplicação módulo p.
Julio López
Disciplina MC889
Grupos aditivos e multiplicativos
Denotaremos o grupo definido acima por (G, +), ou
simplesmente G, quando a operação + estiver subentendida
no texto.
Essa definição usa a notação aditiva, isto é, a + a + a + a é
denotado por 4a, 0 é a identidade, e 0 · a = 0.
Poderı́amos ter usado uma notação multiplicativa, onde a
operação do grupo seria denotada ’·’. Assim, a · a · a (ou aaa)
seria denotado por a3 , o elemento identidade seria 1, e a0 = 1.
Como já ficou claro, essas não são necessariamente as operações
usuais de soma e multiplicação.
Julio López
Disciplina MC889
Grupos aditivos e multiplicativos
O número de elementos de G é a sua ordem. Se a ordem é
finita, então G é um grupo finito.
A ordem de um elemento a ∈ G é o menor inteiro positivo t
tal que ta = 0. É um fato bem conhecido que a ordem de um
elemento divide a ordem do grupo.
Quando, para um grupo finito G de ordem n, existe um
elemento α de ordem n, dizemos que G é cı́clico e que α é um
gerador de G.
Julio López
Disciplina MC889
Exemplo:
G = Z∗7 = {1, 2, 3, 4, 5, 6}
A ordem do grupo (Z∗7 , ·) é 6;
A ordem do elemento 2 é 3: 23 ≡ 8 ≡ 1 mod 7;
A ordem do elemento 3 é 6: 36 ≡ 1 mod 7;
portanto, o grupo (Z∗7 , ·) é cı́clico, com gerador 3.
Z∗7 = {3i mod 7; i = 1, 2, 3, 4, 5, 6}
Julio López
Disciplina MC889
Exercı́cios:
Calcule 1093987656544168 × 9996543298765002 mod 1000.
Calcule em Z11 o número 8 × 7 − 10/6.
Prove: se c = 2k a + b, 0 ≤ b < 2k , então c ≡ b mod 2k .
Calcule 21000 − 1 mod 24 .
Calcule 312 mod 23.
Determine números d, s e t tais que
d = mdc(234, 26) = 234 × s + 26 × t.
Calcule o inverso multiplicativo de 17 em Z∗123 .
Implemente em C a extensão do algoritmo de Euclides.
Julio López
Disciplina MC889
Corpos finitos
Definição 9: Um corpo é formado por um conjunto F e duas
operações, ‘+’ e ‘·’, satisfazendo as seguintes propriedades:
(F, +) é um grupo abeliano com identidade 0;
(F \ {0}, .) é um grupo abeliano com identidade 1; e
a operação · é distributiva sobre a operação +, isto é,
a · (b + c) = a · b + a · c, para todos a, b, c ∈ F.
Números racionais, reais e complexos são exemplos de corpos
infinitos.
A ordem de um corpo finito é o número de elementos em F.
Quando a ordem é finita dizemos que o corpo é finito.
Julio López
Disciplina MC889
Corpos finitos
Sejam a, b dois elementos de um corpo, finito ou não. Então
a − b é equivalente a a + (−b), onde −b é o (único) inverso
aditivo de b;
a/b é equivalente a a.(b −1 ), onde b −1 é o (único) inverso
multiplicativo de b;
ka denota a adição de k parcelas iguais a a;
ak denota a multiplicação de k parcelas iguais a a, onde
a0 = 1.
Julio López
Disciplina MC889
Corpos finitos - existência
Existe um corpo finito de ordem q, se e somente se q = p m
para algum primo p e inteiro m > 0.
O primo p é a caracterı́stica de F.
Quando q é primo, i.e. m = 1, dizemos que o corpo é primo.
Quando m > 1, o corpo é de extensão.
Denotamos o corpo finito de ordem q por Fq .
Julio López
Disciplina MC889
Corpos finitos - exemplos
O conjunto Zp , p primo, com as operações de soma e
multiplicação módulo p formam o corpo primo Fp de ordem p.
Exemplos de primos: (NIST)
p = 2192 − 264 − 1
p = 2521 − 1
Julio López
Disciplina MC889
Corpos binários
Definição 10: O corpo binário F2m é formado pelos polinômios
em uma variável z de grau máximo m − 1, cujos coeficientes são 0
ou 1. As duas operações associadas são as de soma e multiplicação
de polinômios, com as seguintes restrições:
os coeficientes do polinômio resultante são reduzidos módulo
2;
o resultado da multiplicação de dois polinômios deve ser
tomado módulo um polinômio irredutı́vel f (z) de grau m. Isto
é, f (z) não é o produto de dois polinômios binários de grau
menor que m.
Julio López
Disciplina MC889
Corpos finitos - exemplos
Corpo Finito:
F2m = {
m−1
X
ai x i | ai ∈ Z2 },
i=0
f (x) = x m + r (x) polinômio irredutı́vel
Exemplo: m = 3, F23 , f (x) = x 3 + x + 1
F23 = {a2 x 2 + a1 x + a0 | ai ∈ {0, 1}}
= {0, 1, x, x + 1, x 2 , x 2 + 1, x 2 + x, x 2 + x + 1}
= {000, 001, 010, 011, 100, 101, 110, 111}
Julio López
Disciplina MC889
Corpos finitos - exemplos
Os elementos não nulos de um corpo finito Fq , juntamente
com a multiplicação do corpo, formam um grupo cı́clico,
denotado por Fq ∗ .
Portanto, existe para esse grupo pelo menos um gerador α,
isto é,
Fq∗ = {αi : 0 ≤ i ≤ q − 2}.
Julio López
Disciplina MC889
Problema do logaritmo discreto
Definição 11: (Problema do logaritmo discreto) Dados elementos
a, b de um grupo (G , .), tais que b = al , o problema do logaritmo
discreto é o de encontrar l conhecendo a e b apenas.
Em Z∗p : y = αx mod p2048 , calcular x onde p2048 é um primo
de 2048 bits.
Os métodos conhecidos para o cálculo do logaritmo discreto
em Fq∗ são todos muito ineficientes quando q é muito grande,
da ordem de centenas de dı́gitos. Para outros grupos o cálculo
é muito fácil, por exemplo, em (Zn , +).
Julio López
Disciplina MC889