Вибрати в об'єднанні відсортовані масиви: Вже відомо?


12

Я шукаю бібліографічні посилання на такий алгоритм / проблему: я назвав його "BiSelect" або "t-ary Select" або "Select in Union of Sorted Arrays", але я думаю, що він був введений раніше під іншою назвою?

Проблема

Розглянемо наступну проблему:

Враховуючи неперервані відсортовані масиви A 1 , , A k відповідних розмірів n 1 , , n k та ціле число t [ 1 .. n i ] , яке t -ве значення їх відсортованого об’єднання i A i ?kA1,,Akn1,,nkt[1..ni]t iAi

Рішення

k = 2 k = 2 A 1 [ t / 2 ] A 2 [ t / 2 ] A 1 [ t / 2 .. t ] A 2 [ 1. t / 2 ] A 1 [ 1 .. t / 2 ] A 2O(lgmin{n1,n2,t})k=2k=2A1[t/2]A2[t/2]A1[t/2..t]A2[1..t/2]A1[1..t/2]t / 2 n 1 n 2 tA2[t/2..t]t/2n1n2t

Це узагальнює дещо складніший алгоритм, що працює у часі для більших значень , виходячи з обчислення медіани значень для : найменших елементів можна додатково ігнорувати в масивах де менший від медіани, а елементи рангів у можна додатково ігнорувати в інші масиви, що призводить до зменшення вдвічі в кожному рецидиву (і вартості для медіани).k A i [ t / k ] i [ 1 .. k ] t / k k / 2 A i [ t / k ] [ t - t / k . . ] k / 2 t O ( k )O(klgt)kAi[t/k]i[1..k]t/kk/2Ai[t/k][tt/k..]k/2tO(k)

Список літератури?

Я задоволений своїми рішеннями, але вважаю, що проблема (та її рішення) вже була відома. Він пов'язаний з лінійним алгоритмом часу для обчислення медіани (шляхом сортування груп за розміром та повторення на медіані їх середніх), але є дещо більш загальним. Я попросив декілька коледжів у Мадальго в Орхусі (Данія), а потім деякі інші в семінарі «Стрінгологія» (Руан), не маючи успіху: сподіваюся, що хтось більш обізнаний може допомогти на обміні стеками ...5

Мотивації

Рішення цієї проблеми мають додатки для відкладеної структури даних на масивах (дійсно, це може розглядатися як оператор у відкладеній структурі даних для об'єднання відсортованих масивів); і більш стислим способом - до адаптивного обчислення оптимальних вільних кодів префікса.

Відповіді:


2

Алгоритм, описаний Фредеріксоном та Джонсоном у 1982 році, вважає, що всі множини мають однаковий розмір. Вони також описали в 1980 році оптимальне рішення, яке використовує переваги різних розмірів відсортованих наборів. Складність цього алгоритму знаходиться в межах .O(k+i=1klogni)

Довідково

Грег Н. Фредеріксон та Дональд Б. Джонсон. 1980. Узагальнений відбір та ранжирування (Попередня версія). У працях дванадцятого щорічного симпозіуму ACM з теорії обчислень (STOC '80). ACM, Нью-Йорк, Нью-Йорк, США, 420-428. DOI = 10.1145 / 800141.804690 http://doi.acm.org/10.1145/800141.804690


20

Фредеріксон і Джонсон отримали оптимальний результат у 80-х. Нехай , тоді існує алгоритм, який вирішує вашу задачу в .O ( k + p log tp=хв(к,т)О(к+pжурналтp)

Довідково

GN Frederickson, DB Johnson " Складність вибору та ранжирування у x + y та матрицях з відсортованими стовпцями " Дж. System Sci., 24 (2) (1982), стор. 197–208


0

Випадок k = 2 з'являється при паралельному сортуванні злиття, оскільки об'єднання двох відсортованих масивів з різних потоків потрібно розділити між двома потоками, щоб підтримувати однакову кількість паралелізму. Це рішення для домашнього завдання - одна орієнтир.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.