Jump to content

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

Это хорошая статья. Нажмите здесь для получения дополнительной информации.

Нерешенная задача в информатике :
Есть ли алгоритм сортировки быстрее, чем ?
Геометрическая визуализация проблема с сортировкой. Входные наборы и представлены наборами вертикальных и горизонтальных черных линий (соответственно), и цель задачи — отсортировать точки пересечения по положению проходящих через них красных диагональных линий.

В информатике , Сортировка — это задача сортировки пар чисел по их суммам. Приложения этой проблемы включают транзитных тарифов минимизацию , проектирование СБИС и умножение разреженных полиномов . Как и в случае с сортировкой сравнения и сортировкой целых чисел в более общем плане, алгоритмы для этой задачи могут быть основаны только на сравнении этих сумм или на других операциях, которые работают только тогда, когда входные данные представляют собой небольшие целые числа.

Неизвестно, существует ли у этой проблемы решение на основе сравнения, время выполнения которого асимптотически быстрее, чем сортировка неструктурированного списка из одинакового количества элементов. Поэтому исследования проблемы были сосредоточены на двух подходах к решению вопроса о том, возможно ли такое улучшение: разработка алгоритмов, которые улучшают неструктурированную сортировку по количеству сравнений, а не по общему времени выполнения, и нижние границы для количество сравнений на основе подсчета ячеек в подразделениях многомерных пространств. Оба подхода исторически связаны друг с другом: первые алгоритмы, которые использовали мало сравнений, были основаны на слабости нижних границ подсчета ячеек.

Постановка задачи и история

[ редактировать ]

Вход в задача сортировки состоит из двух конечных наборов чисел и , той же длины. Результатом задачи является сбор всех пар чисел из и номер из , упорядоченные по сумме каждой пары. [ 1 ] В качестве небольшого примера для входных данных и , на выходе должен быть список пар одного элемента из и один элемент из , перечисленные в отсортированном порядке по суммам пар Одним из способов решения проблемы было бы создание сортируемых пар ( декартово произведение двух коллекций) и использование этих пар в качестве входных данных для стандартного алгоритма сортировки сравнения, такого как сортировка слиянием или пирамидальная сортировка . Когда входные данные имеют длину , они образуют пар, и время на сортировку пар таким образом равно . С точки зрения обозначения большого О , этот метод является самым быстрым из известных алгоритмов для сортировка. Существует ли более быстрый алгоритм — открытая проблема . [ 1 ] [ 2 ] поставлен Элвином Берлекэмпом до 1975 года. [ 1 ] [ 3 ]

Вариант проблемы сортирует sumset , набор сумм пар, при этом повторяющиеся суммы сводятся к одному значению. Для этого варианта размер суммы может быть значительно меньше, чем и чувствительные к выходу алгоритмы его построения. исследованы [ 4 ]

Приложения

[ редактировать ]

Стивен Скиена рассказывает о практическом применении минимизации тарифов на транзит , примере задачи о кратчайшем пути : найти самый дешевый билет на самолет с двумя перелетами между двумя заданными городами, используя входные данные, которые описывают как стоимость каждого перелета, так и возможные пары перелетов. объединены в один билет. Решение Скиены состоит в сортировке пар переходов по их общей стоимости в качестве примера проблема сортировки, а затем тестирование полученных пар в этом отсортированном порядке до тех пор, пока не будет найдена разрешенная пара. Чтобы сгенерировать отсортированные пары в этом порядке, Скиена использует приоритетную очередь пар, первоначально содержащую только одну пару, состоящую из двух самых дешевых прыжков. Затем, когда пара удаляется из очереди и оказывается запрещенным, добавляются еще две пары, причем одна из этих двух пар объединяется со следующим прыжком после в отсортированном списке переходов к месту назначения, а другая пара, объединяющая со следующим прыжком после в отсортированном списке прыжков с самого начала. Таким образом, каждая последующая пара может быть найдена за логарифмическое время, и сортировать нужно только пары до первой допустимой. [ 2 ]

Сортировка — самая дорогая подпрограмма в алгоритме решения задачи проектирования СБИС , в которой необходимо разместить два субблока схемы СБИС бок о бок вдоль канала связи, чтобы минимизировать ширину канала, необходимую для маршрутизации пар провода от одного субблока к другому. Поскольку один субблок постоянно смещается относительно другого, ширина канала изменяется только в дискретных положениях, где концы двух проводов совпадают друг с другом, и нахождение отсортированного порядка этих положений для вычисления последовательности изменений ширины может быть выполнено сортировка. Если бы эту задачу сортировки можно было ускорить, это также ускорило бы и задачу проектирования СБИС. [ 5 ]

Другое приложение включает в себя полиномиальное умножение полиномов от одной переменной, которые могут иметь гораздо меньше членов, чем их степени . Произведение двух многочленов можно выразить как сумму произведений пар членов, по одному из каждого многочлена, и размещение этих почленных произведений в порядке степеней равносильно их сортировке по сумме степеней. Например, экземпляр сортировка с приведенный выше пример соответствует умножению двух трехчленных многочленов для получения девятичленного многочлена: Степени всегда являются целыми числами, поэтому алгоритмы на основе целых чисел может применяться сортировка. [ 6 ] Однако для полиномов, количество членов которых сопоставимо с их степенью, алгоритмы полиномиального умножения на основе БПФ могут быть значительно более эффективными, чем почленное умножение. [ 7 ]

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

[ редактировать ]

Хорошо известная нижняя граница неструктурированной сортировки в модели дерева решений основана на факториальном числе отсортированных порядков, которое может иметь неструктурированный список. Поскольку каждое сравнение может в лучшем случае уменьшить количество возможных упорядочений в два раза, сортировка требует количества сравнений, по крайней мере равного двоичному логарифму факториала, который равен . [ 8 ] Ранняя работа над сортировка использовала аналогичный подход, задавая вопрос, сколько различных отсортированных порядков возможно для этой задачи, и доказывая, что это число не более . Однако, поскольку его двоичный логарифм не более , что намного меньше известных временных границ для сортировки, этот метод может привести только к слабым нижним оценкам числа сравнений. [ 3 ] [ 9 ]

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

Подобный стиль анализа оказался более успешным в исключении быстрых решений определенных обобщений сортировку, показывая, что у них слишком много заказов, чтобы их можно было быстро отсортировать. В частности, Харпер и др. (1975) предлагают отдельно сортировать и , а затем построим двумерную матрицу значений которые сортируются как по строкам, так и по столбцам, прежде чем использовать эти частично отсортированные данные для завершения сортировки . [ 3 ] Эта идея использования матрицы с сортировкой по строкам и по столбцам лежит в основе метода, использованного Скиеной в транспортном приложении: [ 2 ] и это может уменьшить количество сравнений на постоянный коэффициент по сравнению с наивной сортировкой сравнения. Однако для матриц, строки и столбцы которых отсортированы таким образом, количество возможных отсортированных упорядочений всей матрицы намного больше, чем настолько велик, что любой алгоритм сортировки сравнением, который может работать для произвольных матрицы, отсортированные по строкам и столбцам, по-прежнему требуют сравнения. Следовательно, если проблема сортировки должна быть решена быстро, для решения необходимо использовать дополнительная информация о наборе за пределами этого матричного порядка. [ 3 ]

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

[ редактировать ]

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

Первый явный алгоритм, который достигает обоих сравнения и через шестнадцать лет после Фредмана «Тотальная сложность» была опубликована Ламбертом (1992) . Алгоритм выполняет следующие шаги:

  1. Рекурсивно отсортировать два набора и .
  2. Используйте эквивалентность вывести отсортированный порядок и без дополнительных сравнений.
  3. Объедините два набора и в единый отсортированный порядок, используя ряд сравнений, линейных по их общему размеру.
  4. Используйте объединенный порядок и эквивалентность вывести отсортированный порядок без дополнительных сравнений.

Часть алгоритма, которая рекурсивно сортирует (или эквивалентно ) делает это, выполнив следующие действия:

  1. Расколоть на два равных подсписка и .
  2. Рекурсивная сортировка и
  3. Сделайте вывод о порядке используя только сравнения с одного шага слияния, как указано выше.
  4. Объединить отсортированные результаты , , и вместе.

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

Если бы только сравнения между элементами разрешены, то существует также соответствующая нижняя граница по количеству сравнений, [ 9 ] [ 12 ] но при более общих сравнениях, включающих линейные комбинации постоянного числа элементов, только сравнения нужны. [ 13 ]

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

[ редактировать ]

Точно так же, как сортировка целых чисел может быть быстрее, чем сортировка сравнения для достаточно маленьких целых чисел, то же самое верно и для сортировка. В частности, с целочисленными входами в диапазоне от до некоторого верхнего предела , проблема может быть решена в операции с помощью быстрого преобразования Фурье . [ 1 ] [ 3 ]

[ редактировать ]

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

Задача проверки того, являются ли две пары в Проблема сортировки равных сумм может быть решена путем сортировки пар, а затем проверки последовательных пар на равенство. В свою очередь, его можно использовать для решения задачи 3SUM , а это означает, что у него вряд ли будет строго субквадратичный алгоритм. [ 1 ]

  1. ^ Jump up to: а б с д и Демейн, Эрик ; Эриксон, Джефф; О'Рурк, Джозеф (20 августа 2006 г.). «Задача 41: Сортировка X + Y (парные суммы)» . Проект «Открытые проблемы» . Проверено 23 сентября 2014 г.
  2. ^ Jump up to: а б с Скиена, Стивен (2008). «4.4 Военная история: дайте мне билет на самолет». Руководство по разработке алгоритмов (2-е изд.). Спрингер. стр. 118–120. дои : 10.1007/978-1-84800-070-4_4 .
  3. ^ Jump up to: а б с д и ж Харпер, Л.Х.; Пейн, TH; Сэвидж, Дж. Э. ; Штраус, Э. (1975). «Сортировка X + Y » . Коммуникации АКМ . 18 (6): 347–349. дои : 10.1145/360825.360869 . МР   0378473 . S2CID   26360885 .
  4. ^ Арнольд, Эндрю; Рош, Дэниел С. (2015). «Алгоритмы, чувствительные к выходу, для умножения сумм и разреженных полиномов». Материалы Международного симпозиума ACM по символическим и алгебраическим вычислениям 2015 г. (ISSAC'15) . Нью-Йорк: ACM. стр. 29–36. arXiv : 1501.05296 . дои : 10.1145/2755996.2756653 . ISBN  978-1-4503-3435-8 . МР   3388279 .
  5. ^ ЛаПо, Андреа С .; Пинтер, Рон Ю. (1983). «О минимизации плотности каналов путем латерального смещения». Международная конференция IEEE по компьютерному проектированию . стр. 123–124. Как цитирует Джонсон, Дэвид С .; ЛаПо, Андреа С.; Пинтер, Рон Ю. (1994). «Минимизация плотности каналов путем бокового смещения компонентов» . В Sleator, Дэниел Доминик (ред.). Материалы пятого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам. 23-25 ​​января 1994 г., Арлингтон, Вирджиния, США . стр. 122–131.
  6. ^ Клип, Доротея А. (1979). «Новые алгоритмы полиномиального умножения». SIAM Journal по вычислительной технике . 8 (3): 326–343. дои : 10.1137/0208025 . МР   0539251 .
  7. ^ Кларрайх, Эрика (декабрь 2019 г.). «Умножение достигает предела скорости». Коммуникации АКМ . 63 (1): 11–13. дои : 10.1145/3371387 . S2CID   209450552 .
  8. ^ Кормен, Томас Х .; Лейзерсон, Чарльз Э .; Ривест, Рональд Л .; Штейн, Клиффорд (2009) [1990]. «8.1 Нижние границы сортировки». Введение в алгоритмы (3-е изд.). MIT Press и McGraw-Hill. стр. 191–193. ISBN  0-262-03384-4 .
  9. ^ Jump up to: а б с д Фредман, Майкл Л. (1976). «Насколько хорошо теория информации связана с сортировкой?». Теоретическая информатика . 1 (4): 355–361. дои : 10.1016/0304-3975(76)90078-5 . МР   0416100 .
  10. ^ Слоан, Нью-Джерси (ред.). «Последовательность A343245» . Электронная энциклопедия целочисленных последовательностей . Фонд ОЭИС.
  11. ^ Ламбер, Жан-Люк (1992). «Сортировка сумм ( x i + y j ) за O ( n 2 ) сравнения». Theoretical Computer Science . 103 (1): 137–141. doi : 10.1016/0304-3975(92)90089-X . MR   1181041 .
  12. ^ Дитцфельбингер, Мартин (1989). «Нижние оценки сортировки сумм». Теоретическая информатика . 66 (2): 137–155. дои : 10.1016/0304-3975(89)90132-1 . МР   1019082 .
  13. ^ Кейн, Дэниел М .; Ловетт, Шачар; Моран, Шей (2019). «Почти оптимальные линейные деревья решений для k -суммы и связанных с ней задач». Журнал АКМ . 66 (3): А16:1–А16:18. arXiv : 1705.01720 . дои : 10.1145/3285953 . МР   3941341 . S2CID   145914158 .
  14. ^ Эрнандес Баррера, Антонио (1996). «Нахождение o ( n 2 log n ) алгоритм иногда сложен» (PDF) . Proceedings of the 8th Canadian Conference on Computational Geometry (CCCG'96) . стр. 289–294.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1292615d8ea302e2dfedefa3f587e956__1718045100
URL1:https://arc.ask3.ru/arc/aa/12/56/1292615d8ea302e2dfedefa3f587e956.html
Заголовок, (Title) документа по адресу, URL1:
X + Y sorting - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)