1P by GN⁺ | ★ favorite | 댓글 1개
  • 3-state 4-symbol Busy Beaver 챔피언 TM이 발견됐고, 정지 시 ((2 \uparrow^{15} 5) + 14)개의 0이 아닌 심볼을 남기는 것으로 계산됨
  • 이 수는 Knuth up-arrow 표기로도 매우 커서, (Ack(n)=n \uparrow^n n)로 정의되는 14번째 Ackermann number를 넘는 (BB(3,4) > Ack(14)) 하한으로 정리됨
  • TM의 핵심 동작은 (B(k,n,m) \to B(k,0,g_{k-1}^n(m)))에 가깝게 압축되지만, 이를 보이려면 이중 귀납법이 필요함
  • Matthew House의 닫힌형 평가식 (g_k^n(0)=\frac{2 \uparrow^k (n+2)}{2}-2) 덕분에 최종 점수 (\sigma=(2 \uparrow^{15}5)+14)를 정확히 쓸 수 있게 됨
  • 이 TM은 Collatz식 나머지 분기 없이도 Ackermann-level 함수를 시뮬레이션하며, 개발 중인 Inductive Proof Validator의 검증 사례로도 쓰임

새 Busy Beaver 챔피언의 규모

  • Pavel Kropitz가 새 3-state 4-symbol Busy Beaver 챔피언을 발견함
  • 이 TM은 “Ackermann-level” 함수를 계산할 수 있고, 정지 시 테이프에 다음 개수의 0이 아닌 심볼을 남김
    • ((2 \uparrow^{15} 5) + 14)
  • Knuth up-arrow 표기로도 매우 큰 값이라, 하한은 다음처럼 요약됨
    • (BB(3,4) > Ack(14))
  • 여기서 (Ack(14))는 (Ack(n)=n \uparrow^n n)로 정의되는 14번째 Ackermann number
  • 알려진 범위에서는 실제 탐색 중 발견된 TM 가운데 Ackermann-level 함수를 시뮬레이션할 수 있는 첫 사례임

TM 정의와 최종 구성

  • TM 전이 문자열은 다음과 같음
    • 1RB3LB1RZ2RA_2LC3RB1LC2RA_3RB1LB3LC2RC
  • 전이표는 상태 A, B, C와 심볼 0, 1, 2, 3에 대해 정의됨
    • A: 1RB, 3LB, 1RZ, 2RA
    • B: 2LC, 3RB, 1LC, 2RA
    • C: 3RB, 1LB, 3LC, 2RC
  • 최종 구성은 다음과 같음
    • (0^\infty ;; 3^{2 g_{15}^{3}(0) + 1} ;; 2^{16} ;; 1 ;; \text{ Z> } ;; 0^\infty)
  • 이 구성에서 점수 (\sigma)가 정확히 계산됨
    • (\sigma = 2 g_{15}^{3}(0) + 18 = (2 \uparrow^{15} 5) + 14)

발견과 검증 과정

  • Pavel Kropitz는 이 TM을 2024년 4월 25일 Discord에 공유함
  • 당시 코드는 사람이 읽을 수 있는 점수 하한을 지정하지 못했고, 결과를 Halt(SuperPowers(13))로 표시함
    • 이는 증명에 13층의 귀납 규칙이 필요함을 뜻함
  • 이후 새 Inductive Proof Validator를 사용한 검증이 시작됨
  • 2024년 5월 20일 검증이 완료되면서 (g_k^n(m))의 정확한 정의가 추출됐고, 이를 통해 (\sigma > 2 \uparrow^{15} 3) 하한을 얻음
  • Matthew House는 2024년 5월 22일 다음의 단순한 닫힌형 평가식을 발견함
    • (g_k^n(0) = \frac{ 2 \uparrow^k (n+2) }{2} - 2)
  • 이 평가식으로 (\sigma)의 정확한 값을 표현할 수 있게 됨

동작 분석과 이중 귀납 증명

  • 다음 구성을 정의함
    • (B(k, n, m) = 0^\infty ;; 3^{2m+1} ;; 2^k ;; \text{ A> } ;; 1^n)
  • 초기 구성은 241스텝 뒤 다음 상태에 도달함
    • (0^\infty ;; \text{A>} ;; 0^\infty \xrightarrow{241} B(16,3,0);;2;;0^\infty)
  • 핵심 규칙은 다음과 같음
    • (B(k,n,m) \to B(k,0,g_{k-1}^n(m))), 단 (k \ge 1)
  • (g_k)는 다음 재귀식으로 정의됨
    • (g_0(m)=m+1)
    • (g_{k+1}(m)=g_k^{2m+2}(0))
  • 전체 동작은 거의 하나의 규칙으로 압축될 만큼 단순하지만, 이 규칙 자체는 이중 귀납법으로 증명해야 함
  • 보조정리와 따름정리는 B 상태가 32^k 블록을 처리해 1들을 만들어내는 과정을 다룸
    • (3;;2^k;;\text{<B} \xrightarrow{2k+1} 2^k;;\text{<B};;1)
    • (3^m;;2^k;;\text{<B} \xrightarrow{(2k+1)m} 2^k;;\text{<B};;1^m)
  • 정리 3은 모든 (k \ge 1, n \ge 0, m \ge 0)에 대해 핵심 규칙이 성립함을 보임
    • (k=1) 기본 사례는 (n)에 대한 귀납으로 처리됨
    • 귀납 단계는 (k)에 대한 가정과 (n)에 대한 귀납 가정을 함께 사용함

정확한 값 계산

  • (g_k)에는 Knuth up-arrow와 산술만 사용하는 비교적 단순한 닫힌형 평가가 있음
  • 모든 (k \ge 0, m \ge 0)에 대해 다음이 성립함
    • (2 g_{k+1}(m) + 4 = 2 \uparrow^k (2m+4))
    • 여기서 (a \uparrow^0 b = ab)로 정의함
  • 이 결과는 (k)에 대한 귀납법으로 증명됨
    • 기본 사례 (k=0)에서는 (g_1(m)=2m+2)가 됨
    • 귀납 단계에서는 ((2 \uparrow^k)^n) 반복 적용을 사용함
  • 닫힌형은 (2 \uparrow^k 2 = 4)가 모든 (k)에서 성립하는 우연에 의존함
    • 매개변수가 조금 달라져 ((2 \uparrow^k)^{2m+2}5) 형태가 됐다면 닫힌형 표현을 얻기 어려웠을 것으로 봄
  • 따름정리로 모든 (k \ge 0, n \ge 0)에 대해 다음이 성립함
    • (2 g_k^n(0) + 4 = 2 \uparrow^k (n+2))
  • 최종 점수는 바로 다음처럼 도출됨
    • (\sigma = 2 g_{15}^{3}(0) + 18 = (2 \uparrow^{15} 5) + 14)

시작 상태를 바꾼 순열 결과

  • 시작 상태를 BC로 바꾸면 더 작은 관련 결과가 나옴
    • (0^\infty ;; \text{B>} ;; 0^\infty \xrightarrow{86} B(7,3,0);;2;;0^\infty)
    • (0^\infty ;; \text{C>} ;; 0^\infty \xrightarrow{20} B(1,3,0);;2;;0^\infty)
  • 시작 상태가 B일 때의 점수는 다음과 같음
    • (\sigma_B = 2 g_6^3(0) + 9 = (2 \uparrow^6 5) + 5)
  • 시작 상태가 C일 때는 72스텝에서 정지하며, 점수는 다음과 같음
    • (\sigma_C = 2 g_0^3(0) + 3 = (2 \uparrow^0 5) - 1 = 9)
  • B에서 시작하는 첫 순열도 또 다른 상위권 BB(3,4) TM
  • 이를 TNF로 변환하면 다음 전이 문자열이 됨
    • 1RB3RB1LC2LA_2LA2RB1LB3RA_3LA1RZ1LC2RA

Collatz식 규칙이 없는 단순성

  • 이 TM의 흥미로운 점 중 하나는 예상보다 단순하다는 데 있음
  • 값의 나머지에 따라 다르게 동작하는 Collatz-like 규칙이 없음
  • Collatz-like TM의 지배가 끝났는지는 아직 알기 너무 이르함
  • Ackermann-level Collatz-like TM이 아직 남아 있을 수 있지만, 선택 편향 때문에 바로 보이지 않을 수 있다는 추측이 있음
  • 이 TM이 첫 Ackermann-level TM으로 발견된 이유는 Ackermann-level 함수 위에서 modular arithmetic을 구현하지 않아도 정지 증명이 가능할 만큼 단순했기 때문일 수 있음

Inductive Proof Validator

  • 이 TM은 개발 중인 Inductive Proof Validator의 테스트 사례로 적합했음
  • 프로젝트의 목표는 “귀납 증명”을 위한 표준화된 인증서 형식을 만드는 것임
  • 여기서 “귀납 증명”은 전방 추론과 규칙 기반 분석 전반을 가리키는 포괄적 용어로 쓰임
  • 누구든 “inductive decider”를 가지고 있으면 해당 규칙을 이 형식으로 작성하고, validator가 그 증명을 검사할 수 있게 하는 방식임
  • 시스템은 아직 매우 투박하고 실제 사용 준비가 되지 않았지만, 약간의 수작업을 거쳐 이 TM을 포함한 여러 TM의 동작 증명에 사용됨

댓글과 토론

Hacker News 의견들
  • 매우 오래 실행되는 튜링 머신 프로그램은 깊이 복잡하거나 스파게티 코드일 거라고 생각하기 쉽지만, 이번 새 챔피언은 반례에 가까움
    상태는 A, B, C 세 개뿐이고, B는 A와 C로 제어를 넘기지만 A와 C는 서로를 “알지” 못하고 B로만 되돌림
    진짜 스파게티 코드라면 각 상태가 모든 다른 상태로 넘어갈 수 있었을 텐데, 이건 일종의 모듈식 구성
    또 빈 칸을 절대 출력하지 않고, 모든 명령이 상태나 색 중 하나는 바꾸므로 B1 -> 1LB처럼 위치만 움직이는 “게으른 명령”도 없음

    • bbchallenge 프로젝트 안에서도 현재 오래 실행되는 챔피언들의 성질이 실제 그 크기에서 최장 실행 머신의 성질인지, 아니면 자동 검색과 증명이 쉬운 성질만 보이는 가로등 효과인지 논쟁이 있음
      전체 탐색 공간을 확정적으로든 휴리스틱으로든 배제하기 전까지는 알 수 없음
      BB(5, 2)를 넘는 모든 크기에는 영원히 실행될 것으로 예상되지만, 수론의 큰 진전 없이는 증명할 수 없는 혼돈적·의사난수적 머신들이 들어 있음
      다만 오래 실행되는 머신이 완전히 혼돈적일 수는 없다고 봄
      테이프에 난수처럼 기호를 쏟아낸다면 곧 정지 구성, 순환 구성, 또는 단순화된 패턴에 도달할 것이기 때문임
      그래도 더 높은 수준에서 혼돈적인 무언가를 시뮬레이션하며, 각 고수준 단계 사이에 터무니없이 많은 시간을 쓰다가 멈추는 머신은 가능함
    • n상태 s기호 튜링 머신은 최대 n개의 다른 상태로만 전이할 수 있음
      그래서 s=4s=2라면 아주 작은 튜링 머신만 스파게티 코드처럼 될 수 있음
  • BB(3,4) 기록 보유자는 다음과 같음
    0 1 2 3
    A 1RB 3LB 1RZ 2RA
    B 2LC 3RB 1LC 2RA
    C 3RB 1LB 3LC 2RC
    s, 열 t(t', d, s')는 상태 s에서 테이프 헤드 아래 기호가 t일 때의 전이를 뜻함
    기호 tt'로 덮어쓰고, 방향 d에 따라 왼쪽/오른쪽으로 이동한 뒤 상태를 s'로 바꾸며, s' == Z이면 정지함
    이는 3*4*log2(4*2*log2(4+1)), 즉 약 64비트 정보량
    반면 단 49비트의 BBλ(49)는 Graham 수를 훨씬 넘어섬 https://oeis.org/A333479

    • 서로 다른 튜링 머신 수를 세는 건 단순하지 않음
      위 계산은 각 칸이 임의의 (기호, 방향, 상태) 조합을 가질 수 있다고 보는 가장 넓은 방식이라, 임의의 튜링 머신을 설명하는 데 필요한 비트를 상당히 과대계산함
      BB(3, 4)의 경우 Tree Normal Form, 즉 Brady 알고리즘(https://nickdrozd.github.io/2022/01/14/bradys-algorithm.html)을 쓰면 서로 다른 튜링 머신이 약 6000억 개뿐이라 40비트 미만으로 나옴
    • 이 프로그램에서는 1RZ1R이 임의로 고른 값처럼 보임
      거기서 정지하므로 테이프에 무엇이 남든, 헤드가 어디로 움직이든 상관없기 때문임
      사실 1을 쓰는 것도 중요하지 않지만, 0을 쓰면 최적이 아니었을 것 같음
      이미 그 위치에는 2가 쓰여 있었고, 1로 바뀌지만 테이프 위 기호 개수 기준으로는 2도 똑같이 세어졌을 것임
    • log2(4+1) 항이 어떻게 나오는지 잘 모르겠음
      3*4*log2(4*2*log2(4+1))을 계산하면 약 51로 나오고, 비전문가 관점에서는 3*4*log2(4*2*4) = 60일 것 같았음
      혹시 3*4*log2(4*2*log2(3*3*4-1)) ≈ 64인지 궁금함
  • 동작이 궁금해서 여기 구현해 봄: turingmachine.io/?import-gist=c862f28918f3d889f964797694d28fcc
    잠깐 실행해 보면 무슨 일이 일어나는지 보임
    상태 B는 02로, 11로 바꾸고 C로 전이하며, 상태 C는 32로 바꾸고 A로 전이함
    그래서 2 -> 1을 고치려면 모든 3을 한 번 통과해야 하므로, 3의 연속 구간을 반복적으로 지수적으로 늘리게 됨

    • 영원히 지수적으로 커지는 튜링 머신을 만드는 건 꽤 쉬움
      정말 이해하기 어려운 부분은 상상할 수 없을 만큼 많은 단계 뒤에 왜 결국 멈추는지
  • 전부 극단적인 코드 골프처럼 들림
    다른 방향으로는 BitGrid라는 걸 살펴볼 수 있음
    BitGrid는 셀마다 상태가 4비트뿐이라, 4x4 셀 격자는 무슨 일이 있어도 2^64 이상을 셀 수 없음
    실제로 어디까지 셀 수 있는지 찾는 건 흥미로울 듯하고, 작은 격자에서는 가장자리 연결이 결과를 지배할 것임
    https://esolangs.org/wiki/Bitgrid
    https://github.com/mikewarot/Bitgrid

  • 이 표가 아마 튜링 머신 설명일 것 같은데, 어떻게 해석해야 하는지 볼 만한 자료가 있으면 좋겠음

    • 상태 A, B, C는 goto 대상에 해당하고, 0, 1, 2, 3은 실행 중 데이터임
      각 상태에서 현재 색을 읽고, 그 색에 따라 “어떤 색을 출력할지, 왼쪽/오른쪽으로 움직일지, 어떤 상태로 갈지” 명령을 실행함
      C로 옮기면 switch (SCAN)WRITE, RIGHT/LEFT, goto로 그대로 표현할 수 있음
      이 로직을 더 구조화된 스타일로 다시 쓰거나 다른 최적화를 할 여지가 있는지 궁금함
    • 각 행은 상태이고, 각 열은 방금 테이프에서 읽은 기호임
      예를 들어 첫 행 첫 열은 “기호 0을 읽었고 현재 상태가 A”라는 뜻임
      표의 칸은 수행할 동작을 나타내며, 1RB는 “테이프의 기호를 1로 바꾸고, 오른쪽으로 한 칸 이동한 뒤, 상태 B로 전환하라”는 뜻임
      상태 Z정지 상태에 해당함
    • Python으로는 테이프 인덱스를 왼쪽/오른쪽으로 움직이는 L(), R() 함수를 두고, (상태, 현재 기호)(쓸 기호, 이동 함수, 다음 상태)로 매핑하는 표를 만든 뒤 state != 'Z' 동안 반복하면 됨
    • 간단한 설명은 https://bbchallenge.org/story#turing-machines에 있음
      1RZ는 상태 Z에 규칙이 없으므로 정지 전이로 이해하면 됨
      Wikipedia에도 더 자세한 튜링 머신 상태표 예제가 있고 https://en.wikipedia.org/wiki/Turing_machine#Formal_definition, 이 특정 튜링 머신의 실행 추적은 https://bbchallenge.org/1RB3LB1RZ2RA_2LC3RB1LC2RA_3RB1LB3LC2RC에서 볼 수 있음
    • 현재 기록 보유자들을 모아 두고 Wolfram Language로 실행하는 예도 보여주는 작은 저장소를 만들었음: https://datarepository.wolframcloud.com/resources/The-Busy-Beaver-Competition/
      이제 이것도 업데이트해야 할 듯함
  • 기초 컴퓨터 과학의 주요 결과 인용이 Discord 링크라니

    • 왜 안 되는지 모르겠음
      과학 결과를 발표하는 유일하게 유효한 방식이 소위 동료 심사 저널이라는 생각은, 과학 공동체가 Dunbar 수 안에 들어갈 만큼 작았던 200년 전의 유물임
      지금도 붙잡고 있는 건 강력한 일부 학자와 출판사가 이익을 얻기 때문이지, 과학 발전 측면에서 실제 장점이 있어서가 아님
      오히려 현대의 재현성 위기에 꽤 큰 책임이 있을 가능성도 있음
      과학적 방법을 강하게 지지하지만, 전통적 동료 심사는 이미 유통기한이 한참 지났다고 봄
      https://en.wikipedia.org/wiki/Dunbar%27s_number
    • 그래도 공개 Discord 서버이고, https://bbchallenge.org 오른쪽 위에서 초대 링크를 찾을 수 있음
      이것들은 인용이라기보다 출처 표기에 가깝다고 봄
      결과를 뒷받침하는 주요 논증은 블로그 글 안에 더 엄밀한 형태로 재현되어 있어서 독립적으로 성립하고, Discord 링크는 관심 있는 사람을 위한 역사적 맥락을 제공할 뿐임
    • 이런 채팅에 참여해 보면, 휴게실 칠판에서 아이디어를 떠올리고 같이 전개하는 것과 비슷한데 상호작용을 인용할 수 있다는 차이가 있음
      적절한 시점에 문헌으로 보강할 수 있다면 긍정적인 변화임
    • 불만은 이해하지만, 최근 수학의 인상적인 진전 중 상당수는 빠른 협업과 반복에서 나왔음
      예를 들어 Zhang의 소수 간격 상한을 개선한 프로젝트가 그렇고, 이런 면에서는 다른 커뮤니케이션 도구가 Discord와 쉽게 대체 가능하지 않을 수 있음
      실제 사람들이 모여 있는 곳으로 가야 함
    • 더 큰 바쁜 비버 수를 찾는 건 정확히 기초적인 일이라기보다는 오락 수학에 가까움
      정말 기초적이었다면 블로그에 올리는 게 아니라 저널 논문으로 동료 심사를 받았을 것임
  • 1RB3LB1RZ2RA_2LC3RB1LC2RA_3RB1LB3LC2RC처럼 너무 크지 않은 기호량으로 설명할 수 있는 튜링 머신은 가능한 수가 제한되어 있음
    그런데 그중 일부가 정지하기 전까지 이렇게 말도 안 되게 많은 단계를 실행할 수 있다는 사실이 정말 놀라움

    • 이런 3상태 4기호 튜링 머신은 2^60개 있음
      출력, 즉 정규형이 Graham 수를 넘는 49비트 람다 항은 더 놀라워야 함
  • 솔직히 100% 이해하지는 못하고 아마 쓸모도 거의 없을 결과들인데, 믿기지 않을 만큼 유용한 LLM 발전보다 이런 게 더 끌림
    아마 “복잡한” 공학 결과보다 단순한 수학적 진실에 자연스럽게 더 끌리기 때문인 듯함

  • BB(5) > BB(3,4)가 아닌가?
    https://bbchallenge.org에서는 BB(5)가 약 4700만이라는 추측을 증명하거나 반증하려고 한다고 되어 있는데, BB(3,4)는 그보다 훨씬 큰 것 같음

    • 맞음, BB(3, 4) >>> BB(5, 2)로 보임
      BB(5) = BB(5, 2)이고, BB(3, 4)는 표에 전이가 12개(3*4)인 반면 BB(5, 2)는 10개뿐이라 그리 놀랍지는 않음
      그런데 BB(3, 4) >> BB(6, 2)인 것 같기도 함
      둘은 전이 수가 같으므로, 이런 작은 튜링 머신에서는 기호 수가 더 많은 것이 꽤 가치 있어 보임