안녕하세요 @tmkor 입니다. 오늘은 필요충분조건에 대하여 알아보려 합니다.
- 대상영역 U에 대한 두 명제함수 p와 q가 있을 때, implication (조건문) p(x) -> q(x) 역시 명제함수로 바라볼 수 있다.
∀ x in U : p(x) -> q(x)이 경우 화살표를 두줄로 그린다.p(x) ⇒ q(x)- 의미적으로 풀어보면, 모든 x에 대해서 p(x)가 true일 때 q(x)는 true이다.
- 이때 p를 q이기 위한 충분조건이다. q를 p이기 위한 필요조건이라고 한다. (q가 True일 때 p는 True여도, False여도 상관없다. p->q != q->p)
p⇒q이고q⇒p이면p⇔q로 나타낸다. 이 경우 p와 q는 서로 필요충분조건(if and only if)이라고 말한다. 이 경우 p와 q의 진리여부는 같다.- ≡ 는 항등적으로 동일한
값을 가질때 사용한다.f(x) ≡ g(x)는 "대상 영역의 모든 x에 대하여 f(x)=g(x)가 성립한다"를 의미한다.
from functools import reduce
def p(n):
return n*n % 2 == 1
def q(n):
return n % 2 == 1
def oddImplication(n):
Cpq = {True:q(n), False:True}[p(n)]
return Cpq
def oddReverseImplication(n):
Cqp = {True:p(n), False:True}[q(n)]
return Cqp
def universal(predicate, domain):
return reduce(lambda x,y:predicate(x)&predicate(y), domain)
tv1 = universal(oddImplication, range(1,100))
tv2 = universal(oddReverseImplication, range(1,100))
print("p(n) => q(n) : %s" % tv1)
print("q(n) => p(n) : %s" % tv2)
if tv1 & tv2:
print("필요충분조건")
결과
필요충분조건