Кіріспе
Сандар теориясында, математиканың бір саласы, арнайы сан өрісі сырғасы (SNFS) – нақты мақсаттағы бүтін сандарды жіктеу алгоритмі. Жалпы сандық өріс сырғасы (GNFS) одан туындаған. Арнайы сандық өріс сырғасы rе ± s түріндегі бүтін сандарды жіктеуге тиімді, мұнда r және s шағын (мысалы, Мерсен сандары). Теориялық тұрғыдан алғанда, бүтін санды жіктеудің күрделілігі мынадай формада: O және L нотацияларында. SNFS, NFSNet (ерікті таратылған есептеу күшін пайдалану жобасы), NFS@Home және басқалар Каннингем жобасының сандарын жіктеу үшін кеңінен қолданылды; біраз уақыт бойы бүтін сандарды жіктеу бойынша рекордтар SNFS арқылы жіктелген сандарға тиесілі болды.
in O and L notations. The SNFS has been used extensively by NFSNet (a volunteer distributed computing effort), NFS@Home and others to factorise numbers of the Cunningham project; for some time the records for integer factorization have been numbers factored by SNFS.
Әдістің жалпы сипаттамасы
SNFS рационалды сырғанаққа ұқсас идеяға негізделген; әсіресе, SNFS-ті қарастырудан бұрын, оқырмандарға рационалды сырғанақ туралы оқыған пайдалы болуы мүмкін. SNFS келесідей жұмыс істейді. n – біз факторлеуге тырысатын бүтін сан болсын. Рационалды сырғадағыдай, SNFS екі қадамға бөлінеді: Біріншіден, Z/nZ элементтерінің факторлық базасы арасында көптеген көбейту қатынастарын табу керек, осы қатынастардың саны факторлық базадағы элементтер санынан артық болуы тиіс. Екінші, осы қатынастардың ішкі жиынтықтарын осылай көбейту керек, әр көрсеткіш жұп сан болсын, нәтижесінде a²≡b² (mod n) түріндегі сәйкестіктер шығады. Бұл өз кезегінде n-нің факторлануына әкеледі: n = ең үлкен ортақ бөлгіш(a+b, n) × ең үлкен ортақ бөлгіш(a-b, n). Егер дұрыс орындалса, кем дегенде бір факторланудың тривиальды емес болуы мүмкін. Екінші қадам рационалды сырғанақ жағдайымен толық сәйкес келеді және қарапайым сызықтық алгебра есебі болып табылады. Бірақ, бірінші қадам рационалды сырғанақтан өзгеше, тиімдірек тәсілмен, сандық өрістерді пайдалану арқылы жасалады.
First, find a large number of multiplicative relations among a factor base of elements of Z/nZ, such that the number of multiplicative relations is larger than the number of elements in the factor base. Second, multiply together subsets of these relations in such a way that all the exponents are even, resulting in congruences of the form a2≡b2 (mod n). These in turn immediately lead to factorizations of n: n=gcd(a+b,n)×gcd(a b,n). If done right, it is almost certain that at least one such factorization will be nontrivial. The second step is identical to the case of the rational sieve, and is a straightforward linear algebra problem. The first step, however, is done in a different, more efficient way than the rational sieve, by utilizing number fields.
Параметрлерді таңдау
Кез келген сан SNFS үшін қолайлы таңдау болып табылмайды: алдын ала тиісті дәрежедегі (оптималды дәреже деп есептеледі, ол 4, 5 немесе 6, қазіргі уақытта факторларға жіктеуге болатын N өлшемдері үшін) кіші коэффициенттері бар f полиномын және N санын жіктеу үшін x мәнін білу керек. Қосымша талап: x, a және b үшін қанағаттандыруы керек, олар . Кунингем кестелеріндегі сандар сияқты, мұндай полиномдар бар сандардың жиыны бар; мысалы, NFSNET 1=3^{479}+1 санын жіктегенде, олар 1=x^6+3 полиномын пайдаланды, себебі 1=(3^{80})^6+3 = 3^{480}+3, және Фибоначчи және Лукас сандары сияқты сызықтық рекурренциялармен анықталған сандар да SNFS полиномдарына ие, бірақ оларды құру сәл қиын. Мысалы, полином , және x мәні қанағаттандырады. Егер SNFS-ке үйлесімді үлкен санның белгілі бір факторлары болса, онда SNFS есептеуін қалған бөлігіне қатысты жүргізуге болады; жоғарыдағы NFSNET мысалы үшін 1=3^{479}+1 = (2^2 × 158071 × 7167757 × 7759574882776161031) × 197 таңбалы құрама санға (кіші факторлар ECM арқылы табылды), ал SNFS 197 таңбалы санға қатысты орындалды. SNFS үшін қажетті қатынастар саны үлкен санның мөлшеріне байланысты, бірақ жеке есептеулер кіші санға қатысты жылдамырақ болады.
One set of numbers for which such polynomials exist are the numbers from the Cunningham tables; for example, when NFSNET factored 1=3^{479}+1, they used the polynomial 1=x^6+3 with 1=x=3^{80} , since 1=(3^{80})^6+3 = 3^{480}+3, and
Numbers defined by linear recurrences, such as the Fibonacci and Lucas numbers, also have SNFS polynomials, but these are a little more difficult to construct. For example, has polynomial , and the value of x satisfies
If one already knows some factors of a large number compatible with SNFS, then one could do the SNFS calculation modulo the remaining part; for the NFSNET example above, 1=3^{479}+1 = (2^2 \times 158071 \times 7167757 \times 7759574882776161031) times a 197 digit composite number (the small factors were found by ECM), and the SNFS was performed modulo the 197 digit number. The number of relations required by SNFS still depends on the size of the large number, but the individual calculations are quicker modulo the smaller number.
Алгоритмнің шектеулері
Бұл алгоритм, жоғарыда айтылғандай, re±s түріндегі сандар үшін өте тиімді, себебі r және s салыстырмалы түрде кішкентай. Сонымен қатар, ол кішкентай коэффициенттері бар полином түрінде көрсетілетін кез келген бүтін сан үшін де тиімді. Бұл are±bsf сияқты көбірек жалпыланған формадағы бүтін сандарды, сондай-ақ бинарлық өрнегінің Хамминг салмағы төмен көптеген бүтін сандарды қамтиды. Бұның себебі мынада: Сандық өріс ілгіші екі түрлі өрісте ілгілеуді жүзеге асырады. Бірінші өріс әдетте рационал сандар болып табылады. Екіншісі – жоғары дәрежелі өріс. Алгоритмнің тиімділігі осы өрістердегі белгілі бір элементтердің нормаларына тікелей байланысты. Егер бүтін санды кішкентай коэффициенттері бар полином түрінде көрсетуге болады, онда туындайтын нормалар, бүтін санды жалпы полином түрінде көрсеткенде туындайтын нормалардан әлдеқайда кіші болады. Себебі жалпы полиномның коэффициенттері әлдеқайда үлкен болады, ал нормалар сәйкесінше үлкен болады. Алгоритм осы нормаларды белгілі бір жай сандар жиынтығына жіктеуге тырысады. Нормалар кішірек болғанда, осы сандар жіктелу ықтималдығы артады.
norms are smaller, these numbers are more likely to factor.