teoria dos números - Ulisses Cotta Cavalca

Propaganda
FACULDADE PITÁGORAS
Curso Superior em Tecnologia
Redes de Computadores e Banco de dados
Matemática Computacional
Prof. Ulisses Cotta Cavalca
<[email protected]>
TEORIA DOS NÚMEROS
Belo Horizonte/MG
2014
1. INTRODUÇÃO
O teoria dos conjuntos, ou simplesmente o estudo dos conjuntos numéricos, é uma
importante ferramenta para a compreensão e entendimento de estruturas discretas, muito
úteis na computação como um todo. Dessa forma:
AB={ x / x ∈ A∧ x ∈ B }
2. DIVISÃO
DEFINIÇÃO: Se a e b são inteiros com a≠0, dizemos que a divide b se há um
inteiro c tal que b=ac. Quando a divide b, dizemos que a é fator de b, e b é múltiplo de a. A
notação a|b significa a divide b.
Determine:
a) 3 | 7
c) 5 | 26
b) 4 | 12
d) 7 | 49
TEOREMA: Sejam a, b, e c números inteiros. Então:
i. se a|b e a|c, então a|(b+c);
ii. se a|b, então a|bc para todo c inteiro;
iii. se a|b e b|c, então a|c.
Verifique os valores de a, b e c abaixo, e os itens do teorema acima:
a) a=2, b=4, c=8
c) 5 | 26
b) a=5, b=20, c=15
d) 7 | 49
COROLÁRIO: Se a, b, e c são números inteiros, tais que a|b e a|c, então a|
(mb+nc) de modo que m e n são inteiros.
TEOREMA (Algoritmo de divisão): Seja a inteiros e d um inteiro positivo. Então
há valores inteiros únicos q e r, com 0 ≤ r < d, tal que a=dq+r.
DEFINIÇÃO: Na equação dada no algoritmo de divisão, d é chamado de divisor, a
é chamado de dividendo, q é chamado de quociente e r é chamado de resto. A notação usada
para expressar quociente e resto, são, respectivamente:
q = a div d
r = a mod d
Verifique o quociente e resto para cada um dos casos:
a) 3 | 7
c) 5 | 26
b) 4 | 12
d) 7 | 49
DEFINIÇÃO: Sejam a, b números inteiros quaisquer e m um inteiro estritamente
positivo. Diz-se que a é CÔNGRUO a b módulo m se m | (a-b) , isto é, se m divide (a-b)
(a – b = mq para um conveniente inteiro q). Para indicar que a é côngruo a b, módulo m ,
usa-se a notação
a ≡ b (mod m)
TEOREMA: Sejam a, b números inteiros quaisquer e m um inteiro estritamente
positivo. Então, a ≡ b (mod m) se e somente se a mod m = b mod m.
TEOREMA: Seja m um número inteiro positivo. Os inteiros a e b números inteiros
quaisquer e m um inteiro estritamente positivo. Então, a ≡ b (mod m) se e somente se a
mod m = b mod m
3. APLICAÇÕES DE CONGRUÊNCIAS
3.1 Dígito verificador de CPF
A congruência de números inteiros tem uma aplicação direta na determinação do
digito verificador de um número CPF. Dado um endereço CPF, os 8 primeiros dígitos
referem-se ao número do cidadão propriamente dito, o 9º dígito diz respeito à região fiscal,
e o 10º e 11º dígito são de verificação. A Região Fiscal onde emitido o CPF (definida pelo
nono dígito) tem a seguinte abrangência: 1 (DF-GO-MS-MT-TO), 2 (AC-AM-AP-PA-RORR), 3 (CE-MA-PI), 4 (AL-PB-PE-RN), 5 (BA-SE), 6 (MG), 7 (ES-RJ), 8 (SP), 9 (PR-SC)
e 0 (RS).
Para o número 332.512.981, determinado aleatoriamente, o cálculo dos dígitos
verificadores é realizado da seguinte forma:
Passo 1: Multiplica-se o 1º dígito por 1, o 2º dígito por 2, e assim por diante. Some
todos os resultados desse produto e depois obtenha o módulo desse número por 11.
3
3
2
5
1
2
9
8
1
1
2
3
4
5
6
7
8
9
3
6
6
20
64
9
5
12
63
10º dígito = 188 mod 11 = 1
188
i=9
Matematicamente: d 10=( ∑ d i i )mod 11
i=1
Passo 2: Concateno o 10º dígito ao número inicial. Multiplica-se o 1º dígito por 0, o
2º dígito por 1, e assim por diante, até o 10º dígito por 9. Some todos os resultados desse
produtos e depois obtenha o módulo desse número por 11.
3
3
2
5
1
2
9
8
1
1
0
1
2
3
4
5
6
7
8
9
0
3
4
15
8
9
4
10
54
56
11º dígito = 163 mod 11 = 9
163
i=10
Matematicamente: d 11=( ∑ d i (i−1))mod 11
i=1
Assim, o número CPF completo será 332.512.981-19
Verifique, a partir desse método, os dígitos verificadores do seu número CPF.
3.2 Funções Hash
Hash é uma função matemática (ou estrutura de dados em ciência da computação)
que traduz endereços de tamanho variável para tamanhos fixos. Sua principal aplicação está
na alocação de endereços, como número de registro de clientes, endereço de memória
virtual no contexto de sistemas operacionais, dentre outros.
Em geral, uma função hash h atribui um endreço de memória h(k) a um registro que
possui k como chave. Muitas funções matemáticas implementam algum mecanismo de hash.
No entanto, a mais utilizada é:
h(k) = k mod m
em que m é o número de locações de memória disponíveis.
Seja o número de registro 064212848, e m=111. Qual é o enderelo de memória
alocado?
h(064212848) = 064212848 mod 111 = 14
A função hash não é uma-para-um, pois existe mais de um possíve endereço de
registro para a mesma locação de memória. Quando isso acontece, dizemos que ocorreu
uma colisão de hash. Uma forma de resolver esse problema é associar, para o endereço de
registro correspondente, o primeiro endereço de memória imediatamente livre.
Considerando o exemplo anterior, o registro 107405723 estará alocado na posição
14. Como o registro 064212848 já está previamente alocado, o próximo endereço a ser
alocado será 15.
3.3 Números pseudorandômicos
O uso de números aleatórios é uma demanda frequente em simulações
computacionais. Diferentes métodos foram concebidos para geração de números aleatórios,
cada um deles com suas propriedades particulares. Números gerados por um método
sistemático não são randômicos, e sim denominados como pseudorandômicos.
O método mais comum usado para a geração de números pseudorandômicos é o
método de congruência linear (MCL). Esse método foi desenvolvido por Lehmer, em 1951,
em seus trabalhos com o computador ENIAC. O MCL funciona da seguinte forma:
1. Escolha 4 números inteiros: módulo (m), multiplicador (a), incremento (c), e
semente (x0).
2. Considere as seguintes regras para escolha dos números inteiros:
•
2≤a<m
•
0≤c<m
•
0 ≤ x0 < m
3. A sequência gerada será: xn+1 = (axn + c) mod m.
Diversos experimentos computacionais requerem a geração de números
pseudorandômicos entre 0 e 1. Para a geração desses números, basta dividir os números da
sequência obtida pelo MCL pelo módulo m. Em outras palavras: x n/m.
Em um exemplo, seja a sequência pseudorandômica de números gerada por m=9,
a=7, c=4 e x0=3.
•
x1 = (7.x0 + 4) mod 9 = (7.3 + 4) mod 9 = 25 mod 9 = 7
•
x2 = (7.x1 + 4) mod 9 = (7.7 + 4) mod 9 = 53 mod 9 = 8
•
x3 = (7.x2 + 4) mod 9 = (7.8 + 4) mod 9 = 60 mod 9 = 6
•
x4 = (7.x3 + 4) mod 9 = (7.6 + 4) mod 9 = 46 mod 9 = 1
•
x5 = (7.x4 + 4) mod 9 = (7.1 + 4) mod 9 = 11 mod 9 = 2
•
x6 = (7.x5 + 4) mod 9 = (7.2 + 4) mod 9 = 18 mod 9 = 0
•
x7 = (7.x6 + 4) mod 9 = (7.0 + 4) mod 9 = 4 mod 9 = 4
•
x8 = (7.x7+ 4) mod 9 = (7.4 + 4) mod 9 = 32 mod 9 = 5
•
x9 = (7.x8 + 4) mod 9 = (7.5 + 4) mod 9 = 39 mod 9 = 3
Como x9=x0, e cada termo depende apenas do termo anterior, a sequência gerada (e
repetida) é: 3, 7, 8, 6, 1, 2, 0, 4, 5, 3, 7, 8, 6, 1, 2, 0, 4, 5, …. Essa sequência contém 9
números diferentes antes de se inicar a repetição.
A maioria dos computadores utiliza o MCL para a geração de números
pseudorandômicos. Nesse caso, os valores típicos são: c=0, m=2 32-1 e a=75=16.807.
Use o MCL para gerar uma seqüência de números aleatórios entre zero e 1, com os
seguintes parâmetros: x0=27, a=17, c=43, e m=100.
a) Qual é o intervalo em que os valores são gerados?
b) Informe os 3 primeiros valores (x1, x2 e x3) dessa sequência.
c) Informe esses 3 três valores (x1, x2 e x3) entre 0 e 1.
3.4 Criptografia
Uma das aplicações mais significativas de congruência envolve o estudo de
criptografia, ao qual constitui na análise de mensagens secretas. Um dos métodos mais
antigos foi desenvolvido por Júlio César, cujo método é conhecido como criptografia de
César.
Para o envio de uma mensagem secreta, o método prevê que cada letra seja
translada 3 posições adiante no alfabeto. Assim, a letra B é representada por E, X é
representado por A, e assim por diante,
Para expressar o processo de encriptação de César matematicamente, basta
substituir cada letra por um inteiro entre 0 e 25. Por exemplo, substitui A por 0, C por 3, K
por 10, Z por 25. O método de César pode ser representado pela função f, que atribui a um
inteiro não negativo p, p ≤ 25, o inteiro f(p) no conjunto {0, 1, 2, …, 25} por:
f(p) = (p+3) mod 26
Para recuperar a mensagem original (decriptação) do método de César, será usada a
função inversa f-1. A função f-1 envia o inteiro p do conjunto {0, 1, 2, …, 25} para f-1(p)=(-3)
mod 26. Em outras palavras, para encontrar a mensagem original, cada letra é transladada 3
posições para trás no alfabeto.
O método de César generalizado pode ser descrito da seguinte forma:
Encriptação: f(p) = (ap+b) mod 26
Decriptação: f-1(p) = (ap+b) mod 26
Use o método de César para encriptar o seu primeiro nome.
a) Qual é a mensagem obtida, apenas deslocando 3 posições para cada letra?
b) Qual é a mensagem obtida, utilizando a fórmula matemática.
c) Realize o procedimento de decriptação da mensagem.
d) Qual é a mensagem criptografada caso seja considerado f(p) = (3p+5) mod 26?
Download