<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Математика, Криптография, Кванты on kenji.blog</title><link>http://kenji.blog/ru/categories/%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0-%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F-%D0%BA%D0%B2%D0%B0%D0%BD%D1%82%D1%8B/</link><description>Recent content in Математика, Криптография, Кванты on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Sun, 06 Sep 2026 12:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/categories/%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0-%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F-%D0%BA%D0%B2%D0%B0%D0%BD%D1%82%D1%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>【Полное понимание через формулы】 Почему сильнейший классический «GNFS» проигрывает квантовым алгоритмам? Смена парадигмы в факторизации</title><link>http://kenji.blog/ru/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Sun, 06 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post 【Полное понимание через формулы】 Почему сильнейший классический «GNFS» проигрывает квантовым алгоритмам? Смена парадигмы в факторизации" />&lt;p>Информационная безопасность в современном интернет-обществе защищена криптографией с открытым ключом, такой как RSA. Основа безопасности RSA опирается на тот факт, что &lt;strong>&amp;ldquo;факторизация огромных составных чисел вычислительно крайне сложна&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;p>В этой статье мы раскроем математический механизм &lt;strong>&amp;ldquo;Общего метода решета числового поля&amp;rdquo;&lt;/strong> (GNFS) — самого мощного алгоритма факторизации для классических компьютеров, и подробно разберем, почему он полностью побежден &lt;strong>&amp;ldquo;Алгоритмом Шора&amp;rdquo;&lt;/strong> , открытым Питером Шором. Мы глубоко исследуем эту смену парадигмы с помощью математических формул и концептуальных схем.&lt;/p>
&lt;hr>
&lt;h2 id="1-подход-к-факторизации-в-классических-вычислениях-развитие-метода-факторизации-ферма">1. Подход к факторизации в классических вычислениях: развитие метода факторизации Ферма
&lt;/h2>&lt;p>Задача факторизации — это задача поиска простых чисел $p, q$, таких что $N = p \times q$ для заданного составного числа $N$.&lt;/p>
&lt;p>Основная идея сводится к поиску нетривиальных $x, y$, удовлетворяющих следующему сравнению:&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>Если мы преобразуем это, то получим:&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>Здесь, если $x \not\equiv \pm y \pmod N$, мы можем получить нетривиальный делитель $N$, вычислив $\gcd(x-y, N)$ или $\gcd(x+y, N)$. Этот факт лежит в основе современных алгоритмов факторизации, таких как GNFS.&lt;/p>
&lt;hr>
&lt;h2 id="2-сильнейший-классический-алгоритм-глубины-общего-метода-решета-числового-поля-gnfs">2. Сильнейший классический алгоритм: Глубины &amp;ldquo;Общего метода решета числового поля&amp;rdquo; (GNFS)
&lt;/h2>&lt;p>&lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> — это самый быстрый алгоритм факторизации для классических компьютеров из известных на сегодняшний день. Его временная сложность требует субэкспоненциального (Sub-exponential) времени.&lt;/p>
&lt;h3 id="сложность-gnfs">Сложность GNFS
&lt;/h3>&lt;p>Если предположить, что количество цифр $N$ равно $b = \log_2 N$, сложность GNFS может быть выражена следующим образом:&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>Как видно из этой формулы, сложность представляет собой не полиномиальное время, а &lt;strong>&amp;ldquo;субэкспоненциальное время&amp;rdquo;&lt;/strong> , что лишь немного медленнее экспоненциального. Тем не менее, с увеличением количества цифр время вычислений возрастает астрономически.&lt;/p>
&lt;h3 id="математический-механизм-gnfs">Математический механизм GNFS
&lt;/h3>&lt;p>GNFS можно условно разделить на 4 этапа:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Выбор многочленов (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Просеивание (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Редукция матрицы (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>Вычисление квадратного корня (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-выбор-многочленов-и-алгебраическое-числовое-поле">2.1. Выбор многочленов и алгебраическое числовое поле
&lt;/h4>&lt;p>Сначала выбираются неприводимые многочлены $f(x)$ и $g(x)$ с целыми коэффициентами. Они задаются так, чтобы иметь общий корень $m$ по модулю $N$. То есть:&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>Обычно $g(x)$ выбирается как многочлен первой степени $g(x) = x - m$. Если корень $f(x)$ обозначить как $\alpha$, образуется &lt;strong>&amp;ldquo;алгебраическое числовое поле&amp;rdquo;&lt;/strong> (Number Field) $\mathbb{Q}(\alpha)$. Мы сравниваем операции в кольце $\mathbb{Q}(\alpha)$ и операции в обычном кольце целых чисел $\mathbb{Z}$ посредством гомоморфизма $\phi: \alpha \mapsto m$.&lt;/p>
&lt;h4 id="22-просеивание-sieving">2.2. Просеивание (Sieving)
&lt;/h4>&lt;p>Далее мы ищем большое количество пар взаимно простых целых чисел $(a, b)$. Цель — найти такие пары, чтобы оба следующих значения были &lt;strong>&amp;ldquo;B-гладкими&amp;rdquo;&lt;/strong> (B-smooth, то есть состоящими только из относительно малых простых множителей):&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (значение в кольце целых чисел)&lt;/li>
&lt;li>$b^d f(a/b)$ (соответствует норме $N(a - b\alpha)$ в алгебраическом поле)&lt;/li>
&lt;/ol>
&lt;p>Здесь используется метод быстрого поиска, называемый &lt;strong>&amp;ldquo;Решето&amp;rdquo;&lt;/strong> (Sieve). Это позволяет эффективно извлекать пары $(a, b)$, удовлетворяющие условиям, из огромного числа кандидатов.&lt;/p>
&lt;h4 id="23-редукция-матрицы-linear-algebra-over-gf2">2.3. Редукция матрицы (Linear Algebra over GF(2))
&lt;/h4>&lt;p>Из собранных пар $(a, b)$ мы формируем векторы показателей степени и находим левое нуль-пространство огромной разреженной матрицы над $\mathbb{F}_2$ (поле, содержащее только 0 и 1).&lt;/p>
&lt;p>Мы находим вектор решения $v$ так, чтобы соотношения $ \prod (a_i - b_i m) $ и $ \prod (a_i - b_i \alpha) $ становились полными квадратами. Это не что иное, как решение системы линейных уравнений:&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>Здесь используются продвинутые алгоритмы численных вычислений, такие как алгоритм блочного Ланцоша (Block Lanczos) или блочного Видемана (Block Wiedemann).&lt;/p>
&lt;h4 id="24-вычисление-квадратного-корня">2.4. Вычисление квадратного корня
&lt;/h4>&lt;p>Наконец, мы извлекаем квадратный корень как в алгебраическом числовом поле, так и в кольце целых чисел, что приводит к соотношению $x^2 \equiv y^2 \pmod N$. Затем мы вычисляем $\gcd(x-y, N)$ и получаем делитель.&lt;/p>
&lt;hr>
&lt;h2 id="3-прорыв-квантовых-вычислений-алгоритм-шора">3. Прорыв квантовых вычислений: &amp;ldquo;Алгоритм Шора&amp;rdquo;
&lt;/h2>&lt;p>В то время как GNFS требует субэкспоненциального времени, &lt;strong>&amp;ldquo;Алгоритм Шора&amp;rdquo;&lt;/strong> , опубликованный Питером Шором в 1994 году, может решить эту задачу за &lt;strong>&amp;ldquo;полиномиальное время&amp;rdquo;&lt;/strong> с использованием квантового компьютера.&lt;/p>
&lt;h3 id="сложность-алгоритма-шора">Сложность Алгоритма Шора
&lt;/h3>&lt;p>Если предположить, что количество кубитов равно $O(\log N)$, то временная сложность составит:&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Это означает, что экспоненциального взрыва относительно количества битов не происходит. Это поразительный результат, когда факторизация огромных составных чисел, время вычисления которых в &lt;strong>&amp;ldquo;классических вычислениях&amp;rdquo;&lt;/strong> превышает возраст Вселенной, может быть решена от нескольких часов до нескольких дней с помощью &lt;strong>&amp;ldquo;квантовых вычислений&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;h3 id="обзор-алгоритма-шора-сведение-к-задаче-поиска-периода">Обзор Алгоритма Шора: Сведение к задаче поиска периода
&lt;/h3>&lt;p>Алгоритм Шора искусно сводит задачу факторизации к &lt;strong>&amp;ldquo;задаче поиска периода&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;ol>
&lt;li>Выберите случайное целое число $a$, взаимно простое с $N$ ($1 &lt; a &lt; N$).&lt;/li>
&lt;li>Определите функцию $f(x) = a^x \bmod N$.&lt;/li>
&lt;li>Найдите период $r$ функции $f(x)$, то есть наименьшее положительное целое число $r$ такое, что $a^r \equiv 1 \pmod N$.&lt;/li>
&lt;li>Если $r$ четное, проверьте, не выполняется ли $a^{r/2} \not\equiv -1 \pmod N$, и вычислите $\gcd(a^{r/2} \pm 1, N)$ для получения простого делителя.&lt;/li>
&lt;/ol>
&lt;p>Этот шаг 3, то есть &lt;strong>&amp;ldquo;нахождение периода $r$&amp;rdquo;&lt;/strong> , является узким местом, требующим экспоненциального времени на классическом компьютере. Однако квантовый компьютер решает это мгновенно, используя &lt;strong>&amp;ldquo;квантовую суперпозицию&amp;rdquo;&lt;/strong> и &lt;strong>&amp;ldquo;Квантовое преобразование Фурье&amp;rdquo;&lt;/strong> (QFT).&lt;/p>
&lt;hr>
&lt;h2 id="4-квантовое-преобразование-фурье-qft-и-извлечение-периода">4. Квантовое преобразование Фурье (QFT) и извлечение периода
&lt;/h2>&lt;p>Давайте подробнее рассмотрим математические операции над квантовыми состояниями, которые лежат в основе Алгоритма Шора.&lt;/p>
&lt;h3 id="41-генерация-квантовой-суперпозиции">4.1. Генерация квантовой суперпозиции
&lt;/h3>&lt;p>Сначала подготовьте 2 квантовых регистра. Регистр 1 хранит состояние суперпозиции входных данных $x$, а регистр 2 хранит результат вычисления функции $f(x)$. Примените преобразование Адамара (Hadamard Transform) к начальному состоянию $|0\rangle |0\rangle$, чтобы создать суперпозицию всех возможных значений $x$.&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(где $Q$ — это степень двойки, удовлетворяющая $N^2 \le Q &lt; 2N^2$)&lt;/p>
&lt;p>Далее используйте квантовый оракул $U_f$ для вычисления $f(x) = a^x \bmod N$ и сохраните результат в регистре 2.&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>Предположим теперь, что регистр 2 измеряется (теоретически, даже если он не измеряется, математическая структура та же). Если наблюдается некоторое значение $y = a^{x_0} \bmod N$, состояние регистра 1 коллапсирует в суперпозицию всех $x$, удовлетворяющих $f(x) = y$. Если предположить, что период равен $r$, такие $x$ будут иметь вид $x_0, x_0 + r, x_0 + 2r, \dots$&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
(где $M \approx Q/r$ — количество членов)&lt;/p>
&lt;p>Это состояние содержит информацию о периоде $r$, но прямое измерение даст лишь случайное $x_0 + kr$, и период $r$ останется неизвестным. Здесь вступает в дело QFT.&lt;/p>
&lt;h3 id="42-применение-квантового-преобразования-фурье-qft">4.2. Применение Квантового преобразования Фурье (QFT)
&lt;/h3>&lt;p>QFT — это операция, применяющая дискретное преобразование Фурье к амплитудам квантового состояния. Действие QFT на состояние $|x\rangle$ определяется следующим образом:&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>Когда это применяется к $|\psi_3\rangle$, возникает фазовая интерференция (квантовая интерференция).&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>Если мы раскроем сумму в этой формуле, появится следующая часть:&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>Сумма этой геометрической прогрессии взаимно усиливается (Конструктивная интерференция, Constructive Interference) только когда $ry/Q$ близко к целому числу, и взаимно уничтожается (Деструктивная интерференция, Destructive Interference) в других случаях.&lt;/p>
&lt;p>Следовательно, состояние $|y\rangle$, измеряемое с высокой вероятностью, будет целым числом $y$, удовлетворяющим условию:&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>(где $c$ — некоторое целое число).&lt;/p>
&lt;h3 id="43-определение-периода-через-разложение-в-цепную-дробь">4.3. Определение периода через разложение в цепную дробь
&lt;/h3>&lt;p>После получения $y$ в результате измерения используйте классический компьютер для выполнения &lt;strong>&amp;ldquo;разложения в цепную дробь&amp;rdquo;&lt;/strong> (Continued Fraction Expansion) $y/Q$. Это позволяет вычислить подходящую дробь $c/r$ для $y/Q$ и с высокой эффективностью извлечь кандидата на период $r$ из знаменателя.&lt;/p>
&lt;hr>
&lt;h2 id="5-сравнение-концептуальных-моделей-и-смена-парадигмы">5. Сравнение концептуальных моделей и смена парадигмы
&lt;/h2>&lt;p>Чтобы интуитивно понять разницу между GNFS и Алгоритмом Шора, приводится концептуальная схема с использованием нотации Mermaid.&lt;/p>
&lt;h3 id="концептуальная-схема-алгоритма-шора-с-использованием-квантовой-схемы">Концептуальная схема Алгоритма Шора с использованием квантовой схемы
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[Начальное состояние: 0...0] --&amp;gt; B[Суперпозиция всех состояний через преобразование Адамара]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[Операция модульного возведения в степень a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|Квантовая запутанность| D[Коллапс в состояние с периодичностью]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[Квантовое преобразование Фурье QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|Усиление вероятности через интерференцию| F[Измерение: Получение y]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[Классическая обработка: Цепная дробь]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[Обнаружение периода r]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[Вычисление простых множителей N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="суть-смены-парадигмы">Суть смены парадигмы
&lt;/h3>&lt;p>GNFS использует подход &lt;strong>&amp;ldquo;поиска соотношений внутри математического пространства (алгебраического поля)&amp;rdquo;&lt;/strong> . Однако, поскольку пространство поиска расширяется экспоненциально относительно количества цифр, расшифровка становится практически невозможной при длине ключа свыше 2048 бит с использованием классических вычислительных мощностей (даже с учетом распараллеливания).&lt;/p>
&lt;p>С другой стороны, алгоритм Шора использует &lt;strong>&amp;ldquo;волновую природу квантовой интерференции&amp;rdquo;&lt;/strong> . Он оценивает все пути вычислений в состоянии суперпозиции одновременно, подавляет (ослабляет) ненужные ответы с помощью QFT и усиливает только амплитуду вероятности для правильного периода. При этом подход заключается не в поиске в пространстве, а в переходе в совершенно другое измерение: &lt;strong>&amp;ldquo;позволить правильному ответу проявиться самому&amp;rdquo;&lt;/strong> .&lt;/p>
&lt;h2 id="6-заключение">6. Заключение
&lt;/h2>&lt;p>В этой статье мы глубоко сравнили математическую основу и структуру алгоритмов между &lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> , который является пределом классических вычислений, и &lt;strong>&amp;ldquo;Алгоритмом Шора&amp;rdquo;&lt;/strong> , который демонстрирует мощь квантовых вычислений.&lt;/p>
&lt;p>В то время как GNFS использует математические ухищрения, такие как выбор многочленов и вычисления с огромными матрицами, чтобы снизить сложность до субэкспоненциального времени, Алгоритм Шора достигает прямого прорыва до полиномиального времени, объединяя базовые принципы квантовой механики (суперпозицию и интерференцию) с математическим инструментом (QFT).&lt;/p>
&lt;p>В настоящее время не существует отказоустойчивого квантового компьютера (FTQC) практического масштаба (тысячи кубитов), способного запустить Алгоритм Шора. Однако именно наличие этой теоретической и математической смены парадигмы является главной причиной ускорения глобального перехода к постквантовой криптографии (PQC: Post-Quantum Cryptography) во всем мире уже сегодня.&lt;/p></description></item><item><title>【Полный разбор】 Что такое квантовый компьютер? 〜Принципы вычислений с нуля〜</title><link>http://kenji.blog/ru/p/quantum-computer-basics/</link><pubDate>Sat, 05 Sep 2026 22:10:00 +0900</pubDate><guid>http://kenji.blog/ru/p/quantum-computer-basics/</guid><description>&lt;img src="http://kenji.blog/p/quantum-computer-basics/quantum_basics_eyecatch_1788613712487.jpg" alt="Featured image of post 【Полный разбор】 Что такое квантовый компьютер? 〜Принципы вычислений с нуля〜" />&lt;h2 id="введение-парадигмальный-сдвиг-в-вычислениях-благодаря-квантовым-компьютерам">Введение: &amp;ldquo;Парадигмальный сдвиг в вычислениях&amp;rdquo; благодаря квантовым компьютерам
&lt;/h2>&lt;p>В последние годы не проходит и дня, чтобы мы не встретили термин «квантовый компьютер» в новостях или статьях о технологиях. Истории, похожие на научную фантастику, например, «завершение вычислений за несколько минут, на которые современным суперкомпьютерам потребовались бы тысячи лет» или «все современные криптографические технологии могут быть взломаны», звучат всё более правдоподобно. Гигантские ИТ-корпорации, такие как Google, IBM и Microsoft, а также университеты и стартапы по всему миру ожесточенно конкурируют за коммерциализацию этой технологии мечты.&lt;/p>
&lt;p>Однако, если спросить: «Что же такое квантовый компьютер на самом деле?», мало кто сможет ответить точно. У многих сложился расплывчатый образ «волшебной коробки, способной рассчитывать все комбинации одновременно», но, строго говоря, это не так.&lt;/p>
&lt;p>В этой статье мы максимально доступно и в то же время технически грамотно объясним с самых основ, чем квантовый компьютер принципиально отличается от классического (ПК и смартфонов, которыми мы обычно пользуемся), и как такие странные явления квантовой механики, как «Суперпозиция», «Квантовая запутанность» и «Квантовые вентили», используются в вычислениях. Прочитав эту статью до конца, вы сможете четко понять истинное величие квантовых компьютеров и их текущие проблемы.&lt;/p>
&lt;hr>
&lt;h2 id="глава-1-принципиальные-отличия-классических-компьютеров-от-квантовых">Глава 1: Принципиальные отличия классических компьютеров от квантовых
&lt;/h2>&lt;p>Чтобы понять, как работают квантовые компьютеры, нам сначала нужно вспомнить, как работают «классические компьютеры», которыми мы пользуемся сегодня.&lt;/p>
&lt;h3 id="сравнительная-таблица-классический-компьютер-против-квантового-компьютера">Сравнительная таблица: Классический компьютер против Квантового компьютера
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Параметр&lt;/th>
&lt;th>Классический компьютер&lt;/th>
&lt;th>Квантовый компьютер&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;strong>Базовая единица&lt;/strong>&lt;/td>
&lt;td>Бит (0 или 1)&lt;/td>
&lt;td>Кубит (суперпозиция 0 и 1)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Представление состояния&lt;/strong>&lt;/td>
&lt;td>Детерминированное&lt;/td>
&lt;td>Вероятностное (не определено до момента измерения)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Метод вычислений&lt;/strong>&lt;/td>
&lt;td>Последовательная обработка (для распараллеливания нужны физические ядра)&lt;/td>
&lt;td>Квантовый параллелизм (одновременное управление экспоненциальным числом состояний)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Сильные стороны&lt;/strong>&lt;/td>
&lt;td>Арифметика, повседневная обработка данных&lt;/td>
&lt;td>Факторизация простых чисел, расчеты в квантовой химии&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;strong>Отказоустойчивость&lt;/strong>&lt;/td>
&lt;td>Очень высокая&lt;/td>
&lt;td>Очень низкая (требуется криогенная среда или исправление ошибок)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="мир-классических-компьютеров-биты-из-нулей-и-единиц">Мир классических компьютеров: «Биты» из нулей и единиц
&lt;/h3>&lt;p>Классические компьютеры представляют всю информацию либо как «0», либо как «1». Это называется &lt;strong>бит (Bit)&lt;/strong> . Физически это выражается высоким (1) или низким (0) напряжением транзистора на полупроводниковом чипе.
Фотографии высокого разрешения на вашем смартфоне, текст, который вы сейчас читаете, и ваши любимые видео на YouTube — в конечном итоге сводятся к огромному количеству «нулей и единиц». Вычисления — это не что иное, как процесс манипулирования этими строками нулей и единиц путем объединения базовых логических схем, таких как И (конъюнкция), ИЛИ (дизъюнкция) и НЕ (отрицание).
Это очень надежный и детерминированный мир. Если входные данные одинаковы, вы всегда получите один и тот же результат.&lt;/p>
&lt;h3 id="мир-квантовых-компьютеров-кубиты-которые-одновременно-и-0-и-1">Мир квантовых компьютеров: «Кубиты», которые одновременно и 0, и 1
&lt;/h3>&lt;p>С другой стороны, минимальная единица информации в квантовом компьютере называется &lt;strong>кубитом (Qubit: Quantum bit)&lt;/strong> .
Самая важная особенность кубита состоит в том, что он может находиться не только в состоянии «0» или «1», как классический бит, но и в «состоянии, где 0 и 1 смешаны с определенной вероятностью». Это называется &lt;strong>«Суперпозиция (Superposition)»&lt;/strong> .&lt;/p>
&lt;p>Например, если классический бит — это монета, лежащая орлом или решкой вверх, то кубит часто сравнивают с «монетой, которая непрерывно вращается в воздухе». Про вращающуюся монету нельзя сказать, орел это или решка, оба состояния накладываются друг на друга. И только в тот момент, когда монета падает на пол и останавливается (в квантовой механике это называется «измерением»), окончательно определяется, «орел» это или «решка».&lt;/p>
&lt;p>Квантовые компьютеры включают это специфическое свойство микромира (квантовой механики), при котором «состояние не определено до наблюдения», непосредственно в процесс обработки информации.&lt;/p>
&lt;hr>
&lt;h2 id="глава-2-три-квантово-механических-свойства-в-корне-меняющих-вычисления">Глава 2: Три квантово-механических свойства, в корне меняющих вычисления
&lt;/h2>&lt;p>Источник невероятной вычислительной мощности квантовых компьютеров заключается не в высокой тактовой частоте или малых размерах компонентов. Он кроется в использовании самих законов физики в качестве вычислительных ресурсов. Ключевыми являются следующие три квантово-механических явления.&lt;/p>
&lt;h3 id="1-суперпозиция-superposition-и-экспоненциальный-объем-информации">1. Суперпозиция (Superposition) и экспоненциальный объем информации
&lt;/h3>&lt;p>Как упоминалось ранее, кубит может одновременно хранить состояния 0 и 1. Один кубит — это «суперпозиция 0 и 1», но что произойдет, если мы увеличим количество кубитов?&lt;/p>
&lt;ul>
&lt;li>1 кубит: суперпозиция 2 состояний (0, 1)&lt;/li>
&lt;li>2 кубита: суперпозиция 4 состояний (00, 01, 10, 11)&lt;/li>
&lt;li>3 кубита: суперпозиция 8 состояний&lt;/li>
&lt;li>&lt;strong>N кубитов: суперпозиция $2^N$ паттернов&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>Имея всего 50 кубитов, можно одновременно хранить $2^{50}$ (около 1,1 квадриллиона) состояний. А имея всего 300 кубитов, можно удерживать одновременно $2^{300}$ паттернов (число, превышающее количество всех атомов во Вселенной!). Эта экспоненциальная способность хранения информации является основой потенциала квантовых компьютеров. Физически невозможно заставить классический компьютер хранить в памяти количество состояний, превышающее число атомов во Вселенной.&lt;/p>
&lt;h3 id="2-квантовая-запутанность-entanglement-жуткое-дальнодействие">2. Квантовая запутанность (Entanglement): Жуткое дальнодействие
&lt;/h3>&lt;p>Квантовая запутанность — это настолько загадочное явление, противоречащее человеческой интуиции, что Эйнштейн называл его «жутким дальнодействием» (Spooky action at a distance) и так и не принял его до конца жизни.&lt;/p>
&lt;p>Когда несколько кубитов переходят в состояние «квантовой запутанности», они становятся тесно связанными друг с другом, образуя нечто вроде общей судьбы: &lt;strong>«как только состояние одного определено, состояние другого определяется мгновенно, независимо от того, насколько далеко они находятся друг от друга»&lt;/strong> .&lt;/p>
&lt;p>Например, предположим, что два кубита А и В запутаны (каждый находится в состоянии суперпозиции 0 и 1). Если мы измерим А и получим «0», то состояние В мгновенно определится (например, всегда будет «1»), превышая скорость света, которая является пределом скорости передачи информации.
В квантовых компьютерах эта квантовая запутанность используется для выражения сложных корреляций между несколькими кубитами и выполнения массовой параллельной обработки информации. Без запутанности вычислительная мощность квантового компьютера мало чем отличалась бы от классического.&lt;/p>
&lt;h3 id="3-квантовая-интерференция-quantum-interference-магия-выявления-правильного-ответа">3. Квантовая интерференция (Quantum Interference): Магия выявления правильного ответа
&lt;/h3>&lt;p>Вы можете подумать: «Если он может удерживать все паттерны одновременно, разве он не может просто рассчитать их все сразу параллельно и мгновенно выдать ответ?» Это самое распространенное заблуждение о квантовых компьютерах.
Даже если вы выполняете вычисления в состоянии суперпозиции, в конечном итоге вам нужно произвести «измерение», чтобы узнать ответ. Но в момент измерения состояние случайным образом коллапсирует в один из $2^N$ паттернов. В результате получится просто случайный ответ.&lt;/p>
&lt;p>Здесь на сцену выходит &lt;strong>«Квантовая интерференция (Interference)»&lt;/strong> . Когда волны сталкиваются, там, где их фазы совпадают, они усиливают друг друга, а там, где фазы противоположны — гасят (в сущности, тот же принцип используется в наушниках с активным шумоподавлением).&lt;/p>
&lt;p>Хороший «квантовый алгоритм» ловко манипулирует квантовыми состояниями в процессе вычислений так, чтобы &lt;strong>«амплитуды вероятностей состояний (волн), ведущих к правильному ответу, усиливались друг другом (амплификация)»&lt;/strong> , а &lt;strong>«амплитуды вероятностей состояний, ведущих к неправильным ответам, гасили друг друга (аннуляция)»&lt;/strong> . В итоге он спроектирован так, что при финальном измерении «правильный ответ» выпадает с вероятностью, близкой к 100%. Искусное проектирование этого процесса интерференции и есть суть квантового программирования.&lt;/p>
&lt;hr>
&lt;h2 id="глава-3-как-происходят-вычисления-квантовые-вентили-и-квантовые-схемы">Глава 3: Как происходят вычисления? «Квантовые вентили» и «Квантовые схемы»
&lt;/h2>&lt;p>Подобно тому, как классические компьютеры используют логические вентили (И, ИЛИ, НЕ и т. д.) для выполнения вычислений, квантовые компьютеры применяют к кубитам операции, называемые &lt;strong>«Квантовыми вентилями (Quantum Gates)»&lt;/strong> . Комбинация из нескольких квантовых вентилей называется &lt;strong>Квантовой схемой (Quantum Circuit)&lt;/strong> .&lt;/p>
&lt;p>Состояние кубита математически представляется точкой на поверхности трехмерной сферы, называемой «Сферой Блоха». Северный полюс — это «0», Южный — «1», а экватор — «состояние, в котором 0 и 1 накладываются друг на друга в равной степени». Квантовые вентили — это не что иное, как операции вращения состояния (вектора) на поверхности этой сферы.&lt;/p>
&lt;p>Давайте познакомимся с некоторыми типичными квантовыми вентилями.&lt;/p>
&lt;h3 id="1-вентиль-адамара-h-вентиль">1. Вентиль Адамара (H-вентиль)
&lt;/h3>&lt;p>Это самый фундаментальный вентиль, уникальный для квантовых компьютеров, не имеющий аналогов в классических. Если пропустить кубит в состоянии идеального «0» через H-вентиль, создается «состояние идеальной суперпозиции» (точка на экваторе сферы Блоха), в котором 0 и 1 наблюдаются с вероятностью ровно пятьдесят на пятьдесят. В качестве начального шага многие квантовые алгоритмы начинаются с применения этого H-вентиля ко всем кубитам.&lt;/p>
&lt;h3 id="2-вентили-паули-вентили-x-y-z">2. Вентили Паули (вентили X, Y, Z)
&lt;/h3>&lt;p>Это вентили, включающие операции, эквивалентные классическому вентилю НЕ (инверсия 0 в 1, и 1 в 0). На сфере Блоха это соответствует повороту на 180 градусов вокруг осей X, Y и Z. В частности, вентиль X инвертирует Северный полюс (0) в Южный полюс (1), работая точно так же, как классический вентиль НЕ. Вентиль Z играет роль инвертирования «фазы (что-то вроде синхронизации волны)» суперпозиции и чрезвычайно важен для создания квантовой интерференции.&lt;/p>
&lt;h3 id="3-вентиль-cnot-контролируемое-не">3. Вентиль CNOT (Контролируемое НЕ)
&lt;/h3>&lt;p>Это сверхважный вентиль для создания квантовой запутанности. Он использует два кубита (управляющий и целевой).
Он работает так: «Если управляющий бит равен 1, состояние целевого бита инвертируется (вентиль X). Если управляющий бит равен 0, ничего не происходит». На первый взгляд это похоже на простое условное ветвление IF, но что произойдет, если управляющий бит будет находиться в «состоянии суперпозиции 0 и 1»? Целевой бит перейдет в «состояние, где накладываются инвертированное и неинвертированное состояния», и судьба двух битов окажется полностью связана. Два кубита красиво «запутываются».&lt;/p>
&lt;p>Расставляя и применяя эти вентили по порядку слева направо, словно ноты в партитуре, мы можем выполнять сложные алгоритмы.&lt;/p>
&lt;hr>
&lt;h2 id="глава-4-в-чем-сильны-и-в-чем-слабы-квантовые-компьютеры">Глава 4: В чем сильны и в чем слабы квантовые компьютеры?
&lt;/h2>&lt;p>Здесь мы должны сообщить вам важный факт. Квантовый компьютер — это не всемогущий бог.
В повседневных задачах, таких как веб-браузинг, рендеринг видео, обработка макросов в Excel или работа обычных приложений на смартфоне, квантовые компьютеры, вероятно, никогда не превзойдут классические. Для таких последовательных процессов гораздо лучше подходят классические компьютеры, которые уже в высшей степени оптимизированы, могут похвастаться потрясающей скоростью и дешевизной.&lt;/p>
&lt;p>Истинная ценность квантовых компьютеров проявляется только в &lt;strong>«особых задачах, где количество вычислительных комбинаций на классическом компьютере возрастает экспоненциально, и для их решения потребовалось бы время, равное возрасту Вселенной»&lt;/strong> . Это называется «Квантовым превосходством (Quantum Supremacy)» или «Квантовым преимуществом (Quantum Advantage)».&lt;/p>
&lt;h3 id="в-чем-преуспевают-квантовые-компьютеры-убойные-приложения">В чем преуспевают квантовые компьютеры (Убойные приложения)
&lt;/h3>&lt;h4 id="1-факторизация-простых-чисел-и-взлом-шифров-алгоритм-шора">1. Факторизация простых чисел и взлом шифров (Алгоритм Шора)
&lt;/h4>&lt;p>В настоящее время безопасные коммуникации в Интернете (например, оплата кредитными картами или передача личных данных) защищены «алгоритмом шифрования RSA», который основан на предпосылке, что «факторизация огромных чисел практически невозможна (требует колоссального времени) для классического компьютера».
Однако, используя «алгоритм Шора», открытый математиком Питером Шором в 1994 году, квантовый компьютер может умело использовать интерференцию, чтобы решить эту задачу с невероятной скоростью (за полиномиальное время). В результате существует риск того, что современные криптографические системы в будущем рухнут, поэтому центральные банки и правительственные учреждения по всему миру спешат перейти на «Постквантовую криптографию (Post-Quantum Cryptography)».&lt;/p>
&lt;h4 id="2-квантово-химические-расчеты-разработка-новых-материалов-и-лекарств">2. Квантово-химические расчеты, разработка новых материалов и лекарств
&lt;/h4>&lt;p>Поведение молекул и атомов в природе изначально подчиняется законам квантовой механики. Если попытаться смоделировать поведение сложных молекул на классическом компьютере, комбинации взаимодействий между электронами приведут к комбинаторному взрыву, и мы быстро упремся в пределы вычислений даже для относительно небольших молекул.
Как сказал лауреат Нобелевской премии по физике Ричард Фейнман: «Если вы хотите симулировать природу, вы должны делать это по законам квантовой механики». Квантовые компьютеры демонстрируют подавляющую естественную мощь в симуляции материалов. Ожидаются прорывы в решении глобальных проблем человечества, такие как разработка инновационных лекарств, открытие сверхпроводников, работающих при комнатной температуре, создание высокоэффективных материалов для солнечных батарей и аккумуляторов, а также синтез энергоэффективных удобрений.&lt;/p>
&lt;h4 id="3-задачи-комбинаторной-оптимизации-и-поиска-алгоритм-гровера">3. Задачи комбинаторной оптимизации и поиска (Алгоритм Гровера)
&lt;/h4>&lt;p>Квантовые алгоритмы также эффективны для задач поиска оптимального варианта из огромного числа альтернатив (например, оптимальных логистических маршрутов, оптимизации финансовых портфелей и т. д.). Используя «Алгоритм Гровера», можно найти нужные данные в неструктурированной базе данных за количество шагов, пропорциональное квадратному корню от того, что потребовалось бы классическому компьютеру. Например, если имеется 100 миллионов записей, поиск, требующий до 100 миллионов итераций на классическом компьютере, может быть выполнен примерно за 10 000 итераций.&lt;/p>
&lt;hr>
&lt;h2 id="глава-5-физическая-стена-на-пути-декогеренция-и-квантовая-коррекция-ошибок">Глава 5: Физическая стена на пути: «Декогеренция» и «Квантовая коррекция ошибок»
&lt;/h2>&lt;p>Хотя в теории квантовые компьютеры обладают магической мощью, на пути к их коммерческому использованию стоит чрезвычайно высокая и крутая физическая стена. Самый главный враг — это &lt;strong>«Шум»&lt;/strong> .&lt;/p>
&lt;p>«Суперпозиция» и «Квантовая запутанность» кубитов — чрезвычайно тонкие и хрупкие состояния. Достаточно легкого теплового воздействия, колебаний электромагнитных волн или воздействия космических лучей, чтобы это магическое состояние мгновенно разрушилось и кубит превратился в обычный классический бит. Это явление называется &lt;strong>«Декогеренцией (Квантовым коллапсом)»&lt;/strong> .&lt;/p>
&lt;h3 id="ожесточенная-конкуренция-методов-физической-реализации">Ожесточенная конкуренция методов физической реализации
&lt;/h3>&lt;p>В настоящее время по всему миру исследуются различные способы физического создания этих хрупких кубитов, и идет борьба за лидерство.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Сверхпроводниковый метод (Superconducting)&lt;/strong> : Используется Google, IBM, Amazon и др. В нем используются сверхпроводящие контуры, и для контроля квантовых состояний они охлаждаются почти до абсолютного нуля (около -273°C) с помощью гигантских рефрижераторов. В настоящее время это ведущий метод, в котором проще всего увеличивать число кубитов, однако охлаждающее оборудование является громоздким и дорогим.&lt;/li>
&lt;li>&lt;strong>Метод ионных ловушек (Trapped Ion)&lt;/strong> : Используется IonQ, Quantinuum и др. Ионы (атомы) удерживаются в вакууме с помощью электромагнитных полей и контролируются точными лазерами. Преимущество состоит в том, что все кубиты идентичны, а состояния могут сохраняться долго (долгое время когерентности), однако скорость операций медленнее по сравнению со сверхпроводниками.&lt;/li>
&lt;li>&lt;strong>Фотонный метод (Photonic)&lt;/strong> : Приоритет компании PsiQuantum и др. Использует частицы света (фотоны). Главное преимущество в том, что многие компоненты работают при комнатной температуре и не требуют криогенной среды; он также отлично совместим с существующими технологиями производства кремниевых чипов и оптоволоконной связи.&lt;/li>
&lt;li>&lt;strong>Топологический метод (Topological)&lt;/strong> : Долгое время исследуется Microsoft. Это амбициозный подход, использующий топологические свойства особых частиц, называемых энионами, для создания кубитов, которые фундаментально устойчивы к шуму среды. Теоретически это самый мощный метод, но его физическая реализация считается наиболее сложной.&lt;/li>
&lt;/ul>
&lt;h3 id="путь-к-конечной-цели-отказоустойчивый-квантовый-компьютер-ftqc">Путь к конечной цели: «Отказоустойчивый квантовый компьютер (FTQC)»
&lt;/h3>&lt;p>В мире современных классических компьютеров тоже случаются вычислительные ошибки (например, инверсия битов из-за космических лучей), но они идеально исправляются с помощью «кодов коррекции ошибок», поэтому мы пользуемся смартфонами, даже не подозревая о них. Для выполнения крупномасштабных практических вычислений на квантовых компьютерах аналогичным образом необходима &lt;strong>«Квантовая коррекция ошибок (Quantum Error Correction: QEC)»&lt;/strong> .&lt;/p>
&lt;p>Однако квантовые состояния обладают свойством «разрушаться при измерении», что порождает фатальную дилемму: нельзя напрямую заглянуть внутрь (измерить), чтобы проверить наличие ошибки.
Для решения этой проблемы была разработана теория, позволяющая искусно объединять большое количество нестабильных «физических кубитов» для создания одного стабильного «логического кубита», способного обнаруживать и исправлять ошибки (например, поверхностный код).
Тем не менее, считается, что для создания одного логического кубита потребуется от 1 000 до 10 000 физических кубитов. Чтобы запустить алгоритм Шора с использованием тысяч логических кубитов, потребуется колоссальная система, содержащая миллионы или даже десятки миллионов физических кубитов в целом.&lt;/p>
&lt;p>Сейчас мы находимся в эре, называемой &lt;strong>NISQ (Noisy Intermediate-Scale Quantum — квантовые технологии средних масштабов с шумом)&lt;/strong> . Это переходные устройства без исправления ошибок, работающие на десятках или сотнях кубитов.
По прогнозам экспертов, для достижения конечной цели — создания полностью способного к исправлению ошибок &lt;strong>«Отказоустойчивого квантового компьютера (Fault-Tolerant Quantum Computer: FTQC)»&lt;/strong> — потребуются еще от 10 лет до нескольких десятилетий долгосрочных исследований и разработок.&lt;/p>
&lt;hr>
&lt;h2 id="глава-6-история-и-будущие-перспективы-квантовых-компьютеров">Глава 6: История и будущие перспективы квантовых компьютеров
&lt;/h2>&lt;p>В заключение давайте посмотрим, как зародились квантовые компьютеры и к чему они движутся.&lt;/p>
&lt;h3 id="от-рождения-теории-до-демонстрации-квантового-превосходства">От рождения теории до демонстрации «Квантового превосходства»
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>1980-е годы&lt;/strong> : Физики Пол Бениофф и Ричард Фейнман предложили концепцию компьютера, использующего принципы квантовой механики. Отправной точкой стала фраза: «Если вы хотите моделировать природу, используйте квантовую механику».&lt;/li>
&lt;li>&lt;strong>1994 год&lt;/strong> : Питер Шор публикует квантовый алгоритм факторизации (Алгоритм Шора). Это потрясло мир и привело к притоку колоссального финансирования исследований.&lt;/li>
&lt;li>&lt;strong>1996 год&lt;/strong> : Лов Гровер публикует Алгоритм Гровера, ускоряющий поиск данных.&lt;/li>
&lt;li>&lt;strong>2019 год&lt;/strong> : Историческая веха. Google объявляет, что с помощью 53-кубитного сверхпроводящего процессора «Sycamore» они за 200 секунд выполнили вычисление генерации случайных чисел, на которое классическому суперкомпьютеру потребовалось бы (как считалось) 10 000 лет. Это вызвало огромный резонанс как первая в мире демонстрация &lt;strong>«Квантового превосходства (Quantum Supremacy)»&lt;/strong> (хотя позже IBM и другие улучшили алгоритм со стороны классического суперкомпьютера и возразили, что эту задачу можно решить за несколько дней, что вызвало горячие споры).&lt;/li>
&lt;li>&lt;strong>2023 год и далее&lt;/strong> : IBM анонсирует процессор «Condor» с более чем 1000 кубитов. Кроме того, Гарвардский университет и другие учреждения добились успеха в создании и манипулировании «логическими кубитами», и стали появляться сообщения о ранних демонстрациях технологий исправления ошибок.&lt;/li>
&lt;/ul>
&lt;h3 id="на-пути-к-технологиям-следующего-поколения">На пути к технологиям следующего поколения
&lt;/h3>&lt;p>Квантовый компьютер — это не просто «ЦП следующего поколения с более высокой тактовой частотой». Это подлинный парадигмальный сдвиг в информатике, фундаментально переписывающий само понятие вычислений по правилам квантовой механики, управляющей микромиром.&lt;/p>
&lt;p>Вероятно, при нашей жизни мы не увидим карманных «персональных квантовых смартфонов» (да они и не нужны). Но будущее, в котором мощные квантовые дата-центры в облачных сетях вроде AWS или Azure внезапно откроют лекарство от неизлечимой болезни или изобретут материал для чистой энергии, спасающий от глобального потепления (например, катализатор для синтеза аммиака из атмосферного азота при комнатной температуре), неминуемо приближается.&lt;/p>
&lt;p>Сейчас мы находимся на заре, сравнимой с 1940-ми годами и компьютером ENIAC, который работал на перфокартах, пока жар от огромных вакуумных ламп накалял комнату. Тем не менее, лучшие умы исследователей и инженеров по всему миру напряженно работают, и о технологических прорывах сообщается почти ежедневно.
То, что мы можем в реальном времени наблюдать эволюцию этого нового «рассвета вычислений», означает, что мы живем в чрезвычайно захватывающую историческую эпоху.&lt;/p>
&lt;p>Дверь в квантовый мир только приоткрылась. Мы не можем отвести глаз от того, что будет дальше.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Эта статья призвана в доступной форме объяснить основные концепции квантовых вычислений для бизнес-специалистов и обычных людей, интересующихся технологиями. Пожалуйста, обратите внимание, что некоторые строгие математические и физические определения (такие как детали нотации бра-кет и амплитуд комплексных вероятностей) были несколько упрощены.&lt;/em>&lt;/p></description></item><item><title>Что такое Общий метод решета числового поля (GNFS) — сильнейшая математика человечества, взламывающая криптографию интернета?</title><link>http://kenji.blog/ru/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</link><pubDate>Sat, 05 Sep 2026 02:09:08 +0900</pubDate><guid>http://kenji.blog/ru/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/gnfs_two_worlds_1788542142485.jpg" alt="Featured image of post Что такое Общий метод решета числового поля (GNFS) — сильнейшая математика человечества, взламывающая криптографию интернета?" />&lt;h1 id="что-такое-общий-метод-решета-числового-поля-gnfs--сильнейшая-математика-человечества-взламывающая-криптографию-интернета">Что такое Общий метод решета числового поля (GNFS) — сильнейшая математика человечества, взламывающая криптографию интернета?
&lt;/h1>&lt;p>Интернет, которым мы пользуемся каждый день. Все наши коммуникации, будь то сообщения в LINE, видео на YouTube или покупки на Amazon, защищены «криптографией».
В настоящее время самым распространенным алгоритмом шифрования в мире является «шифр RSA».&lt;/p>
&lt;p>Суть защиты RSA очень проста. Она использует математическое свойство, заключающееся в том, что &lt;strong>«даже компьютеры не могут решить задачу факторизации гигантских чисел на простые множители»&lt;/strong> .
Например, для числа «15» сразу понятно, что это «3 × 5». Но как только число становится «270-значным», даже если объединить все суперкомпьютеры мира, на его решение уйдут сотни миллионов лет.&lt;/p>
&lt;p>Однако математики тоже не сидят сложа руки. Чтобы взломать этот неприступный шифр, человечество создало магический алгоритм (вычислительную процедуру) под названием &lt;strong>«Общий метод решета числового поля (GNFS — General Number Field Sieve)»&lt;/strong> .&lt;/p>
&lt;p>В этой статье мы не будем использовать сложные технические термины, а опираясь только на знания &lt;strong>математики средней школы (разложение на простые множители, алгебраические выражения, наибольший общий делитель)&lt;/strong> , полностью шаг за шагом объясним, как этот «сильнейший алгоритм человечества» взламывает шифры!&lt;/p>
&lt;hr>
&lt;h2 id="глава-1-цель-взлома--формула-из-средней-школы">Глава 1: Цель взлома — «формула из средней школы»
&lt;/h2>&lt;p>Главный прием против факторизации гигантских чисел. Это формула, которую изучают в средних классах.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>$X^2 - Y^2 = (X + Y)(X - Y)$&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Вы можете подумать: «Э-э, неужели такая базовая формула может взломать шифр?». Однако это и есть тот самый главный ключ, который все открывает.&lt;/p>
&lt;p>Главная цель при взломе шифра — найти для огромного числа $N$ &lt;strong>«такие числа ($X$ и $Y$), что остатки от деления $X^2$ и $Y^2$ на $N$ будут одинаковыми»&lt;/strong> .&lt;/p>
&lt;h3 id="почему-одинаковые-остатки-могут-взломать-шифр">Почему «одинаковые остатки» могут взломать шифр?
&lt;/h3>&lt;p>Предположим, у двух чисел $X^2$ и $Y^2$ «остатки от деления на $N$ одинаковые».
Одинаковые остатки означают, что при вычитании &lt;strong>«$X^2 - Y^2$» результат обязательно будет без остатка делиться на $N$ (станет кратным $N$)&lt;/strong> .&lt;/p>
&lt;p>Здесь давайте представим, что огромное число $N$, используемое в шифре, образовано умножением двух секретных простых чисел ($p$ и $q$) ($N = p \times q$).&lt;/p>
&lt;p>Если разложить на множители $X^2 - Y^2$, то получится &lt;strong>$(X - Y)(X + Y)$&lt;/strong> .
То, что это число кратно $N$, означает, что где-то в этом умножении спрятаны секретные простые числа $p$ и $q$.&lt;/p>
&lt;p>И тут происходит чудо.
Математическая вероятность того, что два простых числа $p$ и $q$ разойдутся по разным «комнатам» — &lt;strong>«$p$ в комнату $(X - Y)$», а «$q$ в комнату $(X + Y)$»&lt;/strong> — составляет ровно &lt;strong>50% (одна вторая)&lt;/strong> .&lt;/p>
&lt;p>Предположим, что только простое число $p$ попало в комнату $(X - Y)$. Давайте вычислим &lt;strong>«наибольший общий делитель (самый большой общий компонент)»&lt;/strong> между $(X - Y)$ и $N$.&lt;/p>
&lt;ul>
&lt;li>Содержимое $(X - Y)$ = $p \times$ какое-то число&lt;/li>
&lt;li>Содержимое $N$ = $p \times q$
Единственный общий компонент здесь — это &lt;strong>«$p$»&lt;/strong> !&lt;/li>
&lt;/ul>
&lt;p>Другими словами, в момент вычисления наибольшего общего делителя скрытое простое число $p$ внезапно выпадает, и шифр оказывается полностью взломанным. (&lt;em>Наибольший общий делитель можно моментально вычислить даже на смартфоне с помощью «Алгоритма Евклида»&lt;/em>)&lt;/p>
&lt;p>&lt;strong>[Мини-колонка: Почему именно квадрат? Разве куб или удвоение не подойдут?]&lt;/strong>&lt;/p>
&lt;blockquote>
&lt;p>Если взять «$2X - 2Y$», это превратится в $2(X - Y)$, и останется только одна комната, так что простые числа разделить не получится. Если взять «$X^3 - Y^3$», размеры комнат станут несбалансированными, и вычисления станут неоправданно тяжелыми. Для идеального разделения двух простых чисел «квадрат», образующий две красивые комнаты, является самым оптимальным вариантом.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="глава-2-как-найти-x-и-y-головоломка-по-сбору-карточек-с-простыми-числами">Глава 2: Как найти X и Y? «Головоломка по сбору карточек с простыми числами»
&lt;/h2>&lt;p>Цель ясна. Однако, если пытаться искать «$X^2$ и $Y^2$ с одинаковыми остатками» наугад, мы не найдем их до самого конца существования Вселенной.
Поэтому математики придумали гениальный метод под названием &lt;strong>«Головоломка по сбору карточек с простыми числами»&lt;/strong> .&lt;/p>
&lt;h3 id="шаг-1-просеивание-только-золотого-песка-гладких-чисел">Шаг 1: Просеивание только золотого песка (гладких чисел)
&lt;/h3>&lt;p>Сначала мы берем произвольное число $Z$, возводим его в квадрат и вычисляем остаток $W$ от деления на $N$.
(Мир остатков: $Z^2 = W$)&lt;/p>
&lt;p>Полученный остаток $W$ мы раскладываем на простые множители. Здесь, только когда получается &lt;strong>«$W$, состоящее исключительно из маленьких простых чисел, таких как 2, 3, 5, 7»&lt;/strong> , мы оставляем эту формулу как «выигрышную карточку». Если примешивается большое простое число — мы ее выбрасываем.
Это похоже на работу с ситом (решетом) в реке: мы отбрасываем большие камни и собираем только золотой песок.&lt;/p>
&lt;h3 id="шаг-2-головоломка-с-приведением-к-четному-числу">Шаг 2: Головоломка с приведением к «четному числу»
&lt;/h3>&lt;p>Предположим, мы собрали 3 таких карточки с золотым песком:&lt;/p>
&lt;ul>
&lt;li>Карточка A: $Z_1^2 = 2^3 \times 3^1$&lt;/li>
&lt;li>Карточка B: $Z_2^2 = 2^1 \times 5^1$&lt;/li>
&lt;li>Карточка C: $Z_3^2 = 3^1 \times 5^1$&lt;/li>
&lt;/ul>
&lt;p>Давайте перемножим их все.
Правая сторона станет $(2^3 \times 3^1) \times (2^1 \times 5^1) \times (3^1 \times 5^1)$,
а после упрощения получится &lt;strong>«$2^4 \times 3^2 \times 5^2$»&lt;/strong> .&lt;/p>
&lt;p>Поразительно, но количество простых чисел стало «4, 2, 2» — &lt;strong>все они стали четными&lt;/strong> !
То, что все они стали четными, означает, что если поделить их количество пополам, мы получим «квадрат чего-либо».
А именно: $(2^2 \times 3^1 \times 5^1)^2 = (60)^2$.&lt;/p>
&lt;p>Поскольку левая сторона равна $(Z_1 \times Z_2 \times Z_3)^2$, мы, наконец, получаем:
&lt;strong>$X = (Z_1 \times Z_2 \times Z_3)$&lt;/strong>
&lt;strong>$Y = 60$&lt;/strong>
Долгожданная пара «$X^2 = Y^2$» завершена!&lt;/p>
&lt;p>Для компьютеров головоломки с подсчетом того, «четное число или нечетное (0 или 1)», даются очень легко, поэтому с помощью этого метода можно очень быстро найти $X$ и $Y$.&lt;/p>
&lt;hr>
&lt;h2 id="глава-3-стена-отчаяния-на-пути">Глава 3: Стена отчаяния на пути
&lt;/h2>&lt;p>Казалось бы, теперь любой шифр можно взломать! &amp;hellip;Но тут возникает огромная проблема.
Если число шифра $N$ имеет длину до «100 цифр», этот метод (называемый методом квадратичного решета) справляется. Но когда $N$ становится «200-значным или 300-значным», промежуточное значение $W$ становится слишком гигантским.&lt;/p>
&lt;p>Когда числа становятся слишком огромными, «числа, состоящие только из маленьких простых чисел (золотой песок)», перестают появляться вообще. Найти их становится сложнее, чем контактную линзу в пустыне, и собрать карточки для решения головоломки становится абсолютно невозможно.&lt;/p>
&lt;p>И вот здесь наконец появляется совершенное оружие человечества — &lt;strong>«Общий метод решета числового поля (GNFS)»&lt;/strong> .&lt;/p>
&lt;hr>
&lt;h2 id="глава-4-гениальная-идея-человечества--создание-двух-миров">Глава 4: Гениальная идея человечества — создание «двух миров»
&lt;/h2>&lt;p>Гениальность идеи GNFS заключается в следующем: &lt;strong>«Раз числа становятся огромными потому, что мы считаем только в реальном мире, давайте создадим &amp;ldquo;параллельный мир&amp;rdquo; с помощью полиномов (алгебраических выражений) и разделим вычислительную нагрузку на две части»&lt;/strong> .&lt;/p>
&lt;h3 id="магия-алгебраических-выражений">Магия алгебраических выражений
&lt;/h3>&lt;p>GNFS преобразует огромное число $N$ в алгебраическое выражение, используя базовое число $m$.
Например, если $N=100$, мы выбираем $m=4$, тогда $100 = 4^3 + 2(4^2) + 4$.
Используя переменную $x$, мы превращаем это в выражение (параллельный мир): &lt;strong>$f(x) = x^3 + 2x^2 + x$&lt;/strong> .&lt;/p>
&lt;p>Самое интересное в этом выражении — его свойство: &lt;strong>«Если подставить вместо $x$ число $m$ (в данном примере 4), то можно в любой момент &amp;ldquo;телепортироваться&amp;rdquo; обратно к реальному числу $N$»&lt;/strong> .&lt;/p>
&lt;h3 id="поиск-золотого-песка-одновременно-в-двух-мирах">Поиск золотого песка одновременно в двух мирах
&lt;/h3>&lt;p>GNFS генерирует множество произвольных пар целых чисел $(a, b)$ и одновременно выполняет два вычисления:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Реальный мир&lt;/strong>: $a - b \times m$&lt;/li>
&lt;li>&lt;strong>Алгебраический мир&lt;/strong>: значение $a - b \times x$, вычисленное по правилам алгебраических выражений&lt;/li>
&lt;/ol>
&lt;p>Благодаря разделению задачи на два мира, размер используемых чисел радикально уменьшается (становится «легче»). Представьте себе, что гигантский валун разбили на два удобных камня.&lt;/p>
&lt;p>Затем с помощью сита (решета) отсеиваются и собираются только те чудесные пары $(a, b)$, в которых &lt;strong>«и в реальном мире, и в алгебраическом мире результаты состоят только из маленьких простых чисел (являются золотым песком)»&lt;/strong> . Отсюда и происходит название «метод решета числового поля».&lt;/p>
&lt;h3 id="момент-взлома-шифра">Момент взлома шифра
&lt;/h3>&lt;p>Когда из обоих миров собираются десятки миллионов «карточек с золотым песком», с помощью матричных вычислений на суперкомпьютерах находится «комбинация, при которой количество простых чисел становится полностью четным», точно так же, как во 2-й главе.&lt;/p>
&lt;p>Когда комбинация найдена:&lt;/p>
&lt;ul>
&lt;li>Число в квадрате, полученное в реальном мире, обозначается как &lt;strong>$X^2$&lt;/strong>&lt;/li>
&lt;li>Выражение в квадрате, полученное в алгебраическом мире, обозначается как &lt;strong>$Y(x)^2$&lt;/strong>&lt;/li>
&lt;/ul>
&lt;p>И наконец, мы подставляем $m$ вместо $x$ в $Y(x)$ алгебраического мира, телепортируя его и объединяя с реальным миром.
И тут, как по математическому волшебству, строго выполняется условие &lt;strong>«остатки $X^2$ и $Y^2$ одинаковы»&lt;/strong> !&lt;/p>
&lt;p>Дальше, как было описано в 1-й главе, достаточно вычислить наибольший общий делитель $X - Y$ и $N$, и неприступный шифр RSA с грохотом рассыпается, открывая секретные простые числа.&lt;/p>
&lt;hr>
&lt;h2 id="заключение-математика-не-заканчивается">Заключение: Математика не заканчивается
&lt;/h2>&lt;p>Возможно, вы подумали: «Отлично, с помощью GNFS можно взломать любой шифр!».
Однако шифр RSA не сдается. В современном интернете используется чудовищно огромное число под названием «RSA-2048 (около 617 цифр)».&lt;/p>
&lt;p>Каким бы сильным алгоритмом ни был GNFS, считается, что даже для взлома 270-значного числа (RSA-270) потребовались бы тысячи, а то и десятки тысяч лет, даже если бы объединили все компьютеры мира. На данный момент наши данные в LINE и банках в безопасности.&lt;/p>
&lt;p>Но что, если появится &lt;strong>«магия, способная мгновенно находить $X$ и $Y$ для любого сколь угодно гигантского числа»&lt;/strong> ?
На самом деле, самое близкое к этому — разрабатываемые сейчас &lt;strong>«квантовые компьютеры (Алгоритм Шора)»&lt;/strong> . Математически доказано, что, используя волновую природу квантовой механики, можно проигнорировать утомительную головоломку со сбором карточек и вытянуть правильный ответ за один раз.&lt;/p>
&lt;p>Бесконечная битва умов между создателями шифров (защитой) и создателями алгоритмов взлома (атакой).
Когда узнаешь, что «разложение на простые множители» и «алгебраические выражения», которые изучают в средней школе, на самом деле являются оружием, ожесточенно сражающимся на переднем крае глобальной безопасности, разве уроки математики не начинают казаться чуточку интереснее?&lt;/p>
&lt;p>Возможно, именно вы, читающий эту статью, в будущем откроете новый сильнейший алгоритм!&lt;/p>
&lt;hr>
&lt;p>&lt;em>(※Эта статья концептуализирует математическую привлекательность взлома шифров для школьников. Настоящий GNFS рассчитывается строго с использованием высшей университетской математики, такой как идеальные группы классов алгебраических числовых полей и гомоморфизмы)&lt;/em>&lt;/p></description></item><item><title>Гипотеза Коллатца</title><link>http://kenji.blog/ru/p/collatz-conjecture/</link><pubDate>Tue, 15 Jul 2025 18:03:03 +0900</pubDate><guid>http://kenji.blog/ru/p/collatz-conjecture/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B3%E3%83%A9%E3%83%83%E3%83%84%E4%BA%88%E6%83%B3/img.png" alt="Featured image of post Гипотеза Коллатца" />&lt;h1 id="действительно-ли-любое-число-в-конце-концов-становится-1--играем-с-гипотезой-коллатца">&amp;ldquo;Действительно ли любое число в конце концов становится 1?&amp;rdquo; ── Играем с гипотезой Коллатца
&lt;/h1>&lt;p>Всем привет! Это Кенджи.&lt;/p>
&lt;p>Внезапный вопрос: когда вы слышите о &amp;ldquo;правиле, по которому любое число в итоге превращается в 1&amp;rdquo;,
разве это не кажется вам немного странным?&lt;/p>
&lt;blockquote>
&lt;p>Например, 19, или 87, или даже 1000000.
Если вы следуете определенному правилу и манипулируете числами, по какой-то причине они всегда сводятся к &amp;ldquo;1&amp;rdquo;.&lt;/p>
&lt;/blockquote>
&lt;p>Эта сказочная история и есть &lt;strong>гипотеза Коллатца (Collatz Conjecture)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="для-начала-что-такое-гипотеза-коллатца">Для начала, что такое гипотеза Коллатца?
&lt;/h2>&lt;p>Сначала позвольте мне представить правила.&lt;/p>
&lt;ul>
&lt;li>
&lt;p>Старт: выберите любое &lt;strong>положительное целое число&lt;/strong>&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Операция:&lt;/p>
&lt;ul>
&lt;li>Если четное → делим пополам (n → n / 2)&lt;/li>
&lt;li>Если нечетное → умножаем на 3 и прибавляем 1 (n → 3n + 1)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>Если повторять это снова и снова, гипотеза гласит, что &lt;strong>любое число в конечном итоге достигнет 1&lt;/strong>.&lt;/p>
&lt;p>Например, если мы начнем с &lt;code>6&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Оно действительно стало &amp;ldquo;1&amp;rdquo;. С возвращением!&lt;/p>
&lt;hr>
&lt;h2 id="давайте-попробуем-это-в-коде-коллатц-на-python">Давайте попробуем это в коде: Коллатц на Python
&lt;/h2>&lt;p>Что ж, в таких случаях быстрее всего попробовать написать код!
Давайте выведем &amp;ldquo;последовательность Коллатца&amp;rdquo; с помощью Python.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">!=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">//&lt;/span> &lt;span class="mi">2&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span> &lt;span class="o">*&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">steps&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Пример: давайте начнем с 19&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">19&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При запуске:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Оно успешно достигает 1.
Пришлось сделать немало крюков, но в итоге мы на финише!&lt;/p>
&lt;p>Кстати, даже если мы начнем с 29, оно достигнет 1 таким же образом.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">pythonprint(collatz(29))
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При запуске:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">[27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>На это уходит целых 111 шагов!&lt;/p>
&lt;p>Более того, по пути оно иногда раздувается до более чем 9000.
Это тот случай, когда перед финишем делается огромный крюк.&lt;/p>
&lt;hr>
&lt;h2 id="итак-что-же-в-итоге-в-этом-такого-удивительного">Итак, что же в итоге в этом такого удивительного?
&lt;/h2>&lt;p>Удивительное в этой гипотезе то, что:&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Хотя это не доказано, похоже, что оно всегда сводится к 1, независимо от того, какое число вы берете&lt;/strong>&lt;/p>
&lt;/blockquote>
&lt;p>Вот в чем крутизна.&lt;/p>
&lt;p>А? А как насчет триллиона или квадриллиона&amp;hellip;?&lt;/p>
&lt;p>Если вы подумали об этом, то вы очень проницательны.
На самом деле, с помощью компьютеров это было проверено вплоть до &amp;ldquo;2 в 68-й степени&amp;rdquo;,
и &lt;strong>все они достигают 1&lt;/strong>. Невероятно&amp;hellip;&lt;/p>
&lt;p>Но &lt;strong>не было теоретически доказано, что &amp;ldquo;все будет именно так&amp;rdquo;&lt;/strong>.
Вот что называется &amp;ldquo;нерешенной проблемой&amp;rdquo; в мире математики.&lt;/p>
&lt;hr>
&lt;h2 id="кто-такой-мистер-коллатц">Кто такой мистер Коллатц?
&lt;/h2>&lt;p>Итак, дочитав до этого места, вы, возможно, спросите: &amp;ldquo;Кто вообще такой Коллатц?&amp;rdquo;
Я представлю его как следует!&lt;/p>
&lt;ul>
&lt;li>Имя: &lt;strong>Лотар Коллатц (Lothar Collatz)&lt;/strong>&lt;/li>
&lt;li>Гражданство: Германия&lt;/li>
&lt;li>Годы жизни: 1910 - 1990&lt;/li>
&lt;li>Профессия: Математик (активно работал в области функционального анализа и теории чисел)&lt;/li>
&lt;/ul>
&lt;p>Он предложил эту гипотезу в 1937 году,
и с тех пор, на протяжении более 80 лет, &lt;strong>никто не смог ее ни доказать, ни опровергнуть&lt;/strong>.&lt;/p>
&lt;p>Кстати, эта проблема настолько проста, но в то же время невероятно глубока,
что даже Пол Эрдёш (супер-известный математик) сказал нечто подобное.&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;Математика еще не созрела для решения проблемы Коллатца.&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>Иными словами, существует теория, что человеческая математика еще не доросла до этой загадки&amp;hellip;&lt;/p>
&lt;hr>
&lt;h2 id="сложные-формулы-не-нужны">&amp;ldquo;Сложные формулы&amp;rdquo; не нужны
&lt;/h2>&lt;p>Прелесть гипотезы Коллатца в том, что &lt;strong>каждый может с ней поиграть&lt;/strong>.&lt;/p>
&lt;p>Вам нужны только ручка и бумага.
Если вы напишете код на Python, вы сможете проверять это автоматически.
И при этом &lt;strong>передовые математики всерьез ломают над ней голову&lt;/strong>.&lt;/p>
&lt;p>Разве это не захватывающе?&lt;/p>
&lt;hr>
&lt;h2 id="бонус-код-для-массовой-проверки">Бонус: Код для массовой проверки
&lt;/h2>&lt;p>Я также приложу код для проверки множества чисел за один раз.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="k">for&lt;/span> &lt;span class="n">n&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">21&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">steps&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">collatz&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> (количество шагов: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="nb">len&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">steps&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">)&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Этот код сразу выведет последовательности Коллатца для чисел от &amp;ldquo;1 до 20&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="вывод-этот-мир-действительно-странный">Вывод: Этот мир действительно странный
&lt;/h2>&lt;p>Итак, это гипотеза Коллатца.&lt;/p>
&lt;ul>
&lt;li>Хотя она очень проста&lt;/li>
&lt;li>Никто не может ее доказать&lt;/li>
&lt;li>Это огромная проблема в математическом мире&lt;/li>
&lt;/ul>
&lt;p>Она оказалась чем-то вроде сгустка тайн.&lt;/p>
&lt;p>Даже новички в программировании могут попробовать ее, так что, пожалуйста, поиграйте!&lt;/p>
&lt;hr>
&lt;h2 id="рекомендуемые-ссылки-для-тех-кому-интересно">Рекомендуемые ссылки (для тех, кому интересно)
&lt;/h2>&lt;ul>
&lt;li>&lt;a class="link" href="https://ru.wikipedia.org/wiki/%d0%93%d0%b8%d0%bf%d0%be%d1%82%d0%b5%d0%b7%d0%b0_%d0%9a%d0%be%d0%bb%d0%bb%d0%b0%d1%82%d1%86%d0%b0" target="_blank" rel="noopener"
>Википедия: Гипотеза Коллатца&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://arxiv.org/abs/1909.03562" target="_blank" rel="noopener"
>Статья Теренса Тао (на английском)&lt;/a>&lt;/li>
&lt;li>Также может быть интересно создать визуализированную версию на Python! (Если будет запрос, я ее сделаю)&lt;/li>
&lt;/ul>
&lt;hr>
&lt;p>Если вы хотите узнать больше историй о &amp;ldquo;таинственной математике × программировании&amp;rdquo;,
пожалуйста, не стесняйтесь писать &amp;ldquo;расскажи больше&amp;rdquo;.
В будущем я расскажу вам о гипотезе Римана, простых числах и многом другом!&lt;/p>
&lt;hr>
&lt;p>📮 Конец!&lt;/p>
&lt;hr></description></item><item><title>Как включить KaTeX (отображение формул в стиле LaTeX) в hugo</title><link>http://kenji.blog/ru/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</link><pubDate>Fri, 31 Mar 2023 23:11:26 +0900</pubDate><guid>http://kenji.blog/ru/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/</guid><description>&lt;img src="http://kenji.blog/p/hugo%E3%81%A7katexlatex%E9%A2%A8%E6%95%B0%E5%BC%8F%E8%A1%A8%E7%A4%BA%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/img.png" alt="Featured image of post Как включить KaTeX (отображение формул в стиле LaTeX) в hugo" />&lt;h1 id="что-такое-katex">Что такое KaTeX?
&lt;/h1>&lt;p>KaTeX — это JavaScript-библиотека для отображения математических формул в стиле LaTeX в HTML.&lt;/p>
&lt;p>В частности, вы можете отображать формулы, подобные этой:&lt;/p>
$$f(x) = x^2 + x + 41$$
&lt;p>Существуют и другие библиотеки для отображения формул в стиле LaTeX, но KaTeX славится своей простотой и скоростью.&lt;/p>
&lt;h1 id="как-внедрить-в-hugo">Как внедрить в hugo
&lt;/h1>&lt;ol>
&lt;li>Создайте новый файл &lt;code>layouts/partials/math.html&lt;/code> в структуре папок hugo.&lt;/li>
&lt;/ol>
&lt;p>Содержимое должно быть следующим:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">&amp;lt;link rel=&amp;#34;stylesheet&amp;#34; href=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.css&amp;#34; integrity=&amp;#34;sha384-vKruj+a13U8yHIkAyGgK1J3ArTLzrFGBbBc0tDp4ad/EyewESeXE/Iv67Aj8gKZ0&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script defer src=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/katex.min.js&amp;#34; integrity=&amp;#34;sha384-PwRUT/YqbnEjkZO0zZxNqcxACrXe+j766U2amXcgMg5457rve2Y7I6ZJSm2A0mS4&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script defer src=&amp;#34;https://cdn.jsdelivr.net/npm/katex@0.16.4/dist/contrib/auto-render.min.js&amp;#34; integrity=&amp;#34;sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05&amp;#34; crossorigin=&amp;#34;anonymous&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;script&amp;gt;
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">document.addEventListener(&amp;#34;DOMContentLoaded&amp;#34;, function() {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> renderMathInElement(
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> document.body,
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> delimiters: [
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;$$&amp;#34;, right: &amp;#34;$$&amp;#34;, display: true},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;\\[&amp;#34;, right: &amp;#34;\\]&amp;#34;, display: true},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;$&amp;#34;, right: &amp;#34;$&amp;#34;, display: false},
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> {left: &amp;#34;\\(&amp;#34;, right: &amp;#34;\\)&amp;#34;, display: false}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> });
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> });
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&amp;lt;/script&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="2">
&lt;li>Затем добавьте следующий код в существующий файл &lt;code>layouts/partials/extend_head.html&lt;/code>.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">{{ if or .Params.math .Site.Params.math }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ partial &amp;#34;math.html&amp;#34; . }}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">{{ end }}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;ol start="3">
&lt;li>Теперь вы готовы использовать KaTeX.&lt;/li>
&lt;/ol>
&lt;p>Добавив &lt;code>math: true&lt;/code> в front matter вашей страницы, вы сможете активировать KaTeX.&lt;/p>
&lt;ol start="4">
&lt;li>Все, что вам нужно сделать, это написать формулы в стиле LaTeX в теле вашей статьи.&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">$$ e^{i \pi} = -1 $$
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При написании, как показано выше, это будет отображаться следующим образом:&lt;/p>
$$ e^{i \pi} = -1 $$
&lt;h1 id="ссылки">Ссылки
&lt;/h1>&lt;ul>
&lt;li>&lt;a class="link" href="https://reorx.github.io/hugo-PaperModX/docs/math-typesetting/" target="_blank" rel="noopener"
>Math Typesetting | PaperModX&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://katex.org/docs/autorender.html" target="_blank" rel="noopener"
>KaTex Auto-render Extension&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://www.storange.jp/2017/02/katex.html" target="_blank" rel="noopener"
>Введение в KaTeX | The Strange Storage&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>