Contexte
Un arbre de décision binaire est un arbre enraciné où chaque nœud interne (et racine) est étiqueté par un index sorte qu'aucun chemin de la racine à la feuille ne répète un index, les feuilles sont étiquetés par des sorties dans , et chaque bord est étiqueté par pour l'enfant gauche et pour l'enfant droit. Pour appliquer un arbre à une entrée :{ A , B } 0 1 x
- Commencez à la racine
- si vous êtes à leaf, vous sortez le label leaf ou et vous terminezB
- Lisez l'étiquette de votre nœud actuel, si déplacez-vous vers l'enfant de gauche et si déplacez-vous vers l'enfant de droite.x j = 0 x j = 1
- passer à l'étape (2)
L'arbre est utilisé comme un moyen d'évaluer une fonction, en particulier on dit qu'un arbre représente une fonction totale si pour chaque on a . La complexité de requête d'un arbre est sa profondeur, et la complexité de requête d'une fonction est la profondeur du plus petit arbre qui la représente.f x ∈ { 0 , 1 } n T ( x ) = f ( x )
Problème
Étant donné un arbre de décision binaire T, un arbre de décision binaire T 'de profondeur minimale telle que T et T' représente la même fonction.
Question
Quel est l'algorithme le plus connu pour cela? Des limites inférieures sont-elles connues? Et si nous savons que la ? Qu'en est-il si nous exigeons seulement que soit d'une profondeur approximativement minimale?
Approche naïve
L'approche naïve est donnée pour énumérer récursive tous les arbres de décision binaires de profondeur tout en testant si elles évaluent à la même chose que . Cela semble nécessiter étapes (en supposant qu'il fautdétapes pour vérifier ce queT(x)évalue pour unxarbitraire). Est-ce qu'il y a une meilleure approche?
Motivation
Cette question est motivée par une question précédente sur le compromis entre la complexité des requêtes et la complexité temporelle . En particulier, l'objectif est de limiter la séparation temporelle pour les fonctions totales. On peut faire un arbre partir d'un algorithme optimal dans le temps avec le temps d'exécution t , puis on voudrait le convertir en arbre T ' pour un algorithme optimal de requête. Malheureusement, si t ∈ O ( n ! / ( N - d ) ! ) (Et souvent d ∈ Θ ( n )) le goulot d'étranglement est la conversion. Ce serait bien si nous pouvions remplacer par quelque chose comme 2 d .