DLV 시스템의 집계 함수 설계와 구현
초록
본 논문은 전통적인 이산 논리 프로그래밍(DLP)의 표현 한계를 보완하기 위해 집계 함수(합계, 개수, 곱 등)를 도입한 DLP^A 언어를 정의하고, 이를 DLV 시스템에 구현한다. 집계는 계층화(stratified) 조건을 만족하도록 설계해 의미론적 모호성을 제거했으며, 복잡도 분석 결과 기존 DLP와 동일한 Σ₂^P 수준을 유지한다. 실험을 통해 집계 도입이 모델링 편의성을 높이고, 경우에 따라 계산 효율성도 향상됨을 확인하였다.
상세 분석
이 논문은 DLP가 Σ₂^P(=NP^NP) 복잡도 클래스를 완전하게 포괄하지만, 실제 응용에서 빈번히 요구되는 산술적 집계 연산을 자연스럽게 표현하지 못한다는 문제점을 지적한다. 저자들은 이러한 결함을 보완하기 위해 DLP^A라는 확장 언어를 제안한다. 핵심 설계 원칙은 ‘계층화된 집계(stratified aggregates)’이다. 즉, 집계 연산이 포함된 규칙은 순환 의존성을 만들지 않도록 계층 구조를 유지하도록 제한한다. 이를 통해 의미론적 모호성을 최소화하고, 기존 DLP의 모델 이론을 그대로 확장할 수 있다.
형식적 의미론은 두 단계로 정의된다. 첫째, 집계가 적용되는 원자 집합을 ‘집계 원자(aggregate atom)’라 정의하고, 이를 만족시키는 다중집합(multiset)과 조건식을 명시한다. 둘째, 프로그램 전체에 대해 최소 모델(minimal model) 개념을 적용하되, 집계 원자는 해당 다중집합이 조건을 만족할 때만 참으로 간주한다. 이러한 정의는 기존 DLP의 안정 모델(stable model) 개념과 호환되며, 기존 이론적 결과를 그대로 이어받는다.
복잡도 측면에서 저자들은 DLP^A의 결합 문제와 모델 검증 문제를 각각 Σ₂^P와 Π₂^P에 귀속시킨다. 이는 집계가 추가되었음에도 불구하고 기존 DLP와 동일한 복잡도 경계를 유지한다는 의미다. 따라서 실용적인 관점에서 집계 도입이 이론적 비용을 증가시키지 않음을 보장한다.
구현 부분에서는 DLV 시스템에 새로운 파서와 전처리 모듈을 삽입해 집계 구문을 해석하고, 기존의 grounding 및 solving 단계와 통합한다. 특히, 집계 연산을 효율적으로 수행하기 위해 ‘집계 전처리(aggregate preprocessing)’ 단계에서 다중집합을 미리 정렬하고, 불필요한 후보를 제거하는 최적화 기법을 적용한다. 실험에서는 전통적인 DLP 인코딩과 비교해 동일한 문제를 더 짧은 코드로 표현할 수 있었으며, 일부 사례에서는 grounding 크기와 해결 시간 모두 현저히 감소하였다.
결론적으로, 이 연구는 DLP에 집계 함수를 보수적으로 확장함으로써 표현력과 실용성을 동시에 향상시켰으며, 복잡도와 구현 효율성 측면에서도 기존 시스템과의 호환성을 유지한다는 중요한 교훈을 제공한다.
댓글 및 학술 토론
Loading comments...
의견 남기기