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
Co-Classement Multi-Voies : Partitionnement de l'Espace d'Index de Séquences Triées Sans Fusion
Cet article propose un algorithme de co-classement multi-voies sans fusion pour calculer les indices de coupure i1,…,im, partitionnant m séquences triées de sorte que tous les segments de préfixe contiennent ensemble exactement K éléments. Cette méthode étend le co-classement de liste double de Siebert et Träff à un nombre arbitraire de voies m, en maintenant les frontières de chaque séquence et en convergeant vers une frontière globale cohérente, sans exécuter de fusion multi-voies ni de recherche dans l'espace des valeurs. L'algorithme applique une recherche binaire dans l'espace d'index avec une complexité temporelle de O(log(∑tnt)logm) et une complexité spatiale de O(m), indépendante de K. La correction est prouvée par un argument d'échange, et les applications au sac à dos fractionnaire distribué, au partitionnement de fusion parallèle et aux jointures multi-flux sont discutées.
Le problème de co-classement multi-voies est défini comme suit : étant donné m séquences L1,…,Lm triées en ordre non décroissant (avec répétitions autorisées), chacune de longueur nt, et un rang cible global K∈{0,…,N} (où N=∑tnt), il faut trouver les indices de coupure i1,…,im tels que :
∑t=1mit=Ketmaxtℓt≤mintrt
où ℓt et rt représentent respectivement les valeurs de frontière gauche et droite.
Extension d'algorithmes classiques : Les algorithmes de co-classement existants ciblent principalement deux séquences, manquant d'extensions multi-voies efficaces
Éviter les frais de fusion : Les méthodes traditionnelles nécessitent de fusionner d'abord plusieurs séquences avant la sélection, ce qui entraîne des frais importants
Avantages de l'espace d'index : Opérer dans l'espace d'index plutôt que dans l'espace des valeurs évite la complexité de la recherche de domaine
Besoins d'applications pratiques : L'informatique distribuée, le traitement parallèle et les requêtes de bases de données nécessitent tous des algorithmes de partitionnement multi-voies efficaces
Conception d'algorithme : Propose le premier algorithme de co-classement multi-voies sans fusion, étendant la méthode classique à deux voies à un nombre arbitraire de voies m
Analyse théorique : Prouve la correction de l'algorithme et la complexité temporelle O(log(∑tnt)logm)
Innovation en structures de données : Conçoit des tas adressables (addressable heaps) pour maintenir efficacement les valeurs de frontière
Extension d'applications : Démontre le potentiel de l'algorithme dans l'optimisation distribuée, le traitement parallèle et les systèmes de bases de données
Si Φ(i)>0, soit p=argmaxtℓt et q=argmintrt. Parmi tous les transferts infinitésimaux réalisables maintenant ∑tit=K, la paire (p,q) réalise la plus grande variation non croissante de Φ.
Esquisse de la preuve : Réduire ip diminue ℓp (le maximum local de la frontière gauche), augmenter iq augmente rq (le minimum local de la frontière droite). Puisque ℓp≥ℓu et rq≤rv pour tous u,v, la paire extrême (p,q) produit la réduction la plus raide de l'écart maxℓ−minr.
Toute séquence de transferts réalisables réduisant Φ peut être réordonnée de sorte que tous les transferts extrêmes (p,q) se produisent avant tout transfert non extrême, sans dégrader Φ à aucune étape intermédiaire.
À chaque itération, la distance réalisable du donateur ou du récepteur est réduite de moitié. La distance Ub[t]−Lb[t] de chaque séquence est réduite au maximum O(lognt) fois. En agrégant toutes les m séquences, le nombre total d'itérations est :
def multi_way_corank(sequences, K):
m = len(sequences)
# Initialiser les bornes et les indices
Lb = [0] * m
Ub = [len(seq) for seq in sequences]
i = water_fill_initialization(K, Ub)
# Construire les tas d'index
HL = MaxHeap() # Tas maximum de frontière gauche
HR = MinHeap() # Tas minimum de frontière droite
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:
# Obtenir le donateur et le récepteur
max_left, p = HL.peek()
min_right, q = HR.peek()
# Vérifier la condition de terminaison
if max_left <= min_right:
break
# Calculer la quantité de transfert
donor_slack = ceil((i[p] - Lb[p]) / 2)
receiver_slack = ceil((Ub[q] - i[q]) / 2)
delta = min(donor_slack, receiver_slack)
# Exécuter le transfert
i[p] -= delta
i[q] += delta
# Mettre à jour les bornes
Ub[p] = i[p]
Lb[q] = i[q]
# Mettre à jour les tas
update_heaps(HL, HR, sequences, i, p, q)
return i
Utiliser une stratégie de « remplissage d'eau » pour initialiser une solution réalisable :
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
Dans les problèmes de sac à dos fractionnaire multi-sources, lorsque les articles sont déjà triés par densité et distribués sur m fragments, le co-classement peut calculer le partitionnement de préfixe global K, sans fusionner les données sources.
Allouer aux processeurs des préfixes disjoints sans exécuter de fusion préalable. Le vecteur de co-classement détermine les points de jonction exacts, les processeurs exécutant ensuite uniquement la fusion locale sur leur plage.
Dans les pipelines de bases de données ou de traitement de flux, partitionner la frontière de jointure au rang global est un besoin naturel ; cette méthode produit des curseurs par flux cohérents avec le préfixe global.
Bien que l'article se concentre principalement sur l'analyse théorique, l'auteur fournit du code d'implémentation pour vérification. Les performances réelles de l'algorithme peuvent être évaluées selon les aspects suivants :
Le travail de Siebert et Träff jette les bases du co-classement, principalement utilisé pour le partitionnement du travail dans la fusion parallèle. Cet article l'étend de 2 voies à un nombre arbitraire de voies.
La méthode de séparateur exact de Siebert et Wolf opère dans l'espace des valeurs, recherchant les seuils de clé pour les partitions équilibrées. En comparaison, cette méthode opère dans l'espace d'index, produisant directement le vecteur de co-classement.
Le travail classique de Frederickson-Johnson étudie la sélection et le classement sur des entrées structurées (comme l'union de m listes triées). Son algorithme est essentiellement un processus d'espace de valeurs, tandis que cet article fournit une primitive d'espace d'index.
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.
Évaluation Générale : Ceci est un article d'algorithme à forte composante théorique qui résout avec succès le problème important du co-classement multi-voies. Bien que manquant de vérification expérimentale, l'analyse théorique est rigoureuse, la méthodologie est fortement innovante, et elle fournit des outils théoriques précieux pour les domaines connexes.