Estou tentando entender a existência de linguagens não reconhecíveis. Para conseguir isso, preciso saber por que uma máquina de Turing reconhece apenas um idioma, não vários. Por que é isso?
Estou tentando entender a existência de linguagens não reconhecíveis. Para conseguir isso, preciso saber por que uma máquina de Turing reconhece apenas um idioma, não vários. Por que é isso?
Respostas:
A linguagem reconhecida por uma máquina de Turing é, por definição, o conjunto de strings que ela aceita. Quando uma entrada é fornecida à máquina, ela é aceita ou não. Qualquer entrada específica para essa máquina é sempre aceita (no idioma) ou sempre não aceita (não no idioma). Portanto, não há mecanismo pelo qual uma única máquina de Turing possa aceitar mais de um idioma.
Pense desta maneira: uma TM é como um computador com um software carregado. Cada software faz uma coisa, certo? Por exemplo, pense no seu computador e assuma que ele possui apenas 1 programa carregado. Então o PC + "photoshop" apenas faz photoshop, enquanto o PC + "varredor de minas" apenas varre minas.
Portanto, uma máquina de Turing é uma criatura muito simples, que em cada corrida recebe uma única entrada e gera um sim ou um não . Em quais entradas ele diz sim e nas quais diz não - isso é definido pelo "programa" da MT, conforme determinado por seus estados e função de transição. Uma vez corrigidos, o "programa" é corrigido e, para qualquer entrada, existe apenas uma resposta: Sim ou Não (aceitar / rejeitar). Isso define exatamente um único idioma = todas as entradas que produzem um Sim quando fornecidas à TM.
Por outro lado, o conjunto de todas as TMs é equivalente ao conjunto de computador + "software" com todos os programas possíveis. Agora mais idiomas podem ser decididos - mas ainda assim, cada TM específica decide (ou reconhece) apenas um idioma.
A Turing Machine funciona como eles, porque escolhemos defini-los. Poderíamos ter definições mais sofisticadas, mas a questão é se isso serviria a um propósito, se nos permitiria fazer mais coisas. E, tanto quanto sabemos, a resposta é não.
É muito fácil criar modelos de máquinas de Turing que reconheçam dois idiomas. Dadas as línguas e L 2 , poderíamos definir uma TM com 2 tipos de estado de aceitação: uma para L 1 e outra para L 2 . Um TM seria dito para aceitar L i se ele entra em algum ponto um estado de aceitação correspondente. Mas ele retomaria a computação para ver se também pode entrar no outro tipo de estado de aceitação. E poderíamos exigir que isso parasse mais tarde, ou possivelmente não. Você poderia então construir toda a teoria em tais máquinas. Funcionaria e seria muito mais complicado do que o que costumamos fazer.
Para responder à afirmação de David Richerby de que " não existe um mecanismo pelo qual uma única máquina de Turing possa aceitar mais de um idioma ", é apenas porque decidimos não considerar tais mecanismos. Mesmo que você restrinja a TM ao modelo muito padrão, você pode dizer que a entrada é reconhecida como sendo no idioma quando a TM pára em um estado de aceitação com um número ímpar de etapas e é em L 2 quando a TM aceita com um número par de etapas. Graças ao não-determinismo, isso não impediria a TM de reconhecer os dois idiomas interceptados.
O ponto é que todos os tipos de variantes podem ser usados para fazer a teoria. Também abordagens muito diferentes foram tentadas para modelar o que é computação, como cálculo lambda, lógica compinatória, teoria das funções recursivas e muito mais.
Sempre foi demonstrado que nenhum deles faz nada que não possa ser feito pelo nosso modelo simples, onde a MT reconhece apenas um idioma. A tal ponto que foi conjecturado que faz qualquer coisa que possa ser feita. Isso é chamado de tese de Church-Turing . É a pedra angular da teoria da computabilidade que, tanto quanto sabemos, determina quais idiomas são reconhecíveis ou não.
Portanto, podemos usar um modelo simples, pois um modelo complexo tornará nossa vida mais difícil, sem nenhum benefício real.
Obviamente, às vezes usamos outros modelos porque eles nos permitem entender melhor alguns problemas.
Eu gostaria de expandir um ponto na resposta de Richerby:
Quando uma entrada é fornecida à máquina, ela é aceita ou não.
A razão para isso é que a máquina de Turing é determinística: dada a mesma entrada e estado inicial, sempre fará a mesma coisa toda vez que você a executar (seja finalizada no mesmo estado de aceitação ou no mesmo estado de rejeição ou faça um loop para sempre) )
Além disso, podemos provar facilmente que toda máquina Turing reconhece exatamente um idioma:
Suponha, por contradição, que uma máquina de Turing M reconheça duas linguagens distintas L1 e L2. Como L1 e L2 são distintos, deve existir uma sequência S que está em L1, mas não em L2 (sem perda de generalidade - poderia ser o contrário, mas a prova prosseguiria da mesma maneira a partir daqui com L1 e L2 trocados ) Agora execute M em S. Se ele aceitar, uma contradição será alcançada porque S estaria em L2. Se não aceitar (rejeitar ou fazer loops), será alcançada uma contradição porque S não estaria em L1.
Uma máquina de Turing reconhece um idioma porque essa é a definição da palavra reconhecer : O idioma que uma máquina de Turing reconhece é o conjunto de todas as cadeias / entradas para as quais a máquina de Turing aceita.
A resposta para isso depende do que exatamente você entende quando se refere à "máquina de Turing". Existem três componentes para qualquer modelo computacional (restringindo aqui os decisores / aceitadores):
Para máquinas de Turing, a sintaxe seria a tupla do conjunto de estados, alfabetos, função de transição e assim por diante. A semântica seria a definição de um cálculo , ou seja, descrever como aplicar a função de transição para derivar o conteúdo da fita após algumas etapas. O critério de aceitação é dizer "quando isso acontece, paramos e o resultado é esse".
Agora, as máquinas de Turing são apenas sintaxe e semântica para você, ou você também inclui o critério de aceitação? Se você faz o primeiro, qualquer TM pode aceitar vários idiomas usando diferentes critérios de aceitação; você pode até conceber critérios de aceitação que permitam vários idiomas aceitos (pense em TMs de dois parâmetros, por exemplo). Se você fizer o último, no entanto, não há espaço de manobra e o critério de aceitação usual permite exatamente um idioma por TM (desse tipo).
A definição e uso usuais do termo no TCS incluem todos os três componentes. Isso faz sentido porque, em particular, alterar o critério de aceitação pode alterar drasticamente a classe de objetos que o autômato representa ; portanto, precisamos corrigir o critério para saber do que falamos.
Como exemplo, compare autômatos finitos e autômatos Büchi . Sintaxe e semântica são exatamente iguais, mas uma aceita palavras finitas enquanto a outra aceita palavras infinitas!
Tente descobrir o que acontece se você inserir o critério de aceitação do autômato Büchi na definição da TM.
Agora, por que o critério de aceitação usual é significativo? Enquanto você se restringir ao idioma das strings finitas, pouco mudará ao ter vários idiomas por TM, no nível conceitual: ainda poderemos aceitar o mesmo conjunto de idiomas. Portanto, mantemos o modelo mais simples. Isso não quer dizer, no entanto, que um modelo mais envolvido não possa ser útil para modelagem em aplicativos - mas isso está além do escopo do TCS (que possui autoridade definidora).
Um idioma é um conjunto de strings. A união de duas línguas L1 e L2 não é um conjunto de seqüências de caracteres (vamos chamá-la de L3) e, portanto, seria outra linguagem? Então, se a máquina de Turing reconhecer os dois idiomas, reconhecerá L3, um único idioma.
nenhuma outra resposta aponta a existência da (s) Máquina (s) Universal de Turing, conforme descrita / descoberta pela primeira vez por Turing em sua prova de interrupção. sim, uma TM aceita um único idioma recursivamente enumerável, mas o UTM pode reconhecer qualquer idioma recursivamente enumerável se estiver codificado na entrada junto com a sequência de entrada. então a pergunta tem alguma qualidade zenlike. As TMs aceitam apenas um único idioma e todos os idiomas codificáveis possíveis.