X + Y сортировка - X + Y sorting

В Информатика, Икс + Y сортировка это проблема сортировка пары номеров по их сумме. Для двух конечных множеств Икс и Y, обе одинаковой длины, проблема состоит в том, чтобы заказать все пары (Икс, у) в Декартово произведение Икс × Y в числовом порядке по значению Икс + у. Проблема связана с Элвин Берлекамп.[1][2]

Классическая сортировка сравнения

Вопрос, Web Fundamentals.svgНерешенная проблема в информатике:
Есть алгоритм сортировки быстрее, чем ?
(больше нерешенных проблем в информатике)

Эту проблему можно решить с помощью простого сортировка сравнения на декартовом произведении двух данных множеств. Когда наборы имеют размер , их товар имеет размер , а время для алгоритма сортировки сравнения равно . Это лучший известный на тот момент верхний предел для данной проблемы. Ли сортировка может выполняться в более медленно растущие сроки - это открытая проблема.[3][2]

Харпер и др. (1975) предлагаю отдельно сортировку и , а затем построение двумерной матрицы значений который сортируется как по строкам, так и по столбцам перед использованием этих частично отсортированных данных для завершения сортировки . Хотя это может уменьшить количество необходимых сравнений на постоянный коэффициент, по сравнению с простой сортировкой сравнения, они показывают, что любой алгоритм сортировки сравнения, который может работать для произвольных матрицы, отсортированные по строкам и столбцам, по-прежнему требуют сравнения, поэтому дополнительная информация о наборе сверх этого упорядочения матриц потребуется для любого более быстрого алгоритма сортировки.[1]

Количество заказов

Числа в двух списках ввода для проблему сортировки можно интерпретировать как Декартовы координаты точки в -мерное пространство . Если кто-то разбивает пространство в ячейки, поэтому набор имеет фиксированный порядок внутри каждой ячейки, тогда границы между этими ячейками гиперплоскости определяется равенством пар . Количество гиперплоскостей, которое можно определить таким образом, равно , и количество ячеек, которое это количество гиперплоскостей может разделить пространство размерности в меньше чем . Следовательно, множество имеет самое большее различные возможные заказы.[1][4]

Количество сравнений

Количество сравнений, необходимое для сортировки конечно ниже, чем при обычной сравнительной сортировке: Майкл Фредман показал в 1976 году, что сортировку можно произвести, используя только О(п2) сравнения. В более общем плане он показывает, что любой набор элементы, сортировка которых уже ограничена семейством заказов, можно отсортировать с помощью сравнения, по форме сортировка двоичной вставкой. Для проблема сортировки, , и , так и оценка Фредмана означает, что только сравнения нужны. Однако время, необходимое для принятия решения о том, какие сравнения выполнить, может быть значительно больше, чем ограничение на количество сравнений.[4] Если бы только сравнения между элементами разрешены, то существует также соответствующая нижняя граница по количеству необходимых сравнений.[4][5]

Первый реальный алгоритм, который достигает обоих сравнения и Общая сложность была опубликована шестнадцатью годами позже. Сначала алгоритм рекурсивно сортирует два набора и , и использует эквивалентность вывести отсортированный порядок и без дополнительных сравнений. Затем он объединяет два набора и и использует объединенный порядок и эквивалентность вывести отсортированный порядок без дополнительных сравнений. Часть алгоритма, рекурсивно сортирующая (или эквивалентно ) делает это путем разделения на два равных подсписка и , рекурсивная сортировка и , подразумевая заказ на как указано выше, и объединение отсортированных результатов , , и вместе.[6]

Алгоритмы, не основанные на сравнении

На RAM машина с размер слова ш и целочисленные входы 0 ≤ {Икс, у} < п = 2ш, проблема может быть решена в О(п бревно п) операции с помощью быстрое преобразование Фурье.[1]

Приложения

Стивен Скиена рассказывает о практическом применении в пути транспортные расходы минимизация, экземпляр проблема кратчайшего пути: данные тарифы Икс и у для поездок из пункта отправления A в промежуточный пункт назначения B и из пункта B в пункт назначения C, когда разрешено комбинировать только определенные пары тарифов, найдите самый дешевый объединенный рейс из пункта A в C. Решение Skiena состоит в сортировке пар тарифов как экземпляр проблема сортировки, а затем тестирование полученных пар в этом отсортированном порядке, пока не будет найдена разрешенная. Для этой задачи можно использовать приоритетная очередь пар, инициализированных, чтобы содержать одну пару с самой дешевой общей парой тарифов. Тогда, когда пара оказывается запрещенным, еще две пары образуются путем объединения и с их преемниками в соответствующих отсортированных списках тарифов с одним прыжком, могут быть добавлены (если еще не представлены) в очередь приоритетов. Таким образом, каждая последующая пара может быть найдена за логарифмическое время, и нужно отсортировать только пары до первой допустимой.[3]

Несколько других проблем в вычислительная геометрия иметь эквивалентную или более сложную сложность сортировка, в том числе построение Суммы Минковского многоугольников лестниц, нахождение точек пересечения расположение линий в отсортированном порядке по их -координаты, перечисление пар точек в отсортированном порядке по их расстояниям и проверка того, прямолинейный многоугольник может быть переведено так, чтобы соответствовать другому.[7]

Смотрите также

Рекомендации

  1. ^ а б c d Harper, L.H .; Payne, T. H .; Сэвидж, Дж. Э.; Штраус, Э. (1975). «Сортировка X + Y». Коммуникации ACM. 18 (6): 347–349. Дои:10.1145/360825.360869.
  2. ^ а б Демейн, Эрик; Эриксон, Джефф; О'Рурк, Джозеф (20 августа 2006 г.). «Задача 41: Сортировка X + Y (попарные суммы)». Проект открытых проблем. Получено 23 сентября 2014.
  3. ^ а б Скиена, Стивен (2008). «4.4 Военная история: Дайте мне билет на самолет». Руководство по разработке алгоритмов (2-е изд.). Springer. С. 118–120. Дои:10.1007/978-1-84800-070-4_4.
  4. ^ а б c Фредман, Майкл Л. (1976). «Насколько хорошо теория информации связана с сортировкой?». Теоретическая информатика. 1 (4): 355–361. Дои:10.1016/0304-3975(76)90078-5.
  5. ^ Дицфельбингер, Мартин (1989). «Нижние оценки для сортировки сумм». Теоретическая информатика. 66 (2): 137–155. Дои:10.1016/0304-3975(89)90132-1. МИСТЕР  1019082.
  6. ^ Ламбер, Жан-Люк (1992). «Сортировка сумм (Икся + уj) в О(п2) сравнения ». Теоретическая информатика. 103 (1): 137–141. Дои:10.1016 / 0304-3975 (92) 90089-X.
  7. ^ Эрнандес Баррера, Антонио (1996). "Нахождение о(п2 бревно п) алгоритм иногда бывает сложным " (PDF). Труды 8-й Канадской конференции по вычислительной геометрии (CCCG'96). С. 289–294.