• Nenhum resultado encontrado

Pormenores Importantes do “NFS”

deste sistema determina um conjunto {(ai, bi)}ki=1⊂ S0 que respeita as condições k Y i=1 (ai− biα) = γ2 para algumγ ∈ Q(α), (4.18) k Y i=1

(ai− bim) = b2 para algum inteiro b. (4.19)

No entanto, na realidade o que pretendemos garantir é a condição (4.8), e não a condição (4.18) obtida desta forma. Para resolver este pequeno problema é conveniente notar que, de acordo com [3, pp. 60–61], o facto de se verificar (4.18) implica que se verifica também

γ ∈ I(α), sendo o seguinte resultado de grande interesse neste caso:

Lema 4.15. Dados um corpo de números Q(α) e um elemento γ ∈ I(α), verifica-se

f0(α)γ ∈ Z[α].

Demonstração. A demonstração deste resultado pode ser encontrada em [5, pág. 288].

Posto isto, podemos concluir que se se verifica a equação (4.18) verifica-se também que

f0(α)2·Qk

i=1(ai− biα) = (γ0)2 para algum γ0 ∈ Z[α]. Deste modo, com esta pequena modi-

ficação estão, no final desta etapa do “NFS”, garantidas as condições

f0(α)k Y i=1 (ai− biα) = γ2 para algumγ ∈ Z[α] k Y i=1

(ai− bim) = b2 para algum inteiro b.

Assim, se conseguirmos determinar a tal que a ≡ ϕ(γ) (mod n) obtemos a congruência a2 ≡ (f0(m) · b)2

(modn), a partir da qual podemos, como normalmente, tentar factorizar n.

4.3

Pormenores Importantes do “NFS”

Nas secções anteriores descrevemos a maior parte dos aspectos relacionados com o funciona- mento do “NFS”. No entanto, antes de exemplificarmos a sua utilização convém debruçarmo- -nos sobre alguns pormenores que podem influenciar o seu desempenho e eficácia.

4.3.1

Definição dos Parâmetros e Complexidade

Nesta secção debruçamo-nos sobre a definição dos parâmetros a utilizar ao iniciar o algoritmo. Para o efeito, é conveniente recordar que, de acordo com o que referimos em §4.2.2, §4.2.3 e §4.2.4, necessitamos de escolher um valor ded para servir de grau à extensão Q(α), de definir um limite B adequado para a base de factores a utilizar e de estabelecer o limite M . De

acordo com [5, pp. 285–287], oferecem-se sobre estes valores os seguintes comentários:

4. CRIVO DOS CORPOS DE NÚMEROS

(a) Como sabemos, o valor de d deve satisfazer 2d2

< n, por forma a que o polinómio f obtido através dos processos referidos em §4.2.2 seja efectivamente um polinómio

mónico. Deste modo, e de acordo com os referidos autores, o valor ded deve satisfazer d ≈

3 lnn

ln lnn

13

.

Para além disso, e uma vez que o facto de d ser um número ímpar pode, de certa

forma, facilitar a determinação de γ [5, pág. 292], é preferível escolher um valor ímpar

de d.

(b) Embora possa ser, tal como nos métodos anteriormente estudados, escolhido livre- mente, em termos teóricos o valor deB deve verificar B ≈ e3

p8

9ln n(ln ln n) 2

, valor com o qual se conjectura que o “NFS” tenha complexidade assimptóticaL((64/9)1/3, 1/3)(n).

(c) Por fim, o valor de M deve inicialmente ser tomado como sendo igual ao valor de B.

4.3.2

Considerações Práticas Sobre a Etapa de Crivagem

Tal como no “crivo quadrático”, a etapa de crivagem do “NFS” pode ser efectuada de forma rigorosa determinando também as soluções das congruências

F (x, y) ≡ 0 (mod pj) e G(x, y) ≡ 0 (mod pj).

para valores de j > 1 e percorrendo as respectivas progressões aritméticas de razão pj. No

entanto, também neste método se verifica ser preferível não crivar com potências de pri- mos, devido à relativa morosidade da determinação destas soluções. Deste modo, é costume utilizar-se uma técnica em tudo semelhante à descrita em §3.2.5 para crivar os referidos polinómios, utilizando também aproximações de logaritmos e somas. Com esta modificação obtém-se também neste método uma melhoria substancial no desempenho, em troca da pos- sível identificação como suaves de uma pequena percentagem de valores que de facto não veri- ficam esta condição. Para por em prática este processo podem ser utilizadas as mesmas ideias descritas em §3.2.5, modificadas e aplicadas de forma natural ao funcionamento do “NFS”.

4.3.3

Raízes Quadradas em Z[α]: Determinação de γ

Uma vez obtido um conjunto S = {(ai, bi)}ki=1 de pares de números inteiros primos entre

si para o qual se verifiquem as condições (4.18) e (4.9), o último passo do “NFS” consiste em determinar o valor de γ ∈ Z[α] a partir do valor de γ2 ∈ Z[α] obtido. Para o efeito, existem vários algoritmos passíveis de serem utilizados, sendo os algoritmos mais eficientes os mais complexos de descrever. Deste modo, e uma vez que a descrição de um algoritmo deste

4.3. PORMENORES IMPORTANTES DO “NFS”

tipo teria, necessariamente, que envolver conceitos que escapam ao âmbito desta dissertação, optámos por não descrever aqui nenhum processo para a determinação deγ, remetendo para

[5, pp. 291–292], [3], [17] ou [19] uma explicação detalhada dos diversos algoritmos existentes.

4.3.4

“Crivo Especial dos Corpos de Números” (“SNFS”)

Como referimos no início deste capítulo, o “NFS” é uma generalização de um método pro- posto inicialmente por John Pollard [21] para factorizar números que podem ser escritos numa certa forma em especial. Este método, actualmente designado por “crivo especial

dos corpos de números” ou “SNFS”, foi utilizado com grande sucesso na factorização de

números inteiros da forma be± d, com b e d pequenos e e relativamente grande. Na maior

parte dos casos, a utilização deste método conduziu à factorização de números que ultrapas- sam as duas centenas de algarismos, tendo ainda hoje uma larga margem de progressão.

O sucesso do “SNFS” baseia-se no facto de que, para números desta forma, é possível encontrar um polinómio irredutível com grau elevado e coeficientes extremamente baixos (na maior parte dos casos do tipoxd−c, para algum inteiro c pequeno), de tal forma que os valores

|F (x, y)G(x, y)| no intervalo de crivagem sejam relativamente pequenos. Com efeito, e en- quanto que no “NFS” os valores deste polinómio são limitados superiormente por uma função do tipo On2d



[5, pág. 286], no “SNFS” estes são limitados superiormente por uma função do tipo On1d



, passando a complexidade assimptótica do método a serL((32/9)1/3, 1/3)(n) [24].

Exemplo 4.16. Para factorizar o inteiro de 155 algarismosF9= 22

9

+ 1 utilizando o “NFS” podíamos tentar utilizar o método descrito em §4.2.2, obtendo deste modo o valor

m = 48740834812604276470692694

e o polinómio

f (x) = x6+ 5x5+ 15289974108933755803670311x4+

+ 44073380379890651256340659x3+ 7975284975598992907395567x2+

+ 6494981311945935863050292x + 40888538958293162163316949,

com os quais não parece fácil obter valores suaves em número suficiente para poder factorizar este inteiro. No entanto, analisando cuidadosamente o inteiro a factorizar e notando que

8F9 = 23(22

9

+ 1) = 23+29 + 8 = 2103·5+ 8

podemos ao invés tomar m = 2103 e f (x) = x5+ 8, parecendo assim mais fácil obter valores

suaves que possam ser úteis na factorização de F9.

4. CRIVO DOS CORPOS DE NÚMEROS