Что известно о структурах данных, которые могут поддерживать последовательность элементов, подлежащих следующим двум операциям?
- Нажмите (x): добавьте x в конец последовательности и верните идентификатор для его позиции в последовательности
- Извлечение (S): учитывая неупорядоченный набор идентификаторов, удалите элементы в этих позициях из последовательности и верните список удаленных элементов в порядке последовательности
Если вам нравится, вы можете думать об этом как о стеке или очереди с операцией разбиения, которая разбивает его на два стека: операция извлечения может использоваться для реализации операции pop или dequeue, а также может быть помещена извлеченная последовательность элементов. снова в другой стек или очередь.
Что я уже знаю: можно поддерживать последовательность в виде двусвязного списка, где каждый идентификатор является просто указателем на узел связанного списка, и каждый узел также хранит номер позиции, который позволяет быстро сравнивать позиции двух несвязанных элементов в последовательности. Нетрудно обновить номера позиций по мере развития структуры данных, чтобы все они представляли собой положительные целые числа максимального значения , где n - текущее количество элементов в списке. При такой структуре данных единственной сложной частью операции извлечения является сортировка извлеченных элементов по номерам позиций. Извлечение k предметов занимает O ( k √ожидаемое рандомизированное время с использованием, например, алгоритма целочисленной сортировки Хана и Торупа из FOCS 2002, а операция push занимает постоянное время.
Чего я не знаю: возможно ли обрабатывать извлечение за и выдвигать за постоянное время? Есть ли литература по этой проблеме? Это так же сложно, как целочисленная сортировка?
Мотивация: это основной шаг, необходимый для упорядочения элементов в алгоритме планирования Кофмана-Грэма, который также имеет приложения для построения графика. Трудная часть Коффмана-Грэма - это лексикографический топологический порядок. Это можно сделать, поддерживая для каждого отдельного уровня последовательность вершин с этим уровнем в подграфе, индуцированную оставшимися вершинами. Затем повторно удалите первую вершину из последовательности вершин с нулевой степенью и добавьте ее в топологический порядок; извлеките соседей v из степеней, которым они ранее принадлежали, и поместите их в последовательность для следующей меньшей степени. Так что O ( K ) время для операций извлечения в этой структуре данных приведет к линейной реализации времени алгоритма Кофмана-Грэма.
С тех пор как я впервые спросил об этом, в 1976 году Сетхи нашел статью, которая позволяет реализовывать алгоритм Кофмана-Грэма за линейное время, и включил его в мою статью в Википедии об алгоритме Кофмана-Грэма , поэтому первоначальная мотивация менее значима. Мне все еще интересно, каков ответ, хотя.
источник
Ответы:
Я думаю, что это, по крайней мере, так же сложно, как сортировка набора целых чисел со «случайным советом» полинома размера от n . Под случайным советом я подразумеваю, что для любого n существует фиксированное распределение D n (зависящее только от n ) по строкам размера poly ( n ), и нашему алгоритму (смоделированному на компьютере с ОЗУ) предоставляется произвольный доступ к одной выборке из D п . D n (рандомизированная) структура данных после нажатия [ n ]S⊆ [ п ] N N DN N N DN DN [ п ] в порядке, вместе с хэш-таблицей, которая отображает целые числа на идентификаторы в ожидаемое время .O ( 1 )
Учитывая эту настройку, для экземпляра задачи целочисленной сортировки мы можем выдать extract ( S ) (на самом деле нам нужны идентификаторы S, но это отображение может быть выполнено за O ( 1 ) раз за элемент с использованием хеша таблица, которая является частью рекомендации) и входные данные будут отсортированы по времени, необходимому для выполнения извлечения.S⊆ [ п ] S S O ( 1 )
Таким образом, сообщение заключается в том, что, если некоторая «свободная» дополнительная информация, которая зависит только от верхней границы целых чисел, не может упростить целочисленную сортировку, извлечение так же сложно, как целочисленная сортировка.
Означает ли это связь между двумя проблемами без странной модели? Известно ли это понятие случайного совета? Это похоже на протокол МА, но сообщение Мерлина не может зависеть от ввода, и мы заботимся о времени выполнения Артура.
источник