Гипотеза Коллатца:
Следующая программа всегда останавливается:
void function( ArbitraryInteger input){
while( input > 1){
if(input % 2 == 0)
input /= 2;
else
input = (input*3) + 1;
}
// Halt here
}
Небольшое отклонение (все еще предположение, потому что оно основано на результате Коллатца):
Для некоторых входных данных следующая программа никогда не войдет в одно и то же состояние дважды (где состояние определяется значением, сохраненным в «входе»):
void function( ArbitraryInteger input){
while( input >= 1){ // notice the "="
if(input % 2 == 0)
input /= 2;
else
input = (input*3) + 1;
}
}
Обратите внимание, что вторая программа никогда не останавливается, независимо от того, останавливается ли первая программа или нет.
Считается, что первая программа всегда завершается для любого ввода, однако у нас нет доказательств этого, и все еще может существовать некоторое целое число, для которого программа не останавливается (есть также приз в 100 долларов за доказательство этого) ,
Вторая программа также интересна: она утверждает, что программа никогда не будет входить в одно и то же состояние дважды для некоторого ввода, что в основном требует, чтобы первая программа имела последовательность, которая, как известно, расходилась без повторения. Это не только требует, чтобы гипотеза Коллатца была ложной, но она требует, чтобы она была ложной и без петель , кроме очевидной петли 1,4,2,1.
Если у Коллатца есть только циклические контрпримеры, то изменение гипотезы ложно
Если Collatz ложно без петель, изменение гипотезы верно
Если Collatz истинно, изменение ложно
Если Collatz имеет значение false и потому, что у него есть петли, и потому, что у него есть число, для которого он расходится, изменение гипотезы верно (ему просто требуется число, на которое он расходится, не входя в цикл)
Я думаю, что вариант более интересен (не только потому, что я нашел его случайно и заметил благодаря @LieuweVinkhuijzen), но и потому, что он действительно требует реальных доказательств. Путем грубой форсировки мы можем найти петлю в тот или иной день (и это будет петля длиннее 70 чисел: в настоящее время известно, что не может быть бесконечных петель короче 68 или около того), и грубой форсировать не интересно: это просто хруст. Однако мы не можем грубо заставить бесконечную расходящуюся последовательность, мы не знаем, действительно ли она закончится без реального доказательства.
РЕДАКТИРОВАТЬ: я пропустил часть о гипотезе Коллатца извините, я искренне ответил наизусть с алгоритмом, который я прочитал несколько лет назад, я не ожидал, что это уже упоминалось.
РЕДАКТИРОВАТЬ 2: Комментарий заставил меня заметить, что я написал алгоритм с ошибкой, однако, эта ошибка действительно отличает мой ответ от гипотезы Коллатца (но это его прямое изменение).