2025-11-11T16:25:09.674123

Multi-Way Co-Ranking: Index-Space Partitioning of Sorted Sequences Without Merge

Joshi
We present a merge-free algorithm for multi-way co-ranking, the problem of computing cut indices $i_1,\dots,i_m$ that partition each of the $m$ sorted sequences such that all prefix segments together contain exactly $K$ elements. Our method extends two-list co-ranking to arbitrary $m$, maintaining per-sequence bounds that converge to a consistent global frontier without performing any multi-way merge or value-space search. Rather, we apply binary search to \emph{index-space}. The algorithm runs in $O(\log(\sum_t n_t)\,\log m)$ time and $O(m)$ space, independent of $K$. We prove correctness via an exchange argument and discuss applications to distributed fractional knapsack, parallel merge partitioning, and multi-stream joins. Keywords: Co-ranking \sep partitioning \sep Merge-free algorithms \sep Index-space optimization \sep Selection and merging \sep Data structures
academic

Многопутевой Со-Ранжирование: Разбиение Индексного Пространства Отсортированных Последовательностей Без Слияния

Основная информация

  • ID статьи: 2510.22882
  • Название: Multi-Way Co-Ranking: Index-Space Partitioning of Sorted Sequences Without Merge
  • Автор: Amit Joshi (Independent Researcher)
  • Классификация: cs.DS (Структуры данных и алгоритмы)
  • Дата публикации: 27 октября 2025 г. (препринт arXiv)
  • Ссылка на статью: https://arxiv.org/abs/2510.22882

Аннотация

В данной работе предложен алгоритм многопутевого со-ранжирования без слияния для вычисления индексов разреза i1,,imi_1,\dots,i_m, которые разбивают mm отсортированных последовательностей таким образом, чтобы все префиксные сегменты в совокупности содержали ровно KK элементов. Метод расширяет двухсписковое со-ранжирование Зиберта и Трэффа на произвольное mm-путевое разбиение, сохраняя границы каждой последовательности и сходясь к согласованному глобальному фронту без выполнения многопутевого слияния или поиска в пространстве значений. Алгоритм применяет двоичный поиск в индексном пространстве с временной сложностью O(log(tnt)logm)O(\log(\sum_t n_t)\log m) и пространственной сложностью O(m)O(m), независимо от KK. Корректность доказана методом обмена аргументов и обсуждаются приложения в распределённых задачах о дробном рюкзаке, параллельном разбиении слияния и многопотоковых соединениях.

Исследовательский контекст и мотивация

Определение проблемы

Задача многопутевого со-ранжирования определяется следующим образом: даны mm последовательностей L1,,LmL_1, \ldots, L_m, отсортированных в неубывающем порядке (с допуском повторений), каждая длины ntn_t, и глобальный целевой ранг K{0,,N}K \in \{0, \ldots, N\} (где N=tntN = \sum_t n_t), необходимо найти индексы разреза i1,,imi_1, \ldots, i_m такие, что:

t=1mit=Kиmaxttmintrt\sum_{t=1}^m i_t = K \quad \text{и} \quad \max_t \ell_t \leq \min_t r_t

где t\ell_t и rtr_t обозначают соответственно значения левой и правой границ.

Мотивация исследования

  1. Расширение классических алгоритмов: Существующие алгоритмы со-ранжирования ориентированы в основном на две последовательности, отсутствует эффективное многопутевое расширение
  2. Избежание затрат на слияние: Традиционные методы требуют предварительного слияния нескольких последовательностей перед выбором, что приводит к значительным затратам
  3. Преимущества индексного пространства: Операции в индексном пространстве, а не в пространстве значений, избегают сложности поиска по диапазону значений
  4. Потребности практических приложений: Распределённые вычисления, параллельная обработка и запросы к базам данных требуют эффективных алгоритмов многопутевого разбиения

Ограничения существующих методов

  • Метод Зиберта-Трэффа: Поддерживает только со-ранжирование двух последовательностей
  • Метод Фредериксона-Джонсона: Работает в пространстве значений, требует глобальных операций подсчёта
  • Методы на основе разделителей: Требуют предварительного слияния или поиска по диапазону значений, высокая сложность

Основные вклады

  1. Разработка алгоритма: Предложен первый алгоритм многопутевого со-ранжирования без слияния, расширяющий классический двухпутевой метод на произвольное mm-путевое разбиение
  2. Теоретический анализ: Доказана корректность алгоритма и временная сложность O(log(tnt)logm)O(\log(\sum_t n_t)\log m)
  3. Инновация в структурах данных: Разработаны адресуемые кучи (addressable heaps) для эффективного сохранения значений границ
  4. Расширение приложений: Продемонстрированы потенциальные приложения алгоритма в распределённой оптимизации, параллельной обработке и системах баз данных

Подробное описание метода

Определение задачи

Входные данные:

  • mm отсортированных последовательностей L1,,LmL_1, \ldots, L_m длины n1,,nmn_1, \ldots, n_m
  • Целевой ранг K[0,N]K \in [0, N], где N=t=1mntN = \sum_{t=1}^m n_t

Выходные данные:

  • Вектор индексов разреза (i1,,im)(i_1, \ldots, i_m), удовлетворяющий условиям со-ранжирования

Ограничения:

  • t=1mit=K\sum_{t=1}^m i_t = K
  • maxttmintrt\max_t \ell_t \leq \min_t r_t (условие со-ранжирования)

Архитектура алгоритма

Основная структура данных: индексные кучи

Алгоритм поддерживает две индексные кучи:

  • HLH_L: максимальная куча, хранящая значения левых границ (t,t)(\ell_t, t), возвращающая последовательность с максимальной левой границей (донор)
  • HRH_R: минимальная куча, хранящая значения правых границ (rt,t)(r_t, t), возвращающая последовательность с минимальной правой границей (получатель)

Каждая куча поддерживает операцию update_key за O(logm)O(\log m) и операцию peek за O(1)O(1).

Управление границами

Для каждой последовательности tt поддерживаются:

  • Нижняя граница: Lb[t]i[t]Lb[t] \leq i[t]
  • Верхняя граница: i[t]Ub[t]i[t] \leq Ub[t]
  • Текущий индекс: i[t]i[t]

Итеративная стратегия

Алгоритм использует жадную стратегию донор-получатель:

  1. Определение экстремумов:
    • Донор p=argmaxttp = \arg\max_t \ell_t (максимальная левая граница)
    • Получатель q=argmintrtq = \arg\min_t r_t (минимальная правая граница)
  2. Вычисление объёма передачи:
    donor_slack = ⌈(i[p] - Lb[p])/2⌉
    receiver_slack = ⌈(Ub[q] - i[q])/2⌉
    Δ = min{donor_slack, receiver_slack}
    
  3. Выполнение передачи:
    • i[p]i[p]Δi[p] \leftarrow i[p] - \Delta
    • i[q]i[q]+Δi[q] \leftarrow i[q] + \Delta
    • Обновление границ: Ub[p]i[p]Ub[p] \leftarrow i[p], Lb[q]i[q]Lb[q] \leftarrow i[q]
  4. Обновление куч: Обновление ключей куч для затронутых последовательностей

Технические инновации

  1. Операции в индексном пространстве: Полная работа в индексном пространстве, избегание поиска по диапазону значений и операций слияния
  2. Геометрическая сходимость: Сокращение вдвое допустимой области гарантирует логарифмическую скорость сходимости
  3. Несбалансированная потенциальная функция: Определение Φ(i)=maxttmintrt\Phi(i) = \max_t \ell_t - \min_t r_t в качестве критерия сходимости
  4. Детерминированная сложность: Сложность алгоритма независима от целевого ранга KK

Теоретический анализ

Доказательство корректности

Лемма 1 (Оптимальность локальных экстремумов)

Если Φ(i)>0\Phi(i) > 0, пусть p=argmaxttp = \arg\max_t \ell_t и q=argmintrtq = \arg\min_t r_t. Среди всех допустимых бесконечно малых передач, сохраняющих tit=K\sum_t i_t = K, пара (p,q)(p,q) достигает максимального неувеличивающегося изменения Φ\Phi.

Схема доказательства: Уменьшение ipi_p снижает p\ell_p (локальный максимум левой границы), увеличение iqi_q повышает rqr_q (локальный минимум правой границы). Поскольку pu\ell_p \geq \ell_u и rqrvr_q \leq r_v для всех u,vu,v, экстремальная пара (p,q)(p,q) производит наиболее крутое уменьшение разрыва maxminr\max\ell - \min r.

Лемма 2 (Перестановочность порядка передач)

Любая последовательность допустимых передач, уменьшающих Φ\Phi, может быть переупорядочена так, чтобы все экстремальные передачи (p,q)(p,q) происходили перед любыми неэкстремальными передачами, без ухудшения Φ\Phi на любом промежуточном этапе.

Теорема 1 (Сходимость и корректность)

Алгоритм 2 завершается с допустимым вектором со-ранжирования (i1,,im)(i_1, \ldots, i_m), удовлетворяющим tit=K\sum_t i_t = K и maxttmintrt\max_t \ell_t \leq \min_t r_t.

Анализ сложности

Анализ итераций

На каждой итерации допустимое расстояние донора или получателя сокращается вдвое. Расстояние Ub[t]Lb[t]Ub[t] - Lb[t] для каждой последовательности может быть сокращено не более O(lognt)O(\log n_t) раз. Суммируя по всем mm последовательностям, общее число итераций составляет:

T=O(log(t=1mnt))T = O\left(\log\left(\sum_{t=1}^m n_t\right)\right)

Временная сложность

Каждая итерация выполняет константное число операций с индексными кучами (время O(logm)O(\log m)), поэтому общая временная сложность составляет:

O(log(tnt)logm)O\left(\log\left(\sum_t n_t\right) \cdot \log m\right)

Пространственная сложность

Алгоритм требует хранения только индексов и информации о границах для mm последовательностей, пространственная сложность составляет O(m)O(m).

Реализация алгоритма

Основной поток алгоритма

def multi_way_corank(sequences, K):
    m = len(sequences)
    # Инициализация границ и индексов
    Lb = [0] * m
    Ub = [len(seq) for seq in sequences]
    i = water_fill_initialization(K, Ub)
    
    # Построение индексных куч
    HL = MaxHeap()  # Максимальная куча левых границ
    HR = MinHeap()  # Минимальная куча правых границ
    
    for t in range(m):
        HL.insert(t, left_boundary(sequences[t], i[t]))
        HR.insert(t, right_boundary(sequences[t], i[t]))
    
    while True:
        # Получение донора и получателя
        max_left, p = HL.peek()
        min_right, q = HR.peek()
        
        # Проверка условия завершения
        if max_left <= min_right:
            break
            
        # Вычисление объёма передачи
        donor_slack = ceil((i[p] - Lb[p]) / 2)
        receiver_slack = ceil((Ub[q] - i[q]) / 2)
        delta = min(donor_slack, receiver_slack)
        
        # Выполнение передачи
        i[p] -= delta
        i[q] += delta
        
        # Обновление границ
        Ub[p] = i[p]
        Lb[q] = i[q]
        
        # Обновление куч
        update_heaps(HL, HR, sequences, i, p, q)
    
    return i

Стратегия инициализации

Используется стратегия "водяного заполнения" для инициализации допустимого решения:

def water_fill_initialization(K, capacities):
    i = [0] * len(capacities)
    need = K
    for t in range(len(capacities)):
        take = min(capacities[t], need)
        i[t] = take
        need -= take
        if need == 0:
            break
    return i

Сценарии приложений

1. Распределённая задача о дробном рюкзаке

В многоисточниковой задаче о дробном рюкзаке, когда предметы отсортированы по плотности и распределены по mm фрагментам, можно использовать со-ранжирование для вычисления глобального разбиения KK-префикса без слияния исходных данных.

2. Параллельное mm-путевое разбиение слияния

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

3. Разбиение многопотокового соединения

В конвейерах обработки баз данных или потоков разбиение фронта соединения по глобальному рангу является естественным требованием; данный метод создаёт согласованные с глобальным префиксом курсоры для каждого потока.

Экспериментальная проверка

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

Теоретические гарантии производительности

  • Временная сложность: O(log(tnt)logm)O(\log(\sum_t n_t) \log m)
  • Пространственная сложность: O(m)O(m)
  • Независимость: Сложность не зависит от целевого ранга KK

Сравнение с существующими методами

  • По сравнению с методами слияния: Избегает затрат O(N)O(N) на слияние
  • По сравнению с методами в пространстве значений: Избегает глобальных операций подсчёта
  • По сравнению с Фредериксоном-Джонсоном: Операции в индексном пространстве, более эффективно

Связанные работы

Двухсписковое со-ранжирование

Работа Зиберта и Трэффа заложила основы со-ранжирования, применяемого в основном для разбиения работы в параллельном слиянии. Данная работа расширяет его с 2-путевого на произвольное mm-путевое разбиение.

Параллельная сортировка на основе разделителей

Метод точного разделителя Зиберта и Вольфа работает в пространстве значений, ища пороговые значения ключей для сбалансированного разбиения. В отличие от этого, данный метод работает в индексном пространстве, непосредственно выводя вектор со-ранжирования.

Выбор и ранжирование в сортировке разбиений

Классическая работа Фредериксона-Джонсона изучает выбор и ранжирование на структурированных входах (таких как объединение mm отсортированных списков). Её алгоритм по существу является процессом в пространстве значений, в то время как данная работа предоставляет примитив индексного пространства.

Заключение и обсуждение

Основные выводы

  1. Успешно расширено двухпутевое со-ранжирование на многопутевой случай с сохранением хороших теоретических свойств
  2. Операции в индексном пространстве избегают поиска по диапазону значений, обеспечивая детерминированные гарантии сложности
  3. Алгоритм прост в реализации и обладает хорошей практической применимостью

Ограничения

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

Направления будущих исследований

  1. Динамические последовательности: Расширение на поддержку динамических обновлений последовательностей
  2. Приближённые алгоритмы: Разработка более быстрых приближённых версий
  3. Параллелизация: Исследование возможностей параллелизации алгоритма
  4. Практические приложения: Проверка эффективности в большем числе реальных систем

Глубокая оценка

Преимущества

  1. Теоретический вклад: Впервые предложен эффективный алгоритм многопутевого со-ранжирования, заполняющий теоретический пробел
  2. Методологическая инновация: Новый подход операций в индексном пространстве, избегающий ограничений традиционных методов
  3. Строгий анализ: Предоставлено полное доказательство корректности и анализ сложности
  4. Практическая ценность: Алгоритм прост, легко реализуется, имеет чёткие сценарии применения

Недостатки

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

Влияние

  1. Академическая ценность: Предоставляет теоретическую основу для задачи многопутевого со-ранжирования
  2. Практический потенциал: Имеет перспективы применения в распределённых вычислениях и параллельной обработке
  3. Воспроизводимость: Автор предоставляет код реализации, облегчая проверку и расширение

Применимые сценарии

  • Разбиение данных в распределённых системах
  • Балансировка нагрузки в параллельных алгоритмах
  • Оптимизация запросов в системах баз данных
  • Многопотоковое слияние в системах потоковой обработки

Библиография

1 Greg N. Frederickson and Donald B. Johnson. Generalized selection and ranking. STOC 1980.

2 Christian Siebert. Perfectly load-balanced, stable, synchronization-free parallel merge. Parallel Processing Letters, 2014.

3 Christian Siebert. Simple in-place yet comparison-optimal mergesort, arXiv:2509.24540, 2025.

4 Christian Siebert and Felix Wolf. A scalable parallel sorting algorithm using exact splitting. RWTH Aachen University technical report, 2011.


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