АннотацияЭта первая статья из цикла "Доказательство гипотезы Коллатца", и на сегодняшний день единственная статья (в мире), раскрывающая истинную природу гипотезы Коллатца.
В этой статье автор подробно разбирает алгоритм гипотезы Коллатца, его структуру, свойства и особенности.
Все последующие статьи автора будут опираться на эту работу.
Ключевые слова: гипотеза Коллатца, алгоритм, рекурсия, шаг рекурсии, рекурсивный спуск, рекурсивный подъем.
§1. Постановка вопросаГипотеза Коллатца - это одна из нерешенных проблем математики. Получила широкую известность благодаря простоте формулировки:
Берём любое натуральное число
; Если оно чётное, разделим его на 2, а если нечетное, то умножаем на 3 и прибавляем 1 (получаем
); Над полученным числом выполняем те же самые действия, и так далее.
Какое бы начальное число
мы ни взяли, рано или поздно мы получим единицу, - так гласит гипотеза. И надо это доказать.
§2. ВведениеВ математических кругах уже давно ходят легенды о недоказуемости этой задачи. Так, например, американский математик J. Lagarias вспоминает:
"В 1960-м более месяца весь Йельский университет безрезультатно трудился над этой задачей. Это было что-то невероятное. Такая же участь постигла и исследователей Чикагского университета, когда я сообщил им об этой задаче. Ходила шутка, что
- это заговор советских ученых против США, чтобы снизить научный потенциал Америки и замедлить наши исследования в других областях."
В 2007 г. математики S. Kurtz и J. Simon пришли к выводу, что в такой постановке вопроса задача
не доказуема.
В 2010 г. Американское математическое сообщество выпустило сборник "Безграничный вызов для математики: 3x+1". Эта книга рассказывает о неудачных попытках решить эту задачу.
Несмотря на всё это, автор, Михаил Мартынов, нашел в себе силы и раскрыл истинную суть гипотезы Коллатца. Поэтому данная статья является (на сегодняшний день) прорывом в области изучения
и показывает, что гипотеза Коллатца – это всего лишь часть алгоритма. Для доказательства гипотезы Коллатца нужно перейти к совсем другой задаче.
§3. Полная версия алгоритмаГипотеза выполняет действия
и
, тогда обратные действия:
и
*2.
Сформулируем это так: Возьмем любое натуральное число
; Если оно нечетное, тогда умножаем на 2. Если чётное, тогда отнимем из него единицу
; Если результат деления
будет целый, тогда это будет следующее число; Если нет, то умножаем
на 2; И вообще, всегда умножаем
на 2 для порождения всё новых и новых веток.
Посмотрим на последовательности по данной схеме:
1, 2, 4, 1
1, 2, 4, 8, 16, 5
1, 2, 4, 8, 16, 5, 10, 3
1, 2, 4, 8, 16, 5, 10, 20, 40, 13
1, 2, 4, 8, 16, 5, 10, 20, 40, 13, 26, 52, 17
1, 2, 4, 8, 16, 5, 10, 20, 40, 13, 26, 52, 17, 34, 11
1, 2, 4, 8, 16, 5, 10, 20, 40, 13, 26, 52, 17, 34, 11, 22, 7
1, 2, 4, 8, 16, 5, 10, 20, 40, 13, 26, 52, 17, 34, 11, 22, 7, 14, 28, 9
1, 2, 4, 8, 16, 5, 10, 20, 40, 13, 26, 52, 17, 34, 11, 22, 44, 88, 29, 58, 19
Обратим внимание, что это обычные последовательности Коллатца, только они развернуты в обратном направлении. Распишем всё это более подробно.
Выполним преобразование для 1:
Число 1. Умножаем на 2. Получаем 2.
Выполним преобразование для 2:
Число 2. Умножаем на 2. Получаем 4.
Выполним преобразование для 4:
Число 4.
.
Число 4. Умножаем на 2. Получаем 8.
Выполним преобразование для 8:
Число 8. Умножаем на 2. Получаем 16.
Выполним преобразование для 16:
Число 16.
.
Число 16. Умножаем на 2. Получаем 32.
Итак, мы на пороге первой развилки! 1, 2, 4, 8, 16 - здесь у нас развилка на 5 и 32.
Зайдем на развилку 5:
1, 2, 4, 8, 16, 5, 10 - здесь у нас снова развилка на 3 и 20.
1, 2, 4, 8, 16, 5, 10, 3, ...
1, 2, 4, 8, 16, 5, 10, 20, ...
Вернемся к числу 32:
1, 2, 4, 8, 16, 32, 64 - здесь у нас снова развилка на 21 и 128.
1, 2, 4, 8, 16, 32, 64, 21, ...
1, 2, 4, 8, 16, 32, 64, 128, ...
На этом остановимся.
Алгоритм, который мы только что описали - это рекурсия. Алгоритм
воспроизводит действия
, но только в обратном порядке.
Таким образом,
- это развернутая в обратном направлении рекурсия от рекурсии
. Именно этим и обусловлен тот факт, что
, повторяя зеркальные действия
, спускается к единице.
Другими словами, рекурсия
создала для нас дерево чисел. Рекурсия
еще не знает, что это за дерево, но шагая по нему обречена спуститься до 1.
§4. Первые выводыВо-первых, такой вид рекурсии в математике называется возвратная рекурсия или рекурсия пробега (см. книгу С.Клини, Введение в метаматематику, [гл. IX, §46]).
Во-вторых, как очевидно, рекурсия начинается с 1. Единица - прародитель всех веток.
В-третьих, спуск к единице для каждого числа происходит по своей уникальной ветке.
В-четвертых, единица не может иметь другого прародителя, кроме самого себя, потому что
и
дают для единицы - единицу (цикл 1, 4, 2, 1).
В-пятых, гипотеза Коллатца - это алгоритм, образованный от алгоритма
, и поэтому сохраняющий все его свойства.
§5. Чётные числаШаг рекурсии
кажется нам невероятно сложным из-за наличия чётных чисел. Но влияют ли они на рекурсию?
Давайте посмотрим на шаг рекурсии:
1
1, 2
1, 2, 4
1, 2, 4, 1
1, 2, 4, 8, 16
1, 2, 4, 8, 16, 5
1, 2, 4, 8, 16, 32
1, 2, 4, 8, 16, 5, 10
1, 2, 4, 8, 16, 5, 10, 3
1, 2, 4, 8, 16, 5, 10, 20, 40
1, 2, 4, 8, 16, 5, 10, 20, 40, 13
...
Применим бесконечное умножение на 2, и продолжим каждую последовательность:
Складывается впечатление, что чётные числа выполняют роль связующих между нечетными числами, а сам шаг основан только на нечетных.
Давайте это проверим.
§6. Нечётные числаПусть
- нечетное число, тогда, чтобы двигаться вперед по правилу
, мы должны:
- Умножить
*2, потому что
- нечетное число.
- Предположим, после
находится нечетное число
. Тогда справедливо равенство:
.
- Получаем
- Результат
будет целым только в том случае, если
.
Тогда для
удвоим количество чётных чисел:
- Умножаем
на 2, и снова на 2.
- Предположим, после
находится нечетное число
. Тогда справедливо равенство:
.
- Получаем
- Результат
всегда будет целый для
.
§7. Хвост рекурсииОбратим внимание, что получив на любом шаге нечетное число вида
, мы не сможем продолжить генерацию чисел
, или
, или
, или
или любой другой степени двойки
.
Потому что если
, то решение уравнения
сводится к виду:
. Оно не имеет целочисленного решения.
Числа вида
мы будем называть хвостом рекурсии.
§8. Особая связь ()Алгоритм
подразумевает постоянное умножение на 2.
Чтобы мы ни делали, мы всегда умножаем на 2. Именно в этом кроется ответ на вопрос, почему все нечетные числа в последовательностях Коллатца отделены друг от друга чётными.
В таком случае возникает ситуация, когда нечетное число может дать нам сразу две ветки нечетных чисел (как на рисунке выше). Т.е. нечетное число "раздваивается" на два нечетных числа.
Первый случай.Как мы уже выяснили, если существует такое нечетное число
, то из этого следует, что также существует нечетное число
.
Но если мы умножим
на 8, то обязательно будет существовать число:
. Потому что любое число
можно представить как
, тогда уравнение
сводится к решению:
, что, конечно, имеет целочисленное решение.
Есть ли связь между полученными таким образом числами:
и
?
Да, связь есть.
Другими словами, из нечетного числа
мы можем получить сразу два числа:
и число
Второй случай.Как мы уже выяснили, если существует такое нечетное число
, то из этого следует, что также существует и нечетное число
.
Но если мы умножим
на 16, то обязательно будет существовать число:
. Потому что любое число
можно представить как
, тогда уравнение
сводится к решению:
, что, конечно, имеет целочисленное решение.
Есть ли связь между полученными таким образом числами:
и
?
Да, связь есть.
Другими словами, из нечетного числа
мы можем получить сразу два числа:
и число
Таким образом мы установили шаг рекурсии между всеми нечетными числами:
для случая
,
для случая
,
для случая
,
и постоянное применение к уже полученным числам
.
§9. Новый алгоритмМы выкинули все чётные числа из рекурсии, и упростили алгоритм до применения всего лишь трех правил
,
и
. Распишем всё это более подробно.
Итерация №1.
Число 1.
, применяем
Число 1.
Итерация №2.
Число 5.
, применяем
Число 5.
Итерация №3.
Число 3.
, хвост рекурсии.
Число 3.
Итерация №4.
Число 13.
, применяем
Число 13.
Итерация №5.
Число 17.
, применяем
Число 17.
Итерация №6.
Число 11.
, применяем
Число 11.
Итерация №7.
Число 7.
, применяем
Число 7.
и т.д.
§10. Как получить число 27 ?С точки зрения рекурсии
ей без разницы какое число связано с каким.
С точки зрения человеков, они любят придумывать аномалии.
Для того чтобы получить число 27 нам нужно просто запустить рекурсию из единицы и прогуляться по следущей ветке:
1
5
3
13
53
35
23
15
61
81
325
433
577
769
3077
2051
1367
911
607
2429
1619
1079
719
479
319
425
283
377
251
167
111
445
593
395
263
175
233
155
103
137
91
121
161
107
71
47
31
41
27.
§11. Реализация рекурсии на компьютереРекурсия является простейшей, с точки зрения реализации. Для генерации новых чисел нужно рекурсивно выполнять следующий кусок кода, начиная с единицы:
(Оффтоп)
Код:
Процедура ПрименитьПравила(n)
Если (n % 3 = 1) Тогда
ПервоеЧисло = (4*n - 1)/3;
ВтороеЧисло = 4*n + 1;
КонецЕсли;
Если (n % 3 = 2) Тогда
ПервоеЧисло = (2*n - 1)/3;
ВтороеЧисло = 4*n + 1;
КонецЕсли;
Если (n % 3 = 0) Тогда
ПервоеЧисло = 0; // хвост рекурсии
ВтороеЧисло = 4*n + 1;
КонецЕсли;
ДобавитьНовоеЗначениеВТаблицу(ПервоеЧисло);
ДобавитьНовоеЗначениеВТаблицу(ВтороеЧисло);
КонецПроцедуры
Для покрытия интервала от [1 ... 100] требуется 500 итераций.
Для покрытия интервала от [1 ... 1000] требуется 25000 итераций.
Для покрытия интервала от [1 ... 10000] требуется 1 млн. итераций.
---
С уважением,
Автор статьи: Михаил Мартынов, Россия, Оренбург, программист.