[devel] вопрос про числа

Alexey Tourbin at at altlinux.ru
Sat Nov 7 22:34:21 UTC 2009


On Sun, Nov 08, 2009 at 12:35:51AM +0300, Vladislav Zavjalov wrote:
> > То есть, задача: есть n m-битных чисел, нужно проверить, что данное число
> > находится среди них. Хранить хочется меньше, чем n*m бит.
> > 
> > Я бы попробовал посмотреть паковку на такую тему:
> 
> Эх, только вот эксперимент показывает, что такая паковка эффективна
> только при достаточно больших n. При n=1000 и m=32 коэффициент паковки у меня
> получился 1.38... Так что я неправильно подумал...

Что-то у Вас слишком хороший коэффициент получился.  У меня получается
энтропия 23.477 бита супротив 32 то максимально возможный коэффициент
сжатия по идее должен быть 1.36.

$ perl -le 'sub log2{log($_[0])/log(2)}; sub H{my$p=shift;-$p*log2($p)-(1-$p)*log2(1-$p)}; $n=1000;$m=32; $bits_per_hash=(1<<$m)/$n; print H(1/$bits_per_hash)*$bits_per_hash'
23.4769105882751
$

Я правда не уверен что это правильная энтропия получается (через
эквивалентность по битмапу).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20091108/9c556bba/attachment.bin>


More information about the Devel mailing list