O que sabemos é que π é infinito e provavelmente contém todas as seqüências finitas de dígitos possíveis ( sequência disjuntiva ).
Eu vi recentemente algum protótipo de πfs que pressupõe que todos os arquivos que você criou (ou qualquer outra pessoa) ou que você criará, já estão lá, por isso é uma questão de extraí-lo. Há também o piFile que pode converter seus arquivos em metadados pi.
Já existe tipo fórmula BBP (como parte de matemática experimental) que nos permite calcular n th dígito binário de pi. Assim, armazenando a posição de nosso início e comprimento dos dados, podemos teoricamente extrair os dados de nosso interesse. Existem alguns argumentos contra o fato de que nossos metadados (por exemplo, o deslocamento para nossos dados) podem ser maiores que os dados extraídos. Os símbolos da matriz e π podem ser codificados na base-256 para torná-lo mais eficiente (veja a piada ).
Com base no exposto, minha principal pergunta é:
- Existem algoritmos de compactação baseados no PI?
Se não, isso faz sentido? Ou houve alguma pesquisa nessa área?
Ou talvez π não seja o correto, e a constante de Euler ou Tau (τ)? Isso faria alguma diferença?
Créditos da imagem: Dinosaur Comics
Veja também:
Respostas:
fonte
Baseado na resposta de Yuval, com uma explicação ligeiramente diferente e um exemplo para ajudar a esclarecer o problema.
Teoria
Veja também entropia de informações .
Exemplo
Talvez possamos dividir os números?
fonte
sim, https://github.com/divinity76/pi_compression
não, armazenar as compensações normalmente ocupa mais espaço em disco do que você economiza, pelo menos com a implementação acima (3 coisas notáveis a respeito que poderiam ser melhoradas, porém, considera apenas os primeiros 2 ^ 32 bytes de uma representação binária de pi e usa uma quantidade excessiva de bits para armazenar o número de bytes correspondentes por deslocamento, ou seja, 8 bits enquanto o teste mostra que 3 bits seriam ótimos e considera apenas correspondências de bytes completos; portanto, se houver uma correspondência de 15 bits em algum lugar, será só será considerado uma correspondência de 8 bits. também se os últimos 4 bits de um byte corresponderem, mas não o bit 3, e os primeiros 4 bits do próximo byte corresponderem, mas não o bit 5, não será considerado como uma correspondência em tudo)
uhm claro, foi por isso que escrevi a implementação acima, e os resultados parecem ser que, nos primeiros 4 GB de pi, é provável que você encontre 4 bytes correspondentes de ... praticamente qualquer coisa, o que é muito difícil, se não impossível, para obter qualquer compressão, falhei pelo menos. (mas minha implementação não é ótima, conforme explicado acima) - também a compactação é muito lenta, mas minha implementação é de thread único, mas o algoritmo permite multithreading se alguém puder escrever sobre o código, o que permitiria o desempenho da escala com o número de núcleos disponíveis.
descompressão é muito rápida, no entanto.
fonte
mesmo que uma constante matemática demonstre ter a propriedade notável de "contendo todas as strings", um argumento simples é que o algoritmo de compactação passaria "muito tempo" pesquisando a posição da string e a descrição de sua localização normalmente levaria um tempo. longa (er) sequência de dígitos.
veja também / contrast / try para reconciliar-se com uma pergunta com alta votação semelhante, como é possível decidir se pi contém alguma sequência de dígitos . (cs.se) (dica: o título pode ser considerado um tanto enganador)
fonte