Hintergrund
Ein binärer Entscheidungsbaum ist ein Stammbaum, in dem jeder interne Knoten (und jeder Stamm) durch einen Index , sodass kein Pfad von Stamm zu Blatt einen Index, die Blätter, wiederholt werden durch Ausgaben in , und jede Kante wird für das linke untergeordnete Element mit und für das rechte untergeordnete Element mit . So wenden Sie einen Baum auf eine Eingabe x an :j ∈ { 1 , . . . , n } { A , B } 0 1
- Beginnen Sie an der Wurzel
- Wenn Sie sich am Blatt befinden, geben Sie die Blattbeschriftung oder und beenden sie
- Lesen Sie die Bezeichnung Ihres aktuellen Knotens. Wenn , gehen Sie zum linken Kind und wenn , gehen Sie zum rechten Kind.
- springe zu Schritt (2)
Der Baum wird als ein Weg verwendet , um eine Funktion zu bewerten, insbesondere sagen wir einen Baum eine Gesamtfunktion repräsentiert , wenn für jedes haben wir . Die Abfragekomplexität eines Baums ist seine Tiefe, und die Abfragekomplexität einer Funktion ist die Tiefe des kleinsten Baums, der ihn darstellt.
Problem
Bei gegebenem binären Entscheidungsbaum T wird ein binärer Entscheidungsbaum T 'mit minimaler Tiefe ausgegeben, so dass T und T' die gleiche Funktion darstellen.
Frage
Was ist der bekannteste Algorithmus dafür? Sind Untergrenzen bekannt? Was ist, wenn wir wissen, dass die ? Was ist, wenn wir nur verlangen, dass eine annähernd minimale Tiefe hat?
Naiver Ansatz
Der naive Ansatz erhält um alle binären Entscheidungsbäume der Tiefe d - 1 rekursiv aufzulisten, während geprüft wird, ob sie dasselbe wie T ergeben . Dies scheint O ( d 2 n n zu erfordern !Schritte (unter der Annahme, dassdSchritte erforderlich sind, um zu überprüfen, wasT(x)für ein beliebigesxergibt). Gibt es einen besseren Ansatz?
Motivation
Diese Frage basiert auf einer früheren Frage zum Kompromiss zwischen Abfragekomplexität und Zeitkomplexität . Insbesondere soll die zeitliche Trennung für Gesamtfunktionen begrenzt werden. Wir können einen Baum aus einem zeitoptimalen Algorithmus mit der Laufzeit t erstellen und möchten ihn dann für einen abfrageoptimalen Algorithmus in einen Baum T ' konvertieren . Leider, wenn t ∈ O ( n ! / ( N - d ) ! ) (Und oft d ∈ Θ ( n )) Der Engpass ist die Konvertierung. Es wäre schön, wenn wir ersetzen könnten ! / ( n - d ) ! durch so etwas wie 2 d .