Optimale Vorverarbeitung für bestimmte Arten von Abfragen

11

Angenommen, wir haben eine Halbgruppe mit Elementen S = { s 1 , s 2 , , s n } . Unser Ziel ist es , rechen Produkte s is i + 1s j .(S,)S={s1,s2,,sn}sisi+1sj

In ihrer Arbeit "Optimale Vorverarbeitung für die Beantwortung von Online-Produktanfragen" beweisen Alon und Schieber, dass wir jede solche Anfrage in höchstens Schritten (wobei α die inverse Ackermann-Funktion ist) nur unter Verwendung eines linearen Betrags beantworten können der Vorverarbeitung.O(α(n))α

Wenn es gewünscht wird, dass jede Abfrage kann beantwortet werden , O ( log ( j - i ) ) Schritte, kann man immer noch diese lineare Vorverarbeitung mit nur tun?sisi+1sjO(log(ji))

(Diese Frage wird von inspiriert dieser letzten Frage von Brendan McKay bei Mathoverflow.)

Gjergji Zaimi
quelle
1
Können Sie der MO-Frage einen Link hinzufügen?
Suresh Venkat
1
Gibt es einen Grund dafür, dass es sich eher um eine Halbgruppe als um eine Gruppe handelt?
Huck Bennett
1
@Huck: Wenn es sich um eine Gruppe handelt, gibt Noams Konstruktion im obigen Link einen solchen Algorithmus an.
Gjergji Zaimi

Antworten:

2

Konstruieren Sie einen geordneten ausgeglichenen Binärbaum mit in den Blättern (in der Reihenfolge). In jedem internen Knoten v wird das Produkt der Blätter des Teilbaums gespeichert, der bei v verwurzelt ist . Diese Vorverarbeitung läuft offensichtlich in O ( n ) Zeit und Raum ab.s1,,snvv(n)

Um nun ein Produkt zu berechnen (wobei i < j ), gehen Sie den Baum von i zum am wenigsten verbreiteten Vorfahren (LCA) vonsisji<jiijuvuvvjsisj

Ari
quelle