Page 266 - Bkhargava_-_Grokaem_algoritmy
P. 266

Hyperloglog   265


        Вот только этот хеш получится просто огромным. Google индексирует трил­
        лионы веб-страниц. Если хеш содержит все URL-aдpeca, индексируемые
        Google, он займет слишком много места. У Reddit и Ьit.ly возникает ана­
        логичная проблема. Сталкиваясь с такими объемами данных, приходится
        действовать более изобретательно!


        Фильтры Блума

        Для решения проблемы можно воспользоваться вероятностными струк­
        турами данных, которые называются фильтрами Блума.  Они дают ответ,
        который может оказаться ложным, но с большой вероятностью является
        правильным. Вместо того чтобы обращаться к хешу, вы спрашиваете
        у фильтра Блума, обрабатывался ли этот URL-aдpec ранее. Хеш-таблица
        даст точный ответ. Фильтр Блума дает ответ, правильный с высокой ве­
        роятностью:

        c:J  возможны ложно-положительные срабатывания. Фильтр скажет: ~этот
           сайт уже обрабатывался», хотя этого не было;

        c:J  ложно-отрицательные срабатывания исключены. Если фильтр утверж-
           дает, что сайт не обрабатывался, вы можете быть в этом уверены.

        Фильтры Блума хороши тем,  что занимают очень мало места. Хеш-таблице
        пришлось бы хранить все URL-aдpeca, обрабатываемые Google, а фильтру
        Блума это не нужно. Фильтры Блума очень удобны тогда, когда не нужно
        хранить точный ответ (как во всех приведенных примерах). Например,
        Ьit.ly может сказать: ~Мы полагаем, что сайт может оказаться вредоносным,
        будьте особенно внимательны».



        HyperLog Log

        Примерно так же действует другой алгоритм, который называется
        HyperLogLog. Предположим, Google хочет подсчитать количество уникалъ­
        НЪLХ поисков, выполненных пользователями.  Или Amazon хочет подсчитать
        количество уникальных предметов, просмотренных пользователями за
        сегодняшний день. Для получения ответов на эти вопросы потребуется
        очень много места! Так, в примере с Google придется вести журнал всех
        уникальных вариантов поиска. Когда пользователь что-то ищет, вы сначала

                                                         www.trk.kg
   261   262   263   264   265   266   267   268   269   270   271