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


Introdução às Máquinas de Estados Finitos (MEF) e Linguagens Regulares, Esquemas de Teoria dos Autômatos

Uma introdução às máquinas de estados finitos (mef) e linguagens regulares. Ele aborda conceitos básicos como estados, transições, entradas, teoremas, provas, linguagens de computação, alfabetos, strings, linguagens vazias, linguagens compostas, fechamento de kleene, expressões regulares, associatividade, distributividade, idempotência, leis de fechamentos, gramáticas livres de contexto (glc) e exemplos práticos de mef e glc. O documento também discute a notação utilizada em unix para expressões regulares.

Tipologia: Esquemas

2023

Compartilhado em 13/02/2024

luis-dalmeida
luis-dalmeida 🇵🇹

1 documento

1 / 15

Toggle sidebar

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

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Pré-visualização parcial do texto

Baixe Introdução às Máquinas de Estados Finitos (MEF) e Linguagens Regulares e outras Esquemas em PDF para Teoria dos Autômatos, somente na Docsity!

Autômatos finitos Envolvem estados e transições entre estados em resposta a entradas. Representados por: Estados - círculos. Estado inicial - Uma seta antes do estado é com a palavra Ínicio. Estado final/aceitação - Círculo duplo. Entradas(influências externas sobre o sistema - arcos entre estados. Representações estruturais Gramáticas, utilizadas maioritariamente em software que processa dados com uma estrutura recursiva. Expressões regulares, formam uma notação estrutural para descrever os padrões que podem ser representados por autômatos finitos, utilizadas maioritariamente também para estruturas de dados, nomeadamente strings de texto. Autômatos e complexidade Sendo os autómatos essenciais para o estudo dos limites da computação, existem duas questões importantes a ser respondidas, nomeadamente: Decibilidade - O que um computador pode fazer? Decidíveis - Problemas resolvidos pelo computador. Máquinas de Turing - Autômatos que modelam o poder dos computadores reais. Permitem estudar a decibilidade e distinguir problemas tratáveis de intratáveis. Intratabilidade - O que um computador pode fazer de forma eficiente? Tratáveis - Problemas que podem ser resolvidos por um computador sem utilizar mais tempo que alguma função lentamente crescente do tamanha da entrada(tempo polinomial). Autômatos - A teoria dos autómatos refere-se ao estudo dos dispositivos de computação abstractos ou “máquinas”. Provas formais A teoria dos autómatos presta-se a diferentes provas, nomeadamente: Provas de tipo dedutivo - Uma sequência de etapas justificadas, consiste numa sequência de afirmações que nos leva de uma afirmação inicial, chamada hipótese ou declaração dada a uma afirmação de conclusão. Se A então B - Afirmação A , Conclusão B - B é deduzido de A Maioritariamente provamos teoremas reduzindo-os ás suas definições, convertendo todos os termos da hipótese nas suas definições. Prova por contradição - Neste método de prova supomos que a conclusão é falsa, utilizando o Se A e não B, implica falsidade. Prova “Se-então”, se a hipótese é verdadeira para A, logo é verdadeira para B, também pode ser dito como: A implica B, A somente se B, A se B, Sempre que A é verdadeira segue- se/decorre B. Prova “Se-e-somente-se”, temos de provar ambas as afirmações A e B, representa-se como: A iff B, A é equivalente a B, A exactamente quando B, se A então B, A se e semente se B. Prova contrapositiva - Usamos o contrário, se não A então não B. Ambas são verdadeiras ou ambas são falsas, uma prova a outra. Contra-exemplos - Exemplo em que a atribuição de valores aos parâmetros torna a afirmação falsa. Bata mostrar que é falso uma vez para deixar de ser um teorema. linguagens DE COMPUTAÇãÕ Awtômatos transiçaÕ n E^ K^ Diagnama^ de início transição r ESTADO d A=B ou A^ B

Outra notação utilizada é uma tabela de transições, uma listagem tabular da função que, por implicação nos informa o conjunto de estados e o alfabeto de entrada. As linha correspondem aos estados e as colunas ás entradas. O estado inicial é demarcado por uma seta. Os estados de aceitação são demarcados por asteriscos Linguagem de um DFA A linguagem de um DFA A linguagem de A é o conjunto de strings w, que levam o estado inicial até um dos estados de aceitação. Se L é L(A) para algum DFA A, dizemos que L é uma linguagem regular. Função de transição estendida å @ @ B Exemplo (^) para Exozy lxey são^ quarsquer strings deo's^ eAs} todos equausquen strings deOsets^ que tom a 9 o 92 9 o^ sequêêcia O^2 em algum lugar do^ string 929291 9 z (^9) z 9 z .5,90,F) AIQSconjunto^ de (^) strings accites go LIAl (^) = EwI 8 lgo,^ wlestáem^ F) elgiabl19,a1,b)e =^ (^ Lstring (mais que um simbolo^ de^ eutrada)^ Exemplod^ o BT (^) Alfabeto

  • E=20,1, 2,3} transiqões (^) possíveis x F^ Estados^ - EA,^ B.C,^ DIE,F,G}^ p 3 2 Iici^ Esradoimicial {A 3 go= =estado final funçãô detransição^ B^1 IA,1 Pl^ D,2 I=^ E linguagem 110 Pl^ 1=A, B O (^) I 1 E,2 F Pl (^) AB B 140 I (^) =A I nazo s^0 meosen 0 latsonl ioconpunte dstan stninge ) O fB^ A 1 C (^) OL (^) KO A Pl (^) K^60 A comzunto de î westrings}^ Exemplo (^2) o ,f EwIw (^) está em Eo (^) ,1}*e Do (^) O r a (^) ~ (^9) a B (^) C Linguagem = 0, A^ ,^ 0201,^ 010 wnaatem Ils (^) seguidos} n condigac dew to Imício NOTA (^) : Qualquer string com dois^ Is^ nad^ é'aceite^ Estados: (^) EA (^) , B , e} pois não termina^ num estado (^) final lficamos amc) Exemplo de^ uma Estado imiaal (^) = EA} (^) Tabela de trausição forma^ de^ trausição^ estendida^ ô/B,01)^ Estados (^) fimais = (^) EA ,B} estados ÔIB ,O1)= BLPIB ,O1))= Alfabeto-E=E0,1} Trausições (^) : PIBOL:A entadoinicial y A ę =^ PPO(BO),11,1)- PIA,01=A (^) estados^ B^ A =( A,1),7)= um BLA, 13=B^ BCC ,O)=G fimais (^) C c C ( B B ,^ 1)^ = C 1 O (^) IB ,IKC O IC,IIC

Autômatos finitos não-determinísticos(NFAs) Pode estar em vários estados ao mesmo tempo. A diferença de um DFA, tem a ver com a função de transição. Para um NFA, o autómato recebe um estado e um símbolo de entrada como argumentos, mas retorna um conjunto de zero ou mais estados, em vez de apenas um estado. Quando não existe nenhuma transição de um dado estado sobre um dado símbolo de entrada, a estrada adequada é , o conjunto vazio. Linguagem de um NFA A linguagem de um NFA, L(A) é o conjunto de strings w em tais que. contém pelo menos um estado de aceitação. Equivalência de autômatos - toda a linguagem que pode ser descrita por um NFA, também pode ser descrita por um DFA. O DFA por norma tantos estados como o NFA correspondente, mas mais transições. A prova de que os DFAs podem fazer tudo o que os DFAs conseguem é chamada de construção de subconjuntos. o NOTA :^ A^ notação é^ a (^) mesma (^) que um DFA ,^ apenas A = ( (^) Q, 2, 8,90,F) os^ valones^ que B^ retorna^ sax^ diferentes. Q EX ( gowl llal ={wlôlqoiWINFFØ} t xemplo Estadoscasas (^) = E^ 1,2,3,4,5,6,7,8,9} (^) Exemplo de wlstning l upp a (^3) Estado imicial (^) = 21} V 7 8 q 4 s^ G^ Estado^ fimal =^ {9} IÈEBs XXF 5 BX lamiohe ouit V - B (^) casas Rosa latade (^) eimall P casas^ bege } alfabeto s como existe (^) pelo menos q conversão um, a string (^) upp pertence a p (^) linguager . R^1 goiw) t (^) 2, 4 S (^) para 4, 6 1,3,^ 2, p 6 S

  • (^) {1} {2,4} {s} represeuta um 2,4,6,8 (^) 1,3,7,9 (^) {2, 4} {2,4,6,8} {1,^ 3,5,7} " É 2, 8 1,5, y (^) l únicoestado 2,8 3,5,9 (^) { 5} (^) {2,4,6,8} {^ 1,^ 3,7,9} (^) Estratégia : 4,8 Combinar^ os estados do (^8) 4, 6 §7,9 (^) {2,4,6,8} (^) {2,4,6,8} (^) {1,3,5,7,9} NFA de
  • forma^ formar^ os q 6,8 s {7, 3,5,7} (^) {2,4,6,8} (^) {1,3,9,7,9} estados do BFA (^). Someate considerar (^) as contem entade final { { X1,3,7,9}* {2,4,6,8} {s}^ estados válidos^ que o^ DFA +^ X
    {1,3,5,7,9} $2,4,6,0} {1,3,9,7,9}^ pode^ realmente estar^. Os estados do^ DFA^ sad^ um Rubconjunto dos estados (^) do NFA Estados do NFA (^) =E1,2,3,4,5,6,7,8,9, Estados do DFA (^) = (^) E {13,22,43,453, 22,4,683, ~ E%1,3,9,7},^ {13,7,9},^ E^ 1,3,9,^ 7,9}} ONFA(E2,43,p)=21,3,5,7} cada estado deve ses Lido^ commo um cúmico şimmbalo PL P AALZPKEIB,SO (^) NFALE (^) , =E1.

Expressões Regulares Uma linguagem L é regular, se é aceite por algum NFA. As linguagens regulares podem ser descritas por expressões regulares - forma algébrica de descrever linguagens. Permitem expressar strings de entrada. Operadores ou definição recursiva de expressões regulares, sendo que: L = {001,10,111} e M = { , 001} União de duas linguagens L e M, denotado por Qualquer string que pertença aos conjuntos L , ou M , ou ambos. Se L e M são expressões regulares, o conjunto da união também é uma expressão regular. Concatenação de duas linguagens L e M, denotado por Qualquer string formada quando se concatena qualquer string de L, com qualquer string de M. Se L e M são expressões regulares, o conjunto da concatenação também é uma expressão regular. Fechamento de Kleene de L = {0} Conjunto de strings que podem ser formadas usando qualquer número de strings de L, com repetições e concatenando os mesmos. Se L e M são expressões regulares, o conjunto do fechamento de Kleene também é uma expressão regular. Precedência dos operadores é dada por: 1.º) Fechamentos de Kleene 2.ª) Concatenação 3.º) União PS: È possível usar parênteses de forma a alterar esta ordem. Equivalência entre autómatos E LUM - $001, (^) 50, (^) 111, 9} LM=290O1, (^) E 10,E^11 1,001001,^ 10001, 11 1001} inchui sempre^ o (^) vazio LEEE (^) , 0,00,000,0000,..} Exemplos : CatbJlhtbJ L { =al,a2,bl,bz} CatbtÇmntz )x L (^) =2E,a, b,C, (^) on, aa,^ bb,eg,.} (BR COtStm (^) ..+913/Eta) L=E (^) BROOO ,^ BR^00 Oa,^ BROOL, a..}^ Expressoes (^) regulares (^) para o conjunto de^ strings (^) que possui Ose^ (^1) s (^) e : o autepenúltimo (^) seja (^) I COTIXLLO+1)CO+1) o apareçam altennados COSJXTI 101 XT ICOL)^ TTOL^ 101 Y on ( E+ICOMX/Eto) E-NFA J^ NFA^ e dA M D EB (^) I DFA

ER -> E-NFA Exemplos : En Oty i E *^ i (^) E G o (^) l w Ez^ E (^)? E (^) E P m? i EntEz @ (^) IO E 1 E (^) O V^ m^ t i m t Er Ez EsEz o 1 M E E e E E E e 1 E i^ m^. V m. (^) p E m E E Ex o OIX E e O E E (^) ^ E B m^ i^ m^. p E o (^) I (^) (O+] ) E ö i^ E 1 E ~^ D V ö^ E ~ E^ e i

Expressões regulares em UNIX Permitem-nos escrever classes de caracteres para representar grandes conjuntos de caracteres da forma mais sucinta possível, da seguinte forma: O símbolo. (ponto) representa “qualquer caracter” A sequência [ ] representa a expressão regular: Dentro destes parênteses rectos podemos colocar um intervalo da forma x-y, para representar todos os caracteres que vão de x a y na sequência ASCII. Podemos também utilizar maiúsculas e minúsculas, visto terem códigos diferentes. Parênteses e outros caracteres especiais, tem de ser representados com o sinal de barra invertida () antes dos mesmos. [digit] - É uma notação especial para o conjunto de dez dígitos, também pode ser representado por [0-9]. [alpha] - È outra notação especial para representar qualquer caracter do alfabeto, também pode ser representado por [A-Za-z0-9]. Os seguintes operadores são usados também: | pode ser usado em vez do + para denotar uma união. ? significa “zero ou um de”, R? é o mesmo que + R

  • significa “um ou mais de”, R+ é o mesmo que RR [n] significa “n cópias de”, R[3] é o mesmo que RRR Leis algébricas Associatividade -> Propriedade de um operador que nos permite reagrupar os operandos quando o operador é aplicado duas vezes. ( L + M ) + N = L + ( M + N ) -> lei associativa para união ( LM ) N = L ( MN ) -> lei associativa para concatenação Comutatividade -> Propriedade de um operador que nos diz que podemos trocar a order dos seus operandos e obter o mesmo resultado. L + M = M + L -> lei comutativa para a união Distributividade -> Propriedade entre dois operadores, que afirma que um operador pode ser aplicado a cada argumento do outro operador individualmente. L ( M + N ) = LM + LN -> lei distributiva á esquerda da concatenação sobre a união ( M + N ) L = ML + NL -> lei distributiva á direita da concatenação sobre a união Idempotência -> Um operador é dito idempotente se o resultado da aplicação de dois valores iguais como argumentos é esse mesmo valor. L + L = M -> lei da idempotência para a união. Identidade e aniquiladores Identidade -> elemento neutro para um operador, valor que quando aplicado a outro elemento, o resultado é esse mesmo segundo elemento. Exemplo: No caso da adição 0 é um valor identidade, enquanto que para a multiplicação é 1. Aniquilador -> elemento absorvente para um operador, valor que quando aplicado a outro elemento, o resultado é esse mesmo primeiro elemento. Exemplo: No caso da multiplicação 0 é um valor aniquilados. Destas noções surgem 3 leis:
  • L = L + = L -> Lei que afirma que no caso da união, é identidade. L = L = L -> Lei que afirma que no caso da concatenação, é identidade. L = L = -> Lei que afirma que no caso da concatenação, é aniquilador. Leis de fechamentos ( L * ) * = L* -> Fechar uma expressão já fechada não muda a linguagem. = -> O fechamento de contém apenas o string. = -> O único string formado por concatenação de cópias do string vazio, é o próprio string vazio. L? = -> Definição do operador? L = LL* = LL e também L = L + a1,92, a^2 Mitaztast^ .-tak E Ø (^) Ø (^) Ø E E (^) E Q (^) Ø Ø (^) Ø Qx E^ E E *X E E t (^) + E

Gramáticas Livres de Contexto Os ERs e DFAs não são capazes de representar todas as linguagens, logo, GLCs são a notação usada para descrever linguagens, mais poderosa que autómatos e expressões regulares, útil especialmente em estruturas aninhadas. G = {V,T,P,S} T -> Tem um número finito de símbolos que formam a string da linguagem, os terminais. V -> Existe um número finito de variáveis, e cada variável representa uma linguagem. S -> Uma das variáveis representa a linguagem que está a ser definida, o símbolo inicial. P -> Existe um número finito de produções(regras) que representam a recursividade da linguagem (função recursiva -> função definida a partir de si mesma), cada produção consiste: A variável que está a ser (parcialmente) definida pela produção, chamada a cabeça da produção. O símbolo de produção -> Uma string de zero ou mais terminais e variáveis., o corpo da produção. Exemplo: GLC para {0 1 | n > 1} A quantidade de 0s e 1s da linguagem é igual. A linguagem é construída de maneira recursiva, a base é w = 01 (a menor string da linguagem). A indução passa por, se a string w está na linguagem, então 0w1 também estará. A recursividade gera produção (regra para definir uma GLC), tem a seguinte forma: variável -> string de variáveis e símbolos. Logo neste caso, temos a seguinte definição formal: T = {0,1} V = {S} P S -> 01 S -> 0S1 (derivação) Derivações - Derivamos strings na linguagem de um GLC a partir do símbolo inicial, repetidamente aplicando as produções. Usando o exemplo acima: S => 0S1 => 00S11 => 000111 (ao substituir o S) Podemos também usar a derivação iterativa, onde , significa “zero ou mais passos de derivação”, logo: S => * Representação de uma GLC com mais que uma variável Exemplo: GLC para representar expressões aritméticas numa linguagem de programação, para simplificar, usados apenas os operadores {, +} e os identificadores {a, b}: (ab + b)* bbb T = {a,b,+,,(,)} V = {E,I} S = {E} P I -> a E -> I I -> b E -> E + E I -> Ia E -> E * E I -> Ib E -> (E) Derivação da string: aa(a+ba) E => EE => E(E) => E(E+E) => I(E+E) => Ia(E+E) => aa(I+E) => aa(a +E) => aa(a +I) => aa*(a+IA) => aaª(a+ba) c.q.d u u

PDAs -> Pushdown Automata ou Autómato PIlha PDA - Autómatos Finito com memória auxiliar em forma de pilha(Stack)(estrutura de dados). Na stack podemos trabalhar com os símbolos, permitindo ler do topo pilha(read), empilhar no topo da pilha(pushed) ou desempilhar do topo da pilha(popped). Difere de um NFA porque, usa a informação no topo da pilha para decidir que deciseguintear na função de transição e também pode manipular a pilha ao efectuar essa transição. A cada transição de estado, começa no estado inicial: Analisa o símbolo de entrada, Analisa o símbolo do topo da pilha, Pode empilhar ou desempilhar um símbolo do topo da pilha. Muda para o estado seguinte. Definição formal do autómato: P = {Q, , , , q , F} Q -> Conjunto de estados -> Alfabeto de entrada. -> Alfabeto da pilha. -> Função de transição : Q x x -> P ( Q x ) (estado, lê entrada, desempilha) -> (estado, empilha) q Q -> Estado inicial. E Q -> Conjunto de estados finais. Diagrama de estados Os PDAs podem ser aceites de duas formas: Por pilha(stack) vazia, Por um estado final aceite, como visto acima com o símbolo $.

  • PDA^ -^ estado^ accite eutrada ou refutado A R Começa sempre vazia pilha şir (^) go E î 8 g^ E TEE o€ E Exemplo Onju^ (^111000) OOO 117 (^000 1 7) ^ in n à à por cada^ o Pon^ cada^1 lido empilhamos o^ dasempilha^ - se empilhamoso símbolaX^ no^ tapo^ um simbolo simbolo (^) $ da^ pilha, (^) funcionando x^ do^ topada Bilha. como (^) um contador do x^ u^ - de^ Os começa com^ a x $ $ pıiha^ T vazia (^) $ Oestado (^) final é^ uma string accite ne a (^) pilha só (^) tiven (^) o simbolo têo $inicial^ que^ foiadicionado. nada nãê (^) desimpilha empilha O .E^1 X ? estado (^) P 9 o.^ an^ i^9 z^ x 93 estado^ final inicial E.E$ 1,X-BE L E , $-8 (^) E nãêlêmada lêt^ mãã^ lê^ mada nada mãê (^) desimpilha (^) desimpihao o desempiha $ $ empalha (^) nac empilhamada nac^ empilha^ mada

Exemplos de (^) Construção de^ diagramas num^ PDA au (^) butmem I (^) u,m ? 1 Estratégia : Empithar os a's, (^) desempilhar as a's (^) a cada b , empilhan os^ b's quando la,alaal (^) ( empilhar bials} a's não^ existir^ mais^ a's^ e acadac, desempilhar as^ bls.^ (a, 2 o^1 a 2 o)^ L^ desimpilhar (çbID) i Labls)^ 9 o (^9) bals) B (^9) z (^1) b,2o120) BbpoIbZoJ CbiblbbJ aubmęuxmIu ,mzI Estratégia : Empilhar os a'se^ b's^ e depois desempitha-Los uma um, a^ cada^ C^. la ,a^ laa)^ CbblbbJ le,als) ca, zo^ la 2 o) (^) CCbIB) t - (^) x . 9 o q (^) q zq q Ibialbal (bls) (^) ( s,olzo) aubucmduI (^) m ,mZ 1 Estratégia : Empilhar as^ a 's, a (^) cada b, (^) desempilhar um^ a , empilhar os la,a laa)^ Cls (^) eacadad ,^ desempilhar^ um C. ca (^) , zola (^2) o) (b,als)^ Cc,clec) (d,els) t (^) s (^) r (^) t

. (^9) o q^ qq q bals) (^) Cepolel (^) ( 9 d,els) (D,2012o) aubme " ImmzL (^) Estratégia : Empilhan as a 's,^ ignorar^ os (^) b (^) 'D,^ nac^ requiem controlo , acada (^) edesempithat. an a , para garautin (^) que o^ quamtas (^) verzes fonerm múmero de a'se (^) a's (^) éigual. la (^) ,2o^ la^2 o)^ r Ca ,a^ laal^ (b,ala]^ necemsárias ce,als) D (^) D (^) t ? (^9) o ( (^) bia^ la)^ . (^91) celais) . (^9) z (3,2012.) . un^9 p^ praenter os (^) a, mac (^) farzer mada - aass by ratinan até a pilhan erstamn wazia