Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Operações Regulares em Teoria da Computação, Notas de aula de Informática

Documento contendo questões relacionadas a operações regulares em teoria da computação, como união, intersecção, concatenação e fechamento de linguagens regulares. Inclui provas e exemplos.

Tipologia: Notas de aula

2013

Compartilhado em 15/03/2013

samuel-santos-98
samuel-santos-98 🇧🇷

5

(5)

44 documentos

1 / 19

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
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.2
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Pré-visualização parcial do texto

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:

  1. Q = Q 1 x Q 2 = {(r 1 , r 2 ) : r 1  Q 1 e r 2  Q 2 };
  2.  é o mesmo;
  3. ((r 1 , r 2 ), a) = ( 1 (r 1 , a),  2 (r 2 , a));
  4. q 0 = (q 1 , q 2 );
  5. 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!