맨위로가기

논리합

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

논리합은 두 명제 중 적어도 하나가 참일 때 참이 되는 논리 연산으로, 기호 '∨'로 표기하며, 'OR'이라고도 한다. 논리합은 논리학, 컴퓨터 과학, 집합론, 자연어 처리 등 다양한 분야에서 활용되며, 참 또는 거짓의 진리값을 갖는 두 명제 P, Q에 대해 P ∨ Q는 P와 Q 중 적어도 하나가 참일 때 참이 된다. 프로그래밍 언어에서는 `|`, `||`, `or` 등으로 표현되며, 비트 연산, 조건문 등에 사용된다. 집합론에서는 합집합과 관련되며, 자연어에서는 '또는'으로 표현되지만, 문맥에 따라 배타적 논리합으로 해석될 수 있다.

2. 정의 및 표기법

논리합은 두 명제 중 적어도 하나가 참일 때 참이 되는 논리 연산이다. 일상생활에서 사용하는 "또는"이라는 단어의 의미와 유사하다. 예를 들어, "내 키는 160cm 이상이다."와 "내 몸무게는 50kg 이상이다."라는 두 명제가 있을 때, 이 두 명제의 논리합은 "내 키는 160cm 이상이거나 내 몸무게는 50kg 이상이다."가 된다.

논리합은 '∨' 기호로 표기한다. 예를 들어, 명제 P와 Q의 논리합은 P ∨ Q와 같이 나타낸다.[1] 이 외에도 전자공학에서는 '+' 기호를 사용하기도 하며, 여러 프로그래밍 언어에서는 `|` 또는 `||`를 사용하기도 한다. 얀 우카시에비치폴란드 표기법에서는 "alternatywa"(대안)의 약자인 'A'를 사용하기도 한다.[4]

여러 요소의 논리합은 \bigvee (유니코드 ) 기호를 사용하여 나타낼 수 있다.[5] 예를 들어, a1, a2, ..., an의 논리합은 다음과 같이 표현한다.

:

\bigvee_{i=1}^{n} a_i = a_1 \lor a_2 \lor \ldots a_{n-1} \lor a_{n}



영어에서는 "or"를 사용하며, 때로는 "and/or" 구문을 사용하여 두 명제가 모두 참인 경우를 명확히 하기도 한다.

2. 1. 진리표

명제 P명제 QPQ
거짓
거짓
거짓거짓거짓

[1]

2. 2. 다른 연산자와의 관계

''P'' ∨ ''Q''는 부정논리곱을 사용하여 ¬(¬''P'' ∧ ¬''Q'')로 나타낼 수 있다. 따라서, 논리합은 부정과 논리곱으로 표현할 수 있다.[6]

: ''P'' ∨ ''Q'' = ¬(¬''P'' ∧ ¬''Q'')

반대로, 논리곱은 논리합과 부정으로 나타낼 수 있다.

: ''P'' ∧ ''Q'' = ¬(¬''P'' ∨ ¬''Q'')

이 두 가지를 드 모르간의 법칙이라고 한다.

고전 논리 체계에서 논리합이 기본 연산자가 아닌 경우, 논리곱(∧)과 논리 부정(¬)을 사용하여 다음과 같이 정의할 수 있다.[6]

: A ∨ B = ¬(¬A ∧ ¬B)

또는 함축(→)과 ¬을 사용하여 정의할 수도 있다.[6]

: A ∨ B = (¬A) → B

또한 → 만을 사용하여 정의할 수도 있다.

: A ∨ B = (A → B) → B

3. 성질


  • 결합 법칙[7]
  • 교환 법칙
  • 분배 법칙
  • * (a \land (b \lor c)) \equiv ((a \land b) \lor (a \land c))
  • * (a \lor (b \land c)) \equiv ((a \lor b) \land (a \lor c))
  • 멱등성
  • 단조성
  • '''진리 보존''': 모든 변수에 '참'의 진리값을 할당하는 해석은 논리합의 결과로 '참'의 진리값을 생성한다.
  • '''거짓 보존''': 모든 변수에 '거짓'의 진리값을 할당하는 해석은 논리합의 결과로 '거짓'의 진리값을 생성한다.

3. 1. 결합 법칙

결합 법칙[7]: (P ∨ Q) ∨ R ≡ P ∨ (Q ∨ R)

3. 2. 교환 법칙

교환 법칙: a \lor b \equiv b \lor a[7]

3. 3. 분배 법칙

P \land (Q \lor R) \equiv (P \land Q) \lor (P \land R)[7]

P \lor (Q \land R) \equiv (P \lor Q) \land (P \lor R)[7]

3. 4. 멱등 법칙

멱등 법칙: a \lor a \equiv a [7]

3. 5. 단조성

논리합은 다음과 같은 성질을 가진다.

  • 결합 법칙: a \lor (b \lor c) \equiv (a \lor b) \lor c [7]
  • 교환 법칙: a \lor b \equiv b \lor a
  • 멱등성: a \lor a \equiv a
  • 단조성: (a \rightarrow b) \rightarrow ((c \lor a) \rightarrow (c \lor b))

:(a \rightarrow b) \rightarrow ((a \lor c) \rightarrow (b \lor c))

4. 다양한 분야에서의 응용

프로그래밍 언어에서 논리합은 대부분 연산자로 표현되며,[8][9] 비트 연산에 자주 활용된다. 예를 들면 다음과 같다.


  • 0 또는 0 = 0
  • 0 또는 1 = 1
  • 1 또는 0 = 1
  • 1 또는 1 = 1
  • 1010 또는 1100 = 1110


`or` 연산자는 비트 필드에서 특정 비트를 1로 설정할 때 유용하다. 예를 들어 `x = x | 0b00000001`은 x의 마지막 비트를 1로 설정하고 나머지 비트는 그대로 유지한다.

C 계열 언어에서는 비트 단위 논리합 연산자로 단일 파이프(|)를, 논리합 연산자로 이중 파이프(||)를 사용한다. 논리합 연산은 단락 회로 평가를 따르므로, 첫 번째 피연산자가 `true`이면 두 번째 피연산자는 평가하지 않는다. 병렬 언어에서는 양쪽 피연산자를 병렬로 평가하여 하나라도 `true`이면 다른 쪽 평가를 중단하는 '병렬 or' 연산이 가능하다.

집합론에서 합집합원소 소속 여부는 논리합으로 정의된다. 즉, x ∈ A ∪ B는 (x ∈ A) ∨ (x ∈ B)와 같다.[11]

자연어에서 '또는'은 배타적 논리합으로 해석될 수 있어 주의해야 한다.[1] 예를 들어 "커피 또는 홍차가 제공됩니다"는 보통 둘 중 하나만 제공됨을 의미한다.

4. 1. 컴퓨터 과학

대부분의 프로그래밍 언어에 논리합에 해당하는 연산자가 존재한다.[8][9] 논리합은 종종 비트 연산에 사용된다. 예시는 다음과 같다.

  • 0 또는 0 = 0
  • 0 또는 1 = 1
  • 1 또는 0 = 1
  • 1 또는 1 = 1
  • 1010 또는 1100 = 1110


`or` 연산자는 비트 필드의 비트를 1로 설정하는 데 사용될 수 있다. 비트를 1로 설정해야 하는 관련 비트가 있는 상수 필드와 `or` 연산을 수행하면 된다. 예를 들어, `x = x | 0b00000001`은 마지막 비트를 1로 만들고 다른 비트는 변경하지 않는다.

많은 언어는 비트 단위 논리합과 논리합을 구별하기 위해 두 개의 별개의 연산자를 제공한다. C를 따르는 언어에서, 비트 단위 논리합은 단일 파이프 연산자(|)로 수행되며, 논리합은 이중 파이프(||) 연산자로 수행된다.

논리합은 일반적으로 단락 회로 평가된다. 즉, 첫 번째(왼쪽) 피연산자가 `true`로 평가되면, 두 번째(오른쪽) 피연산자는 평가되지 않는다. 따라서 논리합 연산자는 일반적으로 시퀀스 포인트를 구성한다.

병렬(동시) 언어에서는 양쪽을 단락 회로 평가하는 것이 가능하다. 즉, 양쪽을 병렬로 평가하고, 하나가 true 값을 반환하면 다른 쪽이 중단된다. 따라서 이 연산자는 ''병렬 or''이라고 불린다.

논리합 표현식의 유형은 대부분의 언어에서 부울(Boolean)이며(따라서 `true` 또는 `false` 값만 가질 수 있음), 일부 언어(예: 파이썬 및 자바스크립트)에서는 논리합 연산자가 피연산자 중 하나를 반환한다. 즉, 첫 번째 피연산자가 참 값으로 평가되면 첫 번째 피연산자를 반환하고, 그렇지 않으면 두 번째 피연산자를 반환한다. 이를 통해 엘비스 연산자의 역할을 수행할 수 있다.

C 언어 등에서는 단순한 논리합은 `||`, 비트 단위 논리합은 `|`로 표기하며, `z = x | y;`와 같이 사용된다. (주: `2|4`의 값은 `6`이지만, `2||4`의 값은 `1`이다.)

Perl에서도 단순한 논리합은 `||`, 비트 단위 논리합은 `|`로 표기하며, `$z = $x | $y;`와 같이 사용된다. (주: `2|4`의 값은 `6`이지만, `2||4`의 값은 C 언어의 경우와는 달리 `2`이다.)

VBScript에서는 " `Or` "로 표기하며, `z = x Or y`와 같이 사용된다.

각 프로그래밍 언어에서의 논리합 표기와 의미는 단락 회로 평가와 밀접한 관련이 있다.

OR 논리 게이트

4. 2. 집합론

집합론에서 합집합 원소의 소속은 논리적 논리합의 관점에서 정의된다. x ∈ A ∪ B는 (x ∈ A) ∨ (x ∈ B)와 같다.[11] 이 때문에 논리적 논리합은 결합 법칙, 교환 법칙, 분배 법칙, 드 모르간의 법칙과 같은 집합론적 합집합과 동일한 항등식을 많이 만족하며, 논리곱을 집합의 교집합과, 논리 부정을 여집합과 동일시한다.[11]

4. 3. 자연어 처리

자연어에서 '또는'은 배타적 논리합으로 해석될 수 있으므로, 문맥에 따라 주의해야 한다.[1] 예를 들어, "커피 또는 홍차가 제공됩니다"라는 문장은 보통 커피와 홍차 중 하나만 제공된다는 의미로 해석되며, 둘 다 제공되는 경우는 포함하지 않는다.

영어에서는 'and/or'라는 구문을 사용하여 둘 다 참인 경우를 명시적으로 포함하기도 한다. 일상 대화에서 "또는"은 배타적 논리합을 의미하는 경우가 있지만, 통상적인 논리합은 "포괄적 논리합"(inclusive OR영어)이라고 부른다.[1]

5. 기타

폴란드 표기법에서 논리합 연산자는 'A'로 표기된다.[4] 유니코드에서 논리합 기호(∨)는 U+2228이다.[1]

참조

[1] 간행물 Disjunction https://plato.stanfo[...] Metaphysics Research Lab, Stanford University 2016
[2] 웹사이트 Disjunction {{!}} logic https://www.britanni[...] 2020-09-03
[3] 서적 Logic: the basics Routledge 2010
[4] 문서 A Précis of Mathematical Logic D. Reidel 1959
[5] 웹사이트 OR https://mathworld.wo[...] 2024-09-24
[6] 서적 Introduction to Mathematical Logic https://www.worldsci[...] WORLD SCIENTIFIC 2016
[7] 서적 Logic with trees: an introduction to symbolic logic Routledge 1997
[8] 웹사이트 Python 3.12.1 Documentation - The Python Language Reference - 6.11 Boolean operations https://docs.python.[...] 2023-12-25
[9] 웹사이트 JavaScript References - Expressions & Operators - Logical AND (&&) https://developer.mo[...] 2023-12-25
[10] 학술지 Context-Free Language Theory Formalization
[11] 서적 Einführung in die Mengenlehre Springer 2021
[12] 서적 論理学史 岩波書店
[13] 서적 論理学概論 岩波書店



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com