tło
Binarne drzewo decyzja jest zakorzenione drzewo gdzie każdy węzeł wewnętrzny (i korzeń) jest oznaczony przez indeks w taki sposób, że żadna ścieżka od korzenia do liścia nie powtarza indeksu, liście są oznaczone wyjściami w , a każda krawędź jest oznaczona przez dla lewego dziecka i dla prawego dziecka. Aby zastosować drzewo do wejścia :
- Zacznij od katalogu głównego
- jeśli jesteś przy liściu, wyprowadzasz etykietę liścia lub i kończysz
- Przeczytaj etykietę bieżącego węzła, jeśli x j = 0, to przejdź do lewego dziecka, a jeśli x j = 1, przejdź do prawego dziecka.
- przejdź do kroku (2)
Drzewo jest używane jako sposób oceny funkcji, w szczególności mówimy, że drzewo reprezentuje całkowitą funkcję f, jeśli dla każdego x ∈ { 0 , 1 } n mamy T ( x ) = f ( x ) . Złożoność zapytania drzewa jest jego głębokością, a złożoność zapytania funkcji to głębokość najmniejszego drzewa, które ją reprezentuje.
Problem
Dane binarne drzewo decyzyjne T generuje binarne drzewo decyzyjne T 'o minimalnej głębokości, tak że T i T' reprezentują tę samą funkcję.
Pytanie
Jaki jest najbardziej znany algorytm? Czy znane są jakieś dolne granice? Co jeśli wiemy, że ? A jeśli wymagamy tylko, aby T ′ miała w przybliżeniu minimalną głębokość?
Naiwne podejście
Naiwne podejście jest podana , aby wyliczyć wszystkie rekursywnie binarne drzewa decyzyjne o głębokości d - 1 podczas testowania, jeśli oceniać na samo jak T . Wydaje się, że wymaga to O ( d 2 n n !kroki (przy założeniu, że potrzebadkroków, aby sprawdzić, coT(x)ocenia dla dowolnegox). Czy istnieje lepsze podejście?
Motywacja
To pytanie jest motywowane przez poprzednie pytanie dotyczące kompromisu między złożonością zapytania a złożonością czasową . W szczególności celem jest ograniczenie separacji czasowej dla wszystkich funkcji. Możemy stworzyć drzewo z algorytmu czasu optymalnego z czasem wykonania t , a następnie chcielibyśmy przekonwertować go na drzewo T ' dla algorytmu optymalnego dla zapytania. Niestety, jeśli t ∈ O ( n ! / ( N - d ) ! ) (I często d ∈ Θ ( n )) wąskim gardłem jest konwersja. Byłoby miło, gdybyśmy mogli zastąpić przez coś jak 2 d .