배경
이진 결정 트리 는 각 내부 노드 (및 루트)에 인덱스 j ∈ { 1 ,으로 레이블이 지정된 루트 트리 입니다. . . , n } 은 루트에서 리프까지의 경로가 색인을 반복하지 않도록하고, 리프는 { A , B }의 출력으로 레이블이 지정되며 각 모서리는 왼쪽 자식의 경우 0 , 오른쪽 자식의 경우 1 로 레이블이 지정됩니다 . 입력 x에 트리를 적용하려면 :
- 루트에서 시작
- 리프에있는 경우 리프 레이블 또는 B 를 출력 하고 종료합니다.
- x j = 0 이면 현재 노드 의 레이블 를 읽고 왼쪽 자식으로 이동하고 x j = 1 이면 오른쪽 자식으로 이동하십시오.
- 2 단계로 이동
트리는 함수를 평가하는 방법으로 사용됩니다. 특히 각 x ∈ { 0 , 1 } n에 대해 T ( x ) = f ( x ) 가있는 경우 트리 는 총 함수 f를 나타냅니다 . 트리의 쿼리 복잡도는 그 깊이이며 함수의 쿼리 복잡성은 트리를 나타내는 가장 작은 트리의 깊이입니다.
문제
이진 결정 트리 (T)가 출력되면 T 및 T '가 동일한 기능을 나타내도록 최소 깊이의 이진 결정 트리 (T')를 출력한다.
질문
가장 잘 알려진 알고리즘은 무엇입니까? 하한이 알려져 있습니까? 것을 알고 있다면 어떨까요? T ' 만 대략적으로 최소 깊이를 요구한다면 어떨까요?
순진한 접근
순진한 접근 방식은 로 주어지며 깊이 d - 1 의 모든 이진 결정 트리를 재귀 적으로 열거 하고 T 와 동일한 것으로 평가되는지 테스트합니다 . 이것은 O ( d 2 n n !단계 (T(x)가 임의의x에 대해 평가하는것을 확인하기 위해d단계가필요하다고 가정). 더 나은 접근 방법이 있습니까?
자극
이 질문은 쿼리 복잡성과 시간 복잡성 간의 균형 에 관한 이전 질문에 의해 동기가 부여됩니다 . 특히, 목표는 전체 기능에 대한 시간 분리를 제한하는 것입니다. 런타임 t 로 시간 최적 알고리즘에서 트리 를 만든 다음 쿼리 최적 알고리즘을 위해 트리 T ' 로 변환하고 싶습니다 . 불행히도, t ∈ O ( n ! / ( n − d ) ! ) (그리고 종종 d ∈ Θ ( n )) 병목 현상이 전환입니다. 우리가 대체 할 수 있다면 좋을 것입니다 ! / ( n - d ) ! 2 d 와 같은 것으로 .