Resultado de BB(3, 4) > Ack(14)
(sligocki.com)- Foi descoberta uma nova TM campeã de Busy Beaver com 3 estados e 4 símbolos, calculada para deixar ((2 \uparrow^{15} 5) + 14) símbolos não nulos ao parar
- Esse número é enorme mesmo na notação de setas de Knuth, levando ao limite inferior (BB(3,4) > Ack(14)), onde o 14º número de Ackermann é definido por (Ack(n)=n \uparrow^n n)
- O comportamento central da TM pode ser comprimido aproximadamente em (B(k,n,m) \to B(k,0,g_{k-1}^n(m))), mas demonstrar isso exige indução dupla
- Graças à fórmula fechada de Matthew House, (g_k^n(0)=\frac{2 \uparrow^k (n+2)}{2}-2), foi possível escrever exatamente a pontuação final como (\sigma=(2 \uparrow^{15}5)+14)
- Essa TM simula funções de nível Ackermann sem ramificações por resto no estilo Collatz e também serve como caso de validação para o Inductive Proof Validator em desenvolvimento
Escala do novo campeão Busy Beaver
- Pavel Kropitz descobriu o novo campeão de Busy Beaver com 3 estados e 4 símbolos
- Essa TM consegue calcular funções de “nível Ackermann” e deixa a seguinte quantidade de símbolos não nulos na fita ao parar
- ((2 \uparrow^{15} 5) + 14)
- Como é um valor enorme mesmo na notação de setas de Knuth, o limite inferior pode ser resumido assim
- (BB(3,4) > Ack(14))
- Aqui, (Ack(14)) é o 14º número de Ackermann, definido por (Ack(n)=n \uparrow^n n)
- Dentro do que se conhece, este é o primeiro caso entre as TMs encontradas por busca efetiva que consegue simular funções de nível Ackermann
Definição da TM e configuração final
- A string de transição da TM é a seguinte
1RB3LB1RZ2RA_2LC3RB1LC2RA_3RB1LB3LC2RC
- A tabela de transição é definida para os estados
A,B,Ce os símbolos0,1,2,3A:1RB,3LB,1RZ,2RAB:2LC,3RB,1LC,2RAC:3RB,1LB,3LC,2RC
- A configuração final é a seguinte
- (0^\infty ;; 3^{2 g_{15}^{3}(0) + 1} ;; 2^{16} ;; 1 ;; \text{ Z> } ;; 0^\infty)
- Nessa configuração, a pontuação (\sigma) é calculada exatamente
- (\sigma = 2 g_{15}^{3}(0) + 18 = (2 \uparrow^{15} 5) + 14)
Descoberta e processo de validação
- Pavel Kropitz compartilhou essa TM no Discord em 25 de abril de 2024
- Na época, o código não conseguia indicar um limite inferior de pontuação legível por humanos e mostrava o resultado como
Halt(SuperPowers(13))- Isso significa que a prova exigia 13 níveis de regras de indução
- Depois disso, começou a validação usando o novo Inductive Proof Validator
- Em 20 de maio de 2024, a validação foi concluída e a definição exata de (g_k^n(m)) foi extraída, permitindo obter o limite inferior (\sigma > 2 \uparrow^{15} 3)
- Em 22 de maio de 2024, Matthew House encontrou a seguinte fórmula fechada simples
- (g_k^n(0) = \frac{ 2 \uparrow^k (n+2) }{2} - 2)
- Essa fórmula permitiu expressar o valor exato de (\sigma)
Análise do funcionamento e prova por indução dupla
- A seguinte configuração é definida
- (B(k, n, m) = 0^\infty ;; 3^{2m+1} ;; 2^k ;; \text{ A> } ;; 1^n)
- A configuração inicial alcança o seguinte estado após 241 passos
- (0^\infty ;; \text{A>} ;; 0^\infty \xrightarrow{241} B(16,3,0);;2;;0^\infty)
- A regra central é a seguinte
- (B(k,n,m) \to B(k,0,g_{k-1}^n(m))), com (k \ge 1)
- (g_k) é definida pela seguinte recorrência
- (g_0(m)=m+1)
- (g_{k+1}(m)=g_k^{2m+2}(0))
- O comportamento completo é quase simples o bastante para ser comprimido em uma única regra, mas provar essa própria regra exige indução dupla
- Lemas e corolários tratam do processo pelo qual o estado
Bprocessa blocos de3e2^kpara gerar1s- (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)
- O Teorema 3 mostra que a regra central vale para todo (k \ge 1, n \ge 0, m \ge 0)
- O caso base (k=1) é tratado por indução em (n)
- O passo indutivo usa ao mesmo tempo a hipótese sobre (k) e a hipótese de indução sobre (n)
Cálculo do valor exato
- (g_k) tem uma avaliação em forma fechada relativamente simples, usando apenas setas de Knuth e aritmética
- Para todo (k \ge 0, m \ge 0), vale o seguinte
- (2 g_{k+1}(m) + 4 = 2 \uparrow^k (2m+4))
- Aqui, (a \uparrow^0 b = ab)
- Esse resultado é provado por indução em (k)
- No caso base (k=0), temos (g_1(m)=2m+2)
- O passo indutivo usa aplicação repetida de ((2 \uparrow^k)^n)
- A forma fechada depende da coincidência de que (2 \uparrow^k 2 = 4) vale para todo (k)
- Se o parâmetro fosse um pouco diferente e tivesse a forma ((2 \uparrow^k)^{2m+2}5), seria provavelmente bem mais difícil obter uma expressão em forma fechada
- Como corolário, para todo (k \ge 0, n \ge 0), vale o seguinte
- (2 g_k^n(0) + 4 = 2 \uparrow^k (n+2))
- A pontuação final é derivada diretamente assim
- (\sigma = 2 g_{15}^{3}(0) + 18 = (2 \uparrow^{15} 5) + 14)
Resultado das permutações ao mudar o estado inicial
- Se o estado inicial for alterado para
BouC, surgem resultados relacionados, porém menores- (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)
- A pontuação com estado inicial
Bé a seguinte- (\sigma_B = 2 g_6^3(0) + 9 = (2 \uparrow^6 5) + 5)
- Com estado inicial
C, a TM para em 72 passos e a pontuação é a seguinte- (\sigma_C = 2 g_0^3(0) + 3 = (2 \uparrow^0 5) - 1 = 9)
- A primeira permutação começando em
Btambém é outra TM BB(3,4) de alto nível - Convertendo-a para TNF, obtém-se a seguinte string de transição
1RB3RB1LC2LA_2LA2RB1LB3RA_3LA1RZ1LC2RA
Simplicidade sem regra no estilo Collatz
- Um dos pontos interessantes dessa TM é que ela é mais simples do que se poderia esperar
- Não há regras no estilo Collatz que mudem o comportamento conforme o resto do valor
- Ainda é cedo demais para dizer se a dominância das TMs do tipo Collatz chegou ao fim
- Pode ainda existir uma TM de nível Ackermann com comportamento do tipo Collatz, mas especula-se que um viés de seleção possa estar escondendo isso por enquanto
- Uma possível razão para esta ter sido a primeira TM de nível Ackermann descoberta é que ela é simples o suficiente para permitir uma prova de parada sem precisar implementar aritmética modular sobre funções de nível Ackermann
Inductive Proof Validator
- Essa TM foi um bom caso de teste para o Inductive Proof Validator em desenvolvimento
- O objetivo do projeto é criar um formato padronizado de certificado para “provas por indução”
- Aqui, “prova por indução” é usado como termo abrangente para inferência progressiva e análise baseada em regras em geral
- A ideia é que qualquer pessoa com um “inductive decider” possa escrever as regras nesse formato, e o validador então verifique a prova
- O sistema ainda é bastante rudimentar e não está pronto para uso real, mas já foi usado, com algum trabalho manual, para provar o comportamento de várias TMs, incluindo esta TM
1 comentários
Opiniões no Hacker News
É fácil imaginar que um programa de máquina de Turing que roda por muito tempo seja profundamente complexo ou um código espaguete, mas o novo campeão é quase um contraexemplo
Ele tem apenas três estados, A, B e C; B passa o controle para A e C, mas A e C não “sabem” um do outro e apenas voltam para B
Se fosse código espaguete de verdade, cada estado poderia saltar para todos os outros, mas isto é uma espécie de composição modular
Além disso, ele nunca imprime uma célula em branco, e todo comando muda ou o estado ou a cor, então também não há “comandos preguiçosos”, como
B1 -> 1LB, que só movem a posiçãoNão dá para saber até excluir todo o espaço de busca, seja de forma determinística ou heurística
Todos os tamanhos acima de BB(5, 2) contêm máquinas caóticas e pseudorrandômicas que se espera que rodem para sempre, mas que não podem ser provadas sem grandes avanços em teoria dos números
Ainda assim, não acho que uma máquina de execução longa possa ser completamente caótica
Isso porque, se ela despejar símbolos na fita como números aleatórios, logo chegará a uma configuração de parada, a uma configuração cíclica ou a um padrão simplificado
Mesmo assim, é possível uma máquina que simule algo caótico em um nível mais alto, gaste uma quantidade absurda de tempo entre cada etapa de alto nível e então pare
nestados essímbolos só pode transitar para no máximonestados diferentesPor isso, se
s=4ous=2, apenas máquinas de Turing muito pequenas podem parecer código espagueteO novo recordista de BB(3,4) é o seguinte
0 1 2 3A 1RB 3LB 1RZ 2RAB 2LC 3RB 1LC 2RAC 3RB 1LB 3LC 2RCO
(t', d, s')na linhase colunatrepresenta a transição quando o símbolo sob a cabeça da fita no estadosétEle sobrescreve o símbolo
tport', move para a esquerda/direita conforme a direçãode então muda o estado paras'; ses' == Z, ele paraIsso equivale a
3*4*log2(4*2*log2(4+1)), ou seja, cerca de 64 bits de informaçãoPor outro lado,
BBλ(49), com apenas 49 bits, ultrapassa em muito o número de Graham https://oeis.org/A333479O cálculo acima é a abordagem mais ampla, que considera que cada célula pode ter uma combinação arbitrária de
(símbolo, direção, estado), portanto superestima bastante os bits necessários para descrever uma máquina de Turing arbitráriaNo caso de BB(3, 4), usando a Tree Normal Form, isto é, o algoritmo de Brady (https://nickdrozd.github.io/2022/01/14/bradys-algorithm.html), há apenas cerca de 600 bilhões de máquinas de Turing diferentes, resultando em menos de 40 bits
1Rde1RZparece um valor escolhido arbitrariamenteComo ele para ali, não importa o que reste na fita nem para onde a cabeça se mova
Na verdade, escrever
1também não é importante, mas escrever0provavelmente não teria sido idealNaquela posição já havia sido escrito
2, e ele é trocado por1, mas pelo critério de número de símbolos na fita,2teria contado do mesmo jeitolog2(4+1)Ao calcular
3*4*log2(4*2*log2(4+1)), dá cerca de 51; do ponto de vista de um não especialista, eu esperaria3*4*log2(4*2*4) = 60Fico me perguntando se talvez seja
3*4*log2(4*2*log2(3*3*4-1)) ≈ 64Fiquei curioso sobre o funcionamento e implementei aqui:
turingmachine.io/?import-gist=c862f28918f3d889f964797694d28fccSe rodar por um instante, dá para ver o que está acontecendo
O estado B troca
0por2, troca1por1e transita para C, enquanto o estado C troca3por2e transita para AEntão, para corrigir
2 -> 1, é preciso atravessar todos os3uma vez, o que faz uma sequência contínua de 3s crescer repetidamente de forma exponencialA parte realmente difícil de entender é por que ela acaba parando depois de um número inimaginável de passos
Tudo isso soa como code golf extremo
Em outra direção, dá para olhar algo chamado BitGrid
No BitGrid, cada célula tem apenas 4 bits de estado, então uma grade de células 4x4 não consegue contar mais do que
2^64, aconteça o que acontecerSeria interessante descobrir até onde ela consegue contar na prática, e em grades pequenas as conexões nas bordas vão dominar o resultado
https://esolangs.org/wiki/Bitgrid
https://github.com/mikewarot/Bitgrid
Esta tabela provavelmente é uma descrição de uma máquina de Turing; seria bom ter algum material para consultar sobre como interpretá-la
estadosA, B, C correspondem aos destinos degoto, e ascores0, 1, 2, 3 são os dados durante a execuçãoEm cada estado, lê-se a cor atual e, conforme essa cor, executa-se a instrução de “qual cor escrever, mover para a esquerda/direita e ir para qual estado”
Se convertido para C, dá para expressar diretamente com
switch (SCAN),WRITE,RIGHT/LEFTegotoFico curioso se há margem para reescrever essa lógica em um estilo mais estruturado ou aplicar outras otimizações
Por exemplo, a primeira linha e primeira coluna significam “leu o símbolo
0e o estado atual éA”A célula da tabela indica a ação a executar;
1RBsignifica “troque o símbolo da fita por1, mova uma casa para a direita e depois transicione para o estadoB”O estado
Zcorresponde ao estado de paradaL()eR()que movem o índice da fita para a esquerda/direita, criar uma tabela que mapeie(estado, símbolo atual)para(símbolo a escrever, função de movimento, próximo estado)e repetir enquantostate != 'Z'Como
1RZnão tem regra para o estadoZ, pode ser entendido como uma transição de paradaA Wikipedia também tem exemplos mais detalhados de tabelas de estados de máquinas de Turing em https://en.wikipedia.org/wiki/Turing_machine#Formal_definition, e o rastreamento da execução desta máquina de Turing específica pode ser visto em https://bbchallenge.org/1RB3LB1RZ2RA_2LC3RB1LC2RA_3RB1LB3LC2RC
Parece que agora isso também vai precisar ser atualizado
Uma citação de um resultado importante da ciência da computação fundamental ser um link do Discord é de lascar
A ideia de que a única forma válida de anunciar resultados científicos são os chamados periódicos com revisão por pares é uma relíquia de 200 anos atrás, quando a comunidade científica era pequena o bastante para caber dentro do número de Dunbar
Se isso ainda persiste, é porque alguns acadêmicos e editoras poderosos se beneficiam, não porque haja vantagens reais para o avanço da ciência
É até possível que tenha uma responsabilidade considerável pela crise de reprodutibilidade moderna
Sou um forte defensor do método científico, mas acho que a revisão por pares tradicional já passou muito da validade
https://en.wikipedia.org/wiki/Dunbar%27s_number
Eu diria que isso é mais uma indicação de fonte do que uma citação
O argumento principal que sustenta o resultado está reproduzido de forma mais rigorosa no post do blog, então se mantém de modo independente; os links do Discord só fornecem contexto histórico para quem tiver interesse
Se isso puder ser complementado com literatura no momento adequado, é uma mudança positiva
Por exemplo, o projeto que melhorou o limite superior para lacunas entre primos de Zhang; nesse aspecto, talvez outras ferramentas de comunicação não substituam facilmente o Discord
É preciso ir aonde as pessoas reais estão reunidas
Se fosse realmente fundamental, teria sido submetido à revisão por pares em um artigo de periódico, em vez de publicado em um blog
Máquinas de Turing que podem ser descritas com uma quantidade não tão grande de símbolos, como
1RB3LB1RZ2RA_2LC3RB1LC2RA_3RB1LB3LC2RC, existem em número limitadoMas é realmente surpreendente que algumas delas consigam executar uma quantidade tão absurda de passos antes de parar
2^60dessas máquinas de Turing de 3 estados e 4 símbolosA saída, isto é, um termo lambda de 49 bits em forma normal que ultrapassa o número de Graham, deveria ser ainda mais surpreendente
Para ser sincero, não entendo 100% e provavelmente são resultados quase inúteis, mas isso me atrai mais do que avanços em LLMs inacreditavelmente úteis
Talvez seja porque eu naturalmente me sinto mais atraído por verdades matemáticas simples do que por resultados de engenharia “complexos”
Não seria
BB(5) > BB(3,4)?Em https://bbchallenge.org, dizem que estão tentando provar ou refutar a conjectura de que BB(5) é cerca de 47 milhões, mas BB(3,4) parece ser muito maior que isso
BB(3, 4) >>> BB(5, 2)BB(5) = BB(5, 2), eBB(3, 4)tem 12 transições (3*4) na tabela, enquantoBB(5, 2)tem só 10, então não é tão surpreendenteMas também parece que
BB(3, 4) >> BB(6, 2)Como os dois têm o mesmo número de transições, nessas máquinas de Turing pequenas, parece que ter mais símbolos é bastante valioso