Distinção de elementos em O (n) tempo?

21

Todos sabemos que a distinção de elementos no modelo baseado em comparação não pode ser feita em tempo. No entanto, em uma palavra RAM, é possível alcançar melhor.o(nregistron)

Obviamente, se alguém assume a existência de uma função de hash perfeita que pode ser calculada em tempo linear, obtemos um algoritmo de tempo linear para a distinção de elementos: continue fazendo hashing dos números um por um e retorne 1 se houver uma colisão.

No entanto, existem dois problemas: 1) a maioria das construções de funções hash perfeitas que eu poderia encontrar aleatoriedade usada e 2) não consigo encontrar uma discussão sobre o tempo de pré-processamento em qualquer lugar, ou seja, o tempo necessário para decidir qual função hash será executada para usar com base no conjunto de números de entrada.

Fredman et al., " Armazenando uma tabela esparsa com pior caso de acessoO(1 1) ", resolve o primeiro problema, fornecendo uma função hash com tempo de acesso no pior caso, mas não diz nada sobre o segundo problema. .O(1 1)

Então, para resumir, aqui está o que eu quero:

Projete um algoritmo que forneça um conjunto de números (cada número com bits) em uma palavra RAM com comprimento , encontre uma função de hash em tempo, onde . A função deve ter a propriedade de que, para qualquer , o número de elementos de que mapeiam é uma constante e a computação deve levarSnWWh:S{1 1,...,m}O(n)m=O(n)hj{1 1,...,m}Sjh(Eu)O(1 1)tempo em um modelo de palavra-RAM "razoável", ou seja, o modelo não deve permitir que funções "exóticas" nas palavras sejam avaliadas no tempo .O(1 1)

Também gostaria de saber se existem algoritmos para resolver a distinção de elementos na palavra RAM que não usam funções hash.

Vinayak Pathak
fonte
8
Re: "Eu também gostaria de saber se existem algoritmos para resolver a distinção de elementos na palavra RAM que não usam funções hash." - contanto que você queira apenas e não linear, há muito trabalho para classificar a palavra RAM (consulte en.wikipedia.org/wiki/Integer_sorting ). Alguns desses algoritmos usam hash, mas outros não. o(nregistron)
David Eppstein #
Soluções aproximadas são permitidas?
AT
(Eu acho que) Seu processo de pensamento está pulando uma etapa: 1. Você postula que a melhor complexidade no modelo de comparação é 2. Você pergunta como isso pode ser melhorado no modelo de RAM 3. Você solicite diretamente uma solução em tempo no modelo de RAM. Em vez disso, você deve estudar as soluções em no modelo de RAM e ver se é possível melhorá-las. O ( n ) o ( n log n )Θ(nlogn)O(n)o(nregistron)
31413 Jeremy
O Radix é muito lento para você?
Thomas Mueller

Respostas:

8

A distinção de elementos pode ser resolvida deterministicamente no modelo de RAM no tempo dentro de :O(nregistroregistron)o(nregistron)

Classifique no tempo em seu n número de bits w usando o algoritmo de classificação descrito por Han no STOC 2002 ("Classificação determinística em O ( n log log n ) no tempo e no espaço linear"), depois faça a varredura linear tempo para colisões.O(nregistroregistron)nWO(nregistroregistron)

Até onde eu sei, esse é o melhor resultado conhecido até hoje.

Jeremy
fonte