Гіпотеза Колац:
Наступна програма завжди зупиняється:
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 помилковий і тому, що він має петлі, і тому, що він має число, на яке він розходиться, варіація на хипотезі є вірною (для цього просто потрібне число, на яке він розходиться, не вводячи цикл)
Я думаю, що варіант є цікавішим (не лише тому, що я його випадково знайшов і помітив завдяки @LieuweVinkhuijzen), а тому, що він насправді вимагає реального доказу. Шляхом грубого форсування ми можемо знайти день або інший цикл (і це буде цикл довше 70 номерів: сучасний стан техніки полягає в тому, що не може бути нескінченних циклів, коротших від 68) і грубої примушувати не цікаво: це просто хрускіт числа. Однак ми не можемо грубо примусити нескінченну розбіжну послідовність, ми не знаємо, чи справді це закінчиться без реального доказу.
EDIT: Я пропустив частину про Collatz Conjecture вибачте, я щиро відповів напам'ять алгоритмом, про який я прочитав кілька років тому, я не сподівався, що це вже було згадано.
EDIT2: У коментарі змусили мене помітити, що я написав алгоритм з помилкою, однак ця помилка справді відрізняє мою відповідь від гіпотези Колатца (але прямої її зміни).