Hipoteza Collatza:
Następujący program zawsze zatrzymuje się:
void function( ArbitraryInteger input){
while( input > 1){
if(input % 2 == 0)
input /= 2;
else
input = (input*3) + 1;
}
// Halt here
}
Niewielka odmiana (wciąż domysł, ponieważ opiera się na wyniku z Collatza):
W przypadku niektórych danych wejściowych następujący program nigdy nie wejdzie dwukrotnie w ten sam stan (gdzie stan jest określony przez wartość przechowywaną przez „wejście”):
void function( ArbitraryInteger input){
while( input >= 1){ // notice the "="
if(input % 2 == 0)
input /= 2;
else
input = (input*3) + 1;
}
}
Zauważ, że drugi program nigdy się nie zatrzymuje, niezależnie od tego, czy pierwszy program się zatrzymuje, czy nie.
Uważa się, że pierwszy program zawsze kończy się dla dowolnego wejścia, jednak nie mamy na to dowodu i może istnieć pewna liczba całkowita, dla której program się nie zatrzymuje (jest również nagroda w wysokości 100 USD za udowodnienie) .
Drugi program jest również interesujący: stwierdza, że program nigdy nie wejdzie w ten sam stan dwa razy dla niektórych danych wejściowych, co w zasadzie wymaga, aby pierwszy program miał sekwencję, o której wiadomo, że rozbiega się bez powtarzania. Nie tylko wymaga, aby hipoteza Collatza była fałszywa, ale wymaga, aby była fałszywa i bez pętli , oprócz oczywistej pętli 1,4,2,1.
Jeśli Collatz ma tylko zapętlone kontrprzykłady, zmiana przypuszczenia jest fałszywa
Jeśli Collatz ma wartość false bez pętli, zmiana przypuszczenia jest prawdziwa
Jeśli Collatz ma wartość true, wariant jest fałszywy
Jeśli Collatz jest fałszywy zarówno dlatego, że ma pętle, jak i dlatego, że ma liczbę, dla której się rozchodzi, wariacja hipotezy jest prawdziwa (wymaga tylko liczby, dla której rozbiega się bez wchodzenia w pętlę)
Myślę, że ta odmiana jest bardziej interesująca (nie tylko dlatego, że znalazłem ją przez przypadek i zauważyłem dzięki @LieuweVinkhuijzen), ale ponieważ faktycznie wymaga prawdziwego dowodu. Poprzez brutalne wymuszanie, możemy być w stanie znaleźć pętlę jednego dnia lub innego (i będzie to pętla dłuższa niż 70 liczb: obecny stan techniki polega na tym, że nie ma nieskończonych pętli krótszych niż około 68) i brutalny zmuszanie nie jest interesujące: to po prostu chrupanie liczb. Jednak nie możemy brutalnie wymusić nieskończonej rozbieżnej sekwencji, nie wiemy, czy tak naprawdę skończy się bez prawdziwego dowodu.
EDYCJA: Przepraszam, pominąłem część o hipotezie Collatza, szczerze odpowiedziałem na pamięć algorytmem, o którym czytałem kilka lat temu, nie spodziewałem się, że zostało to już wspomniane.
EDYCJA 2: Komentarz zwrócił uwagę, że napisałem algorytm z pomyłką, jednak błąd ten rzeczywiście odróżnia moją odpowiedź od przypuszczeń Collatza (ale jego bezpośrednia odmiana).