Prévia do material em texto
Uma das habilidades de um profissional em computação é compreender e detectar erros de lógica em soluções construídas por outras pessoas. Isso requer o entendimento do problema que inicialmente se queria resolver, a maneira como a solução em questão tenta solucionar o problema, quais pontos nos quais a solução pode apresentar um erro e como consertar este erro. Um autômato de pilha pode ser visto como uma solução para o problema de reconhecer uma linguagem formal. Você está trabalhando em uma empresa que examina padrões em sequências de símbolos. Um desses padrões consiste em determinar se uma sequência finita qualquer de símbolos a e b tem a mesma quantidade desses símbolos em qualquer ordem. Por exemplo, a sequência aabbabb é uma sequência que dispõe da mesma quantidade de símbolos a e b, enquanto a sequência bba não apresenta a mesma quantidade de símbolos. Para resolver o problema, você precisa construir um autômato de pilha que aceite exatamente a linguagem de palavras com a mesma quantidade de símbolos ‘a’ e ‘b’ em qualquer ordem. Resposta Para essa linguagem em particular, além de empilhar os elementos, é preciso desempilhá-los. As transições que fazem o empilhamento “b, b ; bb”, “a, a ; aa”, “b, Z ; bZ” e “a, Z ; aZ” ocorrem quando o autômato lê da entrada o mesmo símbolo que está no topo da pilha, fazendo com que este símbolo seja contado. Quando a situação é a oposta, o símbolo lido da entrada é diferente do símbolo no topo da pilha “a, b ; ε” e “b, a ; ε”; assim, é possível desempilhar o topo da pilha, já que se pode contar esse par de elementos como um par correspondente. Veja a sua representação: image1.jpeg