L`ogica en la Inform`atica

Anuncio
Lògica en la Informàtica
Dijous 18 de gener de 2007
ATENCIÓ: Es valorarà la concisió en les respostes.
PUBLICACIÓ NOTES: dilluns 29 de gener.
REVISIÓ: dijous 1 de febrer, 16h, edif. Omega, desp. 114.
TEMPS: 2hores. Sense apunts.
1.
(2 punts) Demostra que el següent conjunt de set clàusules és insatisfactible:
1) ¬P (x) ∨ Q(x) ∨ R(x, f (x))
2) ¬P (x) ∨ Q(x) ∨ S(f (x))
3) T (a)
4) P (a)
5) ¬R(a, z) ∨ T (z)
6) ¬T (x) ∨ ¬Q(x)
7) ¬T (y) ∨ ¬S(y)
SOLUCIÓ:
Com que la resolució és una regla deductiva correcta, si veiem que pertany a la clausura
sota resolució de les clàusules donades podrem concloure que la seva conjunció és insatisfactible.
Considerem les següents inferències per resolució:
2.
Resolvent
Clàusules
utilitzades
8) Q(a) ∨ R(a, f (a))
9) Q(a) ∨ S(f (a))
10) ¬Q(a)
11) R(a, f (a))
12) T (f (a))
13) ¬S(f (a))
14) S(f (a))
14) 1+4
2+4
3+6
10 + 8
11 + 5
12 + 7
9 + 10
13 + 14
Unificador
{x = a}
{x = a}
{x = a}
{z = f (a)}
{y = f (a)}
(2 punts) Demostra si són certes o falses les afirmacions a),b),c), i respon a la pregunta curta d):
1) Si F |= G i F |= ¬G llavors (G ∨ F ) ↔ G és una tautologia
2) Si C i D són clàusules tautològiques i E s’obté a partir de C i D en un pas de resolució,
aleshores E és una tautologia.
3) Es coneixen procediments que, donada una fórmula proposicional F , calculen en temps
polinòmic una fórmula equisatisfactible F 0 en DN F que té tamany polinòmic respecte F .
4) Si F és una CNF proposicional amb n sı́mbols de predicat que conté k clàusules unitàries
diferents, quants models pot arribar a tenir F ?
SOLUCIÓ:
1) Cert. Si F tingués un model I aquest compliria I |= G i I |= ¬G, cosa que no pot passar.
Aixı́ doncs F és insatisfactible. Per tant G ∨ F ≡ G, i aplicant el lema de substitució sé que
(G ∨ F ) ↔ G ≡ G ↔ G, fórmula que és clarament una tautologia.
2) Cert. Veuré que tota interpretació és un model de E. Sigui I una interpretació qualsevol.
En ser C i D tautologies, tenim I |= C i I |= D. A més sabem que, en ser la resolució una
regla correcta, es compleix C ∧ D |= E. Per tant, necessàriament I |= E, que és el que
volı́em veure.
3) Fals. Si es conegués tal procediment haurı́em demostrat que P = N P ja que es podria
decidir la satisfactibilitat d’una fórmula en temps polinòmic de la següent manera. Prenem
una fórmula F qualsevol i la convertim en temps polinòmic en una fórmula F 0 en DN F
que és equisatisfactible i té tamany polinòmic respecte F . Ara prenem F 0 i, com que està
en DN F , decidim la seva satisfactibilitat en temps lineal en el seu tamany (i per tant,
polinòmic en el tamany de F ).
4) Com que tenim k variables el valor del qual ja coneixem, no tenim 2n possibles models,
sinó només 2n−k . Notem que en cas que apareguin dos clausules unitàries de la forma p i
¬p per a cert sı́mbol de predicat p, aleshores la fórmula no té cap model.
3.
(2 punts) Donat un sı́mbol de predicat p, direm que una fórmula és una p-implicació si és de la
forma p o bé (F → G), on F i G són p-implicacions. Demostra que tota p-implicació o bé és una
tautologia o bé és lògicament equivalent a p.
SOLUCIÓ:
Sigui H una p-implicació. Demostrarem el resultat per inducció sobre n, el nombre d’àtoms d’H.
Cas base (n = 1): aleshores H és p, clarament lògicament equivalent a p.
Pas inducció (n > 1 i assumim l’enunciat cert per tota p-implicació amb menys de n àtoms):
en aquest cas H és de la forma (F → G), on F i G són p-implic acions amb menys de n
àtoms. Aixı́ doncs, o bé són lògicament equivalent a p o bé són tautologies. Dis tingim els
4 possibles casos:
• F ≡ p i G ≡ p. Aleshores H ≡ p → p ≡ ¬p ∨ p, que és clarament una tautologia.
• F ≡ p i G tautologia. Aleshores H ≡ p → G ≡ ¬p ∨ G, que és una tautologia ja que G
ho és.
• F tautologia i G ≡ p. Aleshores H ≡ F → p ≡ ¬F ∨ p, que és equivalent a p ja que
¬F és una contradicció.
• F tautologia i G tautologia. Aleshores H ≡ F → G ≡ ¬F ∨ G, que és una tautologia
ja que G ho és.
4.
(4 punts) Escriu programes Prolog per als següents problemes:
1) factores(N,L): dado un natural positivo N, la lista de sus factores primos en orden creciente es L. Por ejemplo, si N es 120, L será [2,2,2,3,5]. Debe poder tratar el caso
donde la N viene dada, y también el caso donde los dos argumentos vienen dados. Con
factores(120,[2,2,3,5,2]) ha de responder NO porque la lista no esta ordenada.
2) cruce(LA,C): dada una lista LA de nombres de animales, C es un cruce entre estos animales: una combinación de dos animales que tienen prefijo y sufijo común. Deben poderse generar todos los cruces posibles. Por ejemplo, si LA es [gato,tortuga,oso,asno], C
será gatortuga, y, mientras haya backtracking, tortugato, gatoso, tortugasno, ososo,
etc. Considera solamente prefijos y sufijos propios, es decir, distintos al nombre completo
del animal. Usa el predicado predefinido “name” que convierte átomos prolog en su lista de
codigos ascii y vice versa; por ejemplo, name(X,[111,115,111]) instancia la X con oso, y
name(oso,L) instancia la L con [111,115,111].
3) niveles(T,L): dado un término T, el recorrido por niveles de T es L, considerando T como un
árbol. Por ejemplo, si T es f(g(a,b,c),h(c,d)) entonces L será la lista [f,g,h,a,b,c,c,d].
Usa el operador predefinido “=..” que convierte un término f(t1,...,tn) en una lista de
la forma [f,t1,...,tn] y vice versa. Por ejemplo, con:
?- f(a,b,g(c)) =.. L. contesta: L = [f,a,b,g(c)], y con:
?- T =.. [f,a,b,g(c)]. contesta: T = f(a,b,g(c)).
Ayuda: es muy simple si generalizas el problema a listas de términos y usas la concatenación
de listas.
SOLUCIÓ:
%a)
factores(N,L):- fac(N,L1), !, L1 = L.
fac(1,[]):-!.
fac(N,[F|L]):- nat(F), F>1, 0 is N mod F,
N1 is N // F,
fac(N1,L),!.
%b)
cruce(LA,C):- pert(A1,LA),
name(A1,L1),
pert(A2,LA),
name(A2,L2),
concat(L1,Z,L3), name( C,L3).
concat(X,Y,L1), X\=[], Y\=[],
concat(Y,Z,L2), Z\=[],
%c)
niveles(T,L):- niv([T],L).
niv([],[]).
niv([T|Ts],[F|L]):- T =.. [F|Args],
concat(Ts,Args,Ts1),
niv(Ts1,L).
Descargar