Qual é o significado das linguagens sensíveis ao contexto (Tipo 1)?

34

Como as linguagens do Tipo 3 da Hierarquia Chomsky podem ser reconhecidas por uma máquina de estado sem memória externa (por exemplo, um autômato finito), o Tipo 2 por uma máquina de estado com uma única pilha (por exemplo, um autômato push-down) e o Tipo 0 por uma máquina de estado com duas pilhas (ou, equivalente, uma fita, como é o caso das máquinas de Turing), como os idiomas do tipo 1 se encaixam nessa imagem? E que vantagens traz para determinar que um idioma não é apenas o Tipo 0, mas o Tipo 1?

bitmask
fonte
2
Como você está perguntando aqui e não no cstheory.SE (como sugerido por @Sunil), sugiro que você também adicione uma breve descrição / definição do Tipo 1, que pode não ser um termo familiar para todos.
Janoma
5
@ Sunil Não, não seria. Esta não é uma questão de nível de pesquisa (e, mesmo que fosse, ainda estaria no tópico aqui porque não excluímos questões de nível de pesquisa - pelo menos é o que me lembro de ter sido o resultado da discussão na área51).
sepp2k em 06/12
3
@Janoma: Por que deveria ajudar a incluir informações que podem ser facilmente pesquisadas (isso não conta como ruído)?
bitmask
4
@Janoma Acho que a diretriz geral deveria ser explicar conceitos que alguém que seria capaz de responder à pergunta talvez não soubesse (se a diretriz explicasse tudo o que alguns usuários do site talvez não soubessem, estaríamos explicando tudo o tempo todo e esse certamente não é o padrão em outros sites da SE). E não acho que alguém que não conheça a hierarquia de Chomsky possa responder à pergunta. É claro que não custa explicar o máximo possível (contanto que não faça a pergunta ser tediosamente longa) - simplesmente não acho que seja necessário neste caso.
sepp2k 21/03
4
Todo especialista em ciência da computação conhece (ou deveria saber) a hierarquia de Chomsky. Todo mundo pode procurar em 20 anos. Talvez um link para a Wikipedia seja suficiente aqui.
Raphael

Respostas:

19

As linguagens sensíveis ao contexto são exatamente as linguagens que podem ser reconhecidas por uma máquina de Turing usando espaço linear e não determinismo. Você pode simular uma máquina de Turing usando tempo exponencial, para poder reconhecer qualquer idioma em tempo exponencial. Observe que o problema de reconhecer algumas linguagens sensíveis ao contexto é , o que significa que temos certeza de que você não pode fazer melhor que o tempo exponencial.PSPUMACE

Comparando isso com os idiomas do tipo 0, isso significa que você pode pelo menos dizer algo sobre quanto tempo leva para reconhecer o idioma. Um idioma do tipo 0 pode até não ser decidível: o idioma de todas as máquinas de Turing que são interrompidas é uma linguagem do tipo 0, mas como reconhecer essa linguagem é exatamente o problema da interrupção, não é decidível.

Gramáticas sensíveis ao contexto não são muito úteis na prática. Ao contexto gratuitos gramáticas são intuitivos para trabalhar, mas como os exemplos na Wikipedia mostram , ao contexto sensíveis gramáticas muito rapidamente tornar-se um pouco confuso. Programas que usam espaço polinomial são muito mais fáceis de projetar (e a garante a existência de algum CSG equivalente que é polinomialmente maior que o uso de espaço do seu algoritmo).PSPUMACE

A razão de sua existência é que elas formam uma extensão muito natural de gramáticas sem contexto (você permite que o contexto determine quais produções são válidas). Provavelmente, isso inspirou Chomsky a defini-los e nomeá-los como idiomas do tipo 1. Lembre-se de que essa definição foi feita antes dos computadores se tornarem tão rápidos quanto hoje: é mais interessante para os teóricos da linguagem formal do que para os programadores.

Gramáticas irrestritas ficam ainda mais estranhas: não há mais a noção de 'expandir' um termo-terminal e substituí-lo por uma produção, possivelmente dependendo do contexto. Você também pode modificar livremente o contexto. Isso torna as gramáticas irrestritas ainda menos intuitivas para trabalhar: os programas são equivalentes e muito mais intuitivos.

Alex ten Brink
fonte
Mas linguagens sensíveis ao contexto são úteis! Veja, por exemplo, esta discussão .
Raphael
A sensibilidade ao contexto é útil, mas gramáticas sensíveis ao contexto como forma de descrever idiomas não são muito úteis para IMO. Você está bem melhor usando outros meios para descrever recursos sensíveis ao contexto.
Alex-Brink
Mas você fala sobre idiomas na maior parte da sua resposta. Em relação às gramáticas, ymmw. Existem modelos gramaticais entre CFG e CSG que possuem aplicações de modelagem natural, por exemplo, CFG acoplado / multi-CFG.
Raphael
1
Você está certo, eu fui desleixado com a distinção entre idiomas e gramáticas que vejo. Eu atualizei minha resposta.
Alex10 Brink #
10

eu

UMAeu(UMA)

Em resumo, para classes menores, você precisa de menos poder computacional para resolver o problema de decidir se uma palavra pertence ao idioma.

Segundo a Wikipedia , Chomsky definiu gramáticas sensíveis ao contexto (isto é, tipo 1) para descrever a sintaxe das línguas naturais. Isso é um pouco diferente do que ocorre com outras classes de idiomas, que foram introduzidas para descrever famílias de strings usadas em matemática (por exemplo, a sintaxe de fórmulas aritméticas) em vez de idiomas naturais (por exemplo, a sintaxe de uma sentença gramaticalmente correta em inglês) .

Janoma
fonte
2
"Em resumo, para classes menores, você precisa de menos poder computacional para resolver o problema de decidir se uma palavra pertence ao idioma". exatamente, mas como isso se aplica ao Tipo 1 versus ao Tipo 0? Essa é exatamente a pergunta!
bitmask
ccn
8

Em idiomas sem contexto, em qualquer ponto da análise de entrada, o autômato está em um estado definido por sua pilha. Cada produção tem o mesmo comportamento ao consumir a entrada, independentemente de onde é usada.

Isso leva à propriedade interessante de que cada produção gera uma sublíngua da gerada pelas que estão mais profundas na pilha e, portanto, para cada par A e B de produções geradas e consumidas em qualquer entrada específica, temos três casos possíveis:

  • a: A entrada consumida por A está completamente contida na entrada consumida por B; ou
  • b: A entrada consumida por A contém completamente a entrada consumida por B; ou
  • c: A entrada consumida por A é completamente separada da entrada consumida por B.

Isso implica que o seguinte nunca acontece:

  • d: A entrada consumida por A se sobrepõe parcialmente à entrada consumida por B.

Em contraste com isso, em linguagens sensíveis ao contexto, o comportamento de cada produção depende de onde é usado; portanto, a entrada consumida em uma produção não é uma sub-linguagem das que estão mais profundas na pilha (na verdade, processando-a com um pilha não funcionaria). E nós temos essa possibilidade d pode acontecer.

No mundo real, um caso em que uma linguagem sensível ao contexto faria sentido é algo como denotar <b> texto em negrito </b>, <i> texto em itálico </i> e <u> texto sublinhado </u> essas tags html e deixe que elas se sobreponham, como "Este é um <u> texto com <i> tags </i> misturadas </u> sobrepostas </i>." Observe isso para analisar isso e descobrir se todas as tags iniciais correspondem às tags finais, um PDA não funciona porque não é livre de contexto, mas um LBA o fará facilmente.

Victor Stafusa
fonte
7

Propriedades de fechamento

De todas as classes de idioma da hierarquia de Chomsky, apenas idiomas regulares e sensíveis ao contexto são fechados sob complementação . Portanto, esse é um tipo de recurso exclusivo de linguagens sensíveis ao contexto.

Ao contrário das linguagens sem contexto, o CS também é fechado sob produtos de interseção e reprodução aleatória .

Sebastian
fonte
6

Qualquer linguagem do tipo 1 pode ser reconhecida por uma máquina de Turing que usa apenas espaço linear (os chamados autômatos limitados lineares).

Suresh
fonte
2
Sim, essa é a definição. Mas como essa restrição me ajuda?
bitmask
3
isso me ajuda porque limita o poder dos algoritmos que reconhecem CSGs para E em vez de EXP. Eu não sei como ele ajuda você :)
Suresh
5

Os idiomas do tipo 1 podem ser decididos por autômatos delimitados lineares , que são máquinas de Turing não determinísticas que podem usar apenas uma parte da fita cujo tamanho é linear ao tamanho da entrada.

sepp2k
fonte
4

A hierarquia de Chomsky classifica gramáticas mais que idiomas. No entanto, ele não foi projetado para ter algo a ver com o número de fitas que um autômato deve reconhecê-lo, como você sugeriu para os Tipos 2 e 3, mesmo se houver um tipo de máquina de Turing que faça isso para as gramáticas do Tipo 1.

Você também deve observar que os idiomas das gramáticas do Tipo 0 não são todos reconhecidos por uma máquina de Turing, mas só podem ser enumerados por essa máquina: Tipo 0 significa recursivamente enumerável, e as máquinas de Turing reconhecem apenas idiomas recursivos.

jmad
fonte
4

A linguagem de programação moderna usa recursos sensíveis ao contexto o tempo todo; eles se enquadram em um subconjunto que pode ser decidido com eficiência.

Exemplos são análise de nome e tipo e inferência de tipo.

Rafael
fonte
3

Muitos outros mencionaram que as línguas do Tipo 1 são aquelas que podem ser reconhecidas por autômatos delimitados lineares. O problema da parada é decidível para autômatos delimitados lineares, o que, por sua vez, significa que muitas outras propriedades que são computacionalmente indecidíveis para idiomas reconhecidos pelo Turning Machines são decidíveis para idiomas do Tipo 1.

É certo que a prova de que o problema da parada é decidível para autômatos limitados lineares baseia-se no fato de que, com uma quantidade finita de fita, eles só podem inserir um número finito de estados; loop e nunca vai parar. Essa prova aplica-se tecnicamente a todos os computadores reais (que também possuem memória finita), mas isso não traz nenhum benefício prático na solução do problema de interrupção dos programas executados neles.

Ben
fonte