Índice da seção
Introdução
asdasfd
Índice da seção
- Noções Fundamentais
- Funções
- Alfabetos e Palavras
- Definição: Alfabeto
- Definição: Palavra
- Definição: Comprimento de uma palavra
- Definição: Palavra Vazia
- Definição: Concatenação de palavras
- Teorema: Associatividade da Concatenação
- Teorema: Elemento Neutro da Concatenação
- Definição: Palavra Potência
- Lema
- Definição: Palavra Inversa
- Definição: Alfabeto Potência
- Definição: Fecho Positivo e Fecho de Kleene de Alfabetos
- Definição: Prefixo e Sufixos
- Definição: Conjuntos dos Prefixos e Sufixos
- Teorema: Para qualquer que seja , as seguintes afirmações são verdadeiras:
- Corolario: Existência de Prefixo e Sufixo
- Linguagens
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 .
Seja um alfabeto, qualquer sequência finita de símbolos na forma com para todo é dita uma palavra 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, .
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:
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:
Para qualquer palavra :
Seja uma palavra , a palavra potência de , denotada por , é definida recursivamente como:
Para toda palavra e para todo é válido que:
- .
- .
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 .
Seja , o conjunto de todos os prefixos de corresponde ao conjunto: e o conjunto de todos os sufixo de corresponde ao conjunto
Toda palavra tem pelo menos um prefixo e um sufixo.
Linguagens
Dado um alfabeto , qualquer subconjunto será chamado de linguagem sobre .
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:
Seja uma linguagem, a linguage m reversa de L, denotada por , corresponde ao conjunto:
Seja uma linguagem , a linguagem potência de , denotada por , é definida recursivamente como:
Seja uma linguagem, o Fecho Positivo e o Fecho de Kleene de L, denotados em ordem por e , são, respecivamente:
Seja uma linguagem, as linguagens dos prefixos e dos sufixos de , denotadas em ordem por e , são, respectivamente, os seguintes conjuntos:
Í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.
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:
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 .
Seja um AFD e seja é dito que é reconhecida por sempre que .
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 .
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.
Seja um AFN. Define-se a função de transição não-determinística estendida tal que: para todo , e .
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.
A estrutura , com sendo especificada como no grafo abaixo, é um -AFN.
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