Phỏng đoán Collatz:
Chương trình sau luôn tạm dừng:
void function( ArbitraryInteger input){
while( input > 1){
if(input % 2 == 0)
input /= 2;
else
input = (input*3) + 1;
}
// Halt here
}
Biến thể nhẹ (vẫn là một phỏng đoán, bởi vì nó dựa trên kết quả từ kết quả của Collatz):
Đối với một số đầu vào, chương trình sau sẽ không bao giờ nhập cùng một trạng thái hai lần (trong đó trạng thái được xác định bởi giá trị được giữ bởi "đầu vào"):
void function( ArbitraryInteger input){
while( input >= 1){ // notice the "="
if(input % 2 == 0)
input /= 2;
else
input = (input*3) + 1;
}
}
Lưu ý rằng chương trình thứ hai không bao giờ tạm dừng, bất kể chương trình thứ nhất có dừng lại hay không.
Người ta tin rằng chương trình đầu tiên luôn chấm dứt cho bất kỳ đầu vào nào, tuy nhiên, chúng tôi không có bằng chứng về điều đó và vẫn có thể tồn tại một số nguyên mà chương trình không dừng lại (còn có giải thưởng 100 đô la để chứng minh điều đó) .
Chương trình thứ hai cũng thú vị: nó nói rằng chương trình sẽ không bao giờ nhập cùng một trạng thái hai lần cho một số đầu vào, về cơ bản đòi hỏi chương trình đầu tiên phải có một chuỗi được biết để phân kỳ mà không lặp lại. Nó không chỉ yêu cầu phỏng đoán Collatz là sai, mà còn yêu cầu nó sai và không có vòng lặp , ngoài vòng lặp 1,4,2,1 rõ ràng.
Nếu Collatz chỉ lặp các ví dụ ngược lại thì biến thể trên phỏng đoán là sai
Nếu Collatz sai mà không có vòng lặp, thì biến thể của phỏng đoán là đúng
Nếu Collatz là đúng, biến thể là sai
Nếu Collatz sai cả vì nó có các vòng lặp và vì nó có một số mà nó phân kỳ, thì biến thể của phỏng đoán là đúng (nó chỉ yêu cầu một số mà nó phân kỳ mà không cần vào một vòng lặp)
Tôi nghĩ rằng các biến thể là thú vị hơn (không chỉ vì tôi tình cờ tìm thấy nó và nhận thấy nó nhờ @LieuweVinkhuijzen), mà bởi vì nó thực sự đòi hỏi một bằng chứng thực sự. Bằng cách cưỡng bức, chúng ta có thể tìm thấy một vòng lặp ngày này hay ngày khác (và đó sẽ là một vòng lặp dài hơn 70 số: trạng thái hiện tại của nghệ thuật là không thể có các vòng lặp vô hạn ngắn hơn 68 hoặc hơn), và vũ phu cưỡng bức không thú vị: nó chỉ là số giòn. Tuy nhiên, chúng tôi không thể tạo ra một chuỗi phân kỳ vô hạn, chúng tôi không biết liệu nó có thực sự kết thúc mà không có bằng chứng thực sự hay không.
EDIT: Tôi đã bỏ qua phần về Collatz Conjecture, tôi thực sự đã trả lời bằng một thuật toán mà tôi đã đọc cách đây vài năm, tôi không ngờ rằng nó đã được đề cập.
EDIT2: Một nhận xét khiến tôi chú ý rằng tôi đã viết thuật toán với một lỗi, tuy nhiên, sai lầm đó thực sự làm cho câu trả lời của tôi khác với phỏng đoán Collatz (nhưng là một biến thể trực tiếp của nó).