일상다반사

컴퓨터에게 콜라츠 추측을 하나하나 시켜본다면?

하다블 2023. 6. 13. 18:52
반응형

콜라츠 추측은 다음과 같습니다.

어떤 자연수에 x에 대하여

x가 홀수이면 x에 3을 곱한 다음, 1을 더해주고 (x->3x+1)

x가 짝수이면 x를 2로 나누어준다. (x->x/2)

이 과정을 무한히 반복하면 어떤 x든 4->2->1->4->2->1... 을 반복하게 된다. (1에서 멈춘다면, 모든 수는 1에 수렴한다.)

문제가 생각보다 단순해보여서 많은 사람들이 증명하고자 도전한 문제이지만 이 문제를 풀면 정신병을 얻게 된다는 소문이 있을 정도로 세계적인 난제입니다.

그래서 단순하고 무식한 방법으로, 2부터 10^8의 수 정도를 확인해 보기로 했습니다.

파이썬으로 만들었으며, 다음과 같은 코드로 확인했습니다.


def collatz(n: int):
    while n != 1:
        print(n, end=' -> ')
        if n % 2 == 0:
            n = n // 2
        else:
            n = 3 * n + 1
    print(n)
    print()

x=2
while(x<100000000):
    collatz(x)
    x=x+1

이렇게 해서 수가 끝나지 않고 무한히 반복되는 경우가 있는지(1로 수렴하지 않거나 발산하는 경우가 있는지) 확인해 보았습니다.

.

.

.

무려 아침 10시부터 17시 50분까지 약 8시간 정도 실행했는데 2381790까지 확인했습니다.

그 이전까지 문제가 있는 수는 확인하지 못했고 증명만 하지 못했을 뿐, 왜 많은 사람들이 쉬워 보여서 이 난제를 해결하고자 도전했는지 알 수 있었던 것 같습니다.

이 문제가 난제인 가장 큰 이유는 귀납법도, 반례도 찾기 어려울뿐더러, 컴퓨터가 모든 경우의 수를 계산해서 증명한 4색 정리처럼 모든 경우의 수를 확인하기에는 자연수가 무한하다는 점이 이유로 뽑힐 것 같습니다.

굉장히 흥미로운 시간이었고 8시간 동안 혹사한 저의 컴퓨터에게도 휴식을 주고자 합니다.

읽어주셔서 감사합니다.

 

반응형

'일상다반사' 카테고리의 다른 글

TEST  (0) 2022.06.02
캐릭터가 생겼습니다!  (0) 2022.02.08
안녕하세요.  (0) 2022.02.04