1315.32 파생 술어의 계층적 정의
1. 계층적 정의의 개념
파생 술어의 계층적 정의(hierarchical definition)는 하위 수준의 파생 술어를 상위 수준의 파생 술어가 참조하는 다층 구조이다. 이를 통해 복잡한 조건을 점진적으로 추상화하여 구성할 수 있으며, 도메인의 가독성과 유지 보수성이 향상된다.
2. 계층 구조의 예시
;; 계층 1 (최하위): 기본 조건 파생
(:derived (sensor_ok ?r - robot)
(and (sensor_active ?r) (sensor_calibrated ?r)))
(:derived (power_ok ?r - robot)
(>= (battery_level ?r) 15))
(:derived (mechanical_ok ?r - robot)
(and (not (motor_fault ?r)) (not (joint_fault ?r))))
;; 계층 2 (중간): 복합 상태 파생
(:derived (robot_healthy ?r - robot)
(and (sensor_ok ?r) (power_ok ?r) (mechanical_ok ?r)))
(:derived (environment_safe ?loc - waypoint)
(and (not (hazard_at ?loc)) (not (human_detected ?loc))
(weather_acceptable ?loc)))
;; 계층 3 (최상위): 행동 가능성 파생
(:derived (ready_for_mission ?r - robot ?loc - waypoint)
(and (robot_healthy ?r) (robot_at ?r ?loc) (environment_safe ?loc)))
이 계층에서:
- 계층 1은 기반 술어를 직접 참조하여 단순 조건을 파생한다.
- 계층 2는 계층 1의 파생 술어를 참조하여 복합 조건을 파생한다.
- 계층 3은 계층 2의 파생 술어를 참조하여 최종적인 행동 가능성 조건을 파생한다.
3. 계층적 정의의 이점
-
단계적 추상화: 각 계층이 하위 계층의 세부사항을 추상화하여, 상위 계층의 정의가 간결해진다.
-
재사용성: 하위 계층의 파생 술어를 여러 상위 계층에서 재사용할 수 있다:
;; robot_healthy를 여러 상위 파생 술어에서 재사용
(:derived (ready_for_mission ?r - robot ?loc - waypoint)
(and (robot_healthy ?r) (robot_at ?r ?loc) (environment_safe ?loc)))
(:derived (ready_for_charging ?r - robot ?station - charging_station)
(and (robot_healthy ?r) (robot_at ?r ?station) (station_available ?station)))
- 디버깅 용이성: 문제 발생 시 계층별로 파생 술어의 값을 확인하여 오류 원인을 좁힐 수 있다.
4. 계층 간 의존 관계
파생 술어 간의 의존 관계는 비순환 유향 그래프(DAG)를 형성해야 한다. 순환 의존(상호 참조)은 재귀적 정의의 특수 형태로서, 동일 파생 술어의 자기 참조만 허용된다:
허용: A → B → C (선형 계층)
허용: A → A (자기 재귀)
허용: A → B, A → C, B → D, C → D (다중 경로)
금지: A → B → A (상호 의존을 통한 순환, 재귀가 아닌 경우)
5. 로봇 도메인의 계층적 파생 술어 종합 예시
;; === 계층 1: 하드웨어 상태 ===
(:derived (drivetrain_ok ?r - robot)
(and (not (wheel_fault ?r)) (not (motor_overheated ?r))))
(:derived (sensors_ok ?r - robot)
(forall (?s - sensor)
(imply (equipped ?r ?s) (sensor_functional ?s))))
;; === 계층 2: 시스템 상태 ===
(:derived (robot_operational ?r - robot)
(and (drivetrain_ok ?r) (sensors_ok ?r) (power_ok ?r)
(not (emergency_stopped ?r))))
;; === 계층 3: 환경 상태 ===
(:derived (zone_traversable ?z - zone)
(and (not (zone_flooded ?z)) (not (zone_blocked ?z))
(zone_mapped ?z)))
;; === 계층 4: 임무 수행 가능성 ===
(:derived (mission_executable ?r - robot ?m - mission ?z - zone)
(and (robot_operational ?r)
(zone_traversable ?z)
(has_required_equipment ?r ?m)
(mission_authorized ?m)))
6. 계층 깊이의 관리
계층 깊이가 깊어지면 추론 비용이 증가하고 디버깅이 어려워진다. 실용적으로 3~4 수준의 계층이 적절하며, 이를 초과하면 도메인 모델의 재설계를 고려해야 한다.
7. 참고 문헌
- Thiébaux, S., Hoffmann, J., & Nebel, B. (2005). “In Defense of PDDL Axioms.” Artificial Intelligence, 168(1–2), 38–69.
- Helmert, M. (2009). “Concise Finite-Domain Representations for PDDL Planning Tasks.” Artificial Intelligence, 173(5–6), 503–535.
- Haslum, P., Lipovetzky, N., Magazzeni, D., & Muise, C. (2019). An Introduction to the Planning Domain Definition Language. Morgan & Claypool Publishers.