Autómatos de Pilha

Um modelo computacional simples com memória ilimitada.

Introdução

Embora as GIC pareçam um candidato razoável para descrever as linguagens de programação, falta tratar as questões da computação: Como responder algoritmicamente, de forma eficiente, à questão ?

Intuitivamente, nos AFD e AFND a "memória" está representada pelos estados e portanto é limitada à priori, independentemente da palavra que vai ser processada. Por isso é que a linguagem "escapa" ao reconhecimento pelos AFD e AFND — "é preciso memorizar quantos foram lidos" e esse número é arbitrariamente grande.

As "pilhas" são uma forma simples de "memória ilimitada". Numa pilha podem ser colocados e retirados símbolos no "topo". A transição depende não só do estado e do símbolo da palavra mas também do símbolo que está no topo da pilha.

Autómatos de Pilha e Gramáticas Independentes de Contexto

Tal como foi feito para os AFD e AFND, depois da definição de autómato segue-se a configuração e computação e palavra aceite e linguagem reconhecida.

Autómato de Pilha (AP). Um Autómato de Pilha (AP) é um tuplo em que:

  • Estados de Controlo, Alfabeto de Entrada, Estado Inicial, Estados Finais são como nos AFD.
  • Alfabeto da Pilha é um conjunto finito de símbolos.
  • Transição é uma função com assinatura

Importa notar o seguinte:

A transição depende do estado de controlo, do símbolo de entrada e do símbolo no "topo" da pilha e define o novo estado de controlo e o novo símbolo no "topo" da pilha.

As computações dos AP são não deterministas, como resulta da assinatura da transição, na parte "". Formalmente:

Configuração. Computação. (AP). Seja um AP.

  • Uma Configuração é um triplo .

  • A Configuração Inicial para é .

  • Uma Computação é uma sequência de passos dos seguintes tipos:

    • AFND se e .
    • Remove se e .
    • Acrescenta se e .
    • Troca se e .

Informalmente, os tipos de passos de uma computação são

TipoAnteriorSeguinteCondiçãoObservação
AFNDA pilha não é "usada".
Remove no topo é substituído por .
Acrescenta no topo é substituído por .
Troca no topo é substituído por .

O critério de aceitação de uma palavra depende da configuração final.

Palavra Aceite. Linguagem Reconhecida. (AP) Seja um AP. A palavra é aceite por se existe uma computação

A linguagem reconhecida (ou aceite) por é o conjunto das palavras aceites por .

A condição especifica que:

  1. A computação chegou a um estado final,
  2. Todos os símbolos de foram processados e
  3. A pilha está vazia.

Além disso, a condição de aceitação depende de existir uma computação naquelas condições. Outras computações podem não ser assim. Portanto, para uma palavra ser rejeitada é necessário que nenhuma computação verifique todas.

Diagramas de AP

Os diagramas dos AP seguem as mesmas regras dos AFD e AFND, sendo apenas necessário indicar as operações na pilha.

Por exemplo, o AP por

  • Estados de Controlo .
  • Alfabeto de Entrada .
  • Alfabeto da Pilha .
  • Estado Inicial .
  • Estados Finais .
  • Transição

tem o seguinte diagrama

Diagrama de AP para
Figura Diagrama AP

Note-se que na tabela da transição as colunas descrevem não só todas as possibilidades como também os casos com .

Descrevendo os passos das computações por algumas computações deste AP são:

  1. De : . Como é final e a entrada e a pilha estão vazias, é aceite.
  2. De :
    1. . Esta computação poderia ter parado em , que não aceita tal como a última configuração.
    2. Em alternativa, que não aceita .
    3. Como não há mais computações de esta palavra é rejeitada.
  3. De : é a única possibilidade e rejeita .
  4. De : aceita.
  5. De : é semelhante à computação de .

A computação de ilustra bem o uso da pilha como dispositivo de memória. Por cada lido da entrada é acrescentado uma "conta" à pilha. Quando se passa do estado para cada desconta a "conta" do topo. Se o número de for igual ao número de então no fim de processar todos os a pilha fica vazia.

Aquele AP tem mais "estrutura" do que apenas a contagem de e . Por exemplo, tem um e um mas é rejeitada devido à forma como o AP proíbe ler depois de começar a ler .

Árvore das Computações

As computações dos AP, em geral, não são deterministas. Isto significa que, dada uma palavra para processar, o AP "gera uma árvore", em vez de uma única sequência.

Árvore das Computações. Seja um AP e . A árvore das computações de por é formada por:

  • Raíz: A configuração .
  • Filhos: Se for um vértice da árvore, para cada configuração tal que por então é um filho de .

Por exemplo, no AP acima, a palavra tem a seguinte árvore de computação:

Árvore das Computações de Autómato de Pilha
Árvore das ComputaçõesFigura Diagrama AP

Variantes de AP

O tipo de transições permitidas pela definição de AP é um caso intermédio entre:

  • Autómato Atómico é um AP que só tem transições do tipo
    • : AFND.
    • : Remove, mas não lê da entrada.
    • : Acrescenta, mas não lê da entrada.
  • Autómato Estendido é um AP que também permite transições do tipo em que o topo da pilha é substituído por mais do que um símbolo ().

Estas variantes são equivalentes, no sentido em que um AP de uma variante pode ser transformado num AP doutra.

GIC e AP

Os AP definem o aspeto computacional das CIG mas essa ligação ainda não foi definida:

Simulação de GIC por AP. Seja uma GIC.

O AP em que a transição é definida por

  • Para cada variável ,

  • Para cada terminal ,

é equivalente a no sentido em que se a pilha for iniciada com .

Esta definição/transformação/teorema define como obter um AP equivalente a uma GIC dada. Embora o processo inverso fique fora do âmbito de ALP, para os efeitos pretendidos isto é suficiente.

Embora a condição sobre a inicialização da pilha contradiga a definição de AP, pode ser facilmente contornada. Basta definir um novo estado inicial e acrescentar a transição .

Por exemplo, dada a GIC o AP equivalente é

AP da GIC
Diagrama AP de aSb

As arestas associadas aos terminais e a cada variável são normalmente agrupadas de forma a facilitar a leitura do diagrama.

Este AP é equivalente ao anterior e à GIC da linguagem simplificada dos parêntesis equilibrados. Neste caso as produções da GIC podem ser "lidas" diretamente das arestas do AP.

Algumas computações deste AP:

  1. De : aceita.
  2. De :
    1. . não aceita.
    2. . não aceita.
    3. . não aceita.
    4. Não há mais computações de , que é rejeitada.
  3. De : aceita.

A derivação de uma palavra na GIC é replicada na computação do AP.

Por exemplo, a palavra tem a seguinte derivação: A mesma palavra tem a seguinte computação:

Hierarquia de Chomsky

As GIC não são o único tipo de gramática:

  • Tipo 0 ou sem restrições as produções são da forma em que e . Isto é, o lado esquerdo pode ser qualquer palavra não vazia. A substituição de um símbolo depende da "vizinhança" desse símbolo, o seu contexto.
  • Tipo 1 ou dependente de contexto são como as de tipo 0 mas . Tal como no Tipo 0 a substituição de símbolos depende do contexto mas, adicionalmente, as substituições contraem a palavra.
  • Tipo 2 ou independente de contexto são as gramáticas usadas aqui. A substituição de um símbolo não depende do contexto em que este ocorre.
  • Tipo 3 ou regular impõe ainda mais restrições às produções e geram as linguagens regulares.

Conclusão

Os AP são um modelo computacional das GIC. Especificamente, há um algoritmo que transforma uma GIC num AP equivalente. Além disso, as derivações na GIC são replicadas pelas computações do AP.

Ficam assim resolvidas as questões da adequação e da computação no Problema Principal de ALP — Dada uma linguagem e uma palavra no mesmo alfabeto, determinar se .

Falta ainda tratar da eficiência. Os AP não são deterministas e, ao contrário dos AFND, não se conhece nenhuma simulação determinista que seja geral e eficiente. A esperança que resta é condicionar as gramáticas de forma a que os AP associados sejam, em termos práticos, deterministas mas sem estragar a "capacidade expressiva" das gramáticas.

O próximo capítulo começa por visitar os principais tipos de Análise Sintática (o termo técnico do Principal Problema de ALP) e segue para métodos e tipos de gramáticas adequados à sua resolução eficiente.