Ρ-алгоритм Полларда

Числова послідовність зациклюється, починаючи з деякого n. Цикл виглядає як грецька літера ρ.

ρ-алгоритм Полларда — алгоритм факторизації цілих чисел, що ґрунтується на пошуку циклу в послідовності і деяких наслідках із парадоксу днів народжень. Його запропонував Джон Поллард[en] (1975). Алгоритм найбільш ефективний для факторизації складених чисел із досить малими множниками в розкладі. Обчислювальна складність оцінюється як .

У всіх варіантах ρ-алгоритму Полларда будується числова послідовність, елементи якої, починаючи з деякого номера n, утворюють цикл, що можна проілюструвати розташуванням членів послідовності у вигляді грецької літери ρ. Це й послужило назвою для сімейства методів.

Історія алгоритму

Наприкінці 60-х років XX століття Дональд Кнут опублікував досить ефективний алгоритм пошуку циклу в послідовності, також відомий, як алгоритм «черепаха та заєць», який він пов'язував з ім'ям Флойда[1]. Джон Поллард[en], Дональд Кнут та інші математики проаналізували поведінку цього алгоритму в середньому випадку. Було запропоновано кілька модифікацій та поліпшень алгоритму.

У 1975 році Поллард опублікував статтю, в якій він, ґрунтуючись на алгоритмі Флойда виявлення циклів, виклав ідею алгоритму факторизації чисел, який виконується за час, пропорційний [2]. Автор назвав його методом факторизації Монте-Карло, тому, що в процесі обчислення генерується псевдовипадкова послідовність чисел. Проте пізніше метод все-таки назвали ρ-алгоритмом Полларда[3].

У 1981 році Річард Брент[ru] і Джон Поллард за допомогою цього алгоритму знайшли менший дільник восьмого числа Ферма [4].

Так, , де — просте число, що складається з 62 десяткових цифр.

У межах проекту «Cunningham project[en]» алгоритм Полларда допоміг знайти дільник числа довжиною 19 цифр. Більші дільники також можна б знайти, але відкриття методу факторизації за допомогою еліптичних кривих[ru] зробило алгоритм Полларда неконкурентоспроможним[5].

Опис алгоритму

Оригінальна версія

Розглянемо послідовність цілих чисел , таку що та , де  — число, яке потрібно факторизувати. Оригінальний алгоритм виглядає таким чином[6].

1. Будемо обчислювати трійки чисел
, де .
Причому кожна така трійка отримується з попередньої.
2. Щоразу, коли число кратне числу (скажімо, ), будемо обчислювати найбільший спільний дільник будь-яким відомим методом.
3. Якщо , то знайдено часткове розкладання числа , причому .
Знайдений дільник може бути складовим, тому його також необхідно факторизувати. Якщо число складене, то продовжуємо алгоритм з модулем .
4. Обчислення повторюються раз. Наприклад, можна зупинити алгоритм при . Якщо при цьому число не було до кінця факторизовано, можна вибрати, наприклад, інше початкове число .

Сучасна версія

Нехай складене ціле додатне число, яке потрібно розкласти на множники. Алгоритм виглядає таким чином:[7]

  1. Вибираємо невелике число та будуємо послідовність , визначаючи кожне наступне як .
  2. Одночасно на кожному i-ому кроці обчислюємо для будь-яких , таких, що , наприклад, .
  3. Якщо виявили, що , то обчислення закінчується, і знайдене на попередньому кроці число є дільником . Якщо не є простим числом, то процедуру пошуку дільників можна продовжити, узявши як число .

Як на практиці обирати функцію ? Функція має бути не надто складною для обчислення, але в той же час не має бути лінійним многочленом, а також не повинна породжувати взаємно однозначне відображення. Зазвичай за беруть функцію або [8]. Однак не слід застосовувати функції та [6].

Якщо відомо, що для дільника числа справедливо при деякому , то має сенс застосувати [6].

Істотним недоліком алгоритму в такий реалізації є необхідність зберігати велику кількість попередніх значень .

Покращення алгоритму

Початкова версія алгоритму має низку недоліків. На даний момент[коли?] існує кілька підходів до поліпшення оригінального методу.

Нехай . Зауважимо, що й , то , тому, якщо пара дає нам розв'язок, то розв'язок дасть будь-яка пара .

Тому, немає потреби перевіряти всі пари , а можна обмежитися парами виду , де , і пробігає набір послідовних значень 1, 2, 3,…, а набуває значення з інтервалу . Наприклад, , , а [9].

Цю ідею запропонував Річард Брент[ru] у 1980 році[10] і вона дозволяє зменшити кількість виконуваних операцій приблизно на чверть (25%)[11].

Ще одну варіацію ρ-методу Поларда розробив Флойд. За Флойдом, значення оновлюється на кожному кроці за формулою , тому на кроці i будуть отримані значення , , і НСД на цьому кроці обчислюється для та [7].

Приклад факторизації числа

Нехай , , , .

i xi yi НСД (|xiyi|, 8051)
1 5 26 1
2 26 7474 1
3 677 871 97

Таким чином, 97 — нетривіальний дільник числа 8051. Використовуючи інші варіанти поліному , можна також отримати дільник 83.

Обґрунтування ρ-методу Полларда

Алгоритм ґрунтується на відомому парадоксі днів народження.

Теорема (Парадокс днів народження)

Нехай . Для випадкової вибірки з елементів, кожний з яких менший від , де , ймовірність того, що два елементи виявляться однаковими .

Слід зазначити, що ймовірність в парадоксі днів народження досягається при .

Нехай послідовність складається з різниць , що перевіряються під час роботи алгоритму. Визначимо нову послідовність , де ,  — менший з дільників числа .

Усі члени послідовності менші . Якщо розглядати її як випадкову послідовність цілих чисел, менших , то, згідно з парадоксом днів народження, імовірність того, що серед її членів трапляться два однакових, перевищить при , тоді має бути не менше .

Якщо , тоді , тобто, для деякого цілого . Якщо , що виконується з великою ймовірністю, то шуканий дільник числа буде знайдено як . Оскільки , то з імовірністю, що перевищує 0,5, дільник буде знайдено за ітерацій[7].

Складність алгоритму

Щоб оцінити складність алгоритму, можна розглядати послідовність, що будується в процесі обчислень, як випадкову (звісно, ні про яку строгість при цьому говорити не можна). Щоб повністю факторизувати число довжиною біт, достатньо знайти всі його дільники, які не переважають , що вимагає максимум порядку арифметичних операцій, або бітових операцій.

Тому складність алгоритму оцінюється, як [12]. Однак у цій оцінці не враховуються накладні витрати з обчислення найбільшого спільного дільника. Отримана складність алгоритму, хоча і не є точною, проте достатньо добре узгоджується з практикою.

Виконується така теорема. Нехай — складене число. Тоді існує така стала , що для будь-якого додатного числа ймовірність події, що полягає в тому, що ρ-метод Поларда не знайде нетривіального дільника за час , не перевершує величини . Ця теорема випливає з парадоксу днів народження.

Особливості реалізації

Обсяг пам'яті, використовуваний алгоритмом, можна значно зменшити.

 int Rho-Полард (int N)
 { 
   int x = random(1, N-2);
   int y = 1; int i = 0; int stage = 2;
   while (Н.С.Д.(N, abs(x - y)) == 1)
   {
     if (i == stage ){
       y = x;
       stage = stage*2; 
     }
     x = (x*x + 1) (mod N);
     i = i + 1;
   }
   return Н.С.Д(N, abs(x-y));
 }


у цьому варіанті обчислення потребує зберігати в пам'яті всього три змінні , , і , що вигідно відрізняє метод в такій реалізації від інших методів факторизації чисел[7].

Розпаралелювання алгоритму

Алгоритм Полларда дозволяє розпаралелювання з використанням будь-якого стандарту паралельних обчислень (наприклад, OpenMP та ін.).

Існує декілька варіантів розпаралелювання, але їх спільна ідея полягає в тому, що кожний процесор виконує послідовний алгоритм, причому початкове число та/або поліном мають бути різними для кожного процесора. Очікується, що на якомусь процесорі початкові параметри (випадково) виявляться більш вдалими і дільник буде знайдено швидше, однак цей випадок недетермінований (імовірнісний). Прискорення від такої паралельної реалізації значно менше лінійного.

Припустимо, що є однакових процесорів. Якщо ми використовуємо різних послідовностей (тобто, різних поліномів ), то ймовірність того, що перші чисел в цих послідовностях будуть різними за модулем приблизно дорівнює . Таким чином, прискорення можна оцінити як [5]. Тобто, збільшення швидкості вдвічі можна очікувати, якщо процесорів буде вчетверо більше.

Річард Крандалл припустив, що можна досягти прискорення , однак на 2000-й рік це твердження не було перевірено[13].

Див. також

Примітки

  1. Перший опис алгоритму «черепахи та зайця» з'явився в другому томі Мистецтва програмування Дональда Кнута (Knuth, Donald E. (1969), The Art of Computer Programming, vol. II: Seminumerical Algorithms, Addison-Wesley), у вправах 6 та 7 (стор. 7). На сторінці 4 Кнут приписує цей алгоритм Флойду, не посилаючись на джерела. Хоча Флойд і опублікував 1967 року статтю: Floyd, R.W. (1967), Non-deterministic Algorithms, J. ACM, 14 (4): 636—644, doi:10.1145/321420.321422, однак у ній він описав алгоритми пошуку простих циклів в орієнтованому графі.
  2. Brent, 1980, An Improved Monte Carlo Factorization Algorithm.
  3. Koshy, 2007, Elementary Number Theory with Applications.
  4. Childs, 2009, 471-473.
  5. а б Brent, 1999, Some parallel algorithms for integer factorization..
  6. а б в Pollard, 1975, A Monte Carlo method for factorization.
  7. а б в г Ішмухаметов, 2011, с. 64.
  8. Н. Ю. Золотих. Лекції по комп'ютерній алгебрі. Лекция 11. ρ-метод Полларда. [Архівовано 30 жовтня 2014 у Wayback Machine.]
  9. Ішмухаметов, 2011, Методи факторизації натуральних чисел: Навчальний посібник.
  10. Brent, 1980, с. 176-184.
  11. Reisel, 2012, Selected Areas in Cryptography. Prime Numbers and Computer Methods for Factorization. 2nd ed..
  12. Cormen, 2001, с. 976, Introduction to Algorithms. Section 31.9. Integer Factorization. Pollard's rho heuristic..
  13. Crandall, 1999, Parallelization of Polldar-rho factorization.

Література

Read other articles:

W

Halaman ini memuat artikel tentang huruf W dalam alfabet Latin. Untuk penggunaan lainnya, lihat W (disambiguasi). Lihat W, w di Wiktionary, kamus gratis. Alfabet Latindasar ISO AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz lbs W adalah huruf Latin modern yang ke-23. Dalam bahasa Indonesia, huruf ini bernama we. Dalam Alfabet Fonetik Internasional, huruf W mewakili bunyi konsonan hampiran langit-langit belakang terbibirkan bersuara. Sejarah Buku cetakan tahun 1693 yang menggunakan u gan...

 

Немецкая колода — вариант 32-х или 36-карточной колоды, используемый для традиционных немецких карточных игр (например, скат). Немецкая колода развилась в XV веке в южной Германии из итало-испанской колоды. Кроме южных и восточных регионов Германии эта колода также испол�...

 

Telephone numbers in MontenegroLocation of Montenegro (dark green)LocationCountryMontenegroContinentEuropeRegulatorAgency of Telecommunications of MontenegroTypeOpenFormat0XX XXX XXXAccess codesCountry code+382International access00Long-distance0 This is a list of dialing codes by town in Montenegro. History Until Montenegro gained independence from Serbia and Montenegro, the nation was accessed through the international dialing code +381. The new dialing code +382 was introduced after indep...

UK Parliamentary by-election Furness The 1914 The Hartlepools by-election was held on 22 September 1914. The by-election was held due to the death of the incumbent Liberal MP, Sir Stephen Furness. It was won by the 67-year old Liberal candidate Sir Walter Runciman[1] who was unopposed due to a War-time electoral pact. Result Runciman 1914 The Hartlepools by-election [2] Party Candidate Votes % ±% Liberal Walter Runciman Unopposed N/A N/A Liberal hold References ^ Leigh Raymen...

 

Pour les articles homonymes, voir MacDonald. McDonald's Logo de McDonald's, dit des « arches dorées ». Création 15 mai 1940 (83 ans) (apparition du premier McDonald's en 1955) Fondateurs Ray Kroc(entreprise McDonald's). Personnages clés Ronald McDonald (personnage) Happy (personnage) Forme juridique Société anonyme Action NYSE : MCD Slogan « I’m lovin’ it » (international)« C'est tout ce que j'aime » (France)« Ça se passe comme ç...

 

Peta dunia (Asia) pada subkala Katium, Ordovisium Akhir, 450 juta tahun lalu. Ordovisium Akhir merupakan kala ketiga dan terakhir dari periode Ordovisium, yang dimulai pada 458.4 juta tahun lalu, hingga 443.8 juta tahun lalu[1]. Dimulainya kala ini (sekaligus dimulainya subkala Sandbium) ditentukan dengan waktu munculnya spesies graptolit, Nemagraptus gracilis, di wilayah Rawa Sularp, Skane, Swedia.[2] Iklim Pada akhir periode Ordovisium, suhu Bumi mendingin, sehingga memulai ...

60th Air Mobility Wing Descrizione generaleNazione Stati Uniti ServizioUnited States Air Force TipoStormo da mobilità aerea Parte di Air Mobility Command ComandantiColonnelloThomas C. Pauly Fonti indicate nel testo Voci su unità militari presenti su Wikipedia KC-10A dello Stormo C-17A del 21st AS C-5M dello Stormo Il 60th Air Mobility Wing è uno stormo da mobilità aerea dell'Air Mobility Command, inquadrato nella Eighteenth Air Force. Il suo quartier generale è situato presso la Tra...

 

Dario Niccodemi nel 1924 Dario Niccodemi (Livorno, 27 gennaio 1874 – Roma, 24 settembre 1934) è stato un commediografo, sceneggiatore e capocomico italiano. Indice 1 Biografia 2 Teatro 3 Filmografia 3.1 Soggetti 4 Televisione 5 Opere 5.1 Teatro 5.2 Romanzi 5.3 Memorialistica 5.4 Libretti d'opera 6 Note 7 Bibliografia 8 Altri progetti 9 Collegamenti esterni Biografia Dario Niccodemi nacque a Livorno nel 1874. Quando era ancora bambino la sua famiglia si trasferì a Buenos Aires. Intorno ai ...

 

Angkatan Laut Kekaisaran RusiaРоссийский императорский флотRossiyskiy imperatorskiy flotLambang Angkatan Laut Kekaisaran RusiaDibentuk1696Negara Ketsaran Rusia Kekaisaran RusiaTipe unitAngkatan lautBagian dariAngkatan Bersenjata Kekaisaran RusiaPelindungSanto NikolasPertempuran Daftar pertempuran Perang Rusia-TurkiPerang Utara RayaPerang Rusia-PersiaPerang Rusia-SwediaPerang Tujuh TahunPerang Rusia-Turki IIPerang Rusia-Swedia IIPerang Rusia-Turki IIIPerang Rusi...

Prof. Hugo Junkers Prof. Hugo Junkers adalah seorang industriawan pesawat terbang berkebangsaan Jerman.[1] Dia lahir pada tanggal 3 Februari tahun 1859 di Rheidt, Prussia dan meninggal saat 3 Februari 1935 di Gauting, Munchen.[1][2] Junkers mendirikan pabrik pesawat di Dessau tahun 1910, pada tahun yang sama pula dia mematenkan desain sayap (pesawat) terbang.[2] Dia adalah orang yang merintis pembuatan pesawat udara dari bahan logam serta penerapan motor disel ...

 

Chronologies Données clés 1675 1676 1677  1678  1679 1680 1681Décennies :1640 1650 1660  1670  1680 1690 1700Siècles :XVe XVIe  XVIIe  XVIIIe XIXeMillénaires :-Ier Ier  IIe  IIIe Chronologies thématiques Art Architecture, Arts plastiques (Dessin, Gravure, Peinture et Sculpture), (), Littérature (), Musique (Classique) et Théâtre   Ingénierie (), Architecture et ()   Politique Droit et ()   Religion (,)   Sci...

 

此條目需要补充更多来源。 (2021年7月4日)请协助補充多方面可靠来源以改善这篇条目,无法查证的内容可能會因為异议提出而被移除。致使用者:请搜索一下条目的标题(来源搜索:美国众议院 — 网页、新闻、书籍、学术、图像),以检查网络上是否存在该主题的更多可靠来源(判定指引)。 美國眾議院 United States House of Representatives第118届美国国会众议院徽章 众议院旗...

密西西比州 哥伦布城市綽號:Possum Town哥伦布位于密西西比州的位置坐标:33°30′06″N 88°24′54″W / 33.501666666667°N 88.415°W / 33.501666666667; -88.415国家 美國州密西西比州县朗兹县始建于1821年政府 • 市长罗伯特·史密斯 (民主党)面积 • 总计22.3 平方英里(57.8 平方公里) • 陸地21.4 平方英里(55.5 平方公里) • ...

 

هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسين هذه المقالة بإضافة وصلات إلى المقالات المتعلقة بها الموجودة في النص الحالي. (أغسطس 2020) هذه الصفحة تعرض قائمة زملاء الجمعية الملكية المُنتخبين لعام 1723.[1] الزملاء �...

 

2020 American filmUpheaval: The Journey of Menachem BeginFilm PosterDirected byJonathan GruberWritten byJonathan GruberProduced byJonathan GruberRachel GreenbergGi OrmanBruce K. GouldBarry GurlandMonica GurlandIris MaidenbaumShalom MaidenbaumAlan MeltzerAmy MeltzerRaphael ShoreMicah SmithCinematographyShane Michael ColellaEdited byJohn AyalaMusic byCharlie BarnettProductioncompaniesHidden Light InstituteImagination ProductionsBegin Documentary Film, LLCDistributed byAbramoramaRelease dates Oc...

American college football season 2004 Appalachian State Mountaineers footballConferenceSouthern ConferenceRecord6–5 (4–3 SoCon)Head coachJerry Moore (16th season)Offensive schemeMultiple spreadBase defense4–3Home stadiumKidd Brewer StadiumSeasons← 20032005 → 2004 Southern Conference football standings vte Conf Overall Team   W   L     W   L   No. 5 Furman $^   6 – 1     10 – 3   No. 1...

 

City in Nevada, United States City in Nevada, United StatesMesquite, NevadaCityCity of MesquiteMain Street in January 2007, near City Hall FlagMotto(s): Escape, Momentarily[1]Location of Mesquite in Clark County, NevadaMesquiteLocation in the United StatesShow map of NevadaMesquiteMesquite (the United States)Show map of the United StatesCoordinates: 36°48′9″N 114°4′56″W / 36.80250°N 114.08222°W / 36.80250; -114.08222CountryUnited StatesStateNev...

 

Pour les articles homonymes, voir CED. États qui auraient fait partie de la Communauté européenne de défense selon le plan de René Pleven. La Communauté européenne de défense (CED) était un projet de création d'une armée européenne, avec des institutions supranationales, placées sous la supervision du commandant en chef de l'OTAN, qui était lui-même nommé par le président des États-Unis. Dans le contexte de la guerre froide, le projet, qui est esquissé en septembre-octobre...

Duta Besar Britania Raya untukRepublik HellenikLambang Britania RayaPetahanaKate SmithCMGsejak Januari 2017KediamanAthenaDitunjuk olehRatu Elizabeth IIPejabat perdanaEdward Dawkins Menteri Berkuasa Penuh PertamaDibentuk1833 Menteri Berkuasa Penuh 1862 Duta Luar Biasa 1943 Duta Besar Luar BiasaSitus webInggris dan Yunani Duta Besar Britania Raya untuk Yunani adalah perwakilan diplomatik terdepan Britania Raya di Yunani, dan kepala misi diplomatik Inggris di Yunani. Gelar resminya adalah D...

 

Ancient Egyptian greywacke palette Bull PaletteMaterialGreywackeHeight26.5 cmWidth14.5 cmCreatedc. 3100 BCDiscoveredbefore 2007EgyptPresent locationParis, Ile-de-France, France The Bull Palette (French: palette célébrant une victoire) is the fragment of an Ancient Egyptian greywacke palette, carved in low relief and used, at least in principle, as a cosmetic palette for the grinding of cosmetics. It is dated to Naqada III, the final two centuries of the fourth millennium BC, immediately pre...