Оптимальная предварительная обработка для определенных типов запросов


11

Предположим, у нас есть полугруппа с элементами . Наша цель - вычислить произведения .S = { s 1 , s 2 , … , s n } s i ∘ s i + 1 ∘ ⋯ ∘ s j(S,∘)S={s1,s2,…,sn}si∘si+1∘⋯∘sj

В своей статье «Оптимальная предварительная обработка для ответа на онлайн-запросы продукта» Алон и Шибер доказывают, что мы можем ответить на каждый такой запрос не более чем за шагов (где - обратная функция Аккермана), используя только линейная величина предварительной обработки.αO(α(n))α

Если желательно, чтобы на каждый запрос можно было ответить с помощью шагов , можно ли делать это только с помощью линейной предварительной обработки? O ( журнал ( J - я ) )si∘si+1∘⋯∘sjO(log⁡(j−i))

(Этот вопрос навеян этим недавний вопрос Брендан Маккей в Mathoverflow.)


1
Вы можете добавить ссылку на вопрос МО?
— Суреш Venkat

1
Есть ли причина для того, чтобы быть полугруппой, а не группой?
— Гек Беннетт

1
@Huck: Если это группа, то конструкция Ноама по ссылке выше дает такой алгоритм.
— Джерджи Заими

Ответы:


2

Построить упорядоченное сбалансированное двоичное дерево с в листьях (по порядку). В каждом внутреннем узле хранится произведение листьев поддерева с корнем в . Эта предварительная обработка, очевидно, выполняется в O времени и пространстве. v v ( n )s1,…,snvv(n)

Теперь, чтобы вычислить произведение (где ), поднимите дерево от до наименее общего предка (LCA) из и . Соберите продукты, хранящиеся у каждого правого ребенка, свисающего с пути, за исключением правого ребенка LCA. Другими словами, когда вы переходите от к его родительскому , если - левый дочерний элемент , тогда выберите продукт, хранящийся в правом дочернем . Аналогичным образом, подойдите от к LCA и соберите продукты, хранящиеся у оставленных детей, свисающих с этого пути. Умножьте все эти продукты вместе с и я < J я я J у v U v v J S I сек Jsi∘…∘sji<jiijuvuvvjsisj в порядке.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.