<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pyatakovns</id>
	<title>Алговики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pyatakovns"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Pyatakovns"/>
	<updated>2026-10-24T00:19:58Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Pyatakovns/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0&amp;diff=28376</id>
		<title>Участник:Pyatakovns/Ро-алгоритм Полларда</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Pyatakovns/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0&amp;diff=28376"/>
		<updated>2020-10-15T11:49:14Z</updated>

		<summary type="html">&lt;p&gt;Pyatakovns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор: Пятаков Н.С. 419 группа &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Ро-алгоритм Полларда&#039;&#039;&#039;&amp;lt;ref&amp;gt;Pollard J. M. A Monte Carlo method for factorization // BIT. 1975. V. 15. P. 331—334.&amp;lt;/ref&amp;gt; предназначен для решения задачи факторизации целых чисел. Этот метод был разработан Джоном Поллардом в 1975 г. Данный алгоритм основывается на следствиях из парадокса дней рождения и алгоритме Флойда поиска длины цикла в последовательности. Алгоритм наиболее эффективен при факторизации составных чисел с достаточно малыми множителями в разложении. Сложность алгоритма оценивается как &amp;lt;math&amp;gt;O(N^{1/4})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Ро-алгоритм Полларда строит числовую последовательность, элементы которой образуют цикл, начиная с некоторого номера n, что может быть проиллюстрировано, расположением чисел в виде греческой буквы &amp;lt;math&amp;gt;ρ&amp;lt;/math&amp;gt;, что послужило названием семейству алгоритмов. &lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть n – число, которое следует разложить. ρ-метод Полларда работает следующим образом: &amp;lt;ref&amp;gt;Ишмухаметов Ш. Т. Методы факторизации натуральных чисел: Учебное пособие / Захаров В.М.. — Казань: Казанский Университет, 2011. — С. 61—64. — 190 с&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Василенко О. Н. Теоретико-числовые алгоритмы в криптографии. — М.: МЦНМО, 2003. — 328 с.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. Выбираем произвольное небольшое число &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и строим последовательность чисел &amp;lt;math&amp;gt;{x_n}, n = 0, 1, 2, ...,&amp;lt;/math&amp;gt; определяя каждое следующее &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;x_{n+1} =(x_{n}^2 −1)(modn)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2. Одновременно на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; вычисляем &amp;lt;math&amp;gt;Н.О.Д.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; числа &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; и всевозможных разностей &amp;lt;math&amp;gt;|x_i − x_j|&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Когда будет найден &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;=&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;Н.О.Д.(n, |x_i−x_j|)&amp;lt;/math&amp;gt;, отличный от &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;, вычисление заканчивается. Найденное &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; является делителем &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Если &amp;lt;math&amp;gt;n/d&amp;lt;/math&amp;gt; не является простым числом, то процедуру можно продолжить, взяв вместо &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; число &amp;lt;math&amp;gt;n/d&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вместо функции &amp;lt;math&amp;gt;F (x) = (x^2 − 1) (mod n)&amp;lt;/math&amp;gt; в вычислении &amp;lt;math&amp;gt;x_n+1&amp;lt;/math&amp;gt; можно взять другой многочлен, например, &amp;lt;math&amp;gt;x^2 + 1&amp;lt;/math&amp;gt; или произвольный многочлен степени большей или равной двум.&lt;br /&gt;
&lt;br /&gt;
Недостатком данного варианта метода является необходимость хранить большое число предыдущих значений &amp;lt;math&amp;gt;x_j&amp;lt;/math&amp;gt; . Если &amp;lt;math&amp;gt;(x_j −x_i)≡0(modp)&amp;lt;/math&amp;gt;, то&amp;lt;math&amp;gt;(f(x_j)−f(x_i))≡0(modp)&amp;lt;/math&amp;gt;, поэтому, если пара &amp;lt;math&amp;gt;(x_i, x_j)&amp;lt;/math&amp;gt; дает нам решение, то решение даст любая пара &amp;lt;math&amp;gt;(x_{i+k}, x_{j+k})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Поэтому, нет необходимости проверять все пары &amp;lt;math&amp;gt;(x_i, x_j)&amp;lt;/math&amp;gt;, а можно ограничиться парами виды &amp;lt;math&amp;gt;(x_i, x_j)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j = 2k&amp;lt;/math&amp;gt; , и &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; пробегает набор последовательных значений &amp;lt;math&amp;gt;1, 2, 3,...,&amp;lt;/math&amp;gt; а &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; принимает значения из интервала &amp;lt;math&amp;gt;[2^k + 1; 2^{k+1}]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Pyatakovns</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Pyatakovns/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0&amp;diff=28375</id>
		<title>Участник:Pyatakovns/Ро-алгоритм Полларда</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Pyatakovns/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0&amp;diff=28375"/>
		<updated>2020-10-12T15:01:20Z</updated>

		<summary type="html">&lt;p&gt;Pyatakovns: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор: Пятаков Н.С. 419 группа &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Ро-алгоритм Полларда&#039;&#039;&#039;&amp;lt;ref&amp;gt;Pollard J. M. A Monte Carlo method for factorization // BIT. 1975. V. 15. P. 331—334.&amp;lt;/ref&amp;gt; предназначен для решения задачи факторизации целых чисел. Этот метод был разработан Джоном Поллардом в 1975 г. Данный алгоритм основывается на следствиях из парадокса дней рождения и алгоритме Флойда поиска длины цикла в последовательности.&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть n – число, которое следует разложить. ρ-метод Полларда работает следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. Выбираем произвольное небольшое число &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и строим последовательность чисел &amp;lt;math&amp;gt;{x_n}, n = 0, 1, 2, ...,&amp;lt;/math&amp;gt; определяя каждое следующее &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;x_{n+1} =(x_{n}^2 −1)(modn)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
2. Одновременно на каждом шаге &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; вычисляем &amp;lt;math&amp;gt;Н.О.Д.&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; числа &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; и всевозможных разностей &amp;lt;math&amp;gt;|x_i − x_j|&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
3. Когда будет найден &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;=&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;Н.О.Д.(n, |x_i−x_j|)&amp;lt;/math&amp;gt;, отличный от &amp;lt;math&amp;gt;1&amp;lt;/math&amp;gt;, вычисление заканчивается. Найденное &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; является делителем &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;. Если &amp;lt;math&amp;gt;n/d&amp;lt;/math&amp;gt; не является простым числом, то процедуру можно продолжить, взяв вместо &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; число &amp;lt;math&amp;gt;n/d&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вместо функции &amp;lt;math&amp;gt;F (x) = (x^2 − 1) (mod n)&amp;lt;/math&amp;gt; в вычислении &amp;lt;math&amp;gt;x_n+1&amp;lt;/math&amp;gt; можно взять другой многочлен, например, &amp;lt;math&amp;gt;x^2 + 1&amp;lt;/math&amp;gt; или произвольный многочлен степени большей или равной двум.&lt;br /&gt;
&lt;br /&gt;
Недостатком данного варианта метода является необходимость хранить большое число предыдущих значений &amp;lt;math&amp;gt;x_j&amp;lt;/math&amp;gt; . Если &amp;lt;math&amp;gt;(x_j −x_i)≡0(modp)&amp;lt;/math&amp;gt;, то&amp;lt;math&amp;gt;(f(x_j)−f(x_i))≡0(modp)&amp;lt;/math&amp;gt;, поэтому, если пара &amp;lt;math&amp;gt;(x_i, x_j)&amp;lt;/math&amp;gt; дает нам решение, то решение даст любая пара &amp;lt;math&amp;gt;(x_{i+k}, x_{j+k})&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Поэтому, нет необходимости проверять все пары &amp;lt;math&amp;gt;(x_i, x_j)&amp;lt;/math&amp;gt;, а можно ограничиться парами виды &amp;lt;math&amp;gt;(x_i, x_j)&amp;lt;/math&amp;gt;, где &amp;lt;math&amp;gt;j = 2k&amp;lt;/math&amp;gt; , и &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; пробегает набор последовательных значений &amp;lt;math&amp;gt;1, 2, 3,...,&amp;lt;/math&amp;gt; а &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; принимает значения из интервала &amp;lt;math&amp;gt;[2^k + 1; 2^{k+1}]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Pyatakovns</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Pyatakovns/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0&amp;diff=28374</id>
		<title>Участник:Pyatakovns/Ро-алгоритм Полларда</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Pyatakovns/%D0%A0%D0%BE-%D0%B0%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9F%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%B4%D0%B0&amp;diff=28374"/>
		<updated>2020-10-12T13:59:38Z</updated>

		<summary type="html">&lt;p&gt;Pyatakovns: Новая страница: «Автор: Пятаков Н.С. 419 группа    == Свойства и структура алгоритмов == === Общее описание алгор...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Автор: Пятаков Н.С. 419 группа &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Свойства и структура алгоритмов ==&lt;br /&gt;
=== Общее описание алгоритма ===&lt;br /&gt;
&#039;&#039;&#039;Ро-алгоритм Полларда&#039;&#039;&#039;&amp;lt;ref&amp;gt;Pollard J. M. A Monte Carlo method for factorization // BIT. 1975. V. 15. P. 331—334.&amp;lt;/ref&amp;gt; предназначен для решения задачи факторизации целых чисел. Этот метод был разработан Джоном Поллардом в 1975 г. Данный алгоритм основывается на следствиях из парадокса дней рождения и алгоритме Флойда поиска длины цикла в последовательности.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Математическое описание алгоритма ===&lt;br /&gt;
Пусть n – число, которое следует разложить. ρ-метод Полларда работает следующим образом:&lt;br /&gt;
&lt;br /&gt;
1. Выбираем небольшое число &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; и строим последовательность чисел &amp;lt;math&amp;gt;{x_n}, n = 0, 1, 2, ...,&amp;lt;/math&amp;gt; определяя каждое следующее &amp;lt;math&amp;gt;x_{n+1}&amp;lt;/math&amp;gt; по формуле &amp;lt;math&amp;gt;x_{n+1} =(x_{2n} −1)(modn)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Вычислительное ядро алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Макроструктура алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Схема реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Последовательная сложность алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Информационный граф ===&lt;br /&gt;
&lt;br /&gt;
=== Ресурс параллелизма алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Входные и выходные данные алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Свойства алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Программная реализация алгоритма ==&lt;br /&gt;
&lt;br /&gt;
=== Особенности реализации последовательного алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Локальность данных и вычислений ===&lt;br /&gt;
&lt;br /&gt;
=== Возможные способы и особенности параллельной реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Масштабируемость алгоритма и его реализации ===&lt;br /&gt;
&lt;br /&gt;
=== Динамические характеристики и эффективность реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
=== Выводы для классов архитектур ===&lt;br /&gt;
&lt;br /&gt;
=== Существующие реализации алгоритма ===&lt;br /&gt;
&lt;br /&gt;
== Литература ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[en:Description of algorithm properties and structure]]&lt;/div&gt;</summary>
		<author><name>Pyatakovns</name></author>
	</entry>
</feed>