Estou entrando na discussão bastante tarde, mas tentarei abordar várias perguntas que foram feitas anteriormente.
Primeiro, como observado por Aaron Sterling, é importante decidir primeiro o que queremos dizer com números "verdadeiramente aleatórios", e especialmente se estivermos analisando as coisas da perspectiva da complexidade computacional ou da computabilidade.
Permitam-me, no entanto, argumentar que, na teoria da complexidade, as pessoas estão interessadas principalmente em pseudo- aleatoriedade e geradores pseudo- aleatórios, ou seja, funções de cadeias para cadeias, de modo que a distribuição das seqüências de saída não possa ser diferenciada da distribuição uniforme por algum processo eficiente (onde vários significados de eficiente podem ser considerados, por exemplo, computadores com policitem, circuitos de tamanho polinomial etc.). É uma área de pesquisa bonita e muito ativa, mas acho que a maioria das pessoas concorda que os objetos que estuda não são verdadeiramente aleatórios, basta que pareçam aleatórios (daí o termo "pseudo").
Na teoria da computabilidade, surgiu um consenso sobre o que deveria ser uma boa noção de "aleatoriedade verdadeira", e é de fato a noção de aleatoriedade de Martin-Löf que prevaleceu (outras foram propostas e são interessantes de estudar, mas não revelam tudo). as boas propriedades que a aleatoriedade de Martin-Löf possui). Para simplificar, consideraremos a aleatoriedade para infinitas seqüências binárias (outros objetos, como funções de cadeias de caracteres para cadeias de caracteres, podem ser facilmente codificados por essa sequência).
Uma sequência binária infinita é aleatória de Martin-Löf se nenhum processo computável (mesmo que permitamos que esse processo seja computável em tempo exponencial triplo ou superior) possa detectar uma falha de aleatoriedade.α
(1) O que queremos dizer com "falha de aleatoriedade"? Essa parte é fácil: é um conjunto de medida 0, ou seja, uma propriedade que quase todas as seqüências não têm (aqui falamos de Lebesgue medir ou seja, a medida em que cada bit tem um probabilidade de ser 0 independentemente de todos os outros bits). Um exemplo dessa falha é "ter 1/3 de zeros assintoticamente e 2/3 de zeros", o que viola a lei de grandes números. Outro exemplo é "para cada n, os primeiros 2n bits de α estão perfeitamente distribuídos (tantos zeros quanto um)". Nesse caso, a lei dos grandes números é saturada, mas não o teorema do limite central. Etc etc.1 / 20 0α
(2) Como um processo computável pode testar se uma sequência não pertence a um conjunto específico de medida 0? Em outras palavras, quais conjuntos de medidas 0 podem ser descritos computacionalmente? É exatamente disso que se trata os testes de Martin-Löf. Um teste de Martin-Löf é um procedimento computável que, dada uma entrada k, computável (isto é, através de uma máquina de Turing com entrada ) gera uma sequência de cadeias w k , 0 , w k , 1 , ... de modo que o conjunto U k de sequências infinitas começando por uma daquelas w k , i tem uma medida no máximo 2 - kkWk , 0Wk , 1vocêkWk , i2- k(se você gosta de topologia, observe que este é um conjunto aberto na topologia do produto para o conjunto de infinitas seqüências binárias). Então o conjunto tem a medida 0 e é referido como Martin-Löf nullset . Agora podemos definir a aleatoriedade de Martin-Löf dizendo que uma sequência binária infinita α é aleatória de Martin-Löf se não pertencer a nenhum conjunto nulo de Martin-Löf . G = ⋂kvocêk0 0α
Essa definição pode parecer técnica, mas é amplamente aceita como correta por várias razões:
- é eficaz o suficiente, ou seja, sua definição envolve processos computáveis
- é suficientemente forte: qualquer propriedade "quase certa" que você possa encontrar em um livro de teoria das probabilidades (lei dos grandes números, lei do logaritmo iterado etc.) pode ser testada por um teste de Martin-Löf (embora isso às vezes seja difícil de provar)
- foi proposto independentemente por várias pessoas usando definições diferentes (em particular a definição de Levin-Chaitin usando a complexidade de Kolmogorov); e o fato de todos eles levarem ao mesmo conceito é uma dica de que deve ser a noção correta (um pouco como a noção de função computável, que pode ser definida através de máquinas de Turing, funções recursivas, cálculo lambda etc.)
- a teoria matemática por trás disso é muito legal! veja os três excelentes livros Introdução à complexidade de Kolmogorov e suas aplicações (Li e Vitanyi), aleatoriedade e complexidade algorítmica (Downey e Hirschfeldt) Computabilidade e aleatoriedade (Nies).
Como é uma sequência aleatória de Martin-Löf? Bem, pegue uma moeda perfeitamente equilibrada e comece a jogá-la. Em cada flip, escreva um 0 para cara e 1 para coroa. Continue até o final dos tempos. É assim que uma sequência de Martin-Löf se parece :-)
Agora voltando à pergunta inicial: existe uma maneira computável de gerar uma sequência aleatória de Martin-Löf? Intuitivamente, a resposta deve ser NÃO , porque se podemos usar um processo computável para gerar uma sequência , certamente podemos usar um processo computável para descrever o singleton { α }, para que α não seja aleatório. Formalmente, isso é feito da seguinte maneira. Suponha que uma sequência α seja computável. Considere o seguinte teste de Martin-Löf: para todo k , basta gerar o prefixo a k de α de comprimento k , e nada mais. Isso tem uma medida no máximo (de fato, exatamente) 2 - kααααkumakαk2- k, e a interseção dos conjuntos como na definição, é exatamente { α }. QED !!vocêkα
De fato, uma sequência aleatória Martin-Löf é incomputável em um sentido muito mais forte: se alguma computação do oráculo com o oráculo β (que por si só é uma sequência binária infinita) pode calcular α , então para todos os n , n - O ( 1 ) bits de β são necessários para calcular os primeiros n bits de α (essa é de fato uma caracterização da aleatoriedade de Martin-Löf, que infelizmente raramente é declarada como na literatura).αβαnn - O ( 1 )βnα
Ok, agora a parte "editar" da pergunta de Joseph: Será que uma MT com acesso a uma fonte pura de aleatoriedade (um oráculo?), Pode calcular uma função que uma MT clássica não pode?
Do ponto de vista da computabilidade, a resposta é "sim e não". Se você tiver acesso a uma fonte aleatória como um oráculo (onde a saída é apresentada como uma sequência binária infinita), com probabilidade 1, você obterá um oráculo aleatório de Martin-Löf e, como vimos anteriormente, o acaso de Martin-Löf implica não computável, portanto basta produzir o próprio oráculo! Ou, se você quiser uma função , considere a função f que, para todos os n, indica quantos zeros existem entre os primeiros n bits do seu oráculo. Se o oráculo for aleatório de Martin-Löf, essa função será não computável.f: N → Nfnn
Mas é claro que você pode argumentar que isso é trapaça: de fato, para um oráculo diferente, podemos ter uma função diferente, portanto há um problema de não reprodutibilidade. Portanto, outra maneira de entender sua pergunta é a seguinte: existe uma função que não é computável, mas que pode ser "computada com probabilidade positiva", no sentido de que existe uma máquina de Turing com acesso a um oráculo aleatório que, com probabilidade positiva (sobre o oráculo), calcula f . A resposta é não, devido a um teorema de Sacks cuja prova é bastante simples. Na verdade, ele foi respondido principalmente por Robin Kothari: se a probabilidade de a MT estar correta é maior que 1/2, é possível procurar todos os n em todos os cálculos possíveis do oracle com a entrada nffnne encontre a saída que obtém o "voto majoritário", isto é, que é produzido por um conjunto de oráculos de medida acima de 1/2 (isso pode ser feito de maneira eficaz). O argumento se estende até probabilidades menores: suponha que a TM produza com probabilidade ϵ > 0 . Pelo teorema da densidade de Lebesgue, existe uma cadeia finita σ tal que, se fixarmos os primeiros bits do oráculo como exatamente σ , e depois pegarmos os outros bits aleatoriamente, calcularemos f com probabilidade de pelo menos 0,99. Tomando tal σ , podemos aplicar o argumento acima novamente.fε > 0σσfσ