Baixe Operações Regulares em Teoria da Computação e outras Notas de aula em PDF para Informática, somente na Docsity!
Operações regulares
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Professor: Andrey Brito Disciplina: Teoria da Computação Período: 2012.
Prova – questão 1
- Considerando o alfabeto = {a,b} e as seguintes linguagens - L1 = { w * | não contém dois símbolos “a” juntos} - L2 = { w * | todo símbolo “b” é seguido de um símbolo “a”}
- Dê 3 exemplos de palavras pertencentes à cada uma das seguintes linguagens: - L3 = L1.L - L4 = L1 L
Prova – questão 3
- Projete um autômato tal que = {, 0, 1, 2} e a linguagem reconhecida pelo autômato seja a seguinte: - L(M 1 )={ w | a soma dos dígitos processados desde o último é um múltiplo de 5}.
Prova – questão 4
- Faça um autômato que reconheça números binários múltiplos de 3.
O que é ?
- significa uma palavra com 0 símbolos (a palavra nula ou vazia) - Por exemplo, uma máquina recebe a palavra fazia do mesmo jeito que um programa poderia executar mesmo sem receber nenhuma entrada - Em alguns livros, descrito como ε - Será que um autômato aceita ε como entrada?
Computação de um autômato finito
- Seja M = <Q, , , q 0 , F> e w *
- Uma computação de M a partir de w é uma sequência de configurações c 0 , c 1 , ..., cn - co = <qo, w> - cn = <qj, >, qj Q - ck+1= <(qk, a), u> , a e u *
- Se qj é um estado final, então M aceita w
Operações regulares
- Considere as seguintes linguagens
- L 1 = { w * | w tem um número par de 0s}
- L 2 = { w | w contém o padrão “101”}
- Quem é L 3 = L 1 L 2?
- Quem é L 4 = L 1 • L 2?
- Seja L 5 = {w | w termina em “101”}, quem é L 5 *?
- Quem é o complemento de L 1?
Fechamento
- Se uma operação sobre uma linguagem da classe C sempre gera uma linguagem que pertence à mesma classe, a classe é fechada pela operação
- Exemplo fácil: “a classe de linguagens regulares é fechada pela operação de complemento” - Se existe um AFD que reconhece uma linguagem sempre existe um AFD que reconhece o complemento - Como provar que é fechada pela operação de complemento?
Como construir M
- M aceita uma palavra de A B se M 1 ou M 2 a aceitaria
- Qual a dificuldade?
- Os símbolos de entrada só podem ser lidos uma vez, logo não podemos construir uma máquina que execute um e depois o outro
- Temos que executar as duas máquinas simultaneamente
- Solução: seria possível fazer uma máquina que execute as duas máquinas de uma só vez?
Como construir M
- Para executar duas máquinas ao mesmo tempo, você precisaria: - Considerar que aquela entrada poderia ir para qualquer uma das duas - Lembrar o estado de cada uma delas depois de cada entrada - Ou seja, precisa lembrar de um par de estados
Exemplos da construção
- L1 = { w | w tem um número par de 0s}
- L2 = { w | w tem um número ímpar de 1s}
- L1 L2?
Teorema 1 – Prova
A 1 = L(M 1 ), onde M 1 = <Q 1 , , 1 , q 1 , F 1 > A 2 = L(M 2 ), onde M 2 = <Q 2 , , 2 , q 2 , F 2 >
Construa M = <Q, , , q 0 , F>, tal que A 1 A 2 = L(M), da seguinte forma:
- Q = Q 1 x Q 2 = {(r 1 , r 2 ) : r 1 Q 1 e r 2 Q 2 };
- é o mesmo;
- ((r 1 , r 2 ), a) = ( 1 (r 1 , a), 2 (r 2 , a));
- q 0 = (q 1 , q 2 );
- F = {(r 1 , r 2 ) : r 1 F 1 ou r 2 F 2 }.
Operações regulares: concatenação
- A classe das linguagens regulares é fechada pela operação de concatenação - se A 1 e A 2 são linguagem regulares, então A 1 • A 2 também é regular
- Podemos usar a mesma abordagem e construir um autômato a partir dos autômatos originais? - Mas onde a palavra seria quebrada? - Lembre que o alfabeto poderia ser o mesmo!