AUTMATO FINITO
Autmato Finito
Fita: Dispositivo de Entrada que contm a informao a ser processada; Unidade de Controle: Reflete o Estado corrente do autmato. Possui uma unidade de leitura. Move-se apenas para a direita; Programa: Funo de Transio que comanda as leituras e define o Estado do autmato.
Prof. Luciano Braga de Lacerda
Autmato Finito
Programa
Funo Parcial tal que, dependendo do Estado Corrente da Mquina e do Smbolo lido, determina o novo Estado do Autmato. O conjunto de todas as transies constitui o programa do autmato.
Fita (Entrada)
Unidade de Controle
Autmato Finito
Processamento do Autmato
O processamento de um Autmato Finito a sucessiva aplicao de Computaes Atmicas.
q1
a b
q0 a qf a,b
b q2 b Programa
Estado q0 q0 Lido a b a b a b a b Transio q1 q2 qf q2 q1 qf qf qf
q1 q1 q2 q2 qf qf
Autmato Finito
Processamento do Autmato
O processamento de um Autmato Finito a sucessiva aplicao de Computaes Atmicas.
Programa
Estado q0 q0 q1 q1 q2 q2 qf qf Lido a b a b a b a b Transio q1 q2 qf q2 q1 qf qf qf
2 a
q1 b q1 q2 b b a
3 Processamento: a b b a a
q2 b q2 qf b b a
q0 a q0 q1
qf a qf qf
Autmato Finito
Programa
Funo parcial tal que,
f A x B. Uma funo Parcial uma Relao na qual cada elemento do Domnio est relacionado com, no mximo um elemento do Contradomnio (Imagem) O par (a,b) f denotado por f(a) = b
dependendo do estado corrente e do smbolo lido, determina o prximo Estado prog((e,s)) pe No exemplo anterior: prog((q0,a)) q1
Autmato Finito
Do exemplo anterior:
Sintaxe: ((q,a),p) ((q0,a),q1) ((q0,b),q2) ((q1,a),qf) ((q1,b),q2) ((q2,a),q1) ((q2,b),qf) ((qf,a),qf)
((qf,b),qf)
Prof. Luciano Braga de Lacerda
Autmato Finito
Representaes de Programa
Tabela
Estado q0 q0 q1 q1 q2 Lido a b a b a Transio q1 q2 qf q2 q1
Funo
Sintaxe: ((q,a),p) ((q0,a),q1) ((q0,b),q2) ((q1,a),qf) ((q1,b),q2) ((q2,a),q1) ((q2,b),qf) ((qf,a),qf) ((qf,b),qf)
Prof. Luciano Braga de Lacerda
q2
qf
b
a
qf
qf
qf
qf
Exemplo:
Representar uma mquina que fornece ou doce, ou biscoito, ou refrigerante (refri).
={moeda,tecla_doce,tecla_biscoito,tecla_refri, libera_doce,libera_biscoito,libera_refri}
q0
moeda
q1
tecla_doce libera_doce tecla_refri
q4
tecla_biscoito
libera_refri
q2
q3
libera_biscoito Prof. Luciano Braga de Lacerda
Autmato Finito
q0
moeda
Exemplo:
Representar uma mquina que fornece ou doce, ou biscoito, ou refrigerante (refri).
tecla_doce
q1 tecla_refri
libera_refri
q2
libera_doce
q4
tecla_biscoito
libera_biscoito
q3
Sintaxe: ((q,a),p) ((q0,m),q1) ((q1,d),q2) ((q1,b),q3) ((q1,r),q4) ((q2,ld),q0) ((q3,lb),qo) ((q4,lr),q0)
Estado q0 q1 q1 q1 q2
q3
q4
Transio q1 q2 q3 q4 q0
libBisc
libRef
q0
q0
Autmato Finito
Note que:
Um autmato verifica se uma Palavra w pertence a uma linguagem L, ou seja, verifica se w L ou se w L.
No caso, se q0 = moeda ento vai para q1 se q0 moeda ento NADA Ou seja, verificou se w L.
Transio q1 q2 q3 q4 q0
libBisc
libRef
q0
q0
Estudo de Caso
Implementar o autmato da mquina de lanches em uma linguagem de programao funcional, no caso, Haskell.
Autmato Finito
--------------------------------------- IFF/Campus Maca ---------------------------------------- Matemtica Discreta (2010.1) ---------------------------------------- Implementao de Autmato Finito ---------------------------------------- Mquina de Lanches ---------------------------------------- Autor: Luciano B. de Lacerda ----------------------------------------------------------------------------- Funes: -- maq_lanc: Chamadora -- sel_lanc: Seletora -- fdoce: Simula entrega de doce -- fbisc: Simula entrega de biscoito -- frefri:Simula entrega de refi ----------------------------------------------------------------------------------------- > maq_lan -------------------------------------------------maq_lan:: Int->Int->Int maq_lan 0 _ = 0 maq_lan 1 x = if((x>= 1)&&(x<=3)) then sel_lanc(x) else 0 ---------------------------------------------------------------------------------------------------- > sel_lanc -------------------------------------------------sel_lanc::Int->Int sel_lanc x = if(x==1) then fdoce(x) else if(x==2) then fbisc(x) else frefri(x) ---------------------------------------------------------------------------------------------------- > fdoce -------------------------------------------------fdoce:: Int->Int fdoce x = x ---------------------------------------------------------------------------------------------------- > fbisc -------------------------------------------------fbisc:: Int->Int fbisc x = x ---------------------------------------------------------------------------------------------------- > frefri -------------------------------------------------frefri:: Int->Int frefri x = x --------------------------------------------------
Estudo de Caso
Assinatura da Funo:
maq_lan:: Int->Int->Int
Nome_funo :: Tipos de dados dos parmetros de Entrada Tipo do dado de Sada &&, significa AND. _ significa qq coisa.
Autmato Finito q0
moeda tecla_doce
((q0,m),q1)
Estudo de Caso
Comparando as chamadas s funes do programa com a representao do autmato da mquina de lanches, verifica-se que so correspondentes, logo, o programa implementa o referido autmato.
q1 tecla_refri
libera_refri
q2
libera_doce libera_biscoito
q4
tecla_biscoito
q3
2 0 maq_lanc 1 Sel_lanc
2 4
fdoce
frefri 3 4 3 fbisc