Iniciando em instantes, aguarde... Conjuntos e Expressões Regulares • Conjuntos e expressões regulares são notações alternativas utilizadas para representar a classe de linguagens mais simples que se conhece: a classe das linguagens regulares, a mais restrita dentro da Hierarquia de Chomsky. • A definição de conjuntos regulares envolve a aplicação de três operações já estudadas para os conjuntos: união, concatenação e fechamento reflexivo e transitivo. • No caso do fechamento, no entanto, cabem algumas observações adicionais válidas para o caso em que o seu operando seja não apenas um alfabeto, mas eventualmente uma linguagem. Conjuntos e Expressões Regulares • Como alternativa para a representação dos conjuntos regulares, visando obter maior concisão e facilidade de manipulação, Kleene desenvolveu, na década 1950, a notação das expressões regulares ([60]). Da mesma forma como ocorre para os conjuntos regulares, as expressões regulares sobre um alfabeto Σ podem também ser definidas recursivamente como segue: 1. ∅ é uma expressão regular e denota o conjunto regular ∅; 2. ǫ é uma expressão regular e denota o conjunto regular {ǫ}; 3. Cada σ, σ ∈ Σ, é uma expressão regular e denota o conjunto regular {σ}, σ ∈ Σ; Conjuntos e Expressões Regulares • Por se tratar de uma notação concisa, que dispensa o uso da notação dos conjuntos e o emprego de símbolos não-terminais para a definição de linguagens, mas que, ao mesmo tempo, permite a plena representação dos conjuntos regulares, as expressões regulares são bastante utilizadas em áreas que abrangem desde a especificação de linguagens de programação e de comandos, entre outras, até a entrada de dados em editores de texto, programas de busca, análise de padrões etc. Conjuntos e Expressões Regulares • As linguagens regulares foram definidas no capítulo anterior como a classe das linguagens geradas por gramáticas lineares, à esquerda ou à direita. • Até o momento foram apresentados os conjuntos regulares e a notação mais comumente utilizada para a sua representação, as expressões regulares. Autômatos Finitos • Da mesma forma como ocorre com as expressões regulares e com as gramáticas lineares à direita, os autômatos finitos também possibilitam a formalização das linguagens regulares, ou seja, das linguagens do tipo 3. • No entanto, diferentemente daquelas notações, que constituem dispositivos de geração de sentenças, os autômatos finitos são dispositivos de aceitação de sentenças e constituem um caso particular do modelo geral de reconhecedores. Autômatos Finitos • Serão introduzidas as notações, as convenções, as características de operação e algumas variantes mais comuns dos autômatos finitos. • O item seguinte mostra que a classe de linguagens por eles aceita coincide exatamente com a classe das linguagens definidas pelos conjuntos regulares e também pelas gramáticas lineares à direita. • Os autômatos finitos podem ser determinísticos ou não-determinísticos, apresentando ou não transições em vazio. Autômatos Finitos • A eventual presença de não-determinismos e/ou de transições em vazio não altera a classe de linguagens aceita pelos autômatos finitos. • Por motivos estritamente didáticos, serão introduzidos inicialmente os autômatos finitos determinísticos, sendo feitas extensões posteriores para contemplar a existência de não-determinismos e de transições em vazio. Autômatos Finitos • Os autômatos finitos correspondem à instância mais simples do modelo geral de reconhecedores. As suas principais particularidades em relação ao modelo geral são: 1. Inexistência de memória auxiliar; 2. Utilização do cursor da fita de entrada apenas para leitura de símbolos, não havendo operações de escrita sobre a fita; 3. Movimentação do cursor de leitura em apenas um sentido, da esquerda para a direita; 4. A fita de entrada possui comprimento limitado, suficiente apenas para acomodar a cadeia a ser analisada. • Os autômatos finitos podem ser representados em notação algébrica ou através de diagramas de transição de estados, introduzidos a seguir, mais adequados à sua visualização. Dúvidas? • Email: ricardo.loiola@gmail.com • Site: www.loiola.net.br