확장성 제약과 코드 복잡도 증가 (Scalability Constraints and Code Complexity Growth)
1. 개요
하드코딩 기반 행동 제어 시스템의 확장성 제약은 시스템의 규모가 커질수록 코드 복잡도가 비선형적으로 증가하여, 일정 규모 이상에서는 관리가 실질적으로 불가능해지는 현상을 말한다. 이는 소프트웨어 공학에서의 복잡도 관리 문제와 직접적으로 연결된다.
2. 복잡도 증가의 메커니즘
2.1 순환적 복잡도 (Cyclomatic Complexity)
McCabe의 순환적 복잡도 V(G)는 프로그램의 의사 결정 복잡도를 측정한다.
V(G) = E - N + 2P
여기서 E는 간선 수, N은 노드 수, P는 연결 구성 요소 수이다. 조건-행동 규칙이 추가될 때마다 V(G)가 증가하며, V(G) > 10이면 유지 보수가 어려운 것으로 간주된다.
규모별 복잡도 증가
| 규모 | 조건 수 | 행동 수 | 순환적 복잡도 | 관리 가능성 |
|---|---|---|---|---|
| 소규모 | 5~10 | 3~5 | < 10 | 양호 |
| 중규모 | 10~30 | 5~15 | 10~50 | 어려움 |
| 대규모 | 30+ | 15+ | 50+ | 관리 불가 |
확장성 제약의 발현
수직적 확장 제약
기존 행동의 깊이(조건의 중첩)를 증가시키면, 중첩된 조건문의 복잡도가 기하급수적으로 증가한다.
수평적 확장 제약
새로운 행동 유형을 추가하면, 기존 모든 조건과의 상호 작용을 재검토하여야 한다.
교차 제약
복수의 독립적 임무가 동일 로봇에서 동시에 실행되면, 임무 간 상호 작용(자원 충돌, 우선순위)까지 규칙으로 관리하여야 한다.
행동 트리에 의한 부분적 완화
행동 트리는 계층적 구조와 서브트리 재사용을 통해 하드코딩의 복잡도를 부분적으로 완화한다.
| 문제 | FSM | 행동 트리 | 자율 계획 |
|---|---|---|---|
| 상태 폭발 | 심각 | 서브트리로 완화 | 자동 탐색 |
| 전이 관리 | 어려움 | 구조적 관리 | 불필요 |
| 재사용성 | 낮음 | 서브트리 재사용 | 도메인 재사용 |
| 확장성 한계 | ~20 상태 | ~100 노드 | 수천 상태 |
그러나 행동 트리도 궁극적으로는 사전 설계 방식이므로, 대규모 다변 임무에서는 자율 계획이 필요하다.
자율 계획의 확장성
자율 계획에서는 개발자가 정의하는 요소의 수가 행동과 객체 타입의 수에 비례한다.
- 행동 정의: O(m) (m: 행동 수)
- 객체 정의: O(o) (o: 객체 수)
- 계획 생성: 계획기가 O(m^k) 탐색을 자동 수행
개발자의 코드 복잡도는 선형이나, 계획기의 계산 복잡도가 지수적이다. 이 트레이드오프는 효율적인 계획 알고리즘(휴리스틱 탐색 등)으로 완화된다.
참고 문헌
- McCabe, T. (1976). “A Complexity Measure.” IEEE Transactions on Software Engineering, SE-2(4), 308-320.
- Ghallab, M., Nau, D., & Traverso, P. (2016). Automated Planning and Acting. Cambridge University Press.
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v0.1 | 2026-04-05 | 초안 작성 |