Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Índice da seção

Introdução

asdasfd

Índice da seção

Noções Fundamentais

Esta seção introduz os conceitos fundamentais para o estudo dos autômatos finitos e linguagens formais, essenciais para as seções e capítulos subsequentes.

Funções

Sejam e dois conjuntos quaisquer, uma função de em , denotado como , é uma relação que associa cada elemento de a, no máximo, um elemento em .

Sejam e dois conjuntos quaisquer, e sejam e funções de em , isto é, . Dizemos que é uma função parcial quando não está definida para todos os elementos de . Por outro lado, é uma função total quando está definida para todos os elementos de .

Alfabetos e Palavras

Um alfabeto é um conjunto de símbolos finito e não vazio denotado convencionalmente pelo símbolo .

Exemplo

Os conjuntos , , , e são todos alfabetos. Os conjuntos , e não são alfabetos.

Seja um alfabeto, qualquer sequência finita de símbolos na forma com para todo é dita uma palavra sobre .

Exemplo

Dado o alfabeto , tem-se que as sequências , , são todas palavras sobre

A partir daqui, podemos definir algumas operações sobre palavras e alfabetos.

Seja uma palavra, o comprimento de , denotado por , é o número de símbolos que compõem .

Seja uma palavra, é dita palavra vazia, e denotada por , se, e somente se, .

Exemplo

Sejam , , e , quatro palavras pertencentes ao alfabeto . Tem-se que , , e .

Sejam e duas palavas quaisquer, a concatenação de com , denotada por é a palavra formada por todos os símbolos de seguidos por todos os símbolos de , ou seja:

Exemplo

Sejam , ambas pertencentes ao alfabeto , tem-se que e .

Exemplo

Sejam , , tem-se que e .

Nota-se que não existe nenhuma exigência sobre os alfabetos aos quais as palavras da concatenação fazem parte, ou seja, não é obrigatório que elas pertencam ao mesmo alfabeto.

Para quaisquer palavras , vale:

Proof:

sadasdas

Para qualquer palavra :

Proof:

sadasdas

Seja uma palavra , a palavra potência de , denotada por , é definida recursivamente como:

Para toda palavra e para todo é válido que:

  1. .
  2. .

Proof:

sadasdas

Seja uma palavra , a palavra inversa de , denotada por , é tal que .

Também podemos formalizar algumas operações com alfabetos. Em primeiro lugar, uma vez que alfabetos são conjuntos, todas as operações usuais de conjuntos (união, interseção, complemento, ) são válidas. Além dessas, segue:

Seja um alfabeto , a potência de , denotada por , é definida recursivamente como:

Seja um alfabeto, o fecho positivo e o fecho de Kleene de , denotados em ordem por e , correspondem, respectivamente, aos conjuntos:

Seja as palavra , dizemos que é prefixo de , denotado por , sempre que . Por outro lado, dizemos que é sufixo de , denotado por , sempre que .

Exemplo

Seja , o conjunto de todos os prefixos de corresponde ao conjunto: e o conjunto de todos os sufixo de corresponde ao conjunto

Proof:

sadasdas

Toda palavra tem pelo menos um prefixo e um sufixo.

Linguagens

Dado um alfabeto , qualquer subconjunto será chamado de linguagem sobre .

Exemplo

Assim como para alfabetos, as linguagens também herdam as operações clássicas de conjuntos, bem como podemos definir algumas demais operações.

Sejam as linguagens , a concatenação de e , denotado por , corresponde ao conjunto:

Exemplo

Seja uma linguagem, a linguage m reversa de L, denotada por , corresponde ao conjunto:

Exemplo

Seja uma linguagem , a linguagem potência de , denotada por , é definida recursivamente como:

Exemplo

Seja uma linguagem, o Fecho Positivo e o Fecho de Kleene de L, denotados em ordem por e , são, respecivamente:

Exemplo

Seja uma linguagem, as linguagens dos prefixos e dos sufixos de , denotadas em ordem por e , são, respectivamente, os seguintes conjuntos:

Exemplo

Índice da seção

Exercícios

asdasdas

Índice da seção

Autômatos Finitos

asdasd

Índice da seção

Autômatos Finitos Determinísticos (AFDs)

Um Autômato Finito Determinístico (AFD) é uma quintupla onde:

  • é um conjunto não-vazio e finito de estados internos.
  • é um alfabeto de entrada.
  • é uma função total de transição.
  • é o estado inicial.
  • é o conjunto de estados finais ou de aceitação.

O termo "determinístico" se refere ao fato de que, para cada entrada, existe apenas um estado ao qual o autômato pode transitar a partir de seu estado atual (HOPCROFT; MOTWANI; ULLMAN, 2003, p. 48). Isto, os AFD's são autômatos finitos que podem estar em apenas um estado em cada instante de tempo.

Exemplo

A estrutura com e , é um AFD e pode ser representado pelo grafo a seguir:

DFAq₀q₀qi->q₀q₁q₁q₀->q₁aq₁->q₀a

Exemplo

A estrutura com , , , , e , é um AFD e pode ser representado pelo grafo a seguir:

DFAs₀s₀si->s₀s₁s₁s₀->s₁0s₂s₂s₀->s₂1s₁->s₁1s₁->s₂0s₂->s₁0,1

A função de transição pode ser interpretada semanticamente como sendo o programa que o autômato executa, assim uma aplicação qualquer de é uma instrução do programa do autômato. Por exemplo, a aplicação significa que, o AFD muda do estado atual para o estado quando o mecanismo de leitura lê o símbolo na memória.

Funcionamento de um AFD

Observe que , em sua definição básica, não processa cadeias completas, mas apenas símbolos individualmente. Para que o AFD seja capaz de manipular palavras inteiras, precisamos estender a função de transição, de modo que ela represente a execução completa do “programa” sobre uma sequência de símbolos.

Seja um AFD , a função estentida de , denotada por , é , tal que:

Exemplo

A partir da definição da função de transição estendida, podemos compreender partir para a compreensão do funcionamento de AFDs. Formalizaremos tais conceitos a seguir.

Seja um AFD e seja , uma computação de em corresponde a aplicação de .

Exemplo

Exemplo

Seja um AFD e seja é dito que é reconhecida por sempre que .

Exemplo

Seja um AFD, a linguagem reconhecida (computada) , denotada por , corresponde ao conjunto:

Isto é, a linguagem de um AFD é o conjunto de todas as palavras reconhecidas por .

Exemplo

Exemplo

Classes Formais

Com a compreensão mais consolidade de autômatos finitos determinísticos, já somos capazes de formalizar a primeira classe de linguagens formais, sendo esta a classe das linguagens regulares.

Seja uma linguagem qualquer, é dita linguagem regular se, e somente se, existe um AFD tal que . A classe de todas as linguagens regulares é denotada por .

Índice da seção

Autômatos Finitos Não-determinísticos

Um Autômato Finito Não-determinístico (AFN) é uma quintupla onde:

  • é um conjunto não-vazio e finito de estados internos.
  • é um alfabeto de entrada.
  • é uma função total de transição.
  • é o estado inicial.
  • é o conjunto de estados finais ou de aceitação.

Exemplo

Seja um AFN. Define-se a função de transição não-determinística estendida tal que: para todo , e .

Exemplo

Exemplo

Funcionamento de um AFD

asdasd

Índice da seção

-Autômatos Finitos Não-determinísticos

Os -Autômatos Finitos Não-determinísticos (podendo também ser chamados de Autômatos Finitos Não-determinísticos com Movimentos Vazios) são como uma generalização do modelo de AFN. Entretanto, diferentes dos AFNs, o modelo -AFN nos permite ter transições entre estados diferentes usando (ou consumindo) a palavra vazia, as chamadas -transições.

Um -Autômato Finito Não-determinístico (-AFN) é uma estrutura onde:

  • é um conjunto não-vazio e finito de estados internos.
  • é um alfabeto de entrada.
  • é uma função total de transição.
  • é o estado inicial.
  • é o conjunto de estados finais ou de aceitação.

Convencionalmente chamamos de -Função de Transição Não-determinística.

A estrutura , com sendo especificada como no grafo abaixo, é um -AFN.

DFAq0q₀qi->q0q1q₁q0->q1λq1->q10q2q₂q1->q21q1->q2λq2->q0λq2->q20, 1, λ

A estrutura , com sendo especificada como no grafo abaixo, é um -AFN.

DFAq0q₀qi->q0q1q₁q0->q1λq1->q10q2q₂q1->q2λq2->q21

Uma interpretação para as transições da forma é que a unidade de controle do autômato consegue mudar do seu estado atual interno para um subconjunto de estados sem necessidade de acessar a memória do autômato.


Computação em -Autômatos Finitos Não-determinísticos


Note que a definição da função de transição somente nos garante que as transições ocorrem apenas em duas situações, a primeira em relação a leitura de símbolos individuais de e a segunda em relação a palavra vazia, isto é, ainda não há uma forma de computar uma palavra , com . A saída para contornar essa situação é similar ao que é feito para os AFDs e AFNs, isto é, precisaremos estender a função de transição do autômato.

Entretanto, nas definições anteriores, não fazia parte do alfabeto de entrada, e por isso era possível utilizá-la para definir recursivamente as funções estendidas. No entanto, como agora precisamos incluir explicitamente no processo, será necessário adotar um novo método para a definição das funções estendidas. Para isso serão necessárias mais alguns definições, como segue:

Seja um -AFN. A função é definida como onde e

Considere o -AFN do Exemplo 02. Tem-se para o estado que sabe-se que, Desenvolvendo , tem-se que mas, Assim, Substituindo na segunda igualdade, temos que

Com esta definição, podemos então capturar todos os estados que podem ser alcançados a partir de um dado estado por meio de transições , incluindo transições indiretas, prevenindo a perda de estados acessíveis não diretamente conectados.

Mas, note que a definição acima só é aplicável para estados individuais. Como no não-determinísmo podemos estar simultaneamento em múltiplos estados, precisamos que essa função seja aplicável em um conjunto deles. Vejamos formalmente como segue...

Seja um -AFN. A função é definida como

Considere o -AFN do Exemplo 01, tem-se para o conjunto que,

E por fim, definidos e , podemos estender nossa função de transição.

Seja um -AFN. A -Função de Transição Não-determinística Estendida é definida recursivamente como:

Índice da seção

Exercícios

asdssda

Referências

HOPCROFT, John E.; MOTWANI, Rajeev; ULLMAN, Jeffrey D. Introduction to Automata Theory, Languages, and Computation.

CALLEJAS BEDREGAL, Benjamín René; ACÍOLY, Benedito Melo; LYRA, Aarão. Introdução à Teoria da Computação: Linguagens Formais, Autômatos e Computabilidade.

MENEZES, Paulo Blauth. Linguagens Formais e Autômatos.