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 i ∘ s i + 1 ∘ ⋯ ∘ s j .(S,∘)S={s1,s2,…,sn}si∘si+1∘⋯∘sj

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?si∘si+1∘⋯∘sjO(log⁡(j−i))

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


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) vonsi∘…∘sji<jiijuvuvvjsisj

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.