Фильтр Блума в Java - PullRequest
       36

Фильтр Блума в Java

6 голосов
/ 25 июня 2011

По сути, я должен реализовать фильтр Блума и проверить его с помощью символов от 'a' до 'z' и от 'A' до 'Z' (легко и просто).

Затем я должен проверить наличие ложных срабатываний, но в требованиях говорится использовать от «аа» до «ZZ» (строки) для подсчета ложных срабатываний (не сделано).

Есть идеи, что это значит?

1 Ответ

3 голосов
/ 26 июня 2011

ложное срабатывание требует фактического набора данных, я думаю, что имел в виду ваш профессор: добавьте 'a' - 'z', 'A' - 'Z' к фильтру (фактические данные) сейчас, проверьте все строки "aa "-" ZZ ", подсчитать количество ложных срабатываний (все положительные значения будут ложными, поскольку ни один из них не содержится в данных) и извлечь соотношение: #false_positives/#strings_in_range("aa","ZZ")

РЕДАКТИРОВАТЬ: в комментариях @Bill спросил, как перебрать «aa» - «ZZ», вот простая подсказка кода, как это сделать.

Set<String> set = new HashSet<String>();
for (Character c = 'a';c<='z';c++) { 
     String lower = c.toString();
     String upper = c.toString().toUpperCase();
     for (Character k = 'a';k<='z';k++) { 
            set.add(lower + k.toString());
            set.add(lower + k.toString().toUpperCase());
            set.add(upper + k.toString());
            set.add(upper + k.toString().toUpperCase());
     }
}
...