Existe QUALQUER tipo de compactação que possa compactar um arquivo e esse arquivo compactado pode ser pesquisado sem descompactar o arquivo?
Existe QUALQUER tipo de compactação que possa compactar um arquivo e esse arquivo compactado pode ser pesquisado sem descompactar o arquivo?
Respostas:
Os auto-índices compactados, como o Índice FM, permitem pesquisas arbitrárias de substring no espaço próximo comprimido por entropia. São essencialmente matrizes de sufixos compactados ou árvores de sufixos, que têm muita literatura.
A pesquisa básica de substring pode ser o (k) ou o (k log n) com o tempo para o comprimento k, dependendo de quais estruturas de dados são escolhidas (diferentes tipos de classificação / seleção de estruturas de dados). Há uma série de problemas que surgem, dependendo se se deseja predicados simples de contenção booleana, o deslocamento de cada ocorrência ou operações mais complicadas da árvore de sufixos; o primeiro pode ser feito em menos espaço e tempo que o segundo.
Há também um todo livro sobre pesquisa e descompressão seletiva de strings : "Estruturas de dados compactadas para strings: na pesquisa e extração de strings", de Rossano Venturini, publicado em 2014 pela Springer Science & Business Media.
A KWillets mencionou o índice de FM. Vale ressaltar que o índice FM é baseado na transformação Burrows-Wheeler (também a base do bzip), juntamente com um índice que suporta consultas eficientes de "classificação".
Os índices baseados no BWT são auto-indexáveis, no sentido de que o índice também é uma representação compactada da cadeia de origem e pode ser descompactado no arquivo original. A descompressão pode ser realizada mais rapidamente adicionando um índice de seleção junto com o índice de classificação. Os índices de classificação / seleção são um tópico interessante e vale a pena conferir. Existem excelentes recursos para implementações práticas .
No entanto, o ponto principal que quero abordar é que este é um caso especial da idéia mais geral de estruturas de dados compactados. Uma estrutura de dados compactada é aquela que não precisa ser descompactada (ou a quantidade de descompactação necessária é limitada) para executar operações eficientes nela.
As estruturas de dados compactados podem ser analisadas em termos de sobrecarga em relação a um limite teórico. Por exemplo, estruturas de dados sucintas têm uma sobrecarga relativa que diminui à medida que a estrutura de dados cresce. Esta é uma área de pesquisa muito ativa no momento.
A técnica BWT pode ser aplicada a estruturas de dados que não sejam strings. Por exemplo, a mesma idéia foi estendida às árvores rotuladas , resultando em uma representação pesquisável compactada.
Portanto, se você possui dados que precisam compactar e encontrar informações, não pense necessariamente em termos de arquivos. Seus dados podem ter uma estrutura de nível superior que você pode explorar.