Trie p-fast aprimorado: Um algoritmo de correspondência de prefixo altamente eficiente

2025-08-10

Este artigo apresenta uma estrutura de dados trie p-fast aprimorada, um algoritmo altamente eficiente para encontrar o prefixo correspondente mais longo ou o predecessor/sucessor mais próximo de uma string de consulta em um conjunto de strings. Em comparação com versões anteriores, esta versão aprimorada é mais concisa e eficiente em termos de espaço. Ela usa uma tabela hash para armazenar cada prefixo exclusivo e um bitmap para representar os possíveis caracteres subsequentes para cada prefixo, atingindo uma complexidade de tempo O(log k) (onde k é o comprimento da chave). Embora pesquisas de predecessor possam exigir mais probes, seu desempenho ainda supera as tries qp tradicionais.

Leia mais
Desenvolvimento correspondência de prefixo

Otimização do Compilador: Melhorando a Geração de Números Aleatórios Quase Sem Divisão de Lemire

2025-03-09

O autor melhorou um algoritmo quase sem divisão para gerar números aleatórios limitados (algoritmo de Lemire). Uma versão anterior reduziu a inflação de código inserindo o caminho rápido, mas a otimização do compilador era limitada. O autor descobriu que, quando o limite é uma constante em tempo de compilação, o limite de rejeição pode ser pré-computado e a evasão de divisão é desnecessária. A nova implementação tem apenas uma chamada para o gerador de números aleatórios, e o compilador elimina automaticamente o loop quando o limite é uma potência de dois. Isso é mais eficiente do que a versão do ano passado, e o autor explora técnicas de otimização semelhantes em tempo de compilação em Rust.

Leia mais