Optymalne przetwarzanie wstępne dla niektórych rodzajów zapytań

11

Załóżmy, że mamy półgrupę z elementami . Naszym celem jest obliczanie produktów .(S,)S={s1,s2,,sn}sisi+1sj

W swoim artykule „Optymalne przetwarzanie wstępne dla odpowiedzi na zapytania produktów on-line” Alon i Schieber udowadniają, że możemy odpowiedzieć na każde takie zapytanie w co najwyżej krokach (gdzie jest odwrotną funkcją Ackermanna), używając tylko liniowa ilość przetwarzania wstępnego.O(α(n))α

Jeśli pożądane jest, aby na każde zapytanie można było odpowiedzieć w krokach , czy można to zrobić tylko przy użyciu liniowego przetwarzania wstępnego?sisi+1sjO(log(ji))

(To pytanie jest inspirowana przez tego ostatniego pytania przez Brendan McKay na Mathoverflow).

Gjergji Zaimi
źródło
1
czy możesz dodać link do pytania MO?
Suresh Venkat,
1
Czy jest jakiś powód, dla którego jest to półgrupa, a nie grupa?
Huck Bennett,
1
@Huck: Jeśli jest to grupa, konstrukcja Noama w powyższym linku daje taki algorytm.
Gjergji Zaimi,

Odpowiedzi:

2

Skonstruuj uporządkowane zrównoważone drzewo binarne za pomocą w liściach (w kolejności). W każdym wewnętrznym węźle przechowuj iloczyn liści poddrzewa zrootowanych na . Ten przerób oczywiście prowadzi w O czasie i przestrzeni.s1,,snvv(n)

Teraz, aby obliczyć produkt (gdzie ) przejdź do drzewa od do najmniejszego wspólnego przodka (LCA) i . Zbierz produkty przechowywane w każdym prawym dziecku zwisającym ze ścieżki, z wyłączeniem odpowiedniego dziecka LCA. Innymi słowy, gdy przechodzisz od do jego rodzica , jeśli jest lewym dzieckiem , to podnieś produkt przechowywany w prawym dziecku . Podobnie, przejdź od do LCA i zbierz produkty przechowywane u pozostawionych dzieci zwisających z tej ścieżki. Pomnóż wszystkie te produkty wraz z isisji<jiijuvuvvjsisj w kolejności.

Ari
źródło