pontos são necessários para determinar exclusivamente um polinômio de grau ; por exemplo, dois pontos em um plano determinam exatamente uma linha.
Quantos pontos são necessários para determinar exclusivamente uma função computável , dada a duração de um programa que calcula em um idioma fixo? (isto é, um limite à complexidade Kolmogorov de ).
A idéia é que, pelo menos teoricamente, alguém possa provar a correção de um programa fazendo testes suficientes.
Se uma tem um programa de comprimento que calcula , há um limite no número de funções que podem ser calculados com um comprimento fonte de, no máximo, .
Portanto, seria "apenas" necessário provar que:
- podeser calculado com um comprimento de fonte
- não calcula nenhuma outra função computável embytes ou menos (por teste)
Essa ideia provavelmente não tem conseqüências práticas (os limites certamente serão exponenciais).
Respostas:
(Isso foi feito como um comentário, mas demorou muito). Pergunta muito interessante. Se você estiver disposto a pensar em outras medidas de complexidade além das de Kolmogorov, existem algumas respostas na teoria da aprendizagem que podem satisfazê-lo. Deixo para os especialistas da área.
Por exemplo, se não me engano, em "Uma teoria do aprendível", Valiant provou que uma função booleana pode ser reconstruída, dado um número polinomial de "pontos positivos" no tamanho de sua fórmula k-CNF (para qualquer k fixo , e quero dizer com "pontos positivos" os da forma ).(x1,…,xn,1)
No TAOCP 7.2.1.6 de Knuth, é mostrado de uma maneira surpreendente (usando o padrão de árvore de Natal) que, para reconstruir uma função booleana monote (ou seja, não decrescente em cada variável), você precisa exatamente pontos.(n+1⌊n/2⌋+1)
fonte
Para continuar na linha da resposta de Deigo, a complexidade da amostra padrão limitada pela teoria da aprendizagem diz que, se você estiver satisfeito em encontrar um programa "aproximadamente correto", não precisará tentar muitos pontos. Digamos que estamos codificando programas em binário, de modo que existem apenas programas de comprimento d. Suponhamos também que existe uma certa distribuição ao longo exemplos de entrada . Talvez seu objetivo seja encontrar um programa que você esteja quase certo ("Provavelmente aproximadamente correto", como no modelo de aprendizado do Valiants PAC). Ou seja, você deseja executar um algoritmo que recolherá um pequeno número de amostras junto com e, com probabilidade pelo menos D x ~ D f ( x ) ( 1 - δ ) P f ( 1 - ε ) D2d D x∼D f(x) (1−δ) saída de algum programa que concorda com em, pelo menos, um fracção de entradas extraídas . P f (1−ϵ) D
Simplesmente desenharemos exemplos e produziremos qualquer programa de comprimento que concorde com em todos os exemplos. (É garantido que existe uma vez que assumimos que tem complexidade Kolmogorov no máximo ) ...x ∼ D P ≤ d f f dm x∼D P ≤d f f d
Qual é a probabilidade de um programa que discordar de em mais de uma fração de exemplos ser consistente com os exemplos que selecionamos? É no máximo . Gostaríamos de considerar essa probabilidade no máximo para que possamos estabelecer uma união entre todos os programas e dizer que, com probabilidade pelo menos , nenhum programa "ruim" é consistente com nossos exemplos desenhados. Resolvendo, vemos que é suficiente pegar apenas exemplos. (isto é, apenas linearmente muitos na complexidade de Kolmogorov def ϵ m ( 1 - ϵ ) m δ / 2 d 2 d 1 - δ m ≥ 1P f ϵ m (1−ϵ)m δ/2d 2d 1−δ f
BTW, argumentos como este podem ser usados para justificar "Navalha de Occam": dado um número fixo de observações, dentre todas as teorias que as explicam, você deve escolher aquela com menor complexidade de Kolmogorov, porque há a menor chance de sobreajuste.
Obviamente, se você quiser apenas verificar um único programa fixo dessa maneira, precisará apenas de exemplos de ...O(log(1/δ)/ϵ)
fonte
Aqui está uma resposta trivial: supondo que, Então você precisa saber o valor de em tudopontos para determinar exclusivamente . Portanto, a abordagem que você esboça não ajuda em nada, a menos que você saiba que a duração do programa é extremamente curta: muito menor quebits.f | N | f L lg | N |L≥lg|N| f |N| f L lg|N|
fonte
Você pode tornar o programa arbitrariamente longo. Portanto, em qualquer programa, você pode decidir se o idioma é equivalente ao deste programa. Você não pode fazer isso pelo teorema de Rice.
fonte