피드로 돌아가기
Query Filters, UI Design and the CNF/DNF caveat nobody talks about
Dev.toDev.to
Frontend

DNF의 지수적 확장 문제를 해결한 Tree-based AST 필터 설계

Query Filters, UI Design and the CNF/DNF caveat nobody talks about

ManojGompa2026년 5월 16일8intermediate

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)의 트레이드오프 지점 정의

원문 읽기