Jump to content

K-отсортированная последовательность

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

Почти отсортированные последовательности особенно полезны, когда точный порядок элементов не имеет большого значения. Например Твиттер [1] почти сортировать твиты с точностью до секунды, поскольку в большей точности нет необходимости. Фактически, учитывая невозможность точно синхронизировать все компьютеры, точная сортировка всех твитов по времени их публикации невозможна. Эта идея привела к созданию идентификаторов Snowflake .

-сортировка – это операция изменения порядка элементов последовательности таким образом, чтобы она стала - отсортировано. -сортировка обычно более эффективна, чем сортировка. Аналогично сортировать последовательность проще, если известно, что последовательность - отсортировано. Итак, если программе нужно только учитывать -сортированные последовательности как входные или выходные, учитывая -сортированные последовательности могут сэкономить время.

Радиус , то есть его значение указывает , последовательности — это мера предварительной сортировки насколько нужно переместить элементы в списке, чтобы получить полностью отсортированное значение. В приведенном выше примере твитов, отсортированных до секунды, радиус ограничен количеством твитов в секунду.

Определение

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

Учитывая положительное число , последовательность Говорят, что это -сортировано, если для каждого и для каждого , . То есть последовательность необходимо упорядочивать только для пар элементов, расстояние которых не менее .

Радиус последовательности , обозначенный [2] или [3] самый маленький такая, что последовательность - отсортировано. Радиус является мерой предварительной сортировки .

Последовательность называется почти отсортированной или грубо отсортированной, если ее радиус мал по сравнению с ее длиной.

Эквивалентное определение

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

Последовательность является -сортируется тогда и только тогда, когда каждый диапазон длины , является - отсортировано.

Характеристики

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

Все последовательности длины являются -сортированный, то есть . Последовательность -sorted тогда и только тогда, когда оно отсортировано. А -сортированная последовательность автоматически -отсортировано, но не обязательно - отсортировано.

Связь с отсортированными последовательностями

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

Дана последовательность a -сортированная последовательность и его отсортированная перестановка , самое большее .

Алгоритмы

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

Решение о том, является ли последовательность -сортированный

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

Решение о том, является ли последовательность является -сортировка может выполняться в линейном времени и постоянном пространстве с помощью потокового алгоритма . Этого достаточно для каждого , чтобы следить и проверить это .

Вычисление радиуса последовательности

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

Вычисление радиуса последовательности можно вычислить в линейном времени и пространстве. Это следует из того, что его можно определить как .

Уменьшение радиуса последовательности вдвое

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

Учитывая -сортированная последовательность , можно вычислить -сортированная перестановка из в линейном времени и постоянном пространстве.

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

Последовательность может быть получено путем разделения блоков элементов по позиции , затем разделив блоки элементов по позиции , а затем снова элементы в позиции за каждый номер такие, что эти последовательности определены.

С использованием процессоров, не имеющих общего доступа к памяти для чтения и записи, тот же алгоритм можно применить в время, поскольку каждое разделение последовательности может происходить параллельно.

Объединение двух -сортированные последовательности

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

Объединение двух -сортированные последовательности и можно выполнить в линейном времени и постоянном пространстве.

Сначала с помощью предыдущего алгоритма обе последовательности следует преобразовать в -сортированные последовательности.

Построим итеративно выходную последовательность удалив контент из обоих и добавив его в .

Если оба пусты, то достаточно вернуть . В противном случае предположим, что пусто и нет , достаточно удалить содержимое и добавьте его в . Случай, когда пусто и нет подобен по симметрии.

Рассмотрим случай, когда ни пусто. Давайте позвоним и , они величайшие из -первыеэлементы каждого списка. Предположим, что , другой случай аналогичен по симметрии. Удалять от и удалить от и добавьте их в .

Сортировка -сортированная последовательность

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

А -отсортированную последовательность можно отсортировать, применив приведенный выше алгоритм разделения пополам. раз. Это занимает время на последовательной машине или время использования процессоры.

-сортировка последовательности

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

Поскольку каждая последовательность обязательно -сортировано, достаточно применить алгоритм халвинга -раз. Таким образом, - сортировка может быть выполнена в -время. Этот алгоритм является Par -оптимальным, то есть не существует последовательного алгоритма с лучшей сложностью в худшем случае.

  1. ^ @rk. «Анонсируем Снежинку» . Блог в Твиттере . Проверено 26 апреля 2021 г.
  2. ^ Альтман, Том; Игараси, Ёсихидэ (25 августа 1989 г.). «Грубая сортировка: последовательный и параллельный подход». Журнал обработки информации . 12 (2): 154–158.
  3. ^ Эстивилл-Кастро, Владимир; Вуд, Дерик (октябрь 1989 г.). «Новая мера предсортированности» . Информация и вычисления . 83 (1): 111–119. дои : 10.1016/0890-5401(89)90050-3 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 347c363472b3e48add94c6ec1f584391__1701714840
URL1:https://arc.ask3.ru/arc/aa/34/91/347c363472b3e48add94c6ec1f584391.html
Заголовок, (Title) документа по адресу, URL1:
K-sorted sequence - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)