Все мы знаем, что отличимость элементов в модели, основанной на сравнении, не может быть выполнена за времени. Тем не менее, одним словом RAM можно добиться большего.
Конечно, если предположить существование совершенной хеш-функции, которая может быть вычислена за линейное время, мы получим алгоритм линейного времени для различения элементов: просто продолжайте хешировать числа одно за другим и возвращать 1, если есть столкновение.
Однако есть две проблемы: 1) большинство конструкций совершенных хеш-функций, которые я мог бы найти, использовали случайность и 2) я нигде не могу найти обсуждение времени предварительной обработки, т. Е. Времени, необходимого, чтобы решить, какую хеш-функцию использовать. использовать на основе входного набора чисел.
Фредман и др. « Хранение разреженной таблицы с наихудшим временем доступа » действительно решает первую проблему, предоставляя хэш-функцию с временем доступа в наихудшем случае, но ничего не говорит о второй проблеме ,
Подводя итог, вот что я хочу:
Разработать алгоритм, который дает набор из чисел (каждое число имеет длину бит) в слове RAM с длиной слова , находит хеш-функцию в время, где . Функция должна обладать тем свойством, что для любого число элементов которые отображаются в является константой, а вычисление должно приниматьвремя в «разумной» модели слова-RAM, т. е. модель не должна позволять «экзотическим» функциям слов оцениваться за времени.
Я также хотел бы знать, существуют ли алгоритмы для определения отличимости элементов в слове RAM, которые вообще не используют хеш-функции.
источник
Ответы:
Различение элементов может быть решено детерминистически в модели RAM за время в течение времени:O(nloglogn)⊂o(nlogn)
Сортируйте по времени в пределах ваши чисел по битам, используя алгоритм сортировки, описанный Ханом в STOC 2002 («Детерминированная сортировка по времени и линейному пространству»), затем сканируйте за линейное время на наличие столкновений.O(nloglogn) n w O(nloglogn)
Насколько я знаю, это лучший результат, известный на сегодняшний день.
источник
Это именно то, что делает упомянутая вами статья FKS - и это занимает линейное время (в ожидании). См. Страницу 5 для анализа ... http://www1.icsi.berkeley.edu/~luby/PAPERS/pairwise.ps
источник