Кіріспе

Сандар теориясында, математиканың бір саласы, арнайы сан өрісі сырғасы (SNFS) – нақты мақсаттағы бүтін сандарды жіктеу алгоритмі. Жалпы сандық өріс сырғасы (GNFS) одан туындаған. Арнайы сандық өріс сырғасы rе ± s түріндегі бүтін сандарды жіктеуге тиімді, мұнда r және s шағын (мысалы, Мерсен сандары). Теориялық тұрғыдан алғанда, бүтін санды жіктеудің күрделілігі мынадай формада: O және L нотацияларында. SNFS, NFSNet (ерікті таратылған есептеу күшін пайдалану жобасы), NFS@Home және басқалар Каннингем жобасының сандарын жіктеу үшін кеңінен қолданылды; біраз уақыт бойы бүтін сандарды жіктеу бойынша рекордтар SNFS арқылы жіктелген сандарға тиесілі болды.

Әдістің жалпы сипаттамасы

SNFS рационалды сырғанаққа ұқсас идеяға негізделген; әсіресе, SNFS-ті қарастырудан бұрын, оқырмандарға рационалды сырғанақ туралы оқыған пайдалы болуы мүмкін. SNFS келесідей жұмыс істейді. n – біз факторлеуге тырысатын бүтін сан болсын. Рационалды сырғадағыдай, SNFS екі қадамға бөлінеді: Біріншіден, Z/nZ элементтерінің факторлық базасы арасында көптеген көбейту қатынастарын табу керек, осы қатынастардың саны факторлық базадағы элементтер санынан артық болуы тиіс. Екінші, осы қатынастардың ішкі жиынтықтарын осылай көбейту керек, әр көрсеткіш жұп сан болсын, нәтижесінде a²≡b² (mod n) түріндегі сәйкестіктер шығады. Бұл өз кезегінде n-нің факторлануына әкеледі: n = ең үлкен ортақ бөлгіш(a+b, n) × ең үлкен ортақ бөлгіш(a-b, n). Егер дұрыс орындалса, кем дегенде бір факторланудың тривиальды емес болуы мүмкін. Екінші қадам рационалды сырғанақ жағдайымен толық сәйкес келеді және қарапайым сызықтық алгебра есебі болып табылады. Бірақ, бірінші қадам рационалды сырғанақтан өзгеше, тиімдірек тәсілмен, сандық өрістерді пайдалану арқылы жасалады.

Параметрлерді таңдау

Кез келген сан 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 үшін қажетті қатынастар саны үлкен санның мөлшеріне байланысты, бірақ жеке есептеулер кіші санға қатысты жылдамырақ болады.

Алгоритмнің шектеулері

Бұл алгоритм, жоғарыда айтылғандай, re±s түріндегі сандар үшін өте тиімді, себебі r және s салыстырмалы түрде кішкентай. Сонымен қатар, ол кішкентай коэффициенттері бар полином түрінде көрсетілетін кез келген бүтін сан үшін де тиімді. Бұл are±bsf сияқты көбірек жалпыланған формадағы бүтін сандарды, сондай-ақ бинарлық өрнегінің Хамминг салмағы төмен көптеген бүтін сандарды қамтиды. Бұның себебі мынада: Сандық өріс ілгіші екі түрлі өрісте ілгілеуді жүзеге асырады. Бірінші өріс әдетте рационал сандар болып табылады. Екіншісі – жоғары дәрежелі өріс. Алгоритмнің тиімділігі осы өрістердегі белгілі бір элементтердің нормаларына тікелей байланысты. Егер бүтін санды кішкентай коэффициенттері бар полином түрінде көрсетуге болады, онда туындайтын нормалар, бүтін санды жалпы полином түрінде көрсеткенде туындайтын нормалардан әлдеқайда кіші болады. Себебі жалпы полиномның коэффициенттері әлдеқайда үлкен болады, ал нормалар сәйкесінше үлкен болады. Алгоритм осы нормаларды белгілі бір жай сандар жиынтығына жіктеуге тырысады. Нормалар кішірек болғанда, осы сандар жіктелу ықтималдығы артады.