Sei sulla pagina 1di 14

Lgica Computacional

Aula Terica 9: Algoritmo de converso para FNC

Antnio Ravara
Departamento de Informtica

26 de Maro de 2012

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Conjunto das frmulas proposicionais com negao e sem implicao


Objectivo
Denir um algoritmo para transformar qualquer frmula de Lgica Proposicional para a Forma Normal Conjuntiva.

Conjuntos de frmulas proposicionais


Seja GP o conjunto das frmulas proposicionais que se obtm considerando o conectivo de negao () primitivo e denindo a constante como abreviatura abv ( = , sendo GP ). Seja HP GP o conjunto das frmulas proposicionais que no contm o conectivo de implicao ().
Antnio Ravara Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Algoritmos auxiliares

Eliminao da implicao
Seja ImplFree: GP HP a seguinte funo recursiva. se = 1 ImplFree(1 ), ImplFree(1 ) ImplFree(2 ), se = 1 2 ImplFree() = ImplFree(1 ) ImplFree(2 ), se = 1 2 ImplFree(1 ) ImplFree(2 ), se = 1 2 , caso contrrio Note-se que o caso base da denio recursiva quando a frmula um smbolo proposicional.

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Emulao de uma execuo de ImplFree

ImplFree(((p s) q) (p (r s))) = ImplFree((p s) q) ImplFree(p (r s)) = ( ImplFree(p s) ImplFree(q)) ( ImplFree(p) ImplFree(r s)) = ((ImplFree(p) ImplFree(s)) q) (p (ImplFree(r ) ImplFree(s))) = ((p ImplFree(s)) q) (p (r ImplFree(s))) = ((p s) q) (p (r s))

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Algoritmos auxiliares
Forma normal da negao
Uma frmula HP diz-se que est na forma normal da negao (e escreve-se FNN()), se s as suas subfrmulas que so frmulas atmicas esto negadas.

Eliminao das duplas negaes


Seja NNFC: HP HP a seguinte funo recursiva. se = 1 NNFC(1 ), NNFC( ) NNFC( ), se = ( ) 1 2 1 2 NNFC(1 ) NNFC(2 ), se = (1 2 ) NNFC() = se = 1 2 NNFC(1 ) NNFC(2 ), NNFC(1 ) NNFC(2 ), se = 1 2 , caso contrrio Note-se que o caso base da denio recursiva quando a frmula um smbolo proposicional ou a sua negao.
Antnio Ravara Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Emulao de uma execuo de NNFC

NNFC(((p s) q)) = NNFC((p s)) NNFC(q) = NNFC((p s)) q = (NNFC(p) NNFC(s)) q = (p s) q

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Algoritmos auxiliares
Funo de converso de frmulas na FNN para a FNC
Seja CNFC: HP HP a seguinte funo recursiva. Distr(CNFC(1 ), CNFC(2 )), se = 1 2 se = 1 2 CNFC() = CNFC(1 ) CNFC(2 ), , caso contrrio sendo Distr: HP HP HP a seguinte funo. Distr(11 , 2 ) Distr(12 , 2 ), se 1 = 11 12 Distr(1 , 2 )= Distr(1 , 21 ) Distr(1 , 22 ), se 2 = 21 22 1 2 , caso contrrio

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Como transformar uma frmula arbitrria para FNC?

Emulao de uma execuo de CNFC

CNFC((p (q r )) ((r s) t)) = CNFC(p (q r )) CNFC((r s) t) = Distr(CNFC(p), CNFC(q r )) Distr(CNFC(r s), CNFC(t)) = Distr(p, CNFC(q) CNFC(r )) Distr(CNFC(r ) CNFC(s), t) = Distr(p, q r ) Distr(r s, t) = Distr(p, q) Distr(p, r ) Distr(r , t) Distr(s, t) = (p q) (p r ) (r t) (s t)

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Algoritmo de transformao para a FNC Correco dos algoritmos

Algoritmo T
O algoritmo seguinte converte frmulas proposicionais para a FNC.

Denio: seja T : GP HP a seguinte funo.


T () = CNFC(NNFC(ImplFree()))

Teorema: o algoritmo T correcto


Dado GP , obtm-se HP fazendo = T (), sendo FNC() e .

Lemas de optimizao
1. Se HP ento ImplFree()=. 2. Se FNN() ento NNFC()=. 3. Se FNC() ento CNFC()=.
Antnio Ravara Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Algoritmo de transformao para a FNC Correco dos algoritmos

Anlise dos algoritmos de converso


Lema
1. Dada GP , a frmula = ImplFree() tal que HP e . 2. Dada HP , a frmula = NNFC() tal que HP , e FNN(). 3. Dadas 1 , 2 HP tais que FNN(1 ) e FNN(2 ), a frmula = Distr(1 , 2 ) tal que HP e FNN(), e se FNC(1 ) e FNC(2 ) tambm FNC(). 4. Dada HP tal que FNN(), a frmula = CNFC() tal que HP , e FNC().

Provas
Por induo na denio das funes.
Antnio Ravara Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Algoritmo de transformao para a FNC Correco dos algoritmos

Correco do algoritmo T

Teorema: o algoritmo T correcto


Dado GP , obtm-se HP fazendo = T (), sendo FNC() e .

Prova
Por induo estrutural, compondo por ordem os lemas anteriores. Note-se que todos os algoritmos terminam.

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Determinar a validade de uma frmula pelo algoritmo CNFC Clculo

Aplicao do algoritmo
Como vericar a validade de uma frmula pelo algoritmo CNFC?
necessrio primeiro converter a frmula (chame-se-lhe ) para a Forma Normal Conjuntiva. Obtm-se uma frmula equivalente a que analisamos com o Lema da disjuno de literais.

Vericar
1. Calcular =T ()=CNFC(NNFC(ImplFree())). 2. A frmula vlida se cada uma das suas disjunes o for, e cada uma -o se contiver um literal e a sua negao ou o .

Antnio Ravara

Lgica Computacional

Algoritmos Resultados de correco Um exerccio

Determinar a validade de uma frmula pelo algoritmo CNFC Clculo

Aplicao do algoritmo a = ((p q) (p (r q)))


Eliminao das implicaes
ImplFree() = ImplFree(p q) ImplFree(p (r q)) = (ImplFree(p) ImplFree(q)) (ImplFree(p) ImplFree(r q)) = (p q) (p (ImplFree(r ) ImplFree(q)) = (p q) (p (r q))

Eliminao das duplas negaes


NNFC((p q) (p (r q))) NNFC((p q)) NNFC(p (r q))) (NNFC(p) NNFC(q)) (NNFC(p) NNFC(r q)) (NNFC(p) NNFC(q)) (p (NNFC(r ) NNFC(q))) (p q) (p (r q))
Antnio Ravara Lgica Computacional

= = = =

Algoritmos Resultados de correco Um exerccio

Determinar a validade de uma frmula pelo algoritmo CNFC Clculo

Aplicao do algoritmo a = ((p q) (p (r q)))


Distribuio da disjuno sobre a conjuno
CNFC((p q) (p (r q))) = Distr((p q), (p (r q))) = Distr(p q, p) Distr(p q, r q) = (p q p) (p q r q)

|= (p q p) (p q r q) ?
No. 1. |= p q r q, pois contm q e q, mas 2. |= p q p, pois fazendo V (p) = 0 e V (q) = 1 tem-se que V p q p A frmula no vlida mas possvel, porque para V (p) = 0 e V (q) = 0 tem-se que V p q p.
Antnio Ravara Lgica Computacional

Potrebbero piacerti anche