1316.32 번역 단계와 SAS+ 표현

1. SAS+ 표현의 정의

SAS+(State-variable representation with Axioms and Sequencing)는 Bäckström과 Nebel(1995)이 제안한 플래닝 형식으로, PDDL의 이진 명제 기반 표현을 유한 도메인 다치 변수(multi-valued variable) 기반으로 변환한 것이다. Fast Downward의 번역기(translator)가 이 변환을 수행한다(Helmert, 2009).

2. PDDL에서 SAS+로의 번역 과정

2.1 불변량 분석(Invariant Analysis)

번역의 첫 단계는 PDDL 도메인에서 상태 불변량(state invariant)을 식별하는 것이다. 불변량은 모든 도달 가능 상태에서 유지되는 제약이다:

상호 배타적 불변량: 특정 시점에 정확히 하나만 참인 명제 그룹

{(robot_at r1 wp1), (robot_at r1 wp2), (robot_at r1 wp3)}
→ 정확히 하나만 참 (로봇은 한 위치에만 있음)

정확히 하나 불변량(exactly-one invariant): n개의 명제 중 정확히 하나가 참
최대 하나 불변량(at-most-one invariant): n개의 명제 중 최대 하나가 참 (전부 거짓 가능)

2.2 다치 변수 생성

불변량 분석 결과를 기반으로, 상호 배타적 명제 그룹을 하나의 다치 변수로 합친다:

PDDL 명제:
  (robot_at r1 wp1), (robot_at r1 wp2), (robot_at r1 wp3)

SAS+ 변수:
  V_robot_at_r1 ∈ {wp1, wp2, wp3}

PDDL 명제:
  (holding r1 box1), (gripper_free r1)

SAS+ 변수:
  V_gripper_r1 ∈ {holding_box1, free}

최대 하나 불변량의 경우, “none” 값이 추가되어 모든 명제가 거짓인 상태를 표현한다.

2.3 SAS+ 연산자 생성

PDDL 액션이 SAS+ 연산자로 변환된다:

PDDL 액션:
  move(r1, wp1, wp2)
  pre: (robot_at r1 wp1), (connected wp1 wp2)
  eff: (not (robot_at r1 wp1)), (robot_at r1 wp2)

SAS+ 연산자:
  move(r1, wp1, wp2)
  pre: V_robot_at_r1 = wp1, V_connected_wp1_wp2 = true
  eff: V_robot_at_r1 := wp2

3. SAS+ 표현의 이점

3.1 상태 표현의 간결성

n개의 이진 명제 대신 더 적은 수의 다치 변수로 상태를 표현한다. 이에 따라:

표현변수 수상태 비교 비용
PDDL (이진)n 명제O(n)
SAS+ (다치)m 변수 (m \ll n)O(m)

3.2 휴리스틱의 효율적 계산

다치 변수 기반 표현에서 인과 그래프, 도메인 전이 그래프 등의 분석이 자연스럽게 수행되어, 추상화 휴리스틱의 설계가 용이해진다.

3.3 효과의 명시적 표현

SAS+ 연산자에서 효과는 “변수의 값을 v_1에서 v_2로 변경“하는 형태이다. 이진 표현에서의 “추가+삭제” 대신 단일 값 할당으로 표현되어, 전이 구조 분석이 용이하다.

4. 인과 그래프(Causal Graph)

SAS+ 표현에서 변수 간의 인과적 의존 관계를 방향 그래프로 표현한다:

(v_i, v_j) \in CG \iff \exists \text{op}: v_i \in \text{pre}(\text{op}) \wedge v_j \in \text{eff}(\text{op}) \wedge v_i \neq v_j

인과 그래프는 Fast Downward의 인과 그래프 휴리스틱(h^{\text{CG}})과 합병-축소 휴리스틱의 기반이 된다.

5. 도메인 전이 그래프(Domain Transition Graph, DTG)

각 SAS+ 변수에 대해, 해당 변수의 값 간 전이를 그래프로 표현한다:

DTG(v_i) = (D_i, E_i) \quad \text{where } (d_1, d_2) \in E_i \iff \exists \text{op}: v_i = d_1 \in \text{pre} \wedge v_i := d_2 \in \text{eff}

DTG는 변수의 값 변경 경로를 분석하여 휴리스틱을 계산하는 데 활용된다.

6. 로봇 도메인에서의 SAS+ 변환 예시

PDDL 도메인:
  술어: robot_at(?r, ?w), object_at(?o, ?w), holding(?r, ?o), gripper_free(?r)
  객체: robot1, wp1, wp2, wp3, box1

SAS+ 변수:
  V_robot_at_robot1 ∈ {wp1, wp2, wp3}
  V_object_at_box1 ∈ {wp1, wp2, wp3, none}
  V_gripper_robot1 ∈ {free, holding_box1}

7. 참고 문헌

  • Bäckström, C. & Nebel, B. (1995). “Complexity Results for SAS+ Planning.” Computational Intelligence, 11(4), 625–655.
  • Helmert, M. (2009). “Concise Finite-Domain Representations for PDDL Planning Tasks.” Artificial Intelligence, 173(5–6), 503–535.
  • Helmert, M. (2006). “The Fast Downward Planning System.” Journal of Artificial Intelligence Research, 26, 191–246.