Алгоритм выбора
В информатике алгоритм выбора — это алгоритм поиска наименьшее значение в коллекции упорядоченных значений, например чисел. Значение, которое он находит, называется статистика заказа . Отбор включает в себя как частные случаи проблемы поиска минимального , медианного и максимального элементов в коллекции. Алгоритмы выбора включают в себя быстрый выбор и алгоритм медианы медиан . Применительно к коллекции значения, эти алгоритмы требуют линейного времени , как выражено с использованием обозначения большой буквы О. Для данных, которые уже структурированы, возможны более быстрые алгоритмы; в крайнем случае выбор в уже отсортированном массиве требует времени .
Постановка задачи
[ редактировать ]Алгоритм задачи выбора принимает на вход набор значений и число . Он выводит наименьшее из этих значений или, в некоторых вариантах задачи, набор наименьшие значения. Чтобы это было четко определено, должна быть возможность сортировать значения в порядке от наименьшего к наибольшему; например, это могут быть целые числа , числа с плавающей запятой или какой-либо другой тип объекта с числовым ключом. Однако не предполагается, что они уже отсортированы. Часто алгоритмы выбора ограничиваются моделью вычислений , основанной на сравнении , как в алгоритмах сортировки сравнением , где алгоритм имеет доступ к операции сравнения , которая может определить относительный порядок любых двух значений, но не может выполнять какие-либо другие арифметические действия. операции над этими значениями. [1]
Чтобы упростить проблему, в некоторых работах по этой проблеме предполагается, что все значения отличны друг от друга. [2] или что какой-то последовательный метод разрешения конфликтов использовался для присвоения порядка парам элементов с одинаковым значением друг друга. Другой вариант постановки задачи касается нумерации упорядоченных значений: наименьшее значение, полученное заданием , как при нумерации массивов с нуля , или получается установкой , следуя обычным англоязычным соглашениям о самом маленьком, втором по величине и т. д.? В этой статье используются соглашения, используемые Корменом и др., согласно которым все значения различны, а минимальное значение получается из . [2]
Согласно этим соглашениям, максимальное значение среди совокупности значений, получается путем установки . Когда является нечетным числом , медиана коллекции получается путем установки . Когда четно, есть два варианта медианы, получаемой округлением этого выбора. вниз или вверх соответственно: нижняя медиана с и верхняя медиана с . [2]
Алгоритмы
[ редактировать ]Сортировка и пирамидальная выборка
[ редактировать ]В качестве базового алгоритма выбор Наименьшее значение в коллекции значений можно получить с помощью следующих двух шагов:
- Сортировка коллекции
- Если выходные данные алгоритма сортировки представляют собой массив , извлеките его -й элемент; в противном случае просканируйте отсортированную последовательность, чтобы найти й элемент.
Во времени для этого метода преобладает этап сортировки, который требует время с использованием сортировки сравнения . [2] [3] Даже когда можно использовать алгоритмы целочисленной сортировки , они обычно медленнее, чем линейное время, которого можно достичь с помощью специализированных алгоритмов выбора. Тем не менее, простота этого подхода делает его привлекательным, особенно когда высокооптимизированная процедура сортировки предоставляется как часть библиотеки времени выполнения, а алгоритм выбора — нет. Для входных данных среднего размера сортировка может быть быстрее, чем алгоритмы неслучайного выбора, из-за меньших постоянных факторов во времени ее выполнения. [4] Этот метод также создает отсортированную версию коллекции, которая может быть полезна для других последующих вычислений, в частности для выбора других вариантов выбора. . [3]
Для алгоритма сортировки, генерирующего по одному элементу за раз, такого как сортировка выбором , сканирование может выполняться одновременно с сортировкой, и сортировка может быть прекращена, как только элемент найден. можно считать один из возможных вариантов создания утешительной сетки в турнире с выбыванием до одного игрока , в котором команды, проигравшие возможному победителю, играют еще один мини-турнир для определения второго места. Примером этого метода [5] Применение этой оптимизации к пирамидальной сортировке создает алгоритм heapselect , который может выбирать наименьшее значение во времени . [6] Это быстро, когда мал по сравнению с , но вырождается в для больших значений , например, выбор используется для нахождения медианы.
Поворот
[ редактировать ]Многие методы выбора основаны на выборе специального «поворотного» элемента из входных данных и использовании сравнений с этим элементом для разделения оставшихся входные значения в два подмножества: набор элементов меньше, чем ось, и множество элементов больше, чем ось. Затем алгоритм может определить, где находится наименьшее значение необходимо найти на основе сравнения с размерами этих наборов. В частности, если , наименьшее значение находится в , и его можно найти рекурсивно, применив тот же алгоритм выбора к . Если , тогда Наименьшее значение — это опорная точка, и его можно вернуть немедленно. В оставшемся случае наименьшее значение находится в , а точнее, это элемент в позиции из . Его можно найти, рекурсивно применив алгоритм выбора, ища значение в этой позиции в . [7]
Как и в случае с соответствующим алгоритмом быстрой сортировки на основе поворота , разделение входных данных на и это можно сделать путем создания новых коллекций для этих наборов или с помощью метода, который разбивает заданный тип данных списка или массива на месте. Подробности различаются в зависимости от того, как представлена входная коллекция . [8] Время для сравнения опорной точки со всеми остальными значениями равно . [7] Однако методы поворота различаются тем, как они выбирают поворот, что влияет на размер подзадач в каждом рекурсивном вызове. Эффективность этих методов во многом зависит от выбора стержня. Если ось выбрана неудачно, время работы этого метода может быть очень медленным . . [4]
- Если бы точка поворота находилась точно на середине входных данных, то каждый рекурсивный вызов имел бы не более половины значений, чем предыдущий вызов, а общее время складывалось бы в прогрессию геометрическую . Однако нахождение медианы само по себе является проблемой выбора для всего исходного ввода. Попытка найти его с помощью рекурсивного вызова алгоритма выбора привела бы к бесконечной рекурсии, поскольку размер задачи не уменьшался бы при каждом вызове. [7]
- Быстрый выбор равномерно случайным образом выбирает опорную точку из входных значений. Его можно описать как алгоритм обрезки и поиска . [9] вариант быстрой сортировки с той же стратегией поворота, но где быстрая сортировка выполняет два рекурсивных вызова для сортировки двух подколлекций и , быстрый выбор выполняет только один из этих двух вызовов. Его ожидаемое время . [2] [7] [9] Для любой константы , вероятность того, что число его сравнений превысит суперэкспоненциально мал в . [10]
- Алгоритм Флойда-Ривеста , разновидность быстрого выбора, выбирает точку поворота путем случайной выборки подмножества значения данных для некоторого размера выборки , а затем рекурсивно выбираем два элемента немного выше и ниже позиции образца для использования в качестве опорных точек. При таком выборе вполне вероятно, что зажат между двумя опорными точками, так что после поворота для рекурсивного вызова остается лишь небольшое количество значений данных между опорными точками. Этот метод позволяет добиться ожидаемого количества сравнений, т.е. . [11] В своей оригинальной работе Флойд и Ривест утверждали, что срок можно сделать настолько маленьким, насколько по рекурсивной схеме выборки, но правильность их анализа подвергается сомнению. [12] [13] Вместо этого более строгий анализ показал, что версия их алгоритма достигает на этот срок. [14] Хотя обычный анализ как быстрого выбора, так и алгоритма Флойда-Ривеста предполагает использование истинного генератора случайных чисел , было доказано, что версия алгоритма Флойда-Ривеста, использующая генератор псевдослучайных чисел, засеянный только логарифмическим количеством истинных случайных битов, работает в линейное время с высокой вероятностью. [15]
- Метод медианы медиан разделяет входные данные на наборы из пяти элементов и использует какой-либо другой нерекурсивный метод для нахождения медианы каждого из этих наборов за постоянное время для каждого набора. Затем он рекурсивно вызывает себя, чтобы найти медиану этих значений. медианы. Используя полученную медиану медиан в качестве точки поворота, создается раздел с . Таким образом, проблема на элементов сводится к двум рекурсивным задачам на элементы (чтобы найти ось) и не более элементы (после использования точки поворота). Общий размер этих двух рекурсивных подзадач не более , что позволяет анализировать общее время как геометрическую прогрессию, добавляющую к . В отличие от быстрого выбора, этот алгоритм является детерминированным, а не рандомизированным. [2] [4] [5] Это был первый известный алгоритм детерминированного выбора с линейным временем. [5] и обычно преподается на курсах по алгоритмам для студентов как пример принципа « разделяй и властвуй» , который не делится на две равные подзадачи. [2] [4] [9] [16] Однако высокие постоянные факторы в его ограничение по времени делает его на практике медленнее, чем быстрый выбор , [3] [9] и даже медленнее, чем сортировка входных данных среднего размера. [4]
- Гибридные алгоритмы, такие как интроселект, могут использоваться для достижения практической эффективности быстрого выбора с возвратом к медианам медиан, гарантирующим наихудший случай. время. [17]
Заводы
[ редактировать ]Алгоритмы детерминированного выбора с наименьшим известным числом сравнений для значений которые далеки от или , основаны на концепции фабрик , представленной в 1976 году Арнольдом Шёнхаге , Майком Патерсоном и Ником Пиппенгером . [18] Это методы, которые создают частичные порядки определенных заданных типов на небольших подмножествах входных значений, используя сравнения для объединения меньших частичных порядков. В качестве очень простого примера: фабрика одного типа может принимать на вход последовательность одноэлементных частичных заказов, сравнивать пары элементов из этих заказов и выдавать на выходе последовательность полностью упорядоченных наборов из двух элементов. Элементы, используемые в качестве входных данных для этой фабрики, могут быть либо входными значениями, которые еще ни с чем не сравнивались, либо «отходными» значениями, произведенными другими фабриками. Целью фабричного алгоритма является объединение различных фабрик, при этом выходные данные одних фабрик поступают на входы других, чтобы в конечном итоге получить частичный порядок, в котором один элемент ( самый маленький) больше некоторых другие элементы и меньше другого другие. Тщательное проектирование этих фабрик приводит к созданию алгоритма, который при применении к нахождению медианы использует не более сравнения. Для других значений , количество сравнений меньше. [19]
Параллельные алгоритмы
[ редактировать ]Параллельные алгоритмы отбора изучаются с 1975 года, когда Лесли Валиант представил модель параллельного дерева сравнений для анализа этих алгоритмов и доказал, что в этой модели отбор с использованием линейного числа сравнений требует параллельные шаги, даже для выбора минимума или максимума. [20] Позже исследователи обнаружили параллельные алгоритмы отбора в шагов, соответствующих этой границе. [21] [22] В модели дерева рандомизированных параллельных сравнений можно выполнять выбор за ограниченное число шагов и линейное число сравнений. [23] В более реалистичной модели вычислений с параллельным ОЗУ , с исключительным доступом к памяти для чтения и исключительной записи, выбор может выполняться вовремя. с процессоров, что оптимально как по времени, так и по количеству процессоров. [24] При одновременном доступе к памяти в целом возможно немного более быстрое параллельное время . [25] и срок в ограниченном времени может быть заменен на . [26]
Сублинейные структуры данных
[ редактировать ]Когда данные уже организованы в структуру данных , выбор может быть выполнен за время, сублинейное по количеству значений. В качестве простого случая для данных, уже отсортированных в массив, выбор Этот элемент может быть выполнен путем одного поиска в массиве за постоянное время. [27] Для значений, организованных в двумерный массив размером , при отсортированных строках и столбцах выбор может выполняться во времени или быстрее, когда мал по сравнению с размерами массива. [27] [28] Для коллекции одномерные отсортированные массивы, с элементы меньше, чем выбранный элемент в массив , время . [28]
Выбор из данных в двоичной куче требует времени . Это не зависит от размера из кучи и быстрее, чем ограниченное по времени, которое будет получено в результате поиска по принципу «сначала лучшее» . [28] [29] Тот же метод можно применять в более общем плане к данным, организованным в виде любого дерева с кучей (дерева, в котором каждый узел хранит одно значение, в котором родительский элемент каждого некорневого узла имеет меньшее значение, чем его дочерний элемент). Этот метод выполнения выбора в куче применялся к задачам составления списка нескольких решений задач комбинаторной оптимизации, таких как поиск k кратчайших путей во взвешенном графе, путем определения пространства состояний решений в форме неявно определенной кучи. упорядоченное дерево, а затем применить этот алгоритм выбора к этому дереву. [30] С другой стороны, алгоритмы выбора линейного времени используются в качестве подпрограммы в структуре данных приоритетной очереди, связанной с кучей, что сокращает время извлечения ее. этот предмет из к ; здесь это повторный логарифм . [31]
Для набора значений данных, подвергающихся динамическим вставкам и удалениям, дерево статистики заказов дополняет самобалансирующуюся структуру двоичного дерева поиска постоянным объемом дополнительной информации на каждый узел дерева, позволяя вставлять, удалять и выполнять запросы выбора, которые запрашивают -й элемент в текущем наборе, чтобы все были выполнены в время на одну операцию. [2] Выходя за рамки сравнительной модели вычислений, можно добиться более быстрого выполнения операции для значений, представляющих собой небольшие целые числа, над которыми разрешены двоичные арифметические операции . [32] Невозможно использовать потоковый алгоритм с сублинейной памятью в обоих случаях. и для решения запросов выбора именно для динамических данных, но скетч count-min можно использовать для приближенного решения запросов выбора, находя значение, положение которого в упорядочении элементов (если бы оно было добавлено к ним) было бы в пределах шаги , для эскиза, размер которого находится в пределах логарифмических коэффициентов . [33]
Нижние границы
[ редактировать ]The время работы описанных выше алгоритмов выбора необходимо, поскольку алгоритму выбора, который может обрабатывать входные данные в произвольном порядке, должно потребоваться столько времени, чтобы просмотреть все свои входные данные. Если какое-либо из его входных значений не сравнивается, это значение может быть тем, которое должно было быть выбрано, и алгоритм может дать неправильный ответ. [28] Помимо этого простого аргумента, было проведено значительное количество исследований точного количества сравнений, необходимых для отбора, как в рандомизированном, так и в детерминированном случаях.
Выбор минимума ценности требуют сравнения, потому что значения, которые не выбраны, должны быть определены как неминимальные, поскольку они являются наибольшими в некотором сравнении, и никакие два из этих значений не могут быть самыми большими в одном и том же сравнении. Тот же аргумент применим симметрично и к выбору максимума. [14]
Следующий простейший случай — выбор второго по величине. После нескольких неверных попыток первая точная нижняя оценка для этого случая была опубликована в 1964 году советским математиком Сергеем Кислицыным . Это можно показать, заметив, что выбор второго наименьшего значения также требует различения наименьшего значения от остальных, и рассмотрев число сравнений, включающих наименьшее значение, которое делает алгоритм для этой задачи. Каждый из элементы, которые сравнивались с наименьшим значением, являются кандидатами на второе наименьшее значение, и одно из этих значений должно оказаться больше другого значения при втором сравнении, чтобы исключить их как вторые по наименьшему значению.С значения являются большими, по крайней мере, в одном сравнении, и если значения больше по крайней мере в двух сравнениях, то всего имеется не менее сравнения. Аргумент противника , в котором результат каждого сравнения выбирается так, чтобы максимизировать (при условии соблюдения хотя бы одного возможного порядка), а не числовых значений данных элементов, показывает, что можно заставить быть по крайней мере . Следовательно, наихудшее количество сравнений, необходимое для выбора второго наименьшего значения, равно , то же число, которое было бы получено при проведении турнира на выбывание со вторым туром среди значений, проигравших до наименьшего значения. Однако ожидаемое количество сравнений алгоритма рандомизированного выбора может быть лучше этой границы; например, выбор второго наименьшего из шести элементов требует в худшем случае семи сравнений, но может быть выполнен с помощью рандомизированного алгоритма с ожидаемым числом 6,5 сравнений. [14]
В более общем плане, выбор й элемент из требуется как минимум сравнений, в среднем случае соответствующих числу сравнений алгоритма Флойда–Ривеста до его срок. Аргументация ведется непосредственно в пользу детерминированных алгоритмов с рядом сравнений, усредняемых по всем возможным перестановкам входных значений. [1] Согласно принципу Яо , это также применимо к ожидаемому количеству сравнений для рандомизированного алгоритма на его входных данных в худшем случае. [34]
Для детерминированных алгоритмов было показано, что выбор для этого элемента требуется сравнения, где — двоичная функция энтропии . [35] мере Особый случай поиска медианы имеет немного большую нижнюю границу количества сравнений, по крайней , для . [36]
Точное количество сравнений
[ редактировать ]Кнут предлагает следующий треугольник чисел, суммирующий пары чисел. и для которого известно точное количество сравнений, необходимое для оптимального алгоритма выбора. й ряд треугольника (начиная с в верхнем ряду) дает количество сравнений для входов ценности и число в каждой строке дает количество сравнений, необходимое для выбора наименьшее значение из входных данных такого размера. Строки симметричны, поскольку выбор наименьшее требует в худшем случае ровно столько же сравнений, сколько и выбор й по величине. [14]
Большую часть, но не все записи в левой половине каждой строки можно найти по формуле Это описывает количество сравнений, выполненных с помощью метода Абдоллы Хадиана и Милтона Собела , связанного с кучей, который находит наименьшее значение с использованием турнира с одним выбыванием, а затем повторно использует меньший турнир среди значений, исключенных возможными победителями турнира, чтобы найти следующие последовательные значения до достижения самый маленький. [14] [37] С помощью компьютерного поиска было доказано, что некоторые из более крупных записей являются оптимальными. [14] [38]
Языковая поддержка
[ редактировать ]Очень немногие языки имеют встроенную поддержку общего выбора, хотя многие предоставляют средства для поиска наименьшего или самого большого элемента списка. Заметным исключением является Стандартная библиотека шаблонов для C++ , которая предоставляет nth_element
метод с гарантией ожидаемого линейного времени. [3]
Python включает в себя Стандартная библиотека heapq.nsmallest
и heapq.nlargest
функции для возврата самых маленьких или самых больших элементов из коллекции в отсортированном порядке. Реализация поддерживает двоичную кучу , ограниченную хранением элементы и инициализируется первым элементы в коллекции. Тогда каждый последующий элемент коллекции может заменить самый большой или самый маленький элемент в куче, если он меньше или больше этого элемента. Использование памяти алгоритмом превосходит алгоритм heapselect (первый поддерживает только элементы в памяти одновременно, в то время как последний требует манипулирования всем набором данных в памяти). Время выполнения зависит от порядка данных. В лучшем случае это для уже отсортированных данных. Худший случай для обратно отсортированных данных. В обычных случаях обновлений кучи, скорее всего, будет немного, и большинство входных элементов обрабатываются только с одним сравнением. Например, извлечение 100 самых больших или наименьших значений из 10 000 000 случайных входных данных дает в среднем 10 009 401 сравнение. [39]
С 2017 года в состав Matlab входит maxk()
и mink()
функции, которые возвращают максимальное (минимальное) значения в векторе, а также их индексы. В документации Matlab не указано, какой алгоритм используют эти функции или каково время их работы. [40]
История
[ редактировать ]Quickselect был представлен Тони Хоаром без анализа в 1965 году. [41] и впервые проанализирован в техническом отчете Дональда Кнута в 1971 году . [11] Первым известным алгоритмом детерминированного выбора с линейным временем является метод медианы медиан , опубликованный в 1973 году Мануэлем Блюмом , Робертом Флойдом , Воаном Праттом , Роном Ривестом и Робертом Тарджаном . [5] Они связывают формулировку проблемы отбора с работой Чарльза Л. Доджсона (более известного как Льюис Кэрролл ), который в 1883 году отметил, что обычная структура спортивных турниров с выбыванием одного игрока не гарантирует, что второй лучший игрок займет второе место. [5] [42] и работе Хьюго Штайнхауса примерно в 1930 году, который следовал той же мысли, требуя разработать турнирный план, который мог бы обеспечить эту гарантию с минимальным количеством сыгранных игр (то есть сравнений). [5]
См. также
[ редактировать ]- Геометрическая медиана § Вычисления , алгоритмы многомерного обобщения медиан
- Медианный фильтр , применение алгоритмов поиска медианы при обработке изображений
Ссылки
[ редактировать ]- ^ Jump up to: а б Кунто, Уолтер; Манро, Дж. Ян (1989). «Средний выбор случая» . Журнал АКМ . 36 (2): 270–279. дои : 10.1145/62044.62047 . МР 1072421 . S2CID 10947879 .
- ^ Jump up to: а б с д и ж г час Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л .; Штейн, Клиффорд (2009) [1990]. «Глава 9: Медианы и статистика заказов». Введение в алгоритмы (3-е изд.). MIT Press и McGraw-Hill. стр. 213–227. ISBN 0-262-03384-4 . ; «Раздел 14.1: Динамическая статистика заказов», стр. 339–345.
- ^ Jump up to: а б с д Скиена, Стивен С. (2020). «17.3: Медиана и выбор». Руководство по проектированию алгоритмов . Тексты по информатике (Третье изд.). Спрингер. стр. 514–516. дои : 10.1007/978-3-030-54256-6 . ISBN 978-3-030-54255-9 . МР 4241430 . S2CID 22382667 .
- ^ Jump up to: а б с д и Эриксон, Джефф (июнь 2019 г.). «1.8: Выбор линейного времени». Алгоритмы . стр. 35–39.
- ^ Jump up to: а б с д и ж Блюм, Мануэль ; Флойд, Роберт В .; Пратт, Воган ; Ривест, Рональд Л .; Тарьян, Роберт Э. (1973). «Сроки выбора» (PDF) . Журнал компьютерных и системных наук . 7 (4): 448–461. дои : 10.1016/S0022-0000(73)80033-9 . МР 0329916 .
- ^ Бродал, Герт Столтинг (2013). «Опрос приоритетных очередей». В Броднике, Андрей; Лопес-Ортис, Алехандро; Раман, Венкатеш; Виола, Альфредо (ред.). Компактные структуры данных, потоки и алгоритмы - статьи в честь Дж. Яна Манро по случаю его 66-летия . Конспекты лекций по информатике. Том. 8066. Спрингер. стр. 150–163. дои : 10.1007/978-3-642-40273-9_11 . ISBN 978-3-642-40272-2 .
- ^ Jump up to: а б с д Кляйнберг, Джон ; Тардос, Ева (2006). «13.5 Рандомизированный разделяй и властвуй: поиск медианы и быстрая сортировка». Алгоритм проектирования . Аддисон-Уэсли. стр. 727–734. ISBN 9780321295354 .
- ^ Например, Кормен и др. используйте раздел массива на месте, в то время как Кляйнберг и Тардос описывают входные данные как набор и используют метод, который разделяет их на два новых набора.
- ^ Jump up to: а б с д Гудрич, Майкл Т .; Тамассия, Роберто (2015). «9.2: Выбор». Разработка алгоритмов и их применение . Уайли. стр. 270–275. ISBN 978-1-118-33591-8 .
- ^ Деврой, Люк (1984). «Экспоненциальные оценки времени работы алгоритма выбора» (PDF) . Журнал компьютерных и системных наук . 29 (1): 1–7. дои : 10.1016/0022-0000(84)90009-6 . МР 0761047 . Деврой, Люк (2001). «О вероятностном наихудшем времени «найти» » (PDF) . Алгоритмика . 31 (3): 291–303. дои : 10.1007/s00453-001-0046-2 . МР 1855252 . S2CID 674040 .
- ^ Jump up to: а б Флойд, Роберт В .; Ривест, Рональд Л. (март 1975 г.). «Ожидаемые сроки отбора» . Коммуникации АКМ . 18 (3): 165–172. дои : 10.1145/360680.360691 . S2CID 3064709 . См. также «Алгоритм 489: алгоритм SELECT — для поиска самый маленький из элементы», стр. 173, дои : 10.1145/360680.360694 .
- ^ Браун, Теодор (сентябрь 1976 г.). «Замечание к алгоритму 489». Транзакции ACM в математическом программном обеспечении . 2 (3): 301–304. дои : 10.1145/355694.355704 . S2CID 13985011 .
- ^ Постмус, Джей Ти; Риннуй Кан, AHG ; Тиммер, GT (1983). «Эффективный метод динамического отбора» . Коммуникации АКМ . 26 (11): 878–881. дои : 10.1145/182.358440 . МР 0784120 . S2CID 3211474 .
- ^ Jump up to: а б с д и ж Кнут, Дональд Э. (1998). «Раздел 5.3.3: Выбор минимального сравнения». Искусство компьютерного программирования, Том 3: Сортировка и поиск (2-е изд.). Аддисон-Уэсли. стр. 207–219. ISBN 0-201-89685-0 .
- ^ Карлофф, Ховард Дж.; Рагхаван, Прабхакар (1993). «Рандомизированные алгоритмы и псевдослучайные числа» . Журнал АКМ . 40 (3): 454–476. дои : 10.1145/174130.174132 . МР 1370358 . S2CID 17956460 .
- ^ Гурвиц, Хая (1992). «Об обучении алгоритмам нахождения медианы». Транзакции IEEE по образованию . 35 (3): 230–232. Бибкод : 1992ITEdu..35..230G . дои : 10.1109/13.144650 .
- ^ Массер, Дэвид Р. (август 1997 г.). «Алгоритмы интроспективной сортировки и отбора». Программное обеспечение: практика и опыт . 27 (8). Уайли: 983–993. doi : 10.1002/(sici)1097-024x(199708)27:8<983::aid-spe117>3.0.co;2-# .
- ^ Шенхаге, А .; Патерсон, М .; Пиппенджер, Н. (1976). «Нахождение медианы». Журнал компьютерных и системных наук . 13 (2): 184–199. дои : 10.1016/S0022-0000(76)80029-3 . МР 0428794 . S2CID 29867292 .
- ^ Дор, Дорит ; Цвик, Ури (1999). «Выбор медианы». SIAM Journal по вычислительной технике . 28 (5): 1722–1758. дои : 10.1137/S0097539795288611 . МР 1694164 . S2CID 2633282 .
- ^ Валиант, Лесли Г. (1975). «Параллелизм в задачах сравнения». SIAM Journal по вычислительной технике . 4 (3): 348–355. дои : 10.1137/0204030 . МР 0378467 .
- ^ Айтаи, Миклош ; Комлос, Янош ; Штайгер, В.Л.; Семереди, Эндре (1989). «Оптимальный параллельный выбор имеет сложность ". Журнал компьютерных и системных наук . 38 (1): 125–133. doi : 10.1016/0022-0000(89)90035-4 . MR 0990052 .
- ^ Азар, Йоси; Пиппенджер, Николас (1990). «Параллельный отбор». Дискретная прикладная математика . 27 (1–2): 49–58. дои : 10.1016/0166-218X(90)90128-Y . МР 1055590 .
- ^ Рейщук, Рюдигер (1985). «Вероятностные параллельные алгоритмы сортировки и отбора». SIAM Journal по вычислительной технике . 14 (2): 396–409. дои : 10.1137/0214030 . МР 0784745 .
- ^ Хан, Ицзе (2007). «Оптимальный параллельный выбор». Транзакции ACM на алгоритмах . 3 (4): А38:1–А38:11. дои : 10.1145/1290672.1290675 . МР 2364962 . S2CID 9645870 .
- ^ Чаудхури, Шива; Хагеруп, Торбен; Раман, Раджив (1993). «Приблизительный и точный детерминированный параллельный выбор». В Боржишковском, Анджей М.; Соколовский, Стефан (ред.). Математические основы информатики 1993, 18-й международный симпозиум, MFCS'93, Гданьск, Польша, 30 августа – 3 сентября 1993 г., Труды . Конспекты лекций по информатике. Том. 711. Спрингер. стр. 352–361. дои : 10.1007/3-540-57182-5_27 . hdl : 11858/00-001M-0000-0014-B748-C . ISBN 978-3-540-57182-7 .
- ^ Дитц, Пол Ф.; Раман, Раджив (1999). «Малоранговый отбор параллельно с заявками на кучное строительство». Журнал алгоритмов . 30 (1): 33–51. дои : 10.1006/jagm.1998.0971 . МР 1661179 .
- ^ Jump up to: а б Фредериксон, Грег Н.; Джонсон, Дональд Б. (1984). «Обобщенный отбор и ранжирование: отсортированные матрицы». SIAM Journal по вычислительной технике . 13 (1): 14–30. дои : 10.1137/0213002 . МР 0731024 .
- ^ Jump up to: а б с д Каплан, Хаим; Козма, Ласло; Замир, Ор; Цвик, Ури (2019). «Выбор из кучи, матриц с сортировкой по строкам и использование мягких куч». В Файнмане, Джереми Т.; Митценмахере, Майкле (ред.). 2-й симпозиум по простоте алгоритмов, SOSA 2019, 8–9 января 2019 г., Сан-Диего, Калифорния, США . OASIcs. Vol. 69. Замок Дагштуль — Центр компьютерных наук Лейбница : 1802.07041 doi arXiv : 10.4230 /OASICs.SOSA.2019.5 .
- ^ Фредериксон, Грег Н. (1993). «Оптимальный алгоритм выбора в мин-куче» . Информация и вычисления . 104 (2): 197–214. дои : 10.1006/inco.1993.1030 . МР 1221889 .
- ^ Эппштейн, Дэвид (1999). «Нахождение кратчайшие пути». SIAM Journal on Computing . 28 (2): 652–673. doi : 10.1137/S0097539795290477 . MR 1634364 .
- ^ Бабенко Максим; Колесниченко Игнат; Смирнов, Иван (2019). «Каскадная куча: к оптимальному по времени извлечению». Теория вычислительных систем . 63 (4): 637–646. дои : 10.1007/s00224-018-9866-1 . МР 3942251 . S2CID 253740380 .
- ^ Патрашку, Михай ; Торуп, Миккель (2014). «Динамические наборы целых чисел с оптимальным рангом, выбором и поиском предшественников». 55-й Ежегодный симпозиум IEEE по основам компьютерных наук, FOCS 2014, Филадельфия, Пенсильвания, США, 18–21 октября 2014 г. Компьютерное общество IEEE. стр. 166–175. arXiv : 1408.3045 . дои : 10.1109/FOCS.2014.26 . ISBN 978-1-4799-6517-5 .
- ^ Кормод, Грэм; Мутукришнан, С. (2005). «Улучшенная сводка потока данных: эскиз счетчика минут и его приложения». Журнал алгоритмов . 55 (1): 58–75. дои : 10.1016/j.jalgor.2003.12.001 . МР 2132028 .
- ^ Чан, Тимоти М. (2010). «Нижние границы выбора во времени и пространстве на основе сравнения». Транзакции ACM на алгоритмах . 6 (2): А26:1–А26:16. дои : 10.1145/1721837.1721842 . МР 2675693 . S2CID 11742607 .
- ^ Бент, Сэмюэл В.; Джон, Джон В. (1985). «Нахождение медианы требует сравнения». В Седжвике, Роберт (редактор). Материалы 17-го ежегодного симпозиума ACM по теории вычислений, 6–8 мая 1985 г., Провиденс, Род-Айленд, США . Ассоциация вычислительной техники. стр. 213–216. doi : 10.1145/22145.22169 . ISBN 0-89791-151-2 .
- ^ Дор, Дорит ; Цвик, Ури (2001). «Медианный отбор требует сравнения». SIAM Journal on Discrete Mathematics . 14 (3): 312–325. doi : 10.1137/S0895480199353895 . MR 1857348 .
- ^ Хадиан, Абдолла; Собел, Милтон (май 1969 г.). Выбор -th по величине с использованием двоичных безошибочных сравнений (Отчет). Технические отчеты Школы статистики. Том. 121. Университет Миннесоты. hdl : 11299/199105 .
- ^ Гасарч, Уильям ; Келли, Уэйн; Пью, Уильям (июль 1996 г.). «Нахождение по величине из для маленьких ". Новости ACM SIGACT . 27 (2): 88–96. doi : 10.1145/235767.235772 . S2CID 3133332 .
- ^ «исходный код пакета heapq» . Библиотека Python . Проверено 6 августа 2023 г. ; см. также связанное сравнение производительности алгоритма на данных наилучшего случая .
- ^ «норка: найти k наименьших элементов массива» . Документация Matlab R2023a . Математические работы . Проверено 30 марта 2023 г.
- ^ Хоар, ЦАР (июль 1961 г.). «Алгоритм 65: Найти». Коммуникации АКМ . 4 (7): 321–322. дои : 10.1145/366622.366647 .
- ^ Доджсон, Чарльз Л. (1883). Турниры по лаун-теннису: истинный метод назначения призов с доказательством ошибочности нынешнего метода . Лондон: Macmillan and Co. См. также. Уилсон, Робин; Моктефи, Амируш, ред. (2019). «Турниры по лаун-теннису» . Математический мир Чарльза Л. Доджсона (Льюис Кэрролл) . Издательство Оксфордского университета. п. 129. ИСБН 9780192549013 .