fundo
Uma árvore de decisão binária é uma árvore com raiz onde cada nó interno (e raiz) é marcado por um índice j ∈ { 1 , . . . , n } de modo que nenhum caminho da raiz para a folha repita um índice, as folhas são rotuladas pelas saídas em { A , B } e cada borda é rotulada por 0 para o filho esquerdo e 1 para o filho direito. Para aplicar uma árvore a uma entrada x :
- Comece pela raiz
- se você estiver na folha, você imprime o rótulo da folha ou B e termina
- Leia o rótulo do seu nó atual, se x j = 0 , mova para o filho esquerdo e se x j = 1 , mova para o filho direito.
- pule para o passo (2)
A árvore é usada como uma maneira de avaliar funções, em particular, dizemos que uma árvore representa uma função total f se para cada x ∈ { 0 , 1 } n tivermos T ( x ) = f ( x ) . A complexidade da consulta de uma árvore é sua profundidade, e a complexidade da consulta de uma função é a profundidade da menor árvore que a representa.
Problema
Dada uma árvore de decisão binária, T produz uma árvore de decisão binária T 'de profundidade mínima, de modo que T e T' representam a mesma função.
Questão
Qual é o algoritmo mais conhecido para isso? Existem limites inferiores conhecidos? E se soubermos que a ? E se exigirmos apenas que T ' tenha profundidade aproximadamente mínima?
Abordagem ingênua
A abordagem ingênua é dado recursivamente enumerar todas as árvores de decisão binárias de profundidade d - 1 ao testar se eles avaliam a mesma coisa que T . Isso parece exigir O ( d 2 n n !etapas (assumindo que são necessáriasdetapas para verificar o queT(x)avalia para umxarbitrário). Existe uma abordagem melhor?
Motivação
Essa pergunta é motivada por uma pergunta anterior sobre a troca entre complexidade de consulta e complexidade de tempo . Em particular, o objetivo é limitar a separação de tempo para o total de funções. Podemos fazer uma árvore partir de um algoritmo ideal de tempo com tempo de execução t e, em seguida, gostaríamos de convertê-la em uma árvore T ' para um algoritmo ideal de consulta. Infelizmente, se t ∈ O ( n ! / ( N - d ) ! ) (E frequentemente d ∈ Θ ( n )) o gargalo é a conversão. Seria bom se pudéssemos substituir por algo como 2 d .