Documente Academic
Documente Profesional
Documente Cultură
LOGICA PROPOZIŢIILOR.
p q p and q
False False False
False True False
True False False
True True True
După cum se observă din Tabelul nr. 1, în Python nu avem operatori pentru implicație și bicondiție.
Știind că acești operatori întâlniți în logica matematică pot fi exprimați în funcție de operatorii cuprinși în
Tabelul nr. 1, pot fi scrise funcții care să suplinească acest neajuns.
De exemplu, pentru implicație putem folosi funcția:
1
MATEMATICI DISCRETE ____________________________________ Laborator Nr. 3
def implies(p,q):
if p:
return q
else:
return True
2
MATEMATICI DISCRETE ____________________________________ Laborator Nr. 3
c). (( p ∨ q) ∧ (¬p ∨ r )) → (q ∨ r )
3
MATEMATICI DISCRETE ____________________________________ Laborator Nr. 3
Problema nr. 3
Să se scrie programe Python pentru a determina care sunt valorile de adevăr ale propoziţiilor p şi q
astfel încât expresiile următoare să fie simultan adevărate:
a). p → ( p ∧ q ) şi ( p ∨ q ) ∧¬( p ∧ q )
b). p → q şi (¬p ∨ q ) → p
Programul pentru rezolvarea punctului b)
from operator import implies
def main():
print("%10s %10s %12s %10s"%("p","q","expr1","expr2"))
for p in (False, True):
for q in (False, True):
expr1=implies(p,q)
expr2=implies(not p or q,p)
if (expr1 and expr2)==1:
print ("***%7d %10d %10d %10d" % ( p, q,expr1,expr2))
pTemp=p
qTemp=q
else:
print ("%10d %10d %10d %10d" % ( p, q,expr1,expr2))
print()
print('***')
print("%10s %d" %("val(p)=",pTemp))
print("%10s %d" %("val(q)=",qTemp))
main()
Afișează pe ecran:
p q expr1 expr2
0 0 1 0
0 1 1 0
1 0 0 1
*** 1 1 1 1
***
val(p)= 1
val(q)= 1
Problema nr. 4
Într-o sală de tribunal dau declaraţii trei persoane: Bogdan, Florin şi Stan.
Bogdan declară: Stan este vinovat şi Florin nu este vinovat.
Stan declară: Dacă Bogdan este vinovat, vinovat este şi Florin.
Florin declară: Eu sunt nevinovat, dar cel puţin unul din ceilalţi doi este vinovat.
Să se scrie un program Python care stabilește cine este vinovat şi cine nu.
4
MATEMATICI DISCRETE ____________________________________ Laborator Nr. 3
Problema nr. 5
Domnul Alexandru, soţia sa Bianca şi cei trei copii Carmen, Dan şi Ela stau împreună într-o seară de
iarnă.
a. Dacă dl. Alexandru priveşte la televizor, la fel face şi soţia sa.
b. Fie Dan, fie Ela, fie amândoi privesc la televizor.
c. Fie Bianca, fie Carmen, dar nu amândouă privesc la televizor.
d. Dan şi Carmen, fie că privesc, fie că nu privesc la televizor, dar asta numai împreună.
e. Dacă Ela priveşte la televizor, atunci dl. Alexandru şi Dan privesc şi ei.
Să se scrie un program Python care stabilește cine privește şi cine nu privește la televizor.
Problema nr. 6
Să se scrie programe Python care să permită demonstrarea faptului că următoarele expresii
propoziţionale sunt tautologii:
a). ((¬p) ∨ q) ∨ ( p ∧ (¬q))
b). ¬#$( p ∧ (¬q )) ∧ ((¬p) ∨ q )%&
c). ( p ∧ ( q ∨ r )) ↔ (( p ∧ q ) ∨ ( p ∧ r ))
d). (( p ∨ q) ∧ (¬p ∨ r )) → (q ∨ r )
e). !" p ∧ ( p → q )#$ → q
Problema nr. 7
Să se scrie programe Python care să permită determinarea tipului următoarei expresii (tautologie,
contradicţie, nici tautologie, nici contradicţie):
a). (( p ∨ q) ∧ (¬p ∨ r )) → (q ∨ r )
b). (( p → q ) ∧ ( q → r )) → ( p → r )
c). ( b ↔ ( b → a )) → a
Problema nr. 8
Patru prieteni au fost identificați ca suspecți pentru accesul neautorizat într-un sistem de calcul. Ei au
facut urmatoarele afirmații în fața autorităților. Ana a spus: „Costel a făcut-o.”. Ion a spus: „Eu nu am făcut-
o”. Costel a spus: „Diana a facut-o”. Diana spune: „Costel minte când spune că eu am făcut-o”.
a) Dacă autoritățile știu ca numai unul dintre cei patru suspecți spune adevărul, cine a făcut-o?
b) Dacă autoritățile știu ca numai unul din ei minte, cine a făcut-o?
Scrieți programe Python care să rezolve problema în cele două situații.
Problema nr. 9
Să presupunem că există inscripții pe ușile a două camere. Pe ușa de la prima cameră scrie: „In această
cameră este o doamnă și în cealaltă cameră este un tigru.”. Pe cealaltă ușă scrie: ”Într-una din aceste camere
este o doamnă și într-una din camere este un tigru”. Să presupunem că știți că una dintre inscripții este
adevărată și cealaltă este falsă. În spatele cărei uși este doamna?
5
MATEMATICI DISCRETE ____________________________________ Laborator Nr. 3
Problema nr. 10
Ștefan vrea să determine salariile relative a trei colegi de muncă știind două lucruri. Mai întâi, el știe
că dacă Fănică nu este cel mai bine plătit dintre cei trei, atunci Ioana este. Apoi, el știe că dacă Ioana nu este
cu salariul cel mai mic, atunci Maria este plătită cel mai bine. Este posibil să se determine salariile relative ale
lui Fănică, Ioana și Maria din ceea ce știe Ștefan? Dacă da, cine este plătit cel mai bine și cine este plătit cel
mai puțin bine? Explicați raționamentul.
Problema nr. 11
Trei profesori stau într-un restaurant. Ospătarul vine și îi întreabă: „Dorește toată lumea cafea?” Primul
profesor spune: „Nu știu” Al doilea profesor spune: „Nu știu” În final, al treilea profesor spune: „Nu, Nu toată
lumea vrea cafea”. Ospătarul se întoarce și dă profesorilor care doresc cafeaua. Cum și-a dat seama ospătarul
cine vrea cafea și cine nu?