Suponho que o que você realmente deseja é uma enumeração de problemas, de modo que os programas correspondentes formem uma sequência crescente de tamanho. Aqui está um exemplo dessa enumeração. No entanto, apenas provo que o tamanho aumenta além de qualquer limite, portanto, não está emO(1), que parecia ser o seu ponto principal. Eu poderia tentar melhor, mas estou imaginando o que nesta resposta pode não ser aceitável na sua opinião da pergunta.
Se bem entendi, você quer uma enumeração Pn de problemas que são todos decidíveis com um algoritmo An, de modo que não exista um procedimento de decisão uniforme para a união desses problemas, porque, se houvesse um, seria um programa curto quando n fica grande, ou seja, seria O(1(n)).
Isso implica que a enumeração Annão é computável. Se fosse computável, aquele seria capaz de calcular o algoritmoAn a partir do conhecimento de n, possuindo, assim, um procedimento uniforme para a união de todos os problemas na enumeração.
Portanto, podemos procurar apenas exemplos de modo que não haja enumeração computável An de algoritmos tais que An resolve Pn.
Antes de entrarmos nisso, precisamos definir o tamanho de um
Deixei Tn ser uma enumeração pelos números de Gödel nde máquinas de Turing. Essa enumeração de Gödel é computável. Então deixaPn seja o seguinte problema: se Tn pára em todas as entradas, Pn consiste em reconhecer o conjunto recursivo reconhecido por Tn, outro Pn consiste em reconhecer o conjunto vazio ∅.
Como estamos procurando limites mais baixos no tamanho do algoritmo
An que resolve Pn, temos que definir o tamanho de uma TM. Para uma TM, seu número de Gödel pode ser considerado como o tamanho da máquina, ou seja, o algoritmo correspondente. De fato, o número de estados e transições aumenta necessariamente comn, mesmo que apenas por causa do princípio do buraco do pombo, embora ele não seja necessariamente uniforme (e dependa de uma definição arbitrária de tamanho).
Então, para qualquer TM Tn que sempre param, notamos μ(n) o menor número Gôdel de uma TM Tμ(n) para que sempre pare e reconheça o mesmo conjunto recursivo que Tn. ConseqüentementeTμ(n) é a menor TM que realmente é um algoritmo para resolver Pn, ou seja, é An. E seTn
pode não parar, então para An simplesmente usamos sempre um algoritmo correspondente a uma TM T∅ o reconhece o conjunto ∅, sempre o mesmo.
Cada problema Pn é decidível e Ané um procedimento de decisão. No entanto, a enumeraçãoAn não é computável, mas mostramos que é inevitável.
É fácil mostrar que, dadas as constantes C, há um n tal que o tamanho |An| do An é melhor que C. O motivo é simplesmente que o número de máquinas menores queC é finito, enquanto o número de conjuntos recursivos reconhecidos pelas TMs é infinito.
Portanto, este é um exemplo de um problema (mais precisamente uma enumeração de problemas) que não pode ser resolvido por um programa curto, ou seja, de modo que não exista um limite constante no comprimento das soluções para cada Pn.
Podemos sempre adicionar a cada problema Pn que requer qualquer solução para ler primeiro uma matriz de tamanho n, de modo a atender à restrição na pergunta. Mas há pouco sentido nisso.