Запрос диапазона (информатика)
Тон или стиль этой статьи могут не отражать энциклопедический тон , используемый в Википедии . ( декабрь 2017 г. ) |
В информатике состоит задача запроса диапазона из эффективного ответа на несколько запросов, касающихся заданного интервала элементов в массиве . Например, распространенная задача, известная как запрос минимума диапазона , заключается в поиске наименьшего значения внутри заданного диапазона в списке чисел.
Определение
[ редактировать ]Дана функция который принимает массив, запрос диапазона в массиве принимает два индекса и и возвращает результат при применении к подмассиву . Например, для функции который возвращает сумму всех значений в массиве, запрос диапазона возвращает сумму всех значений в диапазоне . [ нужна ссылка ]
Решения
[ редактировать ]Массив сумм префиксов
[ редактировать ]На запросы суммы диапазона можно ответить в постоянное время и линейное пространство путем предварительного вычисления массива p той же длины, что и входные данные, так что для каждого индекса i элемент p i является суммой первых i элементов a . Любой запрос может быть вычислен следующим образом:
Эту стратегию можно распространить на любую другую бинарную операцию. чья обратная функция корректно определено и легко вычислимо. [ 1 ] Его также можно расширить до более высоких измерений с помощью аналогичной предварительной обработки. [ 2 ] Например, если p i,j содержит сумму первых i × j элементов a , то
Запросы динамического диапазона
[ редактировать ]Более сложная часть проблемы состоит в выполнении запросов диапазона к динамическим данным; то есть данные, которые могут изменяться между каждым запросом. Для эффективного обновления значений массива более сложные структуры данных, такие как дерево сегментов или дерево Фенвика . необходимы [ нужна ссылка ]
Примеры
[ редактировать ]Полугрупповые операторы
[ редактировать ]Когда интересующая функция в запросе диапазона является оператором полугруппы , понятие не всегда определен, поэтому стратегия из предыдущего раздела не работает. Эндрю Яо показал [ 3 ] что существует эффективное решение для запросов диапазона, в которых используются операторы полугруппы. Он доказал, что для любой константы c предварительная обработка времени и пространства позволяет отвечать на запросы диапазона в списках, где f — оператор полугруппы в время, где является некоторой функциональной обратной функцией Аккермана .
Существуют некоторые полугрупповые операторы, которые допускают несколько лучшие решения. Например, когда . Предполагать затем возвращает индекс минимального элемента . Затем обозначает соответствующий запрос минимального диапазона. Существует несколько структур данных, которые позволяют ответить на запрос минимального диапазона в время с использованием предварительной обработки времени и пространства . Одно из таких решений основано на эквивалентности этой проблемы и проблемы наименьшего общего предка .
Декартово дерево массива имеет корень а в качестве левого и правого поддеревьев — декартово дерево и декартово дерево соответственно. Запрос минимального диапазона является самым низким общим предком в из и . Потому что наименьший общий предок может быть найден за постоянное время с использованием предварительной обработки времени и пространства. , запрос минимального диапазона также может. Решение, когда является аналогом. Декартовы деревья могут быть построены за линейное время .
Режим
[ редактировать ]Режим . массива — это элемент, который встречается в нем чаще всего Например, режим это 4 . В случае ничьей в качестве режима может быть выбран любой из наиболее часто встречающихся элементов. Запрос режима диапазона состоит в предварительной обработке так что мы можем найти моду в любом диапазоне . Для решения этой проблемы было разработано несколько структур данных. Некоторые результаты мы суммируем в следующей таблице. [ 1 ]
Космос | Время запроса | Ограничения |
---|---|---|
Недавно Йоргенсен и др. доказал нижнюю границу клеточного зонда модели для любой структуры данных, использующей S- ячейки. [ 4 ]
медиана
[ редактировать ]Этот конкретный случай представляет особый интерес, поскольку нахождение медианы имеет несколько приложений. [ 5 ] С другой стороны, проблема медианы, частный случай проблемы выбора , разрешима за O ( n ), используя алгоритм медианы медиан . [ 6 ] Однако его обобщение с помощью запросов на медиану диапазона появилось недавно. [ 7 ] Медианный запрос диапазона где A,i и j имеют обычные значения, возвращает медианный элемент . Эквивалентно, должен вернуть элемент ранга . Запросы о медиане диапазона не могут быть решены с помощью любого из предыдущих методов, обсуждавшихся выше, включая подход Яо для операторов полугруппы. [ 8 ]
Были изучены два варианта этой задачи: оффлайн- версия, в которой все k интересующих запросов задаются пакетно, и версия, в которой вся предварительная обработка выполняется заранее. Автономную версию можно решить с помощью время и космос.
Следующий псевдокод алгоритма быстрого выбора показывает, как найти элемент ранга r в несортированный массив различных элементов, чтобы найти медианы диапазона, которые мы установили . [ 7 ]
rangeMedian(A, i, j, r) { if A.length() == 1 return A[1] if A.low is undefined then m = median(A) A.low = [e in A | e <= m] A.high = [e in A | e > m ] calculate t the number of elements of A[i, j] that belong to A.low if r <= t then return rangeMedian(A.low, i, j, r) else return rangeMedian(A.high, i, j, r-t) }
Процедура rangeMedian
перегородки A
, с использованием A
медиана, на два массива A.low
и A.high
, где первый содержит
элементы A
которые меньше или равны медиане m
и последний остальные элементы A
. Если мы знаем, что число элементов что
оказаться в A.low
является t
и это число больше, чем r
тогда нам следует продолжать искать элемент ранга r
в A.low
; в противном случае нам следует искать элемент ранга в A.high
. Чтобы найти t , достаточно найти максимальный индекс такой, что находится в A.low
и максимальный индекс такой, что
находится в A.high
. Затем . Общая стоимость любого запроса без учета части секционирования равна поскольку самое большее выполняются вызовы рекурсии, и в каждом из них выполняется только постоянное количество операций (для получения значения t дробное каскадирование следует использовать ).
Если используется линейный алгоритм поиска медиан, общая стоимость предварительной обработки для k составляет запросов медианы диапазона . Алгоритм также можно модифицировать для решения онлайн- версии задачи. [ 7 ]
Большинство
[ редактировать ]Поиск часто встречающихся элементов в заданном наборе элементов — одна из наиболее важных задач интеллектуального анализа данных. Поиск часто встречающихся элементов может оказаться сложной задачей, поскольку большинство элементов имеют схожие частоты. Следовательно, было бы более полезно, если бы для обнаружения таких предметов использовался некоторый порог значимости. Один из самых известных алгоритмов поиска большей части массива был предложен Бойером и Муром. [ 9 ] который также известен как алгоритм большинства голосов Бойера-Мура . Бойер и Мур предложили алгоритм поиска мажоритарного элемента строки (если он есть) в время и использование космос. В контексте работы Бойера и Мура и вообще говоря, мажоритарным элементом в наборе элементов (например, строке или массиве) является элемент, количество экземпляров которого превышает половину размера этого набора. Несколько лет спустя Мисра и Грис [ 10 ] предложил более общую версию алгоритма Бойера и Мура, используя сравнения для поиска всех элементов массива, относительная частота которых превышает некоторый порог . Диапазон -мажоритарный запрос — это запрос, который для заданного поддиапазона структуры данных (например, массива) размера , возвращает набор всех отдельных элементов, которые появляются больше (или в некоторых публикациях равны) раз в этом заданном диапазоне. В разных структурах, поддерживающих диапазон -большинство запросов, может быть статическим (указанным во время предварительной обработки) или динамическим (указанным во время запроса). Многие из таких подходов основаны на том, что независимо от размера диапазона для данного может быть максимум отдельные кандидаты с относительной частотой как минимум . Проверяя каждого из этих кандидатов в постоянное время, достигается время запроса. Диапазон -запрос большинства является разложимым [ 11 ] в том смысле, что -большинство в диапазоне с перегородками и должно быть -большинство в любом или . Из-за этой разложимости некоторые структуры данных отвечают -большинство запросов к одномерным массивам путем поиска наименьшего общего предка (LCA) конечных точек диапазона запроса в дереве диапазонов и проверки двух наборов кандидатов (размера ) от каждой конечной точки до наименьшего общего предка за постоянное время, что приводит к время запроса.
Двумерные массивы
[ редактировать ]Гаги и др. [ 12 ] предложил структуру данных, которая поддерживает диапазон -большинство запросов на множество . Для каждого запроса в этой структуре данных порог и прямоугольный диапазон указаны, и набор всех элементов, относительные частоты которых (внутри этого прямоугольного диапазона) больше или равны возвращаются в качестве вывода. Эта структура данных поддерживает динамические пороговые значения (указанные во время запроса) и порог предварительной обработки. на основе чего он построен. набор вертикальных и горизонтальных интервалов. В ходе предварительной обработки на графике строится множество. Вместе вертикальный и горизонтальный интервал образуют блок. Каждый блок является частью суперблока, в девять раз большего, чем он сам (в три раза больше горизонтального интервала блока и в три раза больше его вертикального). Для каждого блока набор кандидатов (с элементов), который состоит из элементов, имеющих относительные частоты не менее (порог предварительной обработки, как упомянуто выше) в соответствующем суперблоке. Эти элементы хранятся в невозрастающем порядке в соответствии с их частотами, и легко видеть, что любой элемент, имеющий относительную частоту не менее в блоке должен появиться свой набор кандидатов. Каждый На запрос -majority сначала отвечают путем нахождения блока запроса или самого большого блока, содержащегося в предоставленном прямоугольнике запроса в время. Для полученного блока запроса первый кандидаты возвращаются (без проверки) в время, поэтому этот процесс может вернуть некоторые ложные срабатывания. Многие другие структуры данных (как обсуждается ниже) предложили методы проверки каждого кандидата за постоянное время и, таким образом, поддержания время запроса, не возвращая ложных срабатываний. Случаи, когда блок запроса меньше, чем обрабатываются путем хранения различные экземпляры этой структуры данных следующего вида:
где порог предварительной обработки -й экземпляр. Таким образом, для блоков запроса размером менее тот -ый экземпляр запрошен. Как упоминалось выше, эта структура данных имеет время запроса и требует бит пространства, сохраняя его копию, закодированную Хаффманом (обратите внимание на фактор, а также см. кодирование Хаффмана ).
Одномерные массивы
[ редактировать ]Чан и др. [ 13 ] предложил структуру данных, которая представляет собой одномерный массив , поддиапазон из (указывается во время запроса) и пороговое значение (указывается во время запроса), может возвращать список всех -большинство в время, требующее слова космоса. Чтобы ответить на такие вопросы, Chan et al. [ 13 ] начнем с того, что существует структура данных, способная возвращать k самых частых элементов в диапазоне в время, требующее слова космоса. Для одномерного массива , пусть односторонний запрос диапазона top-k имеет вид . Для максимального диапазона диапазонов в котором частота отдельного элемента в остается неизменным (и равным ), строится горизонтальный отрезок. -интервал этого отрезка соответствует и у него есть -значение, равное . Поскольку добавление каждого элемента в меняет частоту ровно одного отдельного элемента, вышеупомянутый процесс создает отрезки линии. Более того, для вертикальной линии все пересекающие его отрезки горизонтальных линий сортируются по их частотам. Обратите внимание, что каждый горизонтальный отрезок с -интервал соответствует ровно одному отдельному элементу в , такой, что . Затем на запрос top-k можно ответить, стреляя вертикальным лучом. и сообщаем о первом горизонтальные отрезки, которые его пересекают (помните сверху, что эти отрезки уже отсортированы по их частотам) в время.
Чан и др. [ 13 ] сначала постройте дерево диапазонов , в котором каждый узел ветвления хранит одну копию структуры данных, описанной выше для односторонних запросов top-k диапазона, а каждый лист представляет элемент из . Структура данных top-k в каждом узле создается на основе значений, существующих в поддеревьях этого узла, и предназначена для ответа на односторонние запросы top-k диапазона. Обратите внимание, что для одномерного массива , дерево диапазонов можно построить путем деления на две половины и повторяющиеся на обеих половинах; следовательно, каждый узел результирующего дерева диапазонов представляет собой диапазон. Также можно видеть, что это дерево диапазонов требует слова пространства, потому что есть уровни и каждый уровень имеет узлы. Более того, поскольку на каждом уровне дерева диапазонов все узлы имеют в общей сложности элементы в их поддеревьях и поскольку существуют уровней, пространственная сложность этого дерева диапазонов равна .
Используя эту структуру, диапазон -большинство запросов на с отвечают следующим образом. Во-первых, наименьший общий предок (LCA) листовых узлов. и находится в постоянном времени. Обратите внимание, что существует структура данных, требующая бит пространства, способного отвечать на запросы LCA в время. [ 14 ] Позволять обозначаем LCA и , с использованием и по разложимости диапазона -большинство запросов (как описано выше и в [ 11 ] ), двусторонний запрос диапазона могут быть преобразованы в два односторонних запроса диапазона top-k (из к и ). Эти два односторонних запроса top-k диапазона возвращают верхнюю-( ) наиболее частые элементы в каждом из соответствующих диапазонов в время. Эти частые элементы составляют набор кандидатов на -большинство в в котором есть кандидатов, некоторые из которых могут быть ложноположительными. Затем каждый кандидат оценивается в постоянное время с использованием структуры данных линейного пространства (как описано в лемме 3 в [ 15 ] ), который способен определить в время, независимо от того, задан ли данный поддиапазон массива содержит как минимум экземпляры определенного элемента .
Тропы деревьев
[ редактировать ]Гаги и др. [ 16 ] предложил структуру данных, которая поддерживает такие запросы, что при наличии двух узлов и в дереве, могут сообщить список элементов, которые имеют большую относительную частоту, чем по пути из к . Более формально, пусть быть помеченным деревом, в котором каждый узел имеет метку из алфавита размера . Позволять обозначаем метку узла в . Позволять обозначаем уникальный путь от к в в котором средние узлы перечислены в порядке их посещения. Данный и фиксированный (указанный во время предварительной обработки) порог , запрос должен вернуть набор всех меток, которые появляются более чем раз в .
Чтобы построить эту структуру данных, сначала узлы отмечены . Это можно сделать, отметив любой узел, расстояние до которого не менее от низа трех (высота) и глубина которого делится на . После этого можно заметить, что расстояние между каждым узлом и его ближайшим отмеченным предком меньше, чем . Для отмеченного узла , разные последовательности (пути к корню) хранятся,
для где возвращает метку прямого родителя узла . Другими словами, для каждого помеченного узла сохраняется набор всех путей длиной в степени двойки (плюс один для самого узла) к корню. Более того, для каждого , множество всех кандидатов большинства хранятся. Более конкретно, содержит набор всех -большинство в или ярлыки, которые появляются более чем раз в . Легко видеть, что множество кандидатов может иметь максимум отдельные этикетки для каждого . Гаги и др. [ 16 ] то обратите внимание, что набор всех -большинство на пути от любого отмеченного узла одному из своих предков входит в некоторые (лемма 2 в [ 16 ] ), так как длина равно таким образом, существует для длина которого находится между где расстояние между x и z. Существование таких подразумевает, что -большинство на пути от к должно быть -большинство в , и поэтому должен появиться в . Легко видеть, что эта структура данных требует слова космоса, потому что как уже говорилось выше на этапе строительства узлы помечены, и для каждого помеченного узла сохраняются некоторые наборы кандидатов. По определению для каждого отмеченного узла таких наборов являются магазинами, каждый из которых содержит кандидаты. Следовательно, эта структура данных требует слова космоса. Обратите внимание, что каждый узел также магазины что равно количеству экземпляров по пути из в корень , это не увеличивает сложность пространства, поскольку добавляет только постоянное количество слов на узел.
Каждый запрос между двумя узлами и можно ответить, используя свойство разложимости (как объяснено выше) диапазона -большинство запросов и разрывая путь запроса между и на четыре подпути. Позволять быть низшим общим предком и , с и являющихся ближайшими отмеченными предками и соответственно. Путь от к разлагается на пути из и к и соответственно (размер этих путей меньше, чем по определению все они рассматриваются как кандидаты), а пути от и к (путем нахождения подходящего как объяснялось выше, и рассматривая все его ярлыки как кандидатов). Обратите внимание, что граничные узлы должны обрабатываться соответствующим образом, чтобы все эти подпути были непересекающимися и из всех них создавался набор выводятся кандидаты. Каждый из этих кандидатов затем проверяется с использованием комбинации запрос, который возвращает наименьшего предка узла у которого есть этикетка и поля каждого узла. На -битная оперативная память и алфавит размера , на запрос можно ответить в времени при наличии требований к линейному пространству. [ 17 ] Поэтому проверка каждого из кандидатов в время приводит к общее время запроса для возврата набора всех -большинство на пути от к .
Связанные проблемы
[ редактировать ]Все описанные выше задачи изучались как для более высоких размерностей, так и для их динамических версий. С другой стороны, запросы диапазона могут быть расширены на другие структуры данных, такие как деревья . [ 8 ] например, проблема предка уровня . Аналогичное семейство задач — запросы ортогональных диапазонов , также известные как запросы подсчета.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б Кризанц, Дэнни; Морен, Пэт ; Смид, Мишель Х.М. (2003). «Режим диапазона и запросы медианы диапазона в списках и деревьях» . ИСААК : 517–526. arXiv : cs/0307034 . Бибкод : 2003cs........7034K .
- ^ Мэн, Хэ; Манро, Дж. Ян; Николсон, Патрик К. (2011). «Выбор динамического диапазона в линейном пространстве». ИСААК : 160–169. arXiv : 1106.5076 .
- ^ Яо, AC (1982). «Пространственно-временной компромисс для ответа на запросы диапазона». E 14-й ежегодный симпозиум ACM по теории вычислений : 128–136.
- ^ Греве, М; Йоргенсен, А.; Ларсен, К.; Труэлсен, Дж. (2010). «Нижние границы зонда ячейки и приближения для режима диапазона». Автоматы, языки и программирование : 605–616.
- ^ Хар-Пелед, Сариэль ; Мутукришнан, С. (2008). «Медианы диапазона». ЕКА : 503–514.
- ^ Блюм, М .; Флойд, RW ; Пратт, Вирджиния ; Ривест, РЛ ; Тарьян, Р.Э. (август 1973 г.). «Сроки выбора» (PDF) . Журнал компьютерных и системных наук . 7 (4): 448–461. дои : 10.1016/S0022-0000(73)80033-9 .
- ^ Перейти обратно: а б с Бит, Гфеллер; Сандерс, Питер (2009). «На пути к медиане оптимального диапазона». Икальп (1) : 475–486. arXiv : 0901.1761 .
- ^ Перейти обратно: а б Бозе, П ; Кранакис, Э.; Морен, П .; Тан, Ю. (2005). «Режим приблизительного диапазона и запросы медианы диапазона» . В материалах 22-го симпозиума по теоретическим аспектам информатики (STACS 2005), том 3404 конспектов лекций по компьютерным наукам : 377–388.
- ^ Бойер, Роберт С.; Мур, Дж. Стротер (1991), «MJRTY — алгоритм быстрого голосования большинства», Automated Reasoning , Automated Reasoning Series, vol. 1, Дордрехт: Springer Нидерланды, стр. 105–117, doi : 10.1007/978-94-011-3488-0_5 , ISBN 978-94-010-5542-0 , получено 18 декабря 2021 г.
- ^ Мисра, Дж.; Грис, Дэвид (ноябрь 1982 г.). «Нахождение повторяющихся элементов» . Наука компьютерного программирования . 2 (2): 143–152. дои : 10.1016/0167-6423(82)90012-0 . hdl : 1813/6345 . ISSN 0167-6423 .
- ^ Перейти обратно: а б Карпинский, Марек. Поиск часто встречающихся цветов в прямоугольниках . OCLC 277046650 .
- ^ Гэги, Трэвис; Он, Мэн; Манро, Дж. Ян; Николсон, Патрик К. (2011), «Поиск частых элементов в сжатых двумерных массивах и строках» , Обработка строк и поиск информации , Конспекты лекций по информатике, том. 7024, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 295–300, doi : 10.1007/978-3-642-24583-1_29 , ISBN 978-3-642-24582-4 , получено 18 декабря 2021 г.
- ^ Перейти обратно: а б с Чан, Тимоти М.; Дюроше, Стефан; Скала, Мэтью; Уилкинсон, Брайан Т. (2012), «Структуры данных в линейном пространстве для запросов меньшинства диапазона в массивах» , Теория алгоритмов – SWAT 2012 , Конспекты лекций по информатике, том. 7357, Берлин, Гейдельберг: Springer Berlin Heidelberg, стр. 295–306, doi : 10.1007/978-3-642-31155-0_26 , ISBN 978-3-642-31154-3 , получено 20 декабря 2021 г.
- ^ Садаканэ, Кунихико; Наварро, Гонсало (17 января 2010 г.). «Полнофункциональные краткие деревья» . Материалы двадцать первого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам . Филадельфия, Пенсильвания: Общество промышленной и прикладной математики: 134–149. дои : 10.1137/1.9781611973075.13 . ISBN 978-0-89871-701-3 . S2CID 3189222 .
- ^ Чан, Тимоти М.; Дюроше, Стефан; Ларсен, Каспер Грин; Моррисон, Джейсон; Уилкинсон, Брайан Т. (8 марта 2013 г.). «Структуры данных линейного пространства для запросов в режиме диапазона в массивах» . Теория вычислительных систем . 55 (4): 719–741. дои : 10.1007/s00224-013-9455-2 . ISSN 1432-4350 . S2CID 253747004 .
- ^ Перейти обратно: а б с Гэги, Трэвис; Он, Мэн; Наварро, Гонсало; Очоа, Карлос (сентябрь 2020 г.). «Структуры данных большинства древовидных путей» . Теоретическая информатика . 833 : 107–119. arXiv : 1806.01804 . дои : 10.1016/j.tcs.2020.05.039 . ISSN 0304-3975 .
- ^ Он, Мэн; Манро, Дж. Ян; Чжоу, Гелин (08 июля 2014 г.). «Структура для кратких помеченных порядковых деревьев по большим алфавитам» . Алгоритмика . 70 (4): 696–717. дои : 10.1007/s00453-014-9894-4 . ISSN 0178-4617 . S2CID 253977813 .