피드로 돌아가기
Dev.toFrontend
원문 읽기
DNF의 지수적 확장 문제를 해결한 Tree-based AST 필터 설계
Query Filters, UI Design and the CNF/DNF caveat nobody talks about
AI 요약
Context
사용자 정의 Boolean Expression 필터 구현 시 UI 단순성과 표현력 사이의 트레이드오프 발생. 단순 Flat Toggle 구조는 복잡한 중첩 로직 표현이 불가능하며, DNF(Disjunctive Normal Form) 기반 구조는 논리식 변환 시 조건절이 지수적으로 증가하는 Explosion Problem으로 인해 확장성 한계 노출.
Technical Solution
- 단순 UI 제공을 위해 DNF(OR of ANDs) 구조를 검토했으나, 분배 법칙 적용 시 조건절 중복 및 데이터 팽창 확인
- 논리적 제약 없이 모든 Boolean Expression을 수용하기 위해 추상 구문 트리(AST) 기반의 Tree-like Builder 설계
- Recursive Nesting 구조를 도입하여 AND/OR 연산자를 무제한으로 중첩 가능한 계층적 인터페이스 구축
- UI의 형식이 표현력을 제한하지 않도록 추상화 수준을 한 단계 높인 재귀적 데이터 모델 채택
- 입력 단계에서 정형화된 Tree 구조를 유지하여 DNF 변환 과정에서 발생하는 불필요한 연산 및 중복 제거
실천 포인트
1. 복잡한 필터 UI 설계 시 DNF/CNF의 분배 법칙으로 인한 Clause 폭증 가능성 검토
2. 단순 Flat 구조와 Full-text 입력 사이의 절충안으로 Tree-based AST Builder 고려
3. 사용자 경험(UX)의 단순함과 논리적 표현력(Expressiveness)의 트레이드오프 지점 정의