Como Max disse que a modificação não é difícil, eu sugiro que você não ler o resto desta resposta e pensar sobre o problema um pouco mais, só há uma parte que precisa de modificação e lembrando a definição de quando um A máquina aceita ajudará você a consertar essa parte.coNP
Vou explicar a modificação necessária abaixo, mas primeiro vamos ter uma breve visão na prova original.
Na prova original é construído em etapas, onde na etapa i com o make certeza que i th máquina em P , M i , não decide a linguagem { x | ∃ y ∈ A | x | = | y | } corretamente. Note-se que o conjunto é em N P A .A=⋃nAniiPMi{x∣∃y∈A |x|=|y|}NPA
Conseguimos isso simulando usando a parte de A que construímos em 0 m, em que m é grande o suficiente (a string é mais longa do que as consideradas nas etapas anteriores). M i aceita, não adicionamos nada; se ele rejeita, adicionamos uma cadeia de comprimento m que M i não faz uma consulta ao conjunto (essa cadeia existe, pois existem exponencialmente muitas cadeias de comprimento m, mas M i não pode perguntar sobre todos eles em tempo polinomial). Não modificaremos esta parte de A em etapas futuras (ou seja, cadeias de comprimento mMiA0mmMimMimMiAmou menos permanecerá o mesmo). Isso garante que não decida o idioma corretamente e complete a prova.MAi
Agora, assume que as máquinas foram em c O N P em lugar de P . Precisamos modificar a prova para se certificar de que M Um i não reconhecerá L . Se estiver aceitando, mantemos A como antes e tudo funciona bem como na prova original. Se rejeitar, precisamos adicionar uma sequência ao conjunto para garantir que ela não responda corretamente. Ainda podemos simular M i com a parte de A que temos, o problema é que M i pode consultar todas as cadeias de comprimento n . Aqui a forma como um c oMicoNPPMAiLAMiAMincoNP funcionamento da máquina se torna importante. Ele aceita se e somente se todos os caminhos de computação aceitarem. Como está rejeitando neste caso, há um caminho de computação que está rejeitando. Enquanto mantivermos esse caminho intacto, tudo funcionará; portanto, precisamos manter as respostas para as consultas nesse caminho iguais. O número de consultas nesse caminho é polinomial (já que a máquina é executada em tempo polinomial), portanto, existem cadeias de comprimento que o caminho não consulta, basta adicionar uma delas a A e o restante da prova funciona como antes.mA
Os passos são algorítmicos, portanto, o conjunto é recursivo (a parte essencial da construção é a capacidade de simular máquinas, o que pode ser feito, por exemplo, D S p a c e ( n ω ( 1 ) )ADSpace(nω(1)) ).