XOR 게이트는 단순한 1층 퍼셉트론으로는 구현할 수 없습니다.
반면 AND, NAND, OR 게이트는 직선으로만 구분할 수 있습니다.
반면 XOR 게이트는 직선으로 표현할 수 없습니다.
이해가 되시나요?
따라서 XOR은 '비선형'으로만 표현할 수 있습니다.
방법은 간단합니다.
AND, OR, NAND를 조합하면 됩니다.
따라서 XOR = AND(OR, NAND)과 같습니다.
간단하죠?
코드는 아래와 같습니다.
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y
for i in [0, 1]:
for j in [0, 1]:
print(f'{i, j}', end=' ')
print()
print('XOR : ', end = '')
for i in [0, 1]:
for j in [0, 1]:
print(XOR(i, j), end = ' ')
(0, 0) (0, 1) (1, 0) (1, 1)
XOR : 0 1 1 0
참고로 모든 컴퓨터는 NAND로 구현할 수 있습니다.
그냥 잡지식이니까 넘어가주세요..
아무튼 그렇습니다.