Sei sulla pagina 1di 59

Linguagens Regulares

Linguagens Formais e Autômatos

Prof. Mayk F. Choji

UniSALESIANO – Araçatuba Aula 2


Sumário

1. Introdução

2. Sistema de Estados Finitos

3. Construção Sequencial, Concorrente e Não determinista

4. Autômato Finito
Exercícios

5. Bibliografia
Introdução

Introdução 1/29
Introdução
O estudo das linguagens regulares ou po 3, é abordado usando
os seguintes formalismos:
Autômato finito. Trata-se de um formalismo operacional ou
reconhecedor, sendo, basicamente, um sistema de
estados finitos;
Expressão regular. Trata-se de um formalismo denotacional,
também considerado gerador (pois pode-se inferir
como construir todas as palavras da
correspondente linguagem), o qual é definido a
par r de conjuntos (linguagens) básicos e das
operações de concatenação e de união;
Gramá ca regular. Trata-se de um formalismo axiomá co ou
gerador o qual, como o nome indica, é uma
gramá ca, mas com restrições da forma das regras
de produção.
Introdução 2/29
Introdução
O estudo das linguagens regulares ou po 3, é abordado usando
os seguintes formalismos:
Autômato finito. Trata-se de um formalismo operacional ou
reconhecedor, sendo, basicamente, um sistema de
estados finitos;
Expressão regular. Trata-se de um formalismo denotacional,
também considerado gerador (pois pode-se inferir
como construir todas as palavras da
correspondente linguagem), o qual é definido a
par r de conjuntos (linguagens) básicos e das
operações de concatenação e de união;
Gramá ca regular. Trata-se de um formalismo axiomá co ou
gerador o qual, como o nome indica, é uma
gramá ca, mas com restrições da forma das regras
de produção.
Introdução 2/29
Introdução
O estudo das linguagens regulares ou po 3, é abordado usando
os seguintes formalismos:
Autômato finito. Trata-se de um formalismo operacional ou
reconhecedor, sendo, basicamente, um sistema de
estados finitos;
Expressão regular. Trata-se de um formalismo denotacional,
também considerado gerador (pois pode-se inferir
como construir todas as palavras da
correspondente linguagem), o qual é definido a
par r de conjuntos (linguagens) básicos e das
operações de concatenação e de união;
Gramá ca regular. Trata-se de um formalismo axiomá co ou
gerador o qual, como o nome indica, é uma
gramá ca, mas com restrições da forma das regras
de produção.
Introdução 2/29
De acordo com a hierarquia de Chomsky, as linguagens
regulares cons tuem a classe de linguagens mais simples,
sendo possível desenvolver algoritmos de reconhecimento,
de geração ou de conversão entre formalismos de pouca
complexidade, de grande eficiência e de fácil
implementação;
Entretanto, as linguagens regulares possuem fortes
limitações de expressividade.
Uma linguagem que possua duplo balanceamento não é
uma linguagem regular;
Exemplo: texto com parênteses balanceados, ou seja,
parênteses em um número qualquer em um texto,
eventualmente encadeados, de tal forma a garan r que, para
cada parêntese aberto, existe um correspondente parêntese
fechado;
Tratamento de expressões aritmé cas comuns não pode ser
realizado usando um formalismo regular
A maioria das linguagens de programação de propósitos
gerais como Pascal, C/C++, Java etc., são não-regulares.
Introdução 3/29
De acordo com a hierarquia de Chomsky, as linguagens
regulares cons tuem a classe de linguagens mais simples,
sendo possível desenvolver algoritmos de reconhecimento,
de geração ou de conversão entre formalismos de pouca
complexidade, de grande eficiência e de fácil
implementação;
Entretanto, as linguagens regulares possuem fortes
limitações de expressividade.
Uma linguagem que possua duplo balanceamento não é
uma linguagem regular;
Exemplo: texto com parênteses balanceados, ou seja,
parênteses em um número qualquer em um texto,
eventualmente encadeados, de tal forma a garan r que, para
cada parêntese aberto, existe um correspondente parêntese
fechado;
Tratamento de expressões aritmé cas comuns não pode ser
realizado usando um formalismo regular
A maioria das linguagens de programação de propósitos
gerais como Pascal, C/C++, Java etc., são não-regulares.
Introdução 3/29
De acordo com a hierarquia de Chomsky, as linguagens
regulares cons tuem a classe de linguagens mais simples,
sendo possível desenvolver algoritmos de reconhecimento,
de geração ou de conversão entre formalismos de pouca
complexidade, de grande eficiência e de fácil
implementação;
Entretanto, as linguagens regulares possuem fortes
limitações de expressividade.
Uma linguagem que possua duplo balanceamento não é
uma linguagem regular;
Exemplo: texto com parênteses balanceados, ou seja,
parênteses em um número qualquer em um texto,
eventualmente encadeados, de tal forma a garan r que, para
cada parêntese aberto, existe um correspondente parêntese
fechado;
Tratamento de expressões aritmé cas comuns não pode ser
realizado usando um formalismo regular
A maioria das linguagens de programação de propósitos
gerais como Pascal, C/C++, Java etc., são não-regulares.
Introdução 3/29
De acordo com a hierarquia de Chomsky, as linguagens
regulares cons tuem a classe de linguagens mais simples,
sendo possível desenvolver algoritmos de reconhecimento,
de geração ou de conversão entre formalismos de pouca
complexidade, de grande eficiência e de fácil
implementação;
Entretanto, as linguagens regulares possuem fortes
limitações de expressividade.
Uma linguagem que possua duplo balanceamento não é
uma linguagem regular;
Exemplo: texto com parênteses balanceados, ou seja,
parênteses em um número qualquer em um texto,
eventualmente encadeados, de tal forma a garan r que, para
cada parêntese aberto, existe um correspondente parêntese
fechado;
Tratamento de expressões aritmé cas comuns não pode ser
realizado usando um formalismo regular
A maioria das linguagens de programação de propósitos
gerais como Pascal, C/C++, Java etc., são não-regulares.
Introdução 3/29
De acordo com a hierarquia de Chomsky, as linguagens
regulares cons tuem a classe de linguagens mais simples,
sendo possível desenvolver algoritmos de reconhecimento,
de geração ou de conversão entre formalismos de pouca
complexidade, de grande eficiência e de fácil
implementação;
Entretanto, as linguagens regulares possuem fortes
limitações de expressividade.
Uma linguagem que possua duplo balanceamento não é
uma linguagem regular;
Exemplo: texto com parênteses balanceados, ou seja,
parênteses em um número qualquer em um texto,
eventualmente encadeados, de tal forma a garan r que, para
cada parêntese aberto, existe um correspondente parêntese
fechado;
Tratamento de expressões aritmé cas comuns não pode ser
realizado usando um formalismo regular
A maioria das linguagens de programação de propósitos
gerais como Pascal, C/C++, Java etc., são não-regulares.
Introdução 3/29
De acordo com a hierarquia de Chomsky, as linguagens
regulares cons tuem a classe de linguagens mais simples,
sendo possível desenvolver algoritmos de reconhecimento,
de geração ou de conversão entre formalismos de pouca
complexidade, de grande eficiência e de fácil
implementação;
Entretanto, as linguagens regulares possuem fortes
limitações de expressividade.
Uma linguagem que possua duplo balanceamento não é
uma linguagem regular;
Exemplo: texto com parênteses balanceados, ou seja,
parênteses em um número qualquer em um texto,
eventualmente encadeados, de tal forma a garan r que, para
cada parêntese aberto, existe um correspondente parêntese
fechado;
Tratamento de expressões aritmé cas comuns não pode ser
realizado usando um formalismo regular
A maioria das linguagens de programação de propósitos
gerais como Pascal, C/C++, Java etc., são não-regulares.
Introdução 3/29
Por outro lado, referente à complexidade de algoritmos,
autômatos finitos pertencem à classe de algoritmos mais
eficientes em termos de tempo de processamento (mais
detalhada adiante);
Qualquer autômato finito que solucione um problema é
igualmente eficiente, ou seja, qualquer solução é ó ma, a
menos de eventual redundância de estados
Redundância pode ser facilmente eliminada,
determinando-se um autômato finito mínimo.
Por causa da simplicidade e eficiência dos algoritmos, se um
problema ver uma solução regular, esta deve ser
considerada preferencialmente a qualquer outra solução
não regular;
Um exemplo pico e simples de aplicação das linguagens
regulares é a análise léxica.

Introdução 4/29
Por outro lado, referente à complexidade de algoritmos,
autômatos finitos pertencem à classe de algoritmos mais
eficientes em termos de tempo de processamento (mais
detalhada adiante);
Qualquer autômato finito que solucione um problema é
igualmente eficiente, ou seja, qualquer solução é ó ma, a
menos de eventual redundância de estados
Redundância pode ser facilmente eliminada,
determinando-se um autômato finito mínimo.
Por causa da simplicidade e eficiência dos algoritmos, se um
problema ver uma solução regular, esta deve ser
considerada preferencialmente a qualquer outra solução
não regular;
Um exemplo pico e simples de aplicação das linguagens
regulares é a análise léxica.

Introdução 4/29
Por outro lado, referente à complexidade de algoritmos,
autômatos finitos pertencem à classe de algoritmos mais
eficientes em termos de tempo de processamento (mais
detalhada adiante);
Qualquer autômato finito que solucione um problema é
igualmente eficiente, ou seja, qualquer solução é ó ma, a
menos de eventual redundância de estados
Redundância pode ser facilmente eliminada,
determinando-se um autômato finito mínimo.
Por causa da simplicidade e eficiência dos algoritmos, se um
problema ver uma solução regular, esta deve ser
considerada preferencialmente a qualquer outra solução
não regular;
Um exemplo pico e simples de aplicação das linguagens
regulares é a análise léxica.

Introdução 4/29
Por outro lado, referente à complexidade de algoritmos,
autômatos finitos pertencem à classe de algoritmos mais
eficientes em termos de tempo de processamento (mais
detalhada adiante);
Qualquer autômato finito que solucione um problema é
igualmente eficiente, ou seja, qualquer solução é ó ma, a
menos de eventual redundância de estados
Redundância pode ser facilmente eliminada,
determinando-se um autômato finito mínimo.
Por causa da simplicidade e eficiência dos algoritmos, se um
problema ver uma solução regular, esta deve ser
considerada preferencialmente a qualquer outra solução
não regular;
Um exemplo pico e simples de aplicação das linguagens
regulares é a análise léxica.

Introdução 4/29
Sistema de Estados Finitos

Sistema de Estados Finitos 5/29


Sistema de Estados Finitos

Um sistema de estados finitos é um modelo matemá co de


sistema com entradas e saídas discretas (em oposição ao
con nuo);
Pode assumir um número finito e predefinido de estados;
Cada estado resume somente as informações do passado
necessárias para determinar as ações para a próxima
entrada;
Um forte mo vacional para o estudo de sistemas de
estados finitos é o fato de poderem ser associados a
diversos pos de sistemas naturais e construídos.

Sistema de Estados Finitos 6/29


Sistema de Estados Finitos

Um sistema de estados finitos é um modelo matemá co de


sistema com entradas e saídas discretas (em oposição ao
con nuo);
Pode assumir um número finito e predefinido de estados;
Cada estado resume somente as informações do passado
necessárias para determinar as ações para a próxima
entrada;
Um forte mo vacional para o estudo de sistemas de
estados finitos é o fato de poderem ser associados a
diversos pos de sistemas naturais e construídos.

Sistema de Estados Finitos 6/29


Sistema de Estados Finitos

Um sistema de estados finitos é um modelo matemá co de


sistema com entradas e saídas discretas (em oposição ao
con nuo);
Pode assumir um número finito e predefinido de estados;
Cada estado resume somente as informações do passado
necessárias para determinar as ações para a próxima
entrada;
Um forte mo vacional para o estudo de sistemas de
estados finitos é o fato de poderem ser associados a
diversos pos de sistemas naturais e construídos.

Sistema de Estados Finitos 6/29


Sistema de Estados Finitos

Um sistema de estados finitos é um modelo matemá co de


sistema com entradas e saídas discretas (em oposição ao
con nuo);
Pode assumir um número finito e predefinido de estados;
Cada estado resume somente as informações do passado
necessárias para determinar as ações para a próxima
entrada;
Um forte mo vacional para o estudo de sistemas de
estados finitos é o fato de poderem ser associados a
diversos pos de sistemas naturais e construídos.

Sistema de Estados Finitos 6/29


Sistemas de Estados Finitos

Um exemplo clássico e de simples entendimento é um


elevador:
Trata-se de um sistema que não memoriza as requisições
anteriores;
Cada “estado” sumaria as informações “andar corrente” e
“direção do movimento”;
As entradas para o sistema são requisições pendentes.

Sistema de Estados Finitos 7/29


Sistemas de Estados Finitos

Um contraexemplo é o computador:
Os estados determinados pelos processadores e memórias
podem ser representados como um sistema de estados
finitos;
Entretanto, em um computador, podem ser agregadas
memórias adicionais durante o processamento (discos,
memórias auxiliares etc.);
Assim, o número de estados não necessariamente é
predefinido antes de se iniciar uma computação, quebrando
um dos princípios dos autômatos finitos.

Sistema de Estados Finitos 8/29


Construção Sequencial, Con-
corrente e Não determinista

Construção Sequencial, Concorrente e Não determinista 9/29


Composição de Sistema

A construção de um sistema é, em geral, composicional, no


sen do em que sistemas (possivelmente complexos) são
construídos a par r de sistemas conhecidos, e assim
sucessivamente, até chegar ao nível mais elementar (como
uma ação atômica);

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema

Três formas de composição se destacam:


Sequencial. A execução da próxima componente depende
da terminação da componente anterior;
Concorrente. Resulta em componentes independentes, no
sen do em que a ordem em que são
executadas não é importante, e, portanto,
podem ser processadas ao mesmo tempo;
Não Determinista. A próxima componente a ser executada
é uma escolha entre diversas componentes
alterna vas (em oposição à determinista, na
qual, para as mesmas condições, a próxima
componente a ser executada é sempre a
mesma). O não determinismo pode ser:
interno;
externo.

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema

Três formas de composição se destacam:


Sequencial. A execução da próxima componente depende
da terminação da componente anterior;
Concorrente. Resulta em componentes independentes, no
sen do em que a ordem em que são
executadas não é importante, e, portanto,
podem ser processadas ao mesmo tempo;
Não Determinista. A próxima componente a ser executada
é uma escolha entre diversas componentes
alterna vas (em oposição à determinista, na
qual, para as mesmas condições, a próxima
componente a ser executada é sempre a
mesma). O não determinismo pode ser:
interno;
externo.

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema

Três formas de composição se destacam:


Sequencial. A execução da próxima componente depende
da terminação da componente anterior;
Concorrente. Resulta em componentes independentes, no
sen do em que a ordem em que são
executadas não é importante, e, portanto,
podem ser processadas ao mesmo tempo;
Não Determinista. A próxima componente a ser executada
é uma escolha entre diversas componentes
alterna vas (em oposição à determinista, na
qual, para as mesmas condições, a próxima
componente a ser executada é sempre a
mesma). O não determinismo pode ser:
interno;
externo.

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema

Três formas de composição se destacam:


Sequencial. A execução da próxima componente depende
da terminação da componente anterior;
Concorrente. Resulta em componentes independentes, no
sen do em que a ordem em que são
executadas não é importante, e, portanto,
podem ser processadas ao mesmo tempo;
Não Determinista. A próxima componente a ser executada
é uma escolha entre diversas componentes
alterna vas (em oposição à determinista, na
qual, para as mesmas condições, a próxima
componente a ser executada é sempre a
mesma). O não determinismo pode ser:
interno;
externo.

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema

Três formas de composição se destacam:


Sequencial. A execução da próxima componente depende
da terminação da componente anterior;
Concorrente. Resulta em componentes independentes, no
sen do em que a ordem em que são
executadas não é importante, e, portanto,
podem ser processadas ao mesmo tempo;
Não Determinista. A próxima componente a ser executada
é uma escolha entre diversas componentes
alterna vas (em oposição à determinista, na
qual, para as mesmas condições, a próxima
componente a ser executada é sempre a
mesma). O não determinismo pode ser:
interno;
externo.

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema

Três formas de composição se destacam:


Sequencial. A execução da próxima componente depende
da terminação da componente anterior;
Concorrente. Resulta em componentes independentes, no
sen do em que a ordem em que são
executadas não é importante, e, portanto,
podem ser processadas ao mesmo tempo;
Não Determinista. A próxima componente a ser executada
é uma escolha entre diversas componentes
alterna vas (em oposição à determinista, na
qual, para as mesmas condições, a próxima
componente a ser executada é sempre a
mesma). O não determinismo pode ser:
interno;
externo.

Construção Sequencial, Concorrente e Não determinista 10/29


Composição de Sistema
As três formas de composição são comuns nos sistemas reais.
Por exemplo, considere-se um universo de pessoas em um
banco:
Sequencial: em uma fila, o atendimento do próximo cliente
depende do atendimento do cliente anterior; o
pagamento de uma conta depende do
fornecimento de um valor;
Concorrente: os diversos caixas atendem independentemente
diversos clientes;
Não determinista: quando dois ou mais caixas ficam disponíveis
ao mesmo tempo, o próximo cliente pode escolher
em qual caixa será atendido; o simples caminhar de
um indivíduo pode aleatoriamente iniciar com a
perna esquerda ou com a perna direita.
Portanto, na modelagem de sistemas em geral, as três formas de
composição devem ser consideradas.
Construção Sequencial, Concorrente e Não determinista 11/29
Composição de Sistema
As três formas de composição são comuns nos sistemas reais.
Por exemplo, considere-se um universo de pessoas em um
banco:
Sequencial: em uma fila, o atendimento do próximo cliente
depende do atendimento do cliente anterior; o
pagamento de uma conta depende do
fornecimento de um valor;
Concorrente: os diversos caixas atendem independentemente
diversos clientes;
Não determinista: quando dois ou mais caixas ficam disponíveis
ao mesmo tempo, o próximo cliente pode escolher
em qual caixa será atendido; o simples caminhar de
um indivíduo pode aleatoriamente iniciar com a
perna esquerda ou com a perna direita.
Portanto, na modelagem de sistemas em geral, as três formas de
composição devem ser consideradas.
Construção Sequencial, Concorrente e Não determinista 11/29
Composição de Sistema
As três formas de composição são comuns nos sistemas reais.
Por exemplo, considere-se um universo de pessoas em um
banco:
Sequencial: em uma fila, o atendimento do próximo cliente
depende do atendimento do cliente anterior; o
pagamento de uma conta depende do
fornecimento de um valor;
Concorrente: os diversos caixas atendem independentemente
diversos clientes;
Não determinista: quando dois ou mais caixas ficam disponíveis
ao mesmo tempo, o próximo cliente pode escolher
em qual caixa será atendido; o simples caminhar de
um indivíduo pode aleatoriamente iniciar com a
perna esquerda ou com a perna direita.
Portanto, na modelagem de sistemas em geral, as três formas de
composição devem ser consideradas.
Construção Sequencial, Concorrente e Não determinista 11/29
Composição de Sistema
As três formas de composição são comuns nos sistemas reais.
Por exemplo, considere-se um universo de pessoas em um
banco:
Sequencial: em uma fila, o atendimento do próximo cliente
depende do atendimento do cliente anterior; o
pagamento de uma conta depende do
fornecimento de um valor;
Concorrente: os diversos caixas atendem independentemente
diversos clientes;
Não determinista: quando dois ou mais caixas ficam disponíveis
ao mesmo tempo, o próximo cliente pode escolher
em qual caixa será atendido; o simples caminhar de
um indivíduo pode aleatoriamente iniciar com a
perna esquerda ou com a perna direita.
Portanto, na modelagem de sistemas em geral, as três formas de
composição devem ser consideradas.
Construção Sequencial, Concorrente e Não determinista 11/29
No caso específico das linguagens formais, as composições
sequencial e não deterministas são especialmente
importantes e são o centro do estudo;
Em par cular, a semân ca do não determinismo pode ser
resumida como segue:
Considera o não determinismo interno;
Obje va determinar a capacidade de reconhecer linguagens
e de solucionar problemas. Assim, se pelo menos um
caminho alterna vo é capaz de reconhecer ou solucionar
(mesmo que outros não o sejam), a máquina como um todo
é considerada capaz de reconhecer ou solucionar.

Construção Sequencial, Concorrente e Não determinista 12/29


Autômato Finito

Autômato Finito 13/29


Autômato Finito
É um sistema de estados finitos que cons tui um modelo
computacional do po sequencial muito comum em diversos
estudos teórico-formais da computação.
Trata-se de um formalismo operacional ou reconhecedor, o qual
pode ser:
determinís co: para o estado corrente e o símbolo lido da
entrada, o sistema assum um único estado bem
determinado;
não determinís co: para o estado corrente e o símbolo lido da
entrada, o sistema assume um estado permanente
a um conjunto de estados alterna vos;

Autômato Finito 14/29


Autômato Finito
É um sistema de estados finitos que cons tui um modelo
computacional do po sequencial muito comum em diversos
estudos teórico-formais da computação.
Trata-se de um formalismo operacional ou reconhecedor, o qual
pode ser:
com movimentos vazios: para o estado corrente e,
independentemente de ler um símbolo ou não da
entrada, o sistema assume um estado pertencente
a um conjunto de estados alterna vos (portanto é
não determinís co). O movimento é dito
movimento vazio se o sistema muda de estado sem
uma correspondente leitura de símbolo.

Autômato Finito 14/29


Um autômato finito determinís co ou simplesmente autômato
finito pode ser visto como uma máquina cons tuída de três
partes:
1. Fita: disposi vo de entrada que contém a informação a ser
processada;
2. Unidade de controle: reflete o estado corrente da máquina.
Possui uma unidade de leitura (cabeça da fita) a qual acessa
uma célula da fita de cada vez e movimenta-se
exclusivamente para a direita;
3. Programa, função programa ou função de transição: função
que comanda as leituras e define o estado da máquina.

Autômato Finito 15/29


O programa é uma função parcial tal que, dependendo do
estado corrente e do símbolo lido, determina o novo estado do
autômato.

Autômato Finito 16/29


Autômato Finito Determinís co
Um autômato finito determinís co (AFD) ou simplesmente
autômato finito M é uma 5-upla ordenada:

M = (Σ, Q, δ, q0 , F)

onde:
Σ é um alfabeto de símbolos de entrada, ou
simplesmente alfabeto de entrada;
Q é um conjunto de estados (finito) possíveis do
autômato;

Autômato Finito 17/29


Autômato Finito Determinís co
Um autômato finito determinís co (AFD) ou simplesmente
autômato finito M é uma 5-upla ordenada:

M = (Σ, Q, δ, q0 , F)

onde:
δ é uma função programa ou simplesmente programa,
ou ainda função de transição:
δ :Q×Σ→Q
Suponha que a função programa seja definida para
um estado p e um símbolo a, resultando no estado
q, então:
δ(p, a) = q
é uma transição do autômato;

Autômato Finito 17/29


Autômato Finito Determinís co
Um autômato finito determinís co (AFD) ou simplesmente
autômato finito M é uma 5-upla ordenada:

M = (Σ, Q, δ, q0 , F)

onde:
q0 é um elemento dis nguido de Q, denominado
estado inicial;
F é um subconjunto de Q, denominado conjunto de
estados finais.

Autômato Finito 17/29


Um autômato finito pode ser representado por um diagrama no
qual:
estados são nós, representados por círculos;
transições são arestas, ligando os nós;
estados iniciais e finais são representados de forma dis nta
dos demais;
transições paralelas (mesmos nós de origem e des no)
podem ser representadas de duas maneiras.

Autômato Finito 18/29


Uma forma alterna va e muito comum de representar uma
função programa é por meio de tabela de dupla entrada. Por
exemplo, a transição δ(p, a) = q pode ser representada em uma
tabela como:

δ a ...
p q ...
q ... ...
Função programa (AFD) na forma de tabela.

Autômato Finito 19/29


Exemplo 1 (Autômato finito: aa ou bb como subpalavra).
Considere a seguinte linguagem sobre o alfabeto {a, b}:

L1 = {w|w possui aa ou bb como subpalavra}

O autômato finito:

M1 = ({a, b}, {q0 , q1 , q2 , qf }, δ1 , q0 , {qf })

reconhece a linguagem L1 .

Autômato Finito 20/29


Exemplo 1 (Autômato finito: aa ou bb como subpalavra).
δ1 a b
q0 q1 q2
q1 qf q2
q2 q1 qf
qf qf qf
Função programa (AFD): sequência de dois símbolos iguais.

Autômato Finito 20/29


Exemplo 1 (Autômato finito: aa ou bb como subpalavra).
O algoritmo usa os estados q1 e q2 para “memorizar” o símbolo
anterior lido. Assim:
q1 representa “símbolo anterior é a”;
q2 representa “símbolo anterior é b”;

Autômato Finito 20/29


Autômato finito sempre para
Um autômato finito sempre para ao processar qualquer entrada
pois, como qualquer palavra é finita, e como um novo símbolo
da entrada é lido a cada aplicação da função programa, não
existe a possibilidade de ciclo (loop) infinito.

Autômato Finito 21/29


A parada do processamento de um autômato finito para uma
entrada w pode ser de duas maneiras:
Aceita a entrada w. Após processar o úl mo símbolo da
fita, o autômato finito assume um estado final;
Rejeita a entrada w. São duas possibilidades:
após processar o úl mo símbolo da fita, o
autômato finito assume um estado não final;
em algum momento, ao longo do
processamento de w, a função programa é
indefinida para o argumento (estado corrente
e símbolo da fita).

Autômato Finito 22/29


Linguagem aceita, linguagem rejeitada
Seja M = (Σ, Q, δ, q0 , F) um autômato finito determinís co.
A linguagem aceita ou linguagem reconhecida por M, denotada
por:

ACEITA(M) ou L(M)

é o conjunto de todas as palavras pertencentes a Σ∗ aceitas por


M, a par r do estado inicial q0 .

Autômato Finito 23/29


Linguagem aceita, linguagem rejeitada
Seja M = (Σ, Q, δ, q0 , F) um autômato finito determinís co.
Analogamente, a linguagem rejeitada por M, denotada por:

REJEITA(M)

é o conjunto de todas as palavras pertencentes a Σ∗ rejeitadas


por M, a par r do estado inicial q0 .

Autômato Finito 23/29


Autômatos finitos equivalentes
Dois autômatos finitos M1 e M2 são ditos autômatos finitos
equivalentes se e somente se:

ACEITA(M1 ) = ACEITA(M2 )

Autômato Finito 24/29


Linguagem Regular (Linguagem Tipo 3)
Uma linguagem L e dita uma linguagem regular ou linguagem po
3 se existe pelo menos um autômato finito determinís co que
aceita L.
Portanto, a linguagem L1 (do exemplo do autômato que aceita aa
ou bb como subpalavras) é regular!

Autômato Finito 25/29


Exercício 1. Autômato finito: vazia, todas as palavras
Considere as seguintes linguagens sobre o alfabeto {a, b}:

L2 = ∅ e L3 = Σ∗

Os autômatos finitos:

M2 = ({a, b}, {q0 }, δ2 , q0 , {}) e M3 = ({a, b}, {q0 }, δ3 , q0 , {q0 })

para os quais δ2 e δ3 são descritos a seguir, são tais que


ACEITA(M2 ) = L2 e ACEITA(M3 ) = L3 .

δ2 a b δ3 a b
q0 q0 q0 q0 q0 q0

Responda:
1. Faça os diagramas referentes aos autômatos M2 e M3 .
2. Existe alguma diferença entre as funções δ2 e δ3 ?
3. O que, exatamente, diferencia M2 e M3 ?
Autômato Finito 26/29
Exercício 2. Autômato finito: número par de cada símbolo
Considere a seguinte linguagem sobre o alfabeto {a, b}:

L4 = {w|w possui um número par de a e um número par de b}

O autômato finito:

M4 = ({a, b}, {q0 , q1 , q2 , q3 }, δ4 , q0 , {q0 })

é tal que ACEITA(M4 ) = L4


Responda:
1. Faça o diagrama referente ao autômato M4 .
2. Descreva δ4 .
3. A linguagem L4 é uma linguagem regular?

Autômato Finito 27/29


Bibliografia

Menezes, P.B. (2005). Linguagens Formais e Autômatos. Série


livros didá cos. Bookman.

Bibliografia 28/29
Bons Estudos!

Contato: mayk[at].unisalesiano[dot]com[dot]br
Conclusão 29/29

Potrebbero piacerti anche