1294.30 Fallback 노드의 논리적 의미 (OR 연산)

1294.30 Fallback 노드의 논리적 의미 (OR 연산)

1. 이진 논리에서의 OR 연산

Fallback 노드의 논리적 의미는 논리합(OR, 논리적 선언)에 대응한다. 이진 논리(Boolean logic)에서 OR 연산은 피연산자 중 하나 이상이 참(true)이면 결과가 참이 되며, 모든 피연산자가 거짓(false)일 때만 결과가 거짓이 된다(Colledanchise & Ogren, 2018).

p \lor q = \begin{cases} \text{true} & \text{if } p = \text{true or } q = \text{true} \\ \text{false} & \text{if } p = \text{false and } q = \text{false} \end{cases}

Fallback 노드에서 SUCCESS를 true로, FAILURE를 false로 대응시키면:

자식 1자식 2Fallback 결과OR 결과
SUCCESS(미평가)SUCCESStrue
FAILURESUCCESSSUCCESStrue
FAILUREFAILUREFAILUREfalse

첫 번째 자식이 SUCCESS를 반환하면 두 번째 자식은 평가되지 않으며, 이는 OR 연산의 단락 평가(short-circuit evaluation)와 동일하다.

3치 논리로의 확장

RUNNING 상태의 도입

행동 트리는 SUCCESS, FAILURE, RUNNING의 3치 논리(ternary logic)를 사용한다. 이진 논리의 OR 연산을 3치 논리로 확장하면, RUNNING 상태에 대한 처리 규칙이 추가로 필요하다.

Fallback 노드에서 자식 c_i가 RUNNING을 반환하면, 해당 자식의 작업이 아직 완료되지 않았으므로 최종 결과를 결정할 수 없다. 따라서 Fallback도 RUNNING을 반환하며, 후속 자식의 평가를 보류한다.

3치 OR 진리표

두 자식을 가진 Fallback의 3치 진리표는 다음과 같다:

자식 1자식 2Fallback 결과
SUCCESS(미평가)SUCCESS
FAILURESUCCESSSUCCESS
FAILUREFAILUREFAILURE
FAILURERUNNINGRUNNING
RUNNING(미평가)RUNNING

이 진리표에서 핵심적인 규칙은:

  1. SUCCESS가 발생하면 즉시 SUCCESS를 반환한다 (OR의 단락 평가).
  2. RUNNING이 발생하면 즉시 RUNNING을 반환한다 (결과 미결정).
  3. 모든 자식이 FAILURE인 경우에만 FAILURE를 반환한다.

N개 자식으로의 일반화

N개의 자식 c_1, c_2, ..., c_N을 가진 Fallback의 3치 OR 연산은 다음과 같이 정의된다:

\text{Fallback}(c_1, ..., c_N) = c_1 \lor_3 c_2 \lor_3 ... \lor_3 c_N

여기서 \lor_3는 3치 OR 연산자이며, 왼쪽에서 오른쪽으로 순차적으로 평가된다. 평가 중 SUCCESS 또는 RUNNING이 발견되면 즉시 해당 값을 반환한다.

Sequence AND 연산과의 대칭성

Fallback의 OR 의미론과 Sequence의 AND 의미론은 드모르간 법칙(De Morgan’s law)에 의해 연결된다.

이진 논리에서의 드모르간 법칙

\neg(p \land q) = \neg p \lor \neg q
\neg(p \lor q) = \neg p \land \neg q

행동 트리에서의 대응

Sequence의 FAILURE 조건(하나의 자식이 FAILURE)은 Fallback의 SUCCESS 조건(하나의 자식이 SUCCESS)의 논리적 쌍대(dual)이다.

속성Sequence (AND)Fallback (OR)
성공 조건모든 자식 SUCCESS하나의 자식 SUCCESS
실패 조건하나의 자식 FAILURE모든 자식 FAILURE
조기 종료FAILURE에서 종료SUCCESS에서 종료
계속 진행SUCCESS이면 다음 자식FAILURE이면 다음 자식
항등원SUCCESSFAILURE

이 대칭성에서 “항등원“이란, Sequence에서 SUCCESS를 반환하는 자식은 전체 결과에 영향을 주지 않고(AND에서 true), Fallback에서 FAILURE를 반환하는 자식은 전체 결과에 영향을 주지 않는다(OR에서 false)는 의미이다.

OR 의미론의 로봇 공학적 해석

대안 탐색으로서의 OR

로봇 공학에서 Fallback의 OR 의미론은 “여러 방법 중 하나라도 성공하면 목표가 달성된다“로 해석된다.

<Fallback>
    <Action ID="OpenDoorWithKey"/>      <!-- 방법 1: 열쇠로 열기 -->
    <Action ID="OpenDoorWithCard"/>     <!-- 방법 2: 카드로 열기 -->
    <Action ID="OpenDoorWithForce"/>    <!-- 방법 3: 강제 개방 -->
</Fallback>

이 구조는 “\text{OpenDoorWithKey} \lor \text{OpenDoorWithCard} \lor \text{OpenDoorWithForce}“로 표현되며, 세 가지 방법 중 하나라도 성공하면 문 열기 목표가 달성된다.

우선순위 기반 선택

Fallback의 왼쪽에서 오른쪽 평가 순서는 자연스럽게 우선순위를 표현한다. 가장 왼쪽 자식이 가장 높은 우선순위를 가지며, 이전 자식이 모두 실패한 경우에만 다음 자식이 시도된다. 이는 OR 연산의 단락 평가 특성에 의해 보장된다.

복구 전략으로서의 OR

장애 발생 시 복구 전략의 순차적 시도는 OR 의미론의 전형적 응용이다.

<Fallback>
    <Condition ID="IsOperatingNormally"/>   <!-- 정상 상태 확인 -->
    <Action ID="AttemptSoftReset"/>          <!-- 복구 1: 소프트 리셋 -->
    <Action ID="AttemptHardReset"/>          <!-- 복구 2: 하드 리셋 -->
    <Action ID="EnterSafeMode"/>             <!-- 복구 3: 안전 모드 -->
</Fallback>

정상 상태이면 SUCCESS가 반환되어 복구 동작이 불필요하다. 정상이 아니면 소프트 리셋을 시도하고, 실패 시 하드 리셋, 최종적으로 안전 모드 진입을 시도한다.

조건-행동 패턴에서의 OR 의미론

Fallback에 조건 노드와 액션 노드를 조합하면, “조건이 이미 충족되어 있으면 행동할 필요가 없다“는 패턴을 표현할 수 있다.

<Fallback>
    <Condition ID="IsAtGoal"/>        <!-- 이미 목표 지점에 있는가? -->
    <Action ID="NavigateToGoal"/>     <!-- 아니라면 이동하라 -->
</Fallback>

이 구조의 OR 해석: “\text{IsAtGoal} \lor \text{NavigateToGoal}” — 이미 목표에 있거나(SUCCESS), 목표로 이동하여 성공하면(SUCCESS), 전체가 SUCCESS이다. 이 패턴은 행동 트리에서 매우 빈번하게 사용되는 기본 구성 요소이다.


참고 문헌

  • Colledanchise, M., & Ogren, P. (2018). Behavior Trees in Robotics and AI: An Introduction. CRC Press.
  • Faconti, D. (2022). BehaviorTree.CPP documentation and API reference. https://www.behaviortree.dev/