Por que uma máquina de Turing reconhece exatamente um idioma?


13

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?


12
Eu suspeito que você pode não ter uma idéia clara do que queremos dizer com "linguagem". Você pode dizer o que você acredita que é uma "linguagem"?
Eric Lippert

Por que você precisa saber disso? De que maneira você acha que isso pode fazer a diferença?
Babou 12/05/2015

Respostas:


29

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.


6
"Por definição" é exatamente o que eu teria dito.
Dave Clarke

1
@DaveClarke Claro, é por definição. Mas isso me parece um pouco curto, pois também diz que poderíamos tornar nossa definição diferente, de modo que uma TM aceitaria duas linguagens ou qualquer número. Na verdade, eu discordo da afirmação de David Richerby de que não existe um mecanismo pelo qual uma TM possa aceitar dois idiomas: é apenas porque escolhemos ignorá-los e poderíamos fazer o contrário. Portanto, a questão não é totalmente respondida, se não explicamos o que justifica fazê-lo.
Babou

2
Eu acho que o problema aqui é a linguagem que está sendo usada para descrever a própria "linguagem". Uma máquina de Turing aceita qualquer coisa na forma de uma string, independentemente da nossa definição de linguagem. A TM define a linguagem pelo que ela aceita; isso não é o mesmo que nosso entendimento (humano) da linguagem. É por isso que esta resposta é boa e é "... totalmente respondida".
David Barker

2
Concordo com David, o OP provavelmente leu em algum lugar que as máquinas de Turing admitem apenas um idioma e está tentando entender o que isso significa. Dado que isso provavelmente veio de uma fonte normal, podemos assumir que eles estavam usando a definição normal de "linguagem", conforme definida na teoria computacional, e não qualquer outra definição. A definição pode ser arbitrária, mas é uma definição arbitrária bem entendida e acordada.
Cort Ammon

3
Uma máquina de Turing que aceita dois idiomas é uma máquina de Turing que aceita um idioma que é a união de dois idiomas.
Simon Richter

9

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.


Ponto secundário: eu não diria que uma TM gera "sim ou não", pois isso negligencia o não término. Essa simplificação pode causar problemas adicionais posteriormente.
Chi

4

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.L1L2L1L2Li

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.L1L2

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 acredito que o primeiro parágrafo é um pouco enganador. Estou disposto a apostar que o OP não está perguntando por que estamos definindo as coisas dessa maneira, mas que eles nem sabiam que era o caso. "Poderíamos ter definições mais sofisticadas, mas a questão é se isso serviria a um propósito" faz parecer que você precisa conhecer o objetivo de um conceito antes que possa entender dar um nome a ele - na minha opinião, isso é ruim. maneira de aprender.
interestinglythere

O OP diz que quer saber por que a MT reconhece apenas um idioma para entender outra coisa. Estou respondendo, porque eles os definimos dessa maneira. Acrescento, o que é verdade, que poderíamos usar definições diferentes, mas isso não mudaria a teoria. Essa é uma maneira de dizer a ele que, seja o que for que ele esteja, a escolha da definição é irrelevante e a capacidade de reconhecimento pode ser definida para cobrir exatamente os mesmos conjuntos. A razão para escolher a definição é a conveniência e a fecundidade, e é por isso que elas evoluem com o tempo, bem como a maneira como os conceitos são nomeados ou anotados.
babou

Ok, isso faz sentido. Acho que estou objetando principalmente ao uso de "sofisticado" - implica que uma definição menos simples é desejável.
interestinglythere

3

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.


2

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.


2
Bem-vindo à Ciência da Computação ! Sua resposta está correta (IMO), mas acho que isso não contribui para as respostas pré-existentes. Temos muitas perguntas sem resposta e seria muito mais interessante e produtivo responder a uma delas do que repetir as respostas existentes.
David Richerby

1
Obrigado! Na verdade, eu não vi a resposta atualmente aceita no início (o que eu acho que é bom) porque era muito curta, e eu senti que as outras respostas não responderam à pergunta de maneira direta.
interestinglythere

1

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):

  • sintaxe,
  • semântica,
  • critérios de aceitação.

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).


0

M1L1L2L1eu2s1s1eu1s1eu2M1s1s1eu2M1s1seu2seu1

MeuseuMssMseu

seuMs

UMATM


Não é necessário provar que uma MT reconhece apenas um idioma: isso é imediato a partir da definição de "reconhecer". Dada essa definição, ainda não está claro o que significa uma MT aceitar mais de um idioma (como você supõe em sua primeira frase) ou se alguma dedução de tal suposição (como em sua terceira frase) é válida. A prova por contradição só funciona se as deduções forem estanques: aqui, o erro pode estar na suposição de como uma MT que reconhece uma MT se comporta, em vez de na suposição de que essa máquina existe.
David Richerby

-2

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.


2
Mas a máquina de Turing não reconhece os dois idiomas, a menos que sejam realmente os mesmos. Reconhecer L1 significa que ele não aceita nenhuma string fora de L1; reconhecer L2 significa que não aceita nada fora de L2. Se L1 e L2 forem diferentes, não será possível reconhecer os dois.
David Richerby

-3

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.


4
{M,xM aceita x}-

e como isso é diferente do que está escrito?
vzn

2
Reconhecer codificações de idiomas não é a mesma coisa que reconhecer idiomas.
David Richerby

sim exatamente como indicado
vzn

1
{(m,x)m=M,...}xm
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.