14 0.1 14.1 Computabilidade Linguagens decidíveis ou Turing reconhecíveis Problemas decidíveis para Linguagens Regulares Dr aft -v Teorema 14.1 Seja A linguagem ADFA é decidível. ADFA = {�A� �� : A é um DFA e aceita �} � Dem. Basta mostrar como construir um decisor M para ADFA . M Input: �A� �� com A DFA e � palavra i) Simula A com input �. ii) Se A aceitar �, para e aceita. Se A não aceitar �, para e rejeita. De facto a escrita de M é bastante simples. Tem que verificar se as descrições que recebe de A e � são bem formadas, caso contrário rejeita. Para simular A tem somente que manter o estado em que a simulação de A se encontra e à medida que lê os símbolos de � proceder como descreve a função de transição de A. Quando a leitura de � termina, se o estado resultante constar da lista de estados finais, aceita, e rejeita no caso contrário. ⇤ Teorema 14.2 Seja A linguagem ANFA é decidível. ANFA = {�A� �� : A é um NFA e aceita �} � Dem. O decisor M de ANFA pode ser descrito como M Input: �A� �� com A NFA e � palavra i) Transforma A num DFA A� . ii) Simula A� com input �. iii) Se A� aceitar �, para e aceita. Se A� não aceitar �, para e rejeita. 117 ⇤ Teorema 14.3 Seja AREX = {�α� �� : α é uma expressão regular e � ∈ �(α)} � A linguagem AREX é decidível. Teorema 14.4 Seja EDFA = {�A� : A é DFA e �(A) = ∅} � A linguagem EDFA é decidível. Input: �A� com A DFA i) Marca o estado inicial de A. ii) Repete até ao processo não marcar mais estados: iii) Marca qualquer estado que ainda não tenha sido marcado e que tenha uma transição vinda de um estado já marcado. iv) Se nenhum estado final tiver sido marcado, aceita. Caso contrário, rejeita. Dr aft -v M 0.1 Dem. Podemos construir a TM M que decide EDFA que percorre, com uma descida em largura, todos os estados de A, da seguinte forma ⇤ Teorema 14.5 Seja EQDFA = {�A� B� : A e BDFA e �(A) = �(B)} � A linguagem EQDFA é decidível. Dem. Como a classe das linguagens regulares é fechada para o complemento e intersecção, também é fechada para a diferença simétrica. Ora, duas linguagens são iguais se e só se a sua diferença simétrica é vazia. Assim, podemos substituir a condição �(A) = �(B) por � � � � �(A) ∩ �(B) ∪ �(B) ∩ �(A) = ∅� Podemos, então definir a TM que decide EQDFA da seguinte forma. M Input: �A� B� com A e B DFA � � � � i) Calcula o DFA C que representa �(A) ∩ �(B) ∪ �(B) ∩ �(A) ii) Devolve a resposta do decisor de EDFA aplicado a �C �. ⇤ Problemas decidíveis para CFL Teorema 14.6 Seja AC F G = {�G� �� : G é CFG e � ∈ �(G)} � 118 A linguagem AC F G é decidível. Dem. Um decisor para AC F G pode ser definido como a seguinte TM S. S Input: �G� �� com G CFG e � palavra i) Converte G numa gramática equivalente G � mas na forma normal de Chowmsky. ii) Listam-se todas as derivações de G � com 2� − 1 passos, sendo � o tamanho de �. iii) Se alguma destas derivações gera �, aceita. Caso contrário, rejeita. Teorema 14.7 Seja A linguagem EC F G é decidível. 0.1 ⇤ EC F G = {�G� : G é CFG e �(G) = ∅} � Dem. Podemos construir uma TM R que decide EC F G da forma seguinte. Input: �G� com G CFG Dr aft -v R i) Marca todos os símbolos terminais. ii) Repete até ao processo não marcar mais símbolos:. iii) Marca qualquer símbolo não terminal A com regra A → U1 U2 · · · U� se todos os símbolos U1 � U2 � � � � � U� já estiverem marcados. iv) Se o símbolo inicial estiver marcado, rejeita. Caso contrário, aceita. ⇤ Um problema Turing reconhecível para TM Teorema 14.8 Seja AT M = {< M� � >: M é TM e � ∈ �(M)} � A linguagem AT M é Turing reconhecível. Dem. Basta ver que a seguinte TM U reconhece AT M . U Input: �M� �� com M TM e � palavra i) Executa M com input � ii) Se M aceitar, aceita. Caso contrário, rejeita. ⇤ A TM U da demonstração do teorema anterior, não é particularmente complicada de entender. No entanto é uma TM muito interessante. A máquina U recebe uma descrição de uma outra máquina de 119 Turing, M, assim como de um seu input, �, e simula o funcionamento da máquina M com o input �. À máquina U chamamos normalmente Máquina de Turing Universal e esta desempenhará um papel de importância em alguns resultados futuros. Problema 74 — Considera o DFA M representado pelo diagrama seguinte: 1 0 �M�0100� ∈ ADFA ? �M� 011� ∈ ADFA ? �M� ∈ ADFA ? �M� 0100� ∈ AREX ? �M� ∈ EDFA ? �M� M� ∈ EQDFA ? 1 0� 1 0.1 1. 2. 3. 4. 5. 6. 0 Problema 75 — Seja ALLDFA = {�A� : A é DFA e �(A) = Σ� } � Mostrar que ALLDFA é decidível. Problema 76 — Seja AεC F G = {�G� : G é CFG e ε ∈ �(G)} � Mostrar que AεC F G é decidível. Dr aft -v Problema 77 — Seja ET M = {�M� : M é uma TM e �(M) = ∅} � Mostar que ET M é Turing reconhecível. � � Problema 78 — Seja S = �M� : M um DFA tal que � ∈ �(M) ⇒ � R ∈ �(M) � Mostrar que S é decidível. Problema 79 — Seja PREF IX −F REEREX = {�R� : expressão regular e �(R) livre de prefixos} � Mostrar que PREF IX − F REEREX é decidível. Problema 80 — Seja C uma linguagem. Mostrar que C é Turing reconhecível se e só se existe uma linguagem decidível D tal que C = {� : ∃�� ��� �� ∈ D} � 14.2 14.2.1 Indecidibildade O argumento “diagonal” de Cantor Quando tratamos de conjuntos finitos, a comparação de cardinalidades não é um problema complicado, mas o caso muda de figura quando tratamos de conjuntos infinitos. Para termos um significado claro de cardinalidade definimo-la como a seguir. Dois conjuntos A e B dizem-se equipotentes (ou equicardinais) se existir uma bijecção � : A → B. Claro que se tivermos uma função injectiva � : A → B podemos garantir que |A| ≤ |B|. A um conjunto que seja equipotente com o conjunto dos números naturais N dizemos que é numerável. Estamos, pois, em condições de enunciar os seguintes resultados sobre cardinalidade de alguns conjuntos infinitos. Teorema 14.9 O conjunto Z é numerável. Dem. Para tal provar basta considerar a seguinte função � :Z → N 0 �→ 0� 2� − 1 se � > 0� � �→ −2� se � < 0� A função � é trivialmente uma bijecção, pelo que |N| = |Z|. 120 ⇤ Teorema 14.10 O conjunto Q é numerável. Dem. Como N ⊆ Q temos que |N| ≤ |Q|. Mostremos que há uma função injectiva � : Q+ → N. Podemos inscrever todos os elementos de Q+ numa tabela dispostos como se ilustra a seguir. Podemos percorrer todos os racionais positivos como ilustra a linha a tracejado. Isso constitui uma sucessão de valores racionais (�� )�∈N que cobre todos os naturais positivos. Tomemos então � (�) = ��� {� : �� = �}. A função � é trivialmente injectiva, pelo que |Q+ | = |N|. 1 1 1 2 1 3 1 4 1 5 1 6 1 7 ··· 3 1 3 2 3 3 3 4 3 5 3 6 3 7 ··· 2 2 4 1 2 3 4 2 5 1 4 3 5 2 6 1 2 5 4 4 5 3 6 2 2 6 2 7 ··· 5 4 6 3 7 2 4 5 5 5 6 4 7 3 4 6 5 6 6 5 7 4 4 7 5 7 6 6 7 5 6 7 7 6 7 7 ··· ··· ··· ··· Dr aft -v 7 1 2 4 0.1 2 1 .. . .. . .. . .. . .. . .. . Agora basta mostrar que |Q| ≤ |N| usando a bijecção �:Q .. . → N 0 �→ 0� 2(� (�) + 1) se � 0; � �→ 2(� (�) + 1) + 1 se � < 0� ⇤ Teorema 14.11 O conjunto R não é numerável. Dem. Mostremos que o intervalo [0� 1[⊆ R não é numerável, o que é suficiente para garantir que R também não o é. Para isso suponhamos, por absurdo, que [0� 1[ era numerável. Então existiria uma função bijectiva � : [0� 1[→ N. Como a função é bijectiva faz sentido falar em � −1 e podemos imaginar a tabela das imagens recíprocas dos sucessivos elementos de N. Para simplificar vamos supor os valores de � −1 expressos em binário. 0 1 2 3 .. . � −1 (�) . . . . .. . 0 1 1 0 .. . 1 0 1 1 .. . 1 1 0 1 .. . 0 1 1 0 .. . 0 0 1 1 .. . 1 1 0 1 .. . 1 0 1 0 .. . ··· ··· ··· ··· Podemos mostrar que esta função não pode ser bijectiva encontrando um elemento � de [0� 1[ que não seja imagem recíproca por � de nenhum natural. Para tal definamos � como o numero cujos bits são da seguinte forma: o �-ésimo bit é o complementar do �-ésimo bit da imagem recíproca 121 por � de �. Se � ocorresse na tabela, digamos na posição �, qual seria o valor do seu �-ésimo bit? Deveria ser o complementar do que se encontra na tabela, ou seja, complementar de si próprio, o que é, evidentemente, absurdo. Portanto � não pode ser uma bijecção e |R| ≥ |[0� 1[| > |N|. Logo R não é numerável. ⇤ Estamos agora em condições de mostrar que nem as máquinas de Turing representam todas as linguagens existentes. Teorema 14.12 Há linguagens não Turing reconhecíveis. 0.1 Dem. Vamos primeiro mostrar que o conjunto de todas as TM é numerável. Para isso notemos que, seja qual for o alfabeto Σ, Σ� é numerável. O facto é evidente, basta observar a seguinte função injectiva � : Σ� → N. Suponhamos que |Σ| = � então façamos corresponder a cada caracter σ de Σ um diferente valor �(σ ) em {1� 2� · · · � � + 1}. Façamos � (ε) = 0 e � (�), com � ∈ Σ+ , igual ao valor de � transformando cada símbolo pela função � e interpretando o resultado como um número expresso em base � + 2. A função � é trivialmente injectiva, pelo que |Σ� | ≤ |N|. Para a desigualdade contrária basta tomar σ ∈ Σ e a função � : N → Σ� , com �(�) = σ � . Portanto Σ� é numerável. Uma TM pode ser representada por uma palavra que descreva completamente os seus elementos constituintes. Como o conjunto de estados de uma TM é finito, e os alfabetos nela intervenientes também o são (por definição de alfabeto), a descrição da sua função de transição assim como dos demais elementos constituem uma palavra (de tamanho finito) para algum alfabeto Σ� . Portanto as palavras de tal alfabeto representam todas as possíveis representações de TM, e portanto o conjunto de todas as TM é numerável. Dr aft -v Seja Σ um alfabeto, vimos que Σ� é numerável. Uma linguagem com o alfabeto Σ é um qualquer conjunto de palavras de Σ� . Suponhamos, por absurdo, que o conjunto das linguagens de alfabeto Σ é numerável. Então haveria uma bijecção � entre N e o conjunto das linguagens com tal alfabeto. Enumeremos todas as palavras de tal alfabeto (o conjunto é numerável) como �0 � �1 � � � �. Podemos então imaginar uma tabela que lista todas as linguagens, com a ordem dada pela bijecção � , com a informação de que palavras pertencem a cada uma. Construamos, usando o argumento diagonal de Cantor, uma linguagem que não pode ocorrer na tabela, e que portanto mostra que � não é bijecção. Seja L = {�� : � ∈ N�� ∈ / � (�)}. Se L estivesse na tabela, ou seja se L fosse imagem de algum natural �, o que se poderia dizer acerca da palavra �� ? � (0) � (1) � (2) .. . � (�) .. . �1 sim sim sim .. . não .. . �2 sim não sim .. . sim .. . �3 ··· sim .. . ··· .. . não sim não .. . ··· ··· ··· .. . �� ··· ? .. . ··· não sim sim .. . ··· ··· ··· O absurdo resulta da suposição da existência da bijecção � , pelo que o conjunto das linguagens de alfabeto Σ não é numerável. Portanto existe pelo menos uma palavra que não é reconhecida por qualquer máquina de Turing. ⇤ 14.2.2 Uma primeira linguagem indecidível Teorema 14.13 A linguagem AT M é indecidível. Dem. Suponhamos, por absurdo, que AT M é decidível. Seja H a TM que decide AT M . H Input: �M� �� com M TM e � palavra i) Se M aceita �, aceita ii) Caso contrário, rejeita. 122 Construamos uma outra TM D que usa H, mas de forma um pouco diferente. Uma descrição �M� de uma TM M pode ser visto como uma palavra como outra qualquer. Portanto faz sentido dar como input a uma máquina de Turing a descrição de uma outra máquina. Resumindo, Input: �M�, com M TM i) Se H com input �M� �M�� aceita, então rejeita ii) Se H com input �M� �M�� rejeita, então aceita. � aceita D(�M�) rejeita se M não aceita �M� � se M aceita �M� � 0.1 D Mas o que acontece se executarmos D com input �D�? � aceita se D(�D�) não aceita, D(�D�) rejeita se D(�D�) aceita. A TM D é, portanto, um objecto paradoxal, que não pode existir. O absurdo resultou de se ter suposto a existência de H, ou seja que AT M era decidível. Dr aft -v A demonstração da inexistência de D pode mais uma vez ser visto como uma instância do argumento diagonal. Podemos imaginar uma tabela com o comportamento de todas as TM quando lhes é dado como input a descrição de uma outra TM. A TM D é definida como, quando com input �M�, tendo o comportamento complementar à TM M(�M�). O absurdo resulta quando queremos averiguar qual o comportamento de D quando tem o input �D�, pois nesse caso o comportamento de D(�D�) está definido como o complementar de D(�D�). ⇤ 123