Eu estava olhando para esta leitura do MIT sobre complexidade computacional e, às 15:00, Erik Demaine embarca em uma demonstração para mostrar o que é afirmado no título desta pergunta. No entanto, não posso seguir seu raciocínio, na prática o que ele diz é o seguinte:
podemos declarar um problema de decisão como uma seqüência de e que na prática é a tabela verdadeira da função.
Ele continua dizendo que um problema de decisão é uma sequência infinita de bits, enquanto um programa é uma sequência finita de bits e, até aqui, não há problema. O que não entendo é a continuação da prova a partir deste ponto: Os problemas de decisão estão em
porque você pode colocar um ponto decimal antes da string que representa o problema, obtendo assim a parte decimal de um real
for example if you have 0111011010101010101... it could become x.0111011010101010101...
Um programa é "apenas" um número inteiro em porque é uma sequência finita de bits. O ponto que eu não entendo é como é possível que um problema de decisão seja comparável a um número real em vez de um número inteiro ... Quero dizer, se usarmos o argumento de "colocar um ponto na frente do número", não é possível o mesmo raciocínio também pode ser aplicado ao número de algoritmos possíveis que podem ser produzidos?
Respostas:
Se o entendi corretamente, sua pergunta é: por que uma solução pode ser codificada por um número natural e um problema com um número real? (Presumo que você entenda a próxima fase da prova que se baseia na diferença entre conjuntos de cardinalidade e .)c ℵ0
A razão está na teoria dos conjuntos, mais especificamente na cardinalidade de diferentes conjuntos. Conte o número de programas - é o tamanho das diferentes seqüências de caracteres de um idioma específico ou conjunto de caracteres (ASCII, por exemplo). Esse tamanho é equivalente ao tamanho do conjunto (números naturais). (Cada sequência pode ser representada como seu valor calculado por sua representação binária.)N
Mas, contando o número de funções dos números naturais (ou cadeias que os representam) até , isso é uma história totalmente diferente, e aqui estamos lidando com diferenças de tamanho entre dois conjuntos infinitos; o tamanho deste conjunto é maior. Há uma boa prova baseada no fato de que as funções de para todos os conjuntos mencionados acima não podem ser "ativadas", o que leva à conclusão da diferença de cardinalidade. Você pode ler a prova aqui .{0,1} N
fonte
Reformulando de uma maneira mais matematicamente precisa, o que o palestrante está tentando dizer é o seguinte: Qualquer algoritmo pode ser (exclusivamente) codificado como uma sequência finita de bits e qualquer sequência finita de bits (exclusivamente) codifica um programa; portanto, existe uma bijeção entre e o conjunto de algoritmos, portanto ambos são conjuntos contáveis. Por outro lado, tendo corrigido uma ordem de seqüências de caracteres, qualquer problema de decisão pode ser (exclusivamente) codificado como uma sequência infinita de bits, onde o ésimo bit representa se a ésima sequência está em ou não, e qualquer sequência infinita de bits (exclusivamente) codifica um problema de decisão (da mesma maneira); portanto,N P i i P R e o conjunto de problemas de decisão são conjuntos incontáveis.
fonte
Todo algoritmo pode ser descrito por uma sequência finita e, portanto, existem apenas muitos algoritmos. Em contraste, podemos descrever todo problema de decisão como um decimal infinito na base 2 e, além disso, esse é um mapeamento surjetivo : todo número em pode ser "decodificado" para um problema de decisão. Portanto, existem incontáveis problemas de decisão.[0,1]
O argumento de decodificação não funciona para algoritmos - enquanto todo algoritmo corresponde a um número decimal finito, isso não cobre todo o , mas apenas um subconjunto contável dele.[0,1]
fonte