В сети и в развлекательной литературе нередко можно встретить разные математические фокусы: вас просят задумать какое-то число, затем выполнить с ним ряд арифметических действий. После этого собеседник точно называет получившееся у вас число. Большинство этих фокусов основано на том, что исходное число в ходе преобразований незаметно подменяется другим, а затем за несколько шагов сводится к известному ответу. Такие фокусы, например, можно встретить в книгах Якова Перельмана.

Визуализация гипотезы Коллатца с сайта www.algoritmarte.com
Визуализация гипотезы Коллатца с сайта www.algoritmarte.com

Гипотеза Коллатца оставляет все подобные фокусы позади. На первый взгляд может показаться, что это тоже какой-то фокус с подвохом. Однако при внимательном рассмотрении оказывается, что никакого подвоха нет. Вы загадываете число и несколько раз повторяете для него одно из двух арифметических действий. Удивительно, что результат этих действий будет всегда одним и тем же. Или не всегда? Этого пока наверняка никто не знает, но получить что-то другое пока никому не удалось.

Давайте попробуем. Итак, загадайте любое целое положительное число. Дальше следуйте простому алгоритму:

1. Если число чётное, разделите его на 2. Иначе умножьте его на 3 и прибавьте 1.
2. Повторите шаг 1 с полученным числом.

Как вы думаете, что мы получим в итоге, если будем много раз выполнять шаги 1 и 2?

Немецкий математик Лотар Коллатц считает, что для любого целого положительного числа мы рано или поздно получим сначала 4, потом закономерно — 2, а потом 1. И после этого мы будем ходить по кругу, вновь и вновь получая цепочку 4–2–1. Самое удивительное в том, что мы придём к такому результату, с какого бы числа мы ни начали.

Лотар Коллатц / Wikimedia Commons
Лотар Коллатц / Wikimedia Commons

Не верите? Это не сложно проверить, тем более, что условия задачи очень просты. Пожалуй, на данный момент это простейшая формулировка нерешённой математической задачи — умножать и складывать умеет каждый. Справедливости ради стоит заметить, что для некоторых исходных чисел считать придётся долго. Так что для загадывания в дружеской компании этот «фокус» если и подойдёт, то только для небольших исходных чисел. Но мы всегда можем написать маленькую программку — куда уж проще: цикл с одним условием. Вот мой вариант простейшей программы на любимом Delphi:

program collatz;
{$APPTYPE CONSOLE}
uses
  SysUtils, Classes;
var
   s: string;
   num, steps, max: integer;   
begin
   readln(s);
   num:=strtoint(s);  // Исходное число
   steps:=0;          // Счётчик шагов
   max:=num;          // Максимальное промежуточное число
   while (num<>1) do
   begin
      if odd(num) then num:=num*3+1  // Число нечётно
      else num:=num div 2;           // Число чётно
      if num>max then max:=num;
      inc(steps);
      writeln(inttostr(num));
   end;
   writeln('Steps - '+inttostr(steps));
   writeln('Max - '+inttostr(max));
end.

При желании попробуйте сами немного поэкспериментировать с этой гипотезой. Кстати, в сети можно найти много интересных визуализаций, показывающих распределение решений и шагов для разных исходных данных. А ещё есть сайт, который содержит варианты реализации этой задачи для множества языков программирования.

Фрактал Коллатца — визуализация с сайта soulofmathematics.com
Фрактал Коллатца — визуализация с сайта soulofmathematics.com

Знаете, что ещё интересно? Утверждение Коллатца не зря называется гипотезой — пока никто так и не смог придумать её логическое доказательство. Лотар Коллатц сформулировал свою гипотезу ещё в 30-х годах 20 века и с тех пор предпринимались многочисленные попытки доказать или опровергнуть это утверждение с помощью строгой математической логики. Но всё, чего смогли добиться математики, — это просто проверить гипотезу экспериментально. В этой задаче программный поиск решения по сути ничем не ограничен, кроме вычислительных мощностей. Пока гипотеза не опровергнута — даже для огромных исходных чисел рано или поздно алгоритм достигает 1. Для решения этой задачи даже был организован проект добровольных распределённых вычислений. Но для классической математики этого недостаточно. Числа иногда бывают очень коварны. Где-то среди неимоверно огромных исходных чисел может скрываться такое исходное число, для которого гипотеза не подтвердится.

Кстати, у гипотезы Коллатца есть ещё несколько менее известных названий:

  • дилемма 3n+1 — это вариант шага для нечётных чисел;

  • гипотеза градины — графики последовательностей чем-то напоминают траектории движения града в атмосфере;

  • гипотеза Улама — по имени польского математика Станислава Улама;

  • проблема Какутани — по имени японского математика Сидзуо Какутани;

  • гипотеза Туэйтса — по имени английского математика Брайна Туэйта;

  • алгоритм Хассе — по имени немецкого математика Хельмута Хассе;

  • сиракузская проблема.

По количеству разнообразных наименований видно, что математиков всерьёз заинтересовала эта проблема. Однако оказалось, что это одна из тех «вредных» задач, которые очень легко формулируются, но чрезвычайно тяжело решаются. Прямо как Великая теорема Ферма.

Числа в этой задаче ведут себя крайне странно: в некоторых случаях вычисления доходят до единицы очень быстро, а иногда промежуточный итог добирается до довольно большого числа, а затем быстро «срывается» вниз — до самой единицы. Например, для начального числа 27 промежуточный итог достигает 9232, а затем за несколько шагов быстро спускается до 1. В итоге количество шагов для 27 равно 111. И это при том, что для 26 оно равно 10 (максимальное промежуточное число — 40), а для 28 — 18 (максимальное промежуточное число — 52).

Хоть математикам и не удалось полностью логически подтвердить или опровергнуть гипотезу, они всё же кое-чего достигли. Как это часто бывает, учёные подбираются к решению постепенно. Совсем недавно, 8 сентября 2019, математик из Калифорнийского университета Теренс Тао опубликовал доказательство, где показано, что гипотеза Коллатца, по меньшей мере, «почти» верна «почти» для всех чисел. История того, как математики штурмовали эту проблему и о том, чего удалось достичь Теренсу Тао подробно описана в этой статье.

В журналах и в сети уже неоднократно появлялись варианты доказательства гипотезы Коллатца. Однако, к большому сожалению, все они либо содержали ошибки, либо были неполными. Так что гипотеза пока остаётся гипотезой, а ещё — крутым и красивым математическим фокусом.

Статья была впервые опубликована на другом ресурсе 10 марта 2021.

Комментарии (100)


  1. Finesse
    28.12.2021 09:28
    +19

    Видео по этой теме (RU):


    1. RigelNM
      28.12.2021 09:48
      +3

      И ещё о том же, но под другим углом.

      https://youtu.be/s-LHvJTTF04


  1. Alonerover
    28.12.2021 10:50
    +2

    Определённо результат есть следствие самих правил.

    Возникает вопрос - как будет меняться результат если менять правила?


    1. RigelNM
      28.12.2021 12:54

      В видео по моей ссылке как-раз об этом.


    1. Natasha2021
      29.12.2021 08:40

      извините за глупый вопрос - зачем нечетное число сначала умножать на 3? При умножении нечетного числа на 3 все равно ведь получим нечетное, затем, чтобы получить четноеЮ прибавляем 1. Вроде бы если просто к исходному нечетному числу прибавить 1 (не умножая его предварительно на 3), получим четное число, а далее идем согласно алгоритму. Результат будет тем же (4 - 2 -1), только придем к нему короче. Можете, пожалуйста, объяснить, в чем смысл умножения на 3?


      1. Botu
        29.12.2021 10:03
        +2

        Подозреваю, чтобы оно точно стало не простым... Если в формулировке задачи было - берем любое непростое число - это чуть чуть сложнее, чем берем любое число и умножаем на 3. Хотя можно по программе проверить - работает ли гипотеза при умножении на 7 например ...


      1. Milliard
        29.12.2021 12:16
        +4

        Если просто прибавить 1, то в итоге гарантированно придем к единице, доказать просто. В случае 3*n+1 доказать, что для любого натурального n результат будет единица, пока никому не удалось, т.к. не исключены другие два варианта: результат устремится к бесконечности или результат замкнется в цикле, отличном от 4-2-1.


        1. vassabi
          29.12.2021 14:11

          ... или может быть еще один цикл "четное-четное-нечетное", который не 4-2-1


          1. Nikita22007
            29.12.2021 20:18
            +2

            Другого цикла из 3х элементов быть, скорее всего, не может. Доказывается просто
            Обозначим последнее число (нечётное) за X. Согласно циклу можно получить последовательность "3x+1, (3x+1)/2, (3x+1)/4", она же "4x, 2x, x". Выводим формулу: (3x+1)/4=x => x=1. Других решений нет


            1. Angmarets
              29.12.2021 21:00

              В видео из первого комментария утверждают, что есть пруф на то, что если цикл и существует - он не может включать меньше чем 180 миллиардов чисел.


      1. rpc1
        29.12.2021 19:12

        Тогда,насколько я понял, мы не придем к результату 4-2-1, который будет повторяться бесконечное количество раз


  1. Vsevo10d
    28.12.2021 10:52
    +1

    Что-то я не особо вижу тут математической красоты. Единственным препятствием деления до единицы было бы получить простое число, поэтому условия таковы, что даже если мы на него натыкаемся, то "обходим" с помощью двух различных множителей. Процесс приводит к тому, что мы рано или поздно натыкаемся на ряд степени двойки, который автоматически "сгорает" до единицы. Как-то не сильно сложнее перельмановских задачек.


    1. Wizard_of_light
      28.12.2021 11:00
      +12

      Нет доказательства, что на каком-то числе не существует замкнутой последовательности, которая бесконечно крутится в цикле возрастания-убывания.


      1. PsihXMak
        28.12.2021 11:14
        +15

        Знаете, порой мне кажется, что за таким огромным количеством математических гипотез, мы теряем из виду какую то базовую концепцию, которая бы дала объяснение, как со всем этим работать. Подобно мнимым числам.


        1. Wizard_of_light
          28.12.2021 15:09
          +3

          Конечно упускаем, но тут уж такое - Вселенная не только велика, но и и не задокументирована. Так что всё наоборот - на доказательстве/для доказательства некоторого множества таких гипотез базовые концепции потом и строятся.


        1. leshabirukov
          28.12.2021 15:41
          +2

          Вот нет, даже если вдруг гипотетическое доказательство Коллатца сопутствующим ущербом закроет еще сколько-то актуальных гипотез, это будет небольшое их подмножество. Математика доказано (Гёделем) неисчерпаема.


          1. charypopper
            28.12.2021 16:04
            +1

            С Гёделем, если вы про полноту, то там не все так просто. В доказательстве нет ошибок, но он оно построено на законе исключённого третьего. Он кажется логичным, и в большинстве случаев даёт результат, который отражается в мире. Но такие доказательства, построенные от противного - имхо, показывают что не все так радужно. И, возможно, в целом - работает многозначная логика, и тогда часть докозателсьв неприменимы.


            1. leshabirukov
              28.12.2021 17:10
              +3

              Моя позиция сформирована под влиянием книги "Гёдель, Эшер, Бах" Хофштадтера, всячески рекомендую.


            1. blaze79
              29.12.2021 15:44
              -3

              вам бы с обычной логикой разобраться


            1. mayorovp
              29.12.2021 23:25
              +1

              Тут хохма в том, что сам ввод многозначной логики уже означает выделение верных, но недоказуемых утверждений.


            1. napa3um
              30.12.2021 21:43

              Очень плюсую упомянутую в треде "Гёдель, Эшер, Бах" Хофштадтера, там он (помимо других метафор) поэтически обобщил до фундамента функцию математика, исследующего математические структуры - это не доказательства или опровержения теорем, это поиск симметрии и отклонения от неё. Такой минимальный квант математической мысли, кирпичик (хотьсколькозначной) логики, которым разум исследует вселенную (в том числе математическую) :).


    1. PsihXMak
      28.12.2021 11:03
      +3

      Согласен. Простое перемалывание чисел до тех пор, пока мы не наткнёмся на очередную степень двойки.


      1. Nacreous1991
        28.12.2021 12:39

        Ну например очевидно, что к примеру ряд f(n)=f(n-1)+1 и f(0)=1 никогда не наткнется на степень двойки. Почему же тут мы уверены что всегда будем натыкаться на степень двойки


        1. svr_91
          28.12.2021 16:29
          +6

          Либо это определение арифметической последовательности, либо я туплю...


          1. Nacreous1991
            28.12.2021 18:31
            +1

            Все верно. Только там ошибка. Надо f(n)=f(n-1)*2+1 и f(0)=1


        1. shvez
          28.12.2021 17:57
          +2

          ну ряды разные и судить по одному о свойствах другого вряд ли в этом случае поможет

          Тут наверное фокус не в степени двойки, а в том, что всё больше становится чётных чисел, которые дают после деления чётное число. таким образом алогоритм сваливается к маленьким числам, где уже достигает степени двойки.
          Хотя это всё гипотезы :)


          1. Nacreous1991
            28.12.2021 18:27
            +3

            Чётных чисел всегда половина


            1. Mavolio-Bent
              29.12.2021 08:39
              +5

              Не совсем верно. Четных чисел столько же сколько всех чисел (натуральных или целых)


              1. KvanTTT
                29.12.2021 17:19
                +2

                Но не действительных :)


              1. eaglebuk
                29.12.2021 19:12
                +2

                К сожалению, это так. Хотя здравый смысл подсказывает, что во множестве чётных чисел не хватает некоторых чисел, входящих во множество целых)


                1. masai
                  29.12.2021 19:24
                  +2

                  Здравый смысл плохо работает с бесконечностями. Например, аксиома выбора тоже кажется очевидной, но приводит к парадоксу удвоения шара.


                  1. DieselMachine
                    29.12.2021 21:05
                    +3

                    Нет, тут дело не в аксиоме выбора. Парадокс удвоения шара возможен потому что свободная группа с двумя образующими допускает специальное разложение (https://en.wikipedia.org/wiki/Paradoxical_set). Это связано с тем что шар вложен в трёхмерное Евклидово пространство, а на плоскости такой парадокс уже невозможен.

                    А аксиома выбора явно или неявно используется во многих местах, в том числе и в доказательстве этого парадокса, и без неё многие теоремы просто не могут быть доказаны.


                    1. masai
                      29.12.2021 23:59
                      +1

                      Да, пример неудачный, согласен. :)

                      Ну, в любом случае парадокс от аксиомы выбора зависит. Я хотел привести пример, когда из чего-то очевидно следует контринтуитивная результат. Но ничего конкретного в голову сейчас не приходит. (Вернее, приходит половина математики. :))

                      Вы бы что предложили?


                      1. DieselMachine
                        30.12.2021 18:40

                        Например, Канторово множество, которое имеет меру нуль, но тем не менее его мощность континуум


            1. Botu
              29.12.2021 12:11
              +1

              на каждом новом этапе мы как минимум приводим число к четному и на следующим оно в 2 раза уменьшается, при этом уменьшаться может несколько раз подряд, а увеличение в 3 раза несколько раз подряд идти точно не может...


      1. LeXaNe
        28.12.2021 12:39
        +10

        Простое перемалывание чисел до тех пор, пока мы не наткнёмся на очередную степень двойки

        Простое, да не совсем. Если изменить условие и вместо +1 сделать -1, то уже с числа 5 мы не выходим на степень двойки. 5-14-7-20-10-5...

        Если и есть такое число, что приводит к бесконечному циклу, то результат преобразований не должен опускаться ниже уже проверенных чисел


      1. leok
        28.12.2021 21:09
        +1

        Попробуйте доказать, что следующее число должно делится на степень двойки выше чем 1. Или что средняя степень двойки выше, чем log(3)/log(2). То, что гипотеза кажется рабочей на небольших числах, которые мы можем посчитать, ничего не значит.

        Особенно Skewes' number


    1. masai
      28.12.2021 14:23
      +9

      Гипотеза Пуанкаре тоже в некотором роде перельмановская задачка. :)


  1. MATAS-T-E
    28.12.2021 12:39

    А как по научному оформить вариант решения, если он есть, и где публиковать?


    1. LeXaNe
      28.12.2021 12:46
      +10

      Публикуй здесь, на Хабре. Тут много математиков, которые укажут, где ошибка(а она найдется с точностью 99,99%)


      1. Alexandroppolus
        28.12.2021 12:53
        +6

        Не маловато ли девяток?


        1. LeXaNe
          28.12.2021 13:05
          +26

          Ага, зажал, для себя берегу. Планировал на выходных доказать гипотезу Римана ))


      1. tenzink
        28.12.2021 18:13
        +15

        Ландау заказал в университетской типографии 500 бланков со следующим текстом: «Уважаемый …! Благодарю Вас за присланную Вами рукопись с доказательством Великой теоремы Ферма. Первая ошибка находится на стр. … в строке …»


        1. OBIEESupport
          29.12.2021 22:44
          -1

          Алексей Савватеев на канале Маткульт-привет! недавно повторил его подвиг в видео. Ничего, так все теоремы без "великих математиков" в Кембридже и Оксфорде докажут. Нашим только крошки с их десктопов упадут.


    1. Grigo52
      28.12.2021 15:24
      +2

      Да где угодно, главное опубликовать


    1. vzhilin
      28.12.2021 16:05
      +4

      Оформите решение в системе coq.


  1. sergeyns
    28.12.2021 12:54
    +1

    Фрактал Коллатца чем то на Мандельброта похож..


  1. pavelsc
    28.12.2021 13:00
    +2

    const test = x => x%2 === 0 ? x/2 : x*3+1;

    const run = x => { if (x!==4) { console.log(x); run(test(x)) }};

    Кто хочет в браузере погонять


  1. LeXaNe
    28.12.2021 14:04
    +2

    Когда то давно гонял числа по данной гипотезе. При больших числах (число в степени несколько тысяч и больше) количество шагов становится одинаковым у большинства соседних чисел


  1. ed007
    28.12.2021 14:09

    Ожидал что-то поэффектнеее Парадокса Монти Холла, по крайней мере заголовок именно это и обещал.


    1. Alexandroppolus
      28.12.2021 14:40
      +2

      Не уверен, что сабж является самым крутым фокусом, но, имхо, уж покрупнее Монти-Холла (да и в тервере, кстати, есть более забавные штуки, например нетранзитивные кости или игры с рандомизированной стратегией).


  1. WilmShakespear
    28.12.2021 15:24
    -5

    Так себе фокус. По-моему, всё очевидно. Зачем умножать на 3 в условии задачи? Можете сразу прибавлять 1 к выбранному нечетному числу и поворять шаг 1, получите то же самое с той же сутью.


    1. emaxx
      28.12.2021 15:39
      +2

      Нет, это совсем другое. В гипотезе Коллатца, например, из 11 переходим в 34, и оттуда в 17. Это гораздо более "рандомная" последовательность, чем +1 и /2. Полная последовательность, начиная с 11, будет выглядеть 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1.


    1. DoNotPanic
      28.12.2021 16:04
      +2

      Интуитивно кажется, что вы правы, и 3-ка здесь только для запутывания, так как работа с ней делает последовательность менее очевидной.
      Но если задачи эквивалентны, это ещё надо строго доказать… И пока не известно, доказательство чего проще (и правильна ли гипотеза из статьи в принципе).


    1. Wizard_of_light
      28.12.2021 16:19
      +1

      По-моему, всё очевидно. Зачем умножать на 3 в условии задачи?

      Как раз для того чтобы было неочевидно. Навскидку кажется очевидным иное - число чётных и нечетных чисел в случайной выборке равно, четные делятся пополам, нечетные умножаются на 3, таким образом средний результат должен вроде как представлять серию умножений на 3/2, и в результате должен бесконечно возрастать. Однако для любых чисел последовательность с завидным постоянством, немного побрыкавшись, приводит к единице. Парадокс.


      1. khajiit
        28.12.2021 17:49
        +1

        Не должен. +1 приводит любое нечетное к четному.


      1. gchebanov
        28.12.2021 18:05
        +4

        Не, тут всегда известно что сразу после умножения на 3 последует 1 деление на 2.

        Таким образом в среднем за (1/2 + 3/2)/2 = 1. Но в случае с умножением нужно брать среднее геометрическое (или перейти к логарифмам), тут уже будет результат sqrt(3)/2~0.86<1.

        Парадокса нет, проблема в том что нужно доказать для каждого, а не в "среднем".


      1. Ndochp
        28.12.2021 18:35

        Пусть начальное число А чет нечет — как повезет. к — средний коэффициент для следующего шага. Формула для "через 2 шага"


        0,5(А:2*к) + 0,5((А*3+1):2)=А*к^2
        к =((А(А*49+16))^0,5 + А)/(8А) 

        что при больших А стремиться к 1, так что 3/2 тут не пахнет.


    1. lzl
      28.12.2021 18:47
      +2

      Если не умножать на три, то доказать что последовательность сойдется к 1 не сложно.

      Для х > 1, x + 1 < 2x - значит наша последовательность будет содержать убывающую подпоследовательность. А т.к. числа натуральные, то эта подпоследовательность будет содержать минимальный элемент - еденицу.


    1. bbc_69
      29.12.2021 10:06

      В случае просто приавления 1 задача тривиальна: после +1 получаем чётное число, после деления 0,5n + 0.5, что заведомо меньше изначального (для чисел больше одного). Таким образом мы получаем убывающую последовательность, которая сходится к одному.

      С умножением на 3 такой фокус не проходит: т.е. числа упираются в какое-то подобие степеней двойки. Немного контринтуитивно.


    1. Chupaka
      29.12.2021 11:18
      +1

      Выше привели пример: если делать не +1, а -1, то вроде суть всё ещё та же, но уже на пятёрке вы замкнётесь без достижения единицы. Но суть-то та же?


  1. iShrimp
    28.12.2021 17:55
    +15

    В целочисленных задачах прикол в том, что ответ может оказаться очень большим числом. Поэтому поиск его методом перебора может занять намного больше времени, чем возраст Вселенной.

    Например, вот такое уравнение:

    имеет такие натуральные корни:

    Или может оказаться так, что она нерешаема за разумное время (как, например, вычисление TREE(3)), или существование решения практически недоказуемо.


  1. Zanzibarra
    28.12.2021 18:05
    +5

    На работе решил отвлечься на Хабр... Зря так сделал. В итоге час просто сам себе пытался доказать эту гипотезу. По-моему, её доказательство достаточно простое (если отталкиваться от чётности-нечётности и если я не обманул сам себя)

    Сейчас написать своё решение не могу - надо полностью его продумать. Но буду надеяться, что по приезду домой смогу написать мини-статью (или просто большой комментарий) с некоторыми выкладками по этой теории

    P.S. Смотрю на свои записи и удивляюсь... Если гипотеза градины до сих пор гипотеза, то мне не верится, что моё доказательство может считаться полноценным - слишком оно лёгкое


    1. Jury_78
      28.12.2021 18:14
      +21

      Это вольный пересказ записей на полях теоремы Ферма? :)


      1. Zanzibarra
        28.12.2021 19:06
        +1

        В общем-то я понял где я ошибся. Когда быстро пытаешься что-то доказать (по крайней мере, в моём случае), то теряешь из виду возможные допущения. В итоге, когда с холодной (буквально) головой я перечитал свои листы, понял, что там только почва для доказательства, но дальше я продвинуться не могу в силу слабого матаппарата

        В комментарии ниже оставлю своё "доказательство", распишу где косяки и теорему, к которой у меня сводится доказательство данной теоремы


        1. iShrimp
          28.12.2021 19:10
          +6

          Очень интересно! Главное - вовремя остановиться, так как гипотеза Коллатца уже получила дурную славу среди математиков, потративших на неё десятилетия жизни :)


          1. masai
            28.12.2021 20:13
            +2

            У теоремы Ферма тоже была дурная репутация, но Уайлс смог. :)


            1. Sixshaman
              29.12.2021 10:35

              Уайлс доказывал не саму теорему Ферма, а более общую гипотезу, так что он знал, что делает.


        1. Jury_78
          28.12.2021 19:30
          +1

          Предпологаю, что все простые пути пройдены. Осталось что то зубодробильное. Правда всегда остается надежда на удачу, что все просмотрели что то элементарное...


          1. khajiit
            28.12.2021 20:07
            +1

            Ну, этот попробует как программист.
            С продвижением к бесконечности все больше чисел, в двоичной системе имеющих хвост из нулей — то есть, многократно делимых на 2. Между тем как любое нечетное число после первого же преобразования всегда становится четным и испытывает распространение переноса — более или менее массовый битфлип с образованием хвоста из нулей.


            Каждое число на каждой итерации испытывает не более одного увеличения (после которого становится четным) и не менее одного уменьшения (младший бит после умножения на нечетное число и сложения с единицей с вероятностью 100% будет нулевым). Бит 1 с вероятностью 50% окажется равным 0, Бит 2 — 25%, Бит 3 — 12,5%, что дает в пределе 2 (последовательных уменьшения).


            Итого, произвольно взятое число, грубо, в среднем умножается на 3 и делится на 4.


            1. Deosis
              29.12.2021 09:17
              +6

              Проблема среднего в том, что не учитываются выбросы.

              Если в среднем число не является точной степенью двойки, то это не значит, что точных степеней двойки не существует.


              1. khajiit
                29.12.2021 12:44

                Так в данном случае выбросы — это несколько делений подряд, так? Когда мы получаем число вида a*2^n.


                1. Deosis
                  30.12.2021 08:16

                  Наоборот, выброс - много умножений на 3. Т.е. число вида 2^n-1

                  Такое число за 2n шагов перейдет в 3^n-1


                  1. khajiit
                    30.12.2021 09:19
                    -1

                    Так на три умножаются только нечетные числа, по условиям. После чего нечетный результат сразу приводится к четному: каскад умножений, по условиям задачи, — невозможен.


                    1. Cerberuser
                      30.12.2021 09:33
                      +1

                      Но возможен каскад пар - `n -> 3n+1 -> (3n+1)/2 -> 3*(3n+1)/2+1 -> (3*(3n+1)/2+1)/2 -> ...`. Если в цепочке нет двух делений подряд, то каждая пара операций будет увеличивать значение числа.


                      1. khajiit
                        30.12.2021 11:00

                        … до тех пор, пока оно не напорется на a*2^n, хвост из нулей.


                      1. Cerberuser
                        30.12.2021 12:14
                        +1

                        Так вот в этом и вопрос - оно всегда на такой хвост наткнётся, или только "почти всегда"?


                      1. khajiit
                        30.12.2021 12:32
                        -1

                        Множество чисел вида a*2^n разве не мощнее множества нечетных чисел, произведениями которых (и не только их) они являются?
                        Не силен в теории множеств, могу нести чушь )


                      1. Cerberuser
                        30.12.2021 12:40
                        +3

                        Ну, во-первых, оба этих множества счётные (при этом их плотность в множестве натуральных чисел, конечно, разная, но мощность одинакова), а во-вторых, это всё равно аргумент "в среднем", "почти всегда", а не гарантия того, что ни одно число не проскочит только по "меньшему" подмножеству, не затронув "большее".


                      1. khajiit
                        30.12.2021 12:55

                        Да, вы правы.


                      1. Alexandroppolus
                        30.12.2021 12:42
                        +2

                        Нет, не мощнее. Они оба - "алеф-0". Между элементами этих множеств легко установить взаимно-однозначное соответствие, по аналогии с тем как это делается для соответствия целых и рациональных.


                      1. khajiit
                        30.12.2021 12:55

                        Спасибо.


            1. bbc_69
              29.12.2021 10:38

              Каждое число на каждой итерации испытывает не более одного увеличения
              (после которого становится четным) и не менее одного уменьшения

              По мне, так ключевая мысль. Если рассмотреть последовательности подряд чётных чисел, то получится, что единственное целочисленное решение, при котором ряд закольцовывается, получается при двух чётных подряд и число должно быть 1. При больших числах целых чисел нет - там ряд плавно убывает к нулю. ЧТД.


            1. mayorovp
              29.12.2021 23:32
              +3

              Ну, "в среднем" гипотезу уже доказали. Вот только хотелось бы "в общем", а не "в среднем"...


          1. kogemrka
            29.12.2021 08:44
            +4

            Строго говоря, не факт что "простые" пути, в принципе могут существовать.

            Пример - последовательность гудстейна.

            https://ru.wikipedia.org/wiki/Теорема_Гудстейна

            Работает примерно по такому же принципу - берём некое стартовое число, делаем вполне себе алгоритмичную операцию над числом, повторяем до упора. Увы, операция не такая красивая и простая, как в этом примере, но тоже что-то что в две строчки делается на бумаге.

            Прикол в том, что доказано, что теорема гудстейна недоказуема в аксиоматике пеано. То есть не получится придумать доказательство по индукции.

            Не получается придумать доказательство без оперирования бесконечными множествами.

            Возможно доказать только в арифметике второго порядка (а это уже достаточно сложная система для того, чтобы в ней можно было выражать вещественные числа, к примеру).

            Но в формулировке последовательности, так же, как и в задаче 3n+1, у нас нет ни вещественных чисел, ни бесконечных множеств, только арифметика - технически, задача выглядит мало чем отличающейся от какой-нибудь арифметической или геометрической прогрессии.

            Другой похожий пример - это задача о гидре

            https://avva.livejournal.com/244874.html?delayedid=

            Ну вот у вас есть схема гидры. Вполне себе такая конечная контрукция. Граф. Можно в структурку на любимом языке программирования записать.

            Но вот доказать "простым" образом (например, без привлечения ординалов) не получится в принципе. И невозможность этого - это не какое-то эмпирическое наблюдение, она строго доказана.


    1. masai
      28.12.2021 18:38
      +1

      Обязательно напишите. Даже если ошиблись, то напишите, где. Изучать ошибки тоже интересно.


  1. Arioch
    28.12.2021 20:13
    +5

    на любимом Delphi

    Точно ли он любимый???

       readln(s);
       num:=strtoint(s);  // Исходное число
     ...
       writeln(inttostr(num));
       readln(num);  // Исходное число
     ...
       writeln(num);


  1. allex
    28.12.2021 21:39
    +11

    Давным-давно, когда я ещё школьником был, ехал в поезде и коротал время за книжкой с математическими задачками. Большинство из них были достаточно простыми и решались устно. А потом попалась одна с очень простой формулировкой, но решить её никак не получалось. Через какое-то время я сдался и заглянул в ответы в конце книжки. А там было написано, что если вы решили эту задачу, смело требуйте себе докторскую степень, потому что проблему эту ещё никто не смог решить :)

    Вот так я и познакомился с задачей "3n+1" :)


  1. mafia8
    29.12.2021 00:42
    +3

    У кого есть доступ к вычислительным ресурсам и настроение что-то сделать, можно сделать следующее. Эта задача — пусть будет f(3,2). То есть 3n+1, n/2. f(x,y): xn+1, n/y.
    Просчитать для разных x и y. И отметить на графике (x,y) точки разного цвета: приходит к 1, уходит в бесконечность, зацикливается.


    1. Arioch
      29.12.2021 14:56
      +2

      Тут вы предполагаете, что f(x,y) будет вести себя одинаково с любым стартовым n.
      Но это как раз не доказано даже для f(3,2). Для других тем более, вполне может оказаться функция, ведущая себя очень по разному для разных начальных значений.


  1. dTex
    29.12.2021 09:03
    -6

    На звание самого крутого математического фокуса не тянет. Ожидал что действительно можно будет угадать число. А тут прогностическая способность уровня - возьмите любое положительное целое число и и отнимайте от него по 1. Как бы вы ни старались оно превратится в 1. Уау, правда?

    Только неизвестно сколько раз отнимать.

    Число Пи тоже содержит все числа от 0 до 9. Тоже можно поугадывать, если не важно где цифра должна стоять и картинок нарисовать, может даже более красивых. Там даже интересней - а вдруг оно содержит ваш номер телефона, и если да, то кому принадлежат соседние номера. Или если поставить в соответствие числам буквы, можно ли там найти ваше имя и фамилию.

    А тут получается, надо "просто" найти второе число, которое зациклит алгоритм.


    1. kogemrka
      29.12.2021 09:20
      +10

      Ожидал что действительно можно будет угадать число. А тут
      прогностическая способность уровня - возьмите любое положительное целое
      число и и отнимайте от него по 1. Как бы вы ни старались оно превратится
      в 1. Уау, правда?

      Ну, для того, чтобы доказать, что в вашей задаче число всегда превратиться в единицу нужно секунд 30 и квалификация школьника.

      Для того, чтобы доказать, что в задаче 3n+1 число всегда превратиться в единицу пока не хватило 90 лет и квалификации лучших математиков этой планеты.

      Хотя, по вашим же словам, сама задача выглядит столь же простой, как и в первом случае.

      По-моему, это как минимум любопытно

      Число Пи тоже содержит все числа от 0 до 9. Тоже можно поугадывать, если не важно где цифра должна стоять и картинок нарисовать, может даже более красивых. Там даже интересней - а вдруг оно содержит ваш номер телефона, и если да, то кому принадлежат соседние номера. Или если поставить в соответствие числам буквы, можно ли там найти ваше имя и фамилию.

      Ну, собственно, да.

      Доказать, что какая-то конкретная последовательность не встретится в десятичной записи числа Пи (или доказать, что любая конечная последовательность рано или поздно встретится) - это чертовски интересный результат, который было бы очень интересно рано или поздно увидеть.

      Не понимаю вашего сарказма, что не так-то?


  1. EtherDaler
    30.12.2021 05:19
    +1

    Ферматисты скажут: " Тьфу, и это докажем!"


  1. JJBaltika
    30.12.2021 10:39
    -1

    Достойно мема


    1. mayorovp
      30.12.2021 11:03
      +2

      Извините, а ещё больше вы скриншот сделать не могли?


      1. JJBaltika
        31.12.2021 07:02

        Извините, кажется девятки ушли в апскейлинг


  1. michael_v89
    30.12.2021 13:06

    Если число чётное, разделите его на 2. Иначе умножьте его на 3 и прибавьте 1.

    (во втором случае можно сразу разделить на 2, так как всегда получается четное число)


    Я думал над этой задачей некоторое время, пришел к такому выводу. Если не делить на 2, то прибавлять надо будет не 1, а некоторую степень двойки, которая равна позиции младшей единицы в двоичной записи текущего числа (или что-то вроде того). Тогда получается примерно такая цепочка:


    00001xxxxxxx1
    0001xxxxxxx10
    0001xxxxxx100
    001xxxxxx1000

    Так как запись заданного целого числа конечна, впереди у него будут нули, и потом начальная единица. Надо как-то математически доказать, что нули в конце растут быстрее, и рано или поздно догонят начальную единицу.


  1. Demanoidos
    30.12.2021 14:22

    Delphi для вас не очень любимый, потому что в коде есть лишние вещи. Например, преобразования типов в тех местах, где они нафиг не нужны. Условие неравности, где надо проверять на "больше", лишние writeln, но отсутствие readln в конце для паузы, раз уж вы сделали консольное приложение.

    program collatz;
    {$APPTYPE CONSOLE}
    var
     iNum, iSteps, iMax: integer;
    begin
      readln(iNum);
    
      iSteps := 0;
      iMax   := iNum;
    
        while iNum > 1 do begin
          if Odd(iNum) then iNum := iNum * 3 + 1
            else iNum := iNum div 2;
    
          if iNum > iMax then iMax := iNum;
    
          inc(iSteps);
          writeln(iNum);
        end;
    
      write('Steps : ', iSteps, #13#10, 'Max   : ', iMax);
      readln;
    end.


  1. rrrav
    30.12.2021 15:51
    +3

    Почти век самые мощные умы не нашли доказательства. Насколько я смутно помню, была еще подобная последовательность, которая тоже завела всех в тупик, но в конце концов было найден вариант опровержения (кажется, нашелся цикл).


  1. emaxx
    30.12.2021 17:02
    +2

    Как в 1960 г. писал математик Сидзуо Какутани:

    For about a month everyone at Yale worked on it, with no result. A similar phenomenon happened when I mentioned it at the University of Chicago. A joke was made that this problem was part of a conspiracy to slow down mathematical research in the U.S.

    (Примерный перевод: "Каждый в Йельском университете проработал над этой проблемой в течение месяца. Похожий фенонен наблюдался в Чикагском университете после того, как я упомянул о ней. Ходила шутка, что эта задача была частью заговора, имевшего целью затормозить математические исследования в США.".)